Skip to content

Internals

Every skill is a SKILL.md prompt with YAML frontmatter. The non-obvious mechanism is the ! preprocessor: lines of the form !`command` in the skill body are executed by Claude Code at invocation time, and their output is injected into the prompt before the model sees it. That is how a skill like commit starts with live VCS status, recent log, and project configuration already in context — without spending any conversation turns gathering them.

Once running, a skill that needs exploratory work fans out to subagents, each in an isolated context, and finishes by writing its artefact to meta/:

Three properties of this sequence matter:

  • Context is injected, not gathered. The preprocessor output arrives as part of the prompt, so the skill never burns turns (or context) running orientation commands.
  • Exploration is quarantined. Locators and analysers do the broad searching and deep reading in their own context windows; only summaries return (see Agents below).
  • The output is a file, not a message. The durable result lands in meta/, where the next skill — possibly in a different session — picks it up.

Scripts referenced by skills are addressed via ${CLAUDE_PLUGIN_ROOT}, so they resolve from the installed plugin location rather than the project being worked on.

Every project using Accelerator gets a meta/ directory (by default) that serves as persistent state for the development workflow. Each skill reads from and writes to predictable paths within it. Run /init to create all directories up front, or let skills create them on first use. These paths can be overridden via the paths configuration section:

research/ is itself subdivided into four subcategories — codebase research, issue/RCA research, design inventories, and design gaps:

DirectoryPurposeWritten by
research/(parent — see subcategories below)
├─ codebase/Codebase research findings with YAML frontmatterresearch-codebase
├─ issues/Issue / RCA research findingsresearch-issue
├─ design-inventories/Per-source design inventory snapshots (markdown + screenshots)inventory-design
└─ design-gaps/Design-gap analysis artefactsanalyse-design-gaps
plans/Implementation plans with phased changescreate-plan
decisions/Architecture decision records (ADRs)create-adr, extract-adrs, review-adr
reviews/Review summaries and per-lens resultsreview-pr, review-plan
validations/Plan validation reportsvalidate-plan
prs/PR descriptionsdescribe-pr
work/Work item files referenced by planningcreate-work-item, extract-work-items, update-work-item
notes/Notes and working documentscreate-note

This approach means:

  • No skill assumes access to another skill’s conversation history
  • Work survives session boundaries and context compaction
  • Plans can be resumed after interruption (implement-plan picks up from the first unchecked item)
  • Artefacts are structured and machine-parseable (YAML frontmatter, JSON schemas)

Accelerator uses specialised subagents to keep the main context lean. Each agent runs in its own context window with restricted tools, returning only a focused summary to the parent:

AgentRoleTools
codebase-locatorFinds files and components by descriptionGrep, Glob, LS
codebase-analyserAnalyses implementation details of specific componentsRead, Grep, Glob, LS
codebase-pattern-finderFinds similar implementations and usage examplesRead, Grep, Glob, LS
documents-locatorDiscovers relevant documents in configured directoriesGrep, Glob, LS
documents-analyserExtracts insights from meta documentsRead, Grep, Glob, LS
reviewerEvaluates code/plans through a specific quality lensRead, Grep, Glob, LS
web-search-researcherResearches external documentation and resourcesWebSearch, WebFetch, Read, Grep, Glob, LS
browser-locatorLocates routes/screens/components in a running app via PlaywrightBash(run.sh navigate), Bash(run.sh snapshot)
browser-analyserAnalyses screens, captures state and screenshots via PlaywrightBash(run.sh navigate|snapshot|screenshot|evaluate|click|type|wait_for)

The separation between locators (find, no Read) and analysers (understand, with Read) is deliberate: it prevents any single agent from needing to both search broadly and read deeply, keeping each agent’s context bounded.

browser-* agents drive Playwright through the skill-shipped executor (run.sh), a Bash wrapper around a Node.js TCP daemon that runs Chromium. No MCP server is required. See skills/design/inventory-design/PROTOCOL.md for the executor wire protocol.

Accelerator automatically detects whether a repository uses git or jujutsu (jj) and adapts its behaviour accordingly. A SessionStart hook inspects the working directory for .jj/ and .git/ directories, injecting VCS-specific context (command references and conventions) into the session. Detection also recognises git linked worktrees — where .git is a file (a gitdir: pointer) rather than a directory — so worktree-based sessions are detected just like plain checkouts. A complementary PreToolUse guard warns when raw git commands are used in a jujutsu repository.

This means all VCS-aware skills — commit, respond-to-pr, and ad-hoc interactions — use the correct CLI commands without manual configuration. The detection covers three modes:

ModeDetected whenVCS commands used
git.git/ onlygit
jj (colocated).jj/ and .git/jj
jj (pure).jj/ onlyjj