8.3 KiB
Plugin Instructions
These instructions apply when working under plugins/compound-engineering/.
They supplement the repo-root AGENTS.md.
Compounding Engineering Plugin Development
Versioning Requirements
IMPORTANT: Routine PRs should not cut releases for this plugin.
The repo uses an automated release process to prepare plugin releases, including version selection and changelog generation. Because multiple PRs may merge before the next release, contributors cannot know the final released version from within an individual PR.
Contributor Rules
- Do not manually bump
.claude-plugin/plugin.jsonversion in a normal feature PR. - Do not manually bump
.claude-plugin/marketplace.jsonplugin version in a normal feature PR. - Do not cut a release section in the canonical root
CHANGELOG.mdfor a normal feature PR. - Do update substantive docs that are part of the actual change, such as
README.md, component tables, usage instructions, or counts when they would otherwise become inaccurate.
Pre-Commit Checklist
Before committing ANY changes:
- No manual release-version bump in
.claude-plugin/plugin.json - No manual release-version bump in
.claude-plugin/marketplace.json - No manual release entry added to the root
CHANGELOG.md - README.md component counts verified
- README.md tables accurate (agents, commands, skills)
- plugin.json description matches current counts
Directory Structure
agents/
├── review/ # Code review agents
├── research/ # Research and analysis agents
├── design/ # Design and UI agents
└── docs/ # Documentation agents
skills/
├── ce-*/ # Core workflow skills (ce:plan, ce:review, etc.)
└── */ # All other skills
Note: Commands were migrated to skills in v2.39.0. All former
/command-nameslash commands now live underskills/command-name/SKILL.mdand work identically in Claude Code. Other targets may convert or map these references differently.
Command Naming Convention
Workflow commands use ce: prefix to unambiguously identify them as compound-engineering commands:
/ce:brainstorm- Explore requirements and approaches before planning/ce:plan- Create implementation plans/ce:review- Run comprehensive code reviews/ce:work- Execute work items systematically/ce:compound- Document solved problems
Why ce:? Claude Code has built-in /plan and /review commands. The ce: namespace (short for compound-engineering) makes it immediately clear these commands belong to this plugin.
Skill Compliance Checklist
When adding or modifying skills, verify compliance with the skill spec:
YAML Frontmatter (Required)
name:present and matches directory name (lowercase-with-hyphens)description:present and describes what it does and when to use it (per official spec: "Explains code with diagrams. Use when exploring how code works.")
Reference Links (Required if references/ exists)
- All files in
references/are linked as[filename.md](./references/filename.md) - All files in
assets/are linked as[filename](./assets/filename) - All files in
scripts/are linked as[filename](./scripts/filename) - No bare backtick references like
`references/file.md`- use proper markdown links
Writing Style
- Use imperative/infinitive form (verb-first instructions)
- Avoid second person ("you should") - use objective language ("To accomplish X, do Y")
Cross-Platform User Interaction
- When a skill needs to ask the user a question, instruct use of the platform's blocking question tool and name the known equivalents (
AskUserQuestionin Claude Code,request_user_inputin Codex,ask_userin Gemini) - Include a fallback for environments without a question tool (e.g., present numbered options and wait for the user's reply before proceeding)
Cross-Platform Task Tracking
- When a skill needs to create or track tasks, describe the intent (e.g., "create a task list") and name the known equivalents (
TaskCreate/TaskUpdate/TaskListin Claude Code,update_planin Codex) - Do not reference
TodoWriteorTodoRead— these are legacy Claude Code tools replaced byTaskCreate/TaskUpdate/TaskList - When a skill dispatches sub-agents, prefer parallel execution but include a sequential fallback for platforms that do not support parallel dispatch
Script Path References in Skills
- In bash code blocks, reference co-located scripts using relative paths (e.g.,
bash scripts/my-script ARG) — not${CLAUDE_PLUGIN_ROOT}or other platform-specific variables - All platforms resolve script paths relative to the skill's directory; no env var prefix is needed
- Always also include a markdown link to the script (e.g.,
[scripts/my-script](scripts/my-script)) so the agent can locate and read it
Cross-Platform Reference Rules
This plugin is authored once, then converted for other agent platforms. Commands and agents are transformed during that conversion, but plugin.skills are usually copied almost exactly as written.
- Because of that, slash references inside command or agent content are acceptable when they point to real published commands; target-specific conversion can remap them.
- Inside a pass-through
SKILL.md, do not assume slash references will be remapped for another platform. Write references according to what will still make sense after the skill is copied as-is. - When one skill refers to another skill, prefer semantic wording such as "load the
document-reviewskill" rather than slash syntax. - Use slash syntax only when referring to an actual published command or workflow such as
/ce:workor/deepen-plan.
Tool Selection in Agents and Skills
Agents and skills that explore codebases must prefer native tools over shell commands.
Why: shell-heavy exploration causes avoidable permission prompts in sub-agent workflows; native file-search, content-search, and file-read tools avoid that.
- Never instruct agents to use
find,ls,cat,head,tail,grep,rg,wc, ortreethrough a shell for routine file discovery, content search, or file reading - Describe tools by capability class with platform hints — e.g., "Use the native file-search/glob tool (e.g., Glob in Claude Code)" — not by Claude Code-specific tool names alone
- When shell is the only option (e.g.,
ast-grep,bundle show, git commands), instruct one simple command at a time — no chaining (&&,||,;), pipes, or redirects - Do not encode shell recipes for routine exploration when native tools can do the job; encode intent and preferred tool classes instead
- For shell-only workflows (e.g.,
gh,git,bundle show, project CLIs), explicit command examples are acceptable when they are simple, task-scoped, and not chained together
Quick Validation Command
# Check for unlinked references in a skill
grep -E '`(references|assets|scripts)/[^`]+`' skills/*/SKILL.md
# Should return nothing if all refs are properly linked
# Check description format - should describe what + when
grep -E '^description:' skills/*/SKILL.md
Adding Components
- New skill: Create
skills/<name>/SKILL.mdwith required YAML frontmatter (name,description). Reference files go inskills/<name>/references/. Add the skill to the appropriate category table inREADME.mdand update the skill count. - New agent: Create
agents/<category>/<name>.mdwith frontmatter. Categories:review,research,design,docs,workflow. Add the agent toREADME.mdand update the agent count.
Upstream-Sourced Skills
Some skills are exact copies from external upstream repositories, vendored locally so the plugin is self-contained. Do not add local modifications -- sync from upstream instead.
| Skill | Upstream |
|---|---|
agent-browser |
github.com/vercel-labs/agent-browser (skills/agent-browser/SKILL.md) |
Beta Skills
Beta skills use a -beta suffix and disable-model-invocation: true to prevent accidental auto-triggering. See docs/solutions/skill-design/beta-skills-framework.md for naming, validation, and promotion rules.
Documentation
See docs/solutions/plugin-versioning-requirements.md for detailed versioning workflow.