Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
78e10dd
refactor(lfg)!: drop the lfg skill
metaphorics Jun 6, 2026
bf948ef
refactor(ce-clean-gone-branches)!: drop the ce-clean-gone-branches skill
metaphorics Jun 6, 2026
55e1c0e
refactor(ce-report-bug)!: drop the ce-report-bug skill
metaphorics Jun 6, 2026
c2b35b1
refactor(ce-strategy)!: drop the ce-strategy skill
metaphorics Jun 6, 2026
f5c832e
refactor(ce-dogfood-beta)!: drop the ce-dogfood-beta skill
metaphorics Jun 6, 2026
9f909ff
refactor(ce-test-browser)!: drop the ce-test-browser skill
metaphorics Jun 6, 2026
d4b8140
refactor(ce-demo-reel)!: drop the ce-demo-reel skill
metaphorics Jun 6, 2026
c346549
refactor(ce-release-notes)!: drop the ce-release-notes skill
metaphorics Jun 6, 2026
518469d
refactor(ce-resolve-pr-feedback)!: drop the ce-resolve-pr-feedback sk…
metaphorics Jun 6, 2026
c8e6f00
refactor(ce-ideate)!: drop the ce-ideate skill and its exclusive agen…
metaphorics Jun 6, 2026
032635f
refactor(ce-polish)!: drop the ce-polish skill
metaphorics Jun 6, 2026
de3058d
refactor(agent-native)!: drop the ce-agent-native-architecture and ce…
metaphorics Jun 6, 2026
f6b1db6
refactor(ce-optimize)!: drop the ce-optimize skill
metaphorics Jun 6, 2026
b066768
ci: drop dead deploy-docs workflow
metaphorics Jun 6, 2026
08f03a2
docs(brainstorms): prune orphaned brainstorms
metaphorics Jun 6, 2026
b9abe7b
docs(plans): prune shipped-work plans
metaphorics Jun 6, 2026
923bfee
refactor(converters)!: drop copilot and droid converter targets
metaphorics Jun 6, 2026
159cfee
refactor(coding-tutor)!: remove coding-tutor plugin
metaphorics Jun 6, 2026
e00b844
refactor(review)!: consolidate code-review personas
metaphorics Jun 6, 2026
420aca8
refactor(doc-review)!: consolidate doc-review personas
metaphorics Jun 6, 2026
53ee4ae
refactor(ce-plan)!: consolidate planning research personas
metaphorics Jun 6, 2026
3c1eb63
refactor(agents)!: consolidate shared specialist personas
metaphorics Jun 6, 2026
59c3915
refactor(ce-work): compress prose
metaphorics Jun 6, 2026
362993b
refactor(review): compress prose
metaphorics Jun 6, 2026
7a21f07
refactor(ce-plan): compress prose
metaphorics Jun 6, 2026
94f1357
refactor(ce-compound): compress prose
metaphorics Jun 7, 2026
abf4ad0
refactor(git-skills): compress prose
metaphorics Jun 7, 2026
cd2d864
refactor(support-skills): compress prose
metaphorics Jun 7, 2026
c9d8c00
refactor(agents): compress prose
metaphorics Jun 7, 2026
6aa9c5b
docs(agents): sync repo docs with slimmed surface
metaphorics Jun 7, 2026
5cabf9e
docs(readme): compress root README
metaphorics Jun 7, 2026
328e640
chore(sweep): scrub residual references
metaphorics Jun 7, 2026
5545c41
refactor(simplify): resolve graft findings
metaphorics Jun 7, 2026
cb016ab
refactor(simplify): resolve excess findings
metaphorics Jun 7, 2026
68531d9
refactor(simplify): resolve sprawl findings
metaphorics Jun 7, 2026
1d22795
feat(ce-subagent-driven): add ce-subagent-driven skill
metaphorics Jun 7, 2026
6c94b0a
feat(ce-verify-before-complete): add ce-verify-before-complete skill
metaphorics Jun 7, 2026
eadce90
Merge remote-tracking branch 'origin/main' into slim/ultra-minimal
metaphorics Jun 7, 2026
c753187
fix(codex): ownership-gate legacy flat skill-dir backup
metaphorics Jun 7, 2026
ed92665
fix(codex): backfill historical skill description aliases
metaphorics Jun 7, 2026
d5d09b5
fix(sweep): retarget stale persona refs and scrub residual cut names
metaphorics Jun 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 0 additions & 12 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,6 @@
"authentication": "ON_INSTALL"
},
"category": "Coding"
},
{
"name": "coding-tutor",
"source": {
"source": "local",
"path": "./plugins/coding-tutor"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Coding"
}
]
}
17 changes: 0 additions & 17 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,23 +28,6 @@
"image-generation"
],
"source": "./plugins/compound-engineering"
},
{
"name": "coding-tutor",
"description": "Personalized coding tutorials that build on your existing knowledge and use your actual codebase for examples. Includes spaced repetition quizzes to reinforce learning. Includes 3 commands and 1 skill.",
"author": {
"name": "Nityesh Agarwal"
},
"homepage": "https://github.com/EveryInc/compound-engineering-plugin",
"tags": [
"coding",
"programming",
"tutorial",
"learning",
"spaced-repetition",
"education"
],
"source": "./plugins/coding-tutor"
}
]
}
5 changes: 0 additions & 5 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@
"name": "compound-engineering",
"source": "compound-engineering",
"description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last."
},
{
"name": "coding-tutor",
"source": "coding-tutor",
"description": "Personalized coding tutorials with spaced repetition quizzes using your real codebase."
}
]
}
1 change: 0 additions & 1 deletion .github/.release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
".": "3.11.2",
"plugins/compound-engineering": "3.11.2",
"plugins/coding-tutor": "1.3.0",
".claude-plugin": "1.0.2",
".cursor-plugin": "1.0.1"
}
21 changes: 0 additions & 21 deletions .github/release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,27 +64,6 @@
}
]
},
"plugins/coding-tutor": {
"release-type": "simple",
"package-name": "coding-tutor",
"extra-files": [
{
"type": "json",
"path": ".claude-plugin/plugin.json",
"jsonpath": "$.version"
},
{
"type": "json",
"path": ".cursor-plugin/plugin.json",
"jsonpath": "$.version"
},
{
"type": "json",
"path": ".codex-plugin/plugin.json",
"jsonpath": "$.version"
}
]
},
".claude-plugin": {
"release-type": "simple",
"package-name": "marketplace",
Expand Down
39 changes: 0 additions & 39 deletions .github/workflows/deploy-docs.yml

This file was deleted.

7 changes: 0 additions & 7 deletions .github/workflows/release-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ on:
type: choice
options: [auto, patch, minor, major]
default: auto
coding_tutor_bump:
description: "coding-tutor bump override"
required: false
type: choice
options: [auto, patch, minor, major]
default: auto
marketplace_bump:
description: "marketplace bump override"
required: false
Expand Down Expand Up @@ -90,7 +84,6 @@ jobs:

args+=(--override "cli=${{ github.event.inputs.cli_bump || 'auto' }}")
args+=(--override "compound-engineering=${{ github.event.inputs.compound_engineering_bump || 'auto' }}")
args+=(--override "coding-tutor=${{ github.event.inputs.coding_tutor_bump || 'auto' }}")
args+=(--override "marketplace=${{ github.event.inputs.marketplace_bump || 'auto' }}")
args+=(--override "cursor-marketplace=${{ github.event.inputs.cursor_marketplace_bump || 'auto' }}")

Expand Down
21 changes: 10 additions & 11 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ This repository primarily houses the `compound-engineering` coding-agent plugin

It also contains:
- the Bun/TypeScript CLI that converts Claude Code plugins into other agent platform formats
- additional plugins under `plugins/`, such as `coding-tutor`
- shared release and metadata infrastructure for the CLI, marketplace, and plugins
- shared release and metadata infrastructure for the CLI, marketplace, and plugin

`AGENTS.md` is the canonical repo instruction file. Root `CLAUDE.md` exists only as a compatibility shim for tools and conversions that still look for it.

Expand All @@ -15,7 +14,7 @@ This is a deliberately slimmed (debloated) fork of the upstream Compound Enginee

- Treat the current inventory as intentional. Do not "restore" skills, agents, commands, or abstractions merely because upstream still has them — re-adding shed surface is scope creep against the fork's reason to exist.
- Divergence from upstream is not drift to reconcile. Re-introduce an upstream behavior only when the user asks for that specific capability.
- Removals are tracked, not silent. Deleting a skill/agent/command means registering it in the two legacy-cleanup registries (see "Plugin Maintenance") so stale flat-install artifacts get swept on upgrade; an unregistered removal leaves orphans on users' machines.
- Removals are tracked, not silent. Deleting a skill/agent/command means registering it in the three legacy-cleanup registries (see "Plugin Maintenance") so stale flat-install artifacts get swept on upgrade; an unregistered removal leaves orphans on users' machines.

## Quick Start

Expand All @@ -31,7 +30,7 @@ bun run release:validate # check plugin/marketplace consistency
- **Merge policy:** All changes to `main` go through pull requests. Direct pushes and direct merges are not allowed; branch protection on `main` enforces this by requiring the `test` status check to pass. The direct path bypasses `release:validate`, the test suite, and PR title validation — past direct merges have caused version drift requiring multi-PR recovery (see `docs/solutions/workflow/release-please-version-drift-recovery.md`).
- **Safety:** Do not delete or overwrite user data. Avoid destructive commands.
- **Testing:** Run `bun test` after changes that affect parsing, conversion, or output.
- **Release versioning:** Releases are prepared by release automation, not normal feature PRs. The repo now has multiple release components (`cli`, `compound-engineering`, `coding-tutor`, `marketplace`). GitHub release PRs and GitHub Releases are the canonical release-notes surface for new releases; root `CHANGELOG.md` is only a pointer to that history. Use conventional titles such as `feat:` and `fix:` so release automation can classify change intent, but do not hand-bump release-owned versions or hand-author release notes in routine PRs.
- **Release versioning:** Releases are prepared by release automation, not normal feature PRs. The repo now has multiple release components (`cli`, `compound-engineering`, `marketplace`, `cursor-marketplace`). GitHub release PRs and GitHub Releases are the canonical release-notes surface for new releases; root `CHANGELOG.md` is only a pointer to that history. Use conventional titles such as `feat:` and `fix:` so release automation can classify change intent, but do not hand-bump release-owned versions or hand-author release notes in routine PRs.
- **Linked versions (cli + compound-engineering):** The `linked-versions` release-please plugin keeps `cli` and `compound-engineering` at the same version. This is intentional -- it simplifies version tracking across the CLI and the plugin it ships. A consequence is that a release with only plugin changes will still bump the CLI version (and vice versa). The CLI changelog may also include commits that `exclude-paths` would normally filter, because `linked-versions` overrides exclusion logic when forcing a synced bump. This is a known upstream release-please limitation, not a misconfiguration. Do not flag linked-version bumps as unnecessary.
- **Output Paths:** Keep OpenCode output at `opencode.json` and `.opencode/{agents,skills,plugins}`. For OpenCode, command go to `~/.config/opencode/commands/<name>.md`; `opencode.json` is deep-merged (never overwritten wholesale).
- **Scratch Space:** Default to OS temp. Use `.context/` only when explicitly justified by the rules below.
Expand All @@ -54,7 +53,7 @@ bun run release:validate # check plugin/marketplace consistency

```
src/ CLI entry point, parsers, converters, target writers
plugins/ Plugin workspaces (compound-engineering, coding-tutor)
plugins/ Plugin workspace (compound-engineering)
.claude-plugin/ Claude marketplace catalog metadata
tests/ Converter, writer, and CLI tests + fixtures
docs/ Requirements, plans, solutions, and target specs
Expand All @@ -68,7 +67,6 @@ Changes in this repo may affect one or more of these surfaces:
- `compound-engineering` under `plugins/compound-engineering/`
- the Claude marketplace catalog under `.claude-plugin/`
- the converter/install CLI in `src/` and `package.json`
- secondary plugins such as `plugins/coding-tutor/`

Do not assume a repo change is "just CLI" or "just plugin" without checking which surface owns the affected files.

Expand All @@ -80,9 +78,10 @@ When changing `plugins/compound-engineering/` content:
- Do not hand-bump release-owned versions in plugin or marketplace manifests.
- Do not hand-add release entries to `CHANGELOG.md` or treat it as the canonical source for new releases.
- Run `bun run release:validate` if agents, commands, skills, MCP servers, or release-owned descriptions/counts may have changed.
- When removing a skill, agent, or command, add its name to both cleanup registries so stale flat-install artifacts are swept on upgrade:
- `STALE_SKILL_DIRS` / `STALE_AGENT_NAMES` / `STALE_PROMPT_FILES` in `src/utils/legacy-cleanup.ts`
- `EXTRA_LEGACY_ARTIFACTS_BY_PLUGIN["compound-engineering"]` in `src/data/plugin-legacy-artifacts.ts`
- When removing a skill, agent, or command, register it in three places so stale flat-install artifacts are swept on upgrade:
- `STALE_SKILL_DIRS` / `STALE_AGENT_NAMES` / `STALE_PROMPT_FILES` in `src/utils/legacy-cleanup.ts` — the name lists the sweep walks.
- `EXTRA_LEGACY_ARTIFACTS_BY_PLUGIN["compound-engineering"]` in `src/data/plugin-legacy-artifacts.ts` — the historical artifact allow-list per plugin.
- `LEGACY_ONLY_SKILL_DESCRIPTIONS` / `LEGACY_ONLY_AGENT_DESCRIPTIONS` in `src/utils/legacy-cleanup.ts` — the fingerprint maps. A removed component whose name still ships under a successor is identified by the current bundle; one with no successor has no live entry to match, so without its description fingerprint here the sweep never recognizes it and the orphan is never removed.

Useful validation commands:

Expand All @@ -98,7 +97,7 @@ Behavioral changes to a plugin agent or skill (anything under `plugins/*/agents/

- **Use the `skill-creator` skill to test changes.** Skill-creator is purpose-built for this: it spawns a generic subagent and injects the agent or skill content into the subagent's prompt at dispatch time, so each run reads the current source from disk. Invoke `/skill-creator` and use its eval workflow rather than reaching for ad-hoc workarounds.

- **Plugin agent and skill definitions both cache at session start.** Once a Claude Code session is open, dispatching a typed agent (e.g., `Agent({subagent_type: "compound-engineering:ce-session-historian"})`) runs the in-memory copy that was loaded when the session began. The same applies to skills: invoking `Skill ce-session-inventory` goes through the cached skill loader, so edits to skill scripts are also not tested via that path. File edits to either layer after session start do not propagate within the same session. Any iteration loop built around typed-agent dispatch or Skill-tool invocation in the same session is testing pre-edit content, not your changes.
- **Plugin agent and skill definitions both cache at session start.** Once a Claude Code session is open, dispatching a typed agent (e.g., `Agent({subagent_type: "compound-engineering:ce-session-historian"})`) runs the in-memory copy that was loaded when the session began. The same applies to skills: invoking `Skill ce-sessions` goes through the cached skill loader, so edits to skill scripts are also not tested via that path. File edits to either layer after session start do not propagate within the same session. Any iteration loop built around typed-agent dispatch or Skill-tool invocation in the same session is testing pre-edit content, not your changes.

- **Do NOT edit `~/.claude/plugins/cache/` or `~/.claude/plugins/marketplaces/` to try to force a reload.** Those paths are user machine state, not repo-managed. Modifying them does not reliably bypass the in-session cache (it didn't, in observed behavior), risks being silently overwritten by plugin updates, and is the wrong layer to test from. The skill-creator pattern is the proper approach; if you genuinely need fresh-loaded behavior of the typed-agent dispatch path, restart the Claude Code session — but skill-creator is preferred for fast iteration.

Expand Down Expand Up @@ -128,7 +127,7 @@ The CLI is parser -> per-target converter -> per-target writer. The contracts be

- **Prefix is based on intent, not file type.** Use conventional prefixes (`feat:`, `fix:`, `docs:`, `refactor:`, etc.) but classify by what the change does, not the file extension. Files under `plugins/*/skills/`, `plugins/*/agents/`, and `.claude-plugin/` are product code even though they are Markdown or JSON. Reserve `docs:` for files whose sole purpose is documentation (`README.md`, `docs/`, `CHANGELOG.md`).
- **Type selection — classify by intent, not diff shape.** Where `fix:` and `feat:` could both seem to fit, default to `fix:`: a change that remedies broken or missing behavior is `fix:` even when implemented by adding code, and net additions do not turn a fix into a `feat:`. Reserve `feat:` for capabilities the user could not previously accomplish where nothing was broken. Other conventional types (`chore:`, `refactor:`, `docs:`, `perf:`, `test:`, `ci:`, `build:`, `style:`) remain primary when they describe the change more precisely than either. Heuristic: if a regression test you could write today would have failed *before* the change, it's `fix:`. The user may override this default for a specific change.
- **Include a component scope.** The scope appears verbatim in the changelog. Pick the narrowest useful label: skill/agent name (`document-review`, `learnings-researcher`), plugin or CLI area (`coding-tutor`, `cli`), or shared area when cross-cutting (`review`, `research`, `converters`). Never use `compound-engineering` — it's the entire plugin and tells the reader nothing. Omit scope only when no single label adds clarity.
- **Include a component scope.** The scope appears verbatim in the changelog. Pick the narrowest useful label: skill/agent name (`document-review`, `learnings-researcher`), plugin or CLI area (`converters`, `cli`), or shared area when cross-cutting (`review`, `research`, `targets`). Never use `compound-engineering` — it's the entire plugin and tells the reader nothing. Omit scope only when no single label adds clarity.
- **Never use `!` or a `BREAKING CHANGE:` footer without explicit user confirmation.** These markers trigger release-please's automatic major version bump — a decision the user may not want even when a change is technically breaking. If a change appears breaking, surface that to the user and let them decide whether to apply the marker.

## Adding a New Target Provider
Expand Down
Loading