compound-engineering-plugin
CLI ToolEveryInc/compound-engineering-plugin
Plugin for AI coding tools that compounds engineering knowledge and skills.
Overview
Provides 37 skills and 51 agents for Claude Code, Cursor, Codex, and other AI coding tools. Focuses on thorough planning, review, and knowledge codification to make each engineering unit easier than the last, reducing technical debt over time.
README Preview
# Compound Engineering\n\n[](https://github.com/EveryInc/compound-engineering-plugin/actions/workflows/ci.yml)\n[](https://www.npmjs.com/package/@every-env/compound-plugin)\n\nAI skills and agents that make each unit of engineering work easier than the last.\n\n## Philosophy\n\n**Each unit of engineering work should make subsequent units easier -- not harder.**\n\nTraditional development accumulates technical debt. Every feature adds complexity. Every bug fix leaves behind a little more local knowledge that someone has to rediscover later. The codebase gets larger, the context gets harder to hold, and the next change becomes slower.\n\nCompound engineering inverts this. 80% is in planning and review, 20% is in execution:\n\n- Plan thoroughly before writing code with `/ce-brainstorm` and `/ce-plan`\n- Review to catch issues and calibrate judgment with `/ce-code-review` and `/ce-doc-review`\n- Codify knowledge so it is reusable with `/ce-compound`\n- Keep quality high so future changes are easy\n\nThe point is not ceremony. The point is leverage. A good brainstorm makes the plan sharper. A good plan makes execution smaller. A good review catches the pattern, not just the bug. A good compound note means the next agent does not have to learn the same lesson from scratch.\n\n**Learn more**\n\n- [Full component reference](plugins/compound-engineering/README.md) - all agents and skills\n- [Compound engineering: how Every codes with agents](https://every.to/chain-of-thought/compound-engineering-how-every-codes-with-agents)\n- [The story behind compounding engineering](https://every.to/source-code/my-ai-had-already-fixed-the-code-before-i-saw-it)\n\n## Workflow\n\n`/ce-strategy` is upstream of the loop -- it captures the product's target problem, approach, persona, metrics, and tracks as a short durable anchor at `STRATEGY.md`. Ideate, brainstorm, and plan read it as grounding when present, so strategy choices flow into feature conception, prioritization, and spec.\n\nThe co
FAQ (5)
TroubleshootingHow to install the Compound Engineering plugin in VS Code Copilot after the --to copilot option was removed?
Use the built-in VS Code command: Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux), select 'Chat: Install Plugin from source', enter 'EveryInc/compound-engineering-plugin' as repository URL, then choose 'compound-engineering-plugin' from the list. The skills will appear in the Copilot agent chat. This avoids the need for the old --to copilot converter.
TroubleshootingWhy does ce-code-review fail with 'scripts/resolve-base.sh not found' error?
Pass an explicit base ref to bypass the missing helper script. For example, use: /ce-code-review base:origin/main. This bug exists in compound-engineering v3.7.3 because SKILL.md uses a relative path that resolves against the project root instead of the skill directory. Track issue #811 for a permanent fix.
TroubleshootingWhy does the ce-resolve-pr-feedback skill say 'No new items' even when there are unanswered bot reviews on a PR with many threads?
This is a known bug in compound-engineering 3.7.0 where the GraphQL query in scripts/get-pr-comments uses fixed 'first: N' page sizes (reviewThreads: 50, comments: 100, reviews: 50) without following pageInfo.hasNextPage cursors. On PRs with more than 50 review threads or 100 comments, items beyond the first page are silently dropped, leading the skill to incorrectly report no work. As a workaround, manually check for unanswered findings with: npx agent-reviews --bots-only --unanswered --expanded. A fix is being tracked to add pagination loops in the script.
TroubleshootingWhy does extract-skeleton.py crash with 'TypeError: unhashable type: 'slice'' when processing Claude session history?
The crash occurs in summarize_claude_tool when slicing a dict-shaped value from input.get('command'), input.get('query'), or input.get('prompt') — e.g., dict[:80] raises TypeError: unhashable type: 'slice'. Fix: add type checks before slicing. In extract-skeleton.py, replace the chained .get(...)[:N] with a helper like:
def _safe_slice(value, n):
return value[:n] if isinstance(value, str) else ""Then use
_safe_slice(inp.get("query"), 80) etc. This handles both string and non-string inputs safely. Apply same guard to file_path/path if they can be sliced later. Patch the script or update to a version containing the type-guard fix to restore full session extraction.TroubleshootingHow to fix the 'Shell command permission check failed' error when invoking /ce-sessions in Claude Code?
The error occurs because the ce-sessions SKILL.md preamble contains a nested subshell in the 'Repo name (pre-resolved)' line, which the Claude Code permission system cannot statically analyze. Workaround: Edit skills/ce-sessions/SKILL.md line 23, replacing the problematic command with a single simple command: Repo root (pre-resolved): !git rev-parse --show-toplevel 2>/dev/null || true. This outputs the full repo path; consumers should derivate the basename themselves. The fix is slated for a future release.