@every-env/compound-plugin 2.35.0 → 2.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +23 -0
  3. package/README.md +5 -2
  4. package/package.json +1 -1
  5. package/plugins/compound-engineering/.claude-plugin/plugin.json +2 -2
  6. package/plugins/compound-engineering/CHANGELOG.md +26 -0
  7. package/plugins/compound-engineering/CLAUDE.md +7 -6
  8. package/plugins/compound-engineering/README.md +1 -1
  9. package/plugins/compound-engineering/agents/research/learnings-researcher.md +1 -1
  10. package/plugins/compound-engineering/{commands/ce/review.md → skills/ce-review/SKILL.md} +35 -2
  11. package/plugins/compound-engineering/{commands/deploy-docs.md → skills/deploy-docs/SKILL.md} +0 -1
  12. package/plugins/compound-engineering/{commands/generate_command.md → skills/generate_command/SKILL.md} +4 -4
  13. package/src/converters/claude-to-opencode.ts +8 -0
  14. package/src/sync/json-config.ts +1 -1
  15. package/src/targets/opencode.ts +4 -0
  16. package/tests/converter.test.ts +12 -0
  17. package/tests/opencode-writer.test.ts +36 -0
  18. package/plans/grow-your-own-garden-plugin-architecture.md +0 -102
  19. package/plans/landing-page-launchkit-refresh.md +0 -279
  20. /package/plugins/compound-engineering/{commands/agent-native-audit.md → skills/agent-native-audit/SKILL.md} +0 -0
  21. /package/plugins/compound-engineering/{commands/ce/brainstorm.md → skills/ce-brainstorm/SKILL.md} +0 -0
  22. /package/plugins/compound-engineering/{commands/ce/compound.md → skills/ce-compound/SKILL.md} +0 -0
  23. /package/plugins/compound-engineering/{commands/ce/plan.md → skills/ce-plan/SKILL.md} +0 -0
  24. /package/plugins/compound-engineering/{commands/ce/work.md → skills/ce-work/SKILL.md} +0 -0
  25. /package/plugins/compound-engineering/{commands/changelog.md → skills/changelog/SKILL.md} +0 -0
  26. /package/plugins/compound-engineering/{commands/create-agent-skill.md → skills/create-agent-skill/SKILL.md} +0 -0
  27. /package/plugins/compound-engineering/{commands/deepen-plan.md → skills/deepen-plan/SKILL.md} +0 -0
  28. /package/plugins/compound-engineering/{commands/feature-video.md → skills/feature-video/SKILL.md} +0 -0
  29. /package/plugins/compound-engineering/{commands/heal-skill.md → skills/heal-skill/SKILL.md} +0 -0
  30. /package/plugins/compound-engineering/{commands/lfg.md → skills/lfg/SKILL.md} +0 -0
  31. /package/plugins/compound-engineering/{commands/report-bug.md → skills/report-bug/SKILL.md} +0 -0
  32. /package/plugins/compound-engineering/{commands/reproduce-bug.md → skills/reproduce-bug/SKILL.md} +0 -0
  33. /package/plugins/compound-engineering/{commands/resolve_parallel.md → skills/resolve_parallel/SKILL.md} +0 -0
  34. /package/plugins/compound-engineering/{commands/resolve_todo_parallel.md → skills/resolve_todo_parallel/SKILL.md} +0 -0
  35. /package/plugins/compound-engineering/{commands/slfg.md → skills/slfg/SKILL.md} +0 -0
  36. /package/plugins/compound-engineering/{commands/test-browser.md → skills/test-browser/SKILL.md} +0 -0
  37. /package/plugins/compound-engineering/{commands/test-xcode.md → skills/test-xcode/SKILL.md} +0 -0
  38. /package/plugins/compound-engineering/{commands/triage.md → skills/triage/SKILL.md} +0 -0
  39. /package/plugins/compound-engineering/{commands/workflows/brainstorm.md → skills/workflows-brainstorm/SKILL.md} +0 -0
  40. /package/plugins/compound-engineering/{commands/workflows/compound.md → skills/workflows-compound/SKILL.md} +0 -0
  41. /package/plugins/compound-engineering/{commands/workflows/plan.md → skills/workflows-plan/SKILL.md} +0 -0
  42. /package/plugins/compound-engineering/{commands/workflows/review.md → skills/workflows-review/SKILL.md} +0 -0
  43. /package/plugins/compound-engineering/{commands/workflows/work.md → skills/workflows-work/SKILL.md} +0 -0
@@ -11,8 +11,8 @@
11
11
  "plugins": [
12
12
  {
13
13
  "name": "compound-engineering",
14
- "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 29 specialized agents, 22 commands, and 20 skills.",
15
- "version": "2.38.1",
14
+ "description": "AI-powered development tools that get smarter with every use. Make each unit of engineering work easier than the last. Includes 28 specialized agents and 47 skills.",
15
+ "version": "2.40.0",
16
16
  "author": {
17
17
  "name": "Kieran Klaassen",
18
18
  "url": "https://github.com/kieranklaassen",
package/CHANGELOG.md CHANGED
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  Release numbering now follows the repository `v*` tag line. Starting at `v2.34.0`, the root CLI package and this changelog stay on that shared version stream. Older entries below retain the previous `0.x` CLI numbering.
9
9
 
10
+ ## [2.36.1](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.36.0...v2.36.1) (2026-03-13)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **agents:** update learnings-researcher model from haiku to inherit ([30852b7](https://github.com/EveryInc/compound-engineering-plugin/commit/30852b72937091b0a85c22b7c8c45d513ab49fd1)), closes [#249](https://github.com/EveryInc/compound-engineering-plugin/issues/249)
16
+
17
+ # [2.36.0](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.35.0...v2.36.0) (2026-03-11)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **hooks:** wrap PreToolUse handlers in try-catch to prevent parallel tool call crashes ([598222e](https://github.com/EveryInc/compound-engineering-plugin/commit/598222e11cb2206a2e3347cb5dd38cacdc3830df)), closes [#85](https://github.com/EveryInc/compound-engineering-plugin/issues/85)
23
+ * **install:** merge config instead of overwriting on opencode target ([1db7680](https://github.com/EveryInc/compound-engineering-plugin/commit/1db76800f91fefcc1bb9c1798ef273ddd0b65f5c)), closes [#125](https://github.com/EveryInc/compound-engineering-plugin/issues/125)
24
+ * **review:** add serial mode to prevent context limit crashes ([d96671b](https://github.com/EveryInc/compound-engineering-plugin/commit/d96671b9e9ecbe417568b2ce7f7fa4d379c2bec2)), closes [#166](https://github.com/EveryInc/compound-engineering-plugin/issues/166)
25
+
26
+
27
+ ### Features
28
+
29
+ * **compound:** add context budget precheck and compact-safe mode ([c4b1358](https://github.com/EveryInc/compound-engineering-plugin/commit/c4b13584312058cb8db3ad0f25674805bbb91b2d)), closes [#198](https://github.com/EveryInc/compound-engineering-plugin/issues/198)
30
+ * **plan:** add daily sequence number to plan filenames ([e94ca04](https://github.com/EveryInc/compound-engineering-plugin/commit/e94ca0409671efcfa2d4a8fcb2d60b79a848fd85)), closes [#135](https://github.com/EveryInc/compound-engineering-plugin/issues/135)
31
+ * **plugin:** release v2.39.0 with community contributions ([d2ab6c0](https://github.com/EveryInc/compound-engineering-plugin/commit/d2ab6c076882a4dacaa787c0a6f3c9d555d38af0))
32
+
10
33
  # [2.35.0](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.34.7...v2.35.0) (2026-03-10)
11
34
 
12
35
 
package/README.md CHANGED
@@ -158,17 +158,20 @@ Notes:
158
158
  ## Workflow
159
159
 
160
160
  ```
161
- Plan → Work → Review → Compound → Repeat
161
+ Brainstorm → Plan → Work → Review → Compound → Repeat
162
162
  ```
163
163
 
164
164
  | Command | Purpose |
165
165
  |---------|---------|
166
+ | `/ce:brainstorm` | Explore requirements and approaches before planning |
166
167
  | `/ce:plan` | Turn feature ideas into detailed implementation plans |
167
168
  | `/ce:work` | Execute plans with worktrees and task tracking |
168
169
  | `/ce:review` | Multi-agent code review before merging |
169
170
  | `/ce:compound` | Document learnings to make future work easier |
170
171
 
171
- Each cycle compounds: plans inform future plans, reviews catch more issues, patterns get documented.
172
+ The `brainstorming` skill supports `/ce:brainstorm` with collaborative dialogue to clarify requirements and compare approaches before committing to a plan.
173
+
174
+ Each cycle compounds: brainstorms sharpen plans, plans inform future plans, reviews catch more issues, patterns get documented.
172
175
 
173
176
  ## Philosophy
174
177
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@every-env/compound-plugin",
3
- "version": "2.35.0",
3
+ "version": "2.36.1",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "compound-engineering",
3
- "version": "2.38.1",
4
- "description": "AI-powered development tools. 28 agents, 22 commands, 20 skills, 1 MCP server for code review, research, design, and workflow automation.",
3
+ "version": "2.40.0",
4
+ "description": "AI-powered development tools. 28 agents, 47 skills, 1 MCP server for code review, research, design, and workflow automation.",
5
5
  "author": {
6
6
  "name": "Kieran Klaassen",
7
7
  "email": "kieran@every.to",
@@ -5,6 +5,32 @@ All notable changes to the compound-engineering plugin will be documented in thi
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.39.0] - 2026-03-10
9
+
10
+ ### Added
11
+
12
+ - **ce:compound context budget precheck** — Warns when context is constrained and offers compact-safe mode to avoid compaction mid-compound ([#235](https://github.com/EveryInc/compound-engineering-plugin/pull/235))
13
+ - **ce:plan daily sequence numbers** — Plan filenames now include a 3-digit daily sequence number (e.g., `2026-03-10-001-feat-...`) to prevent collisions ([#238](https://github.com/EveryInc/compound-engineering-plugin/pull/238))
14
+ - **ce:review serial mode** — Pass `--serial` flag (or auto-detects when 6+ agents configured) to run review agents sequentially, preventing context limit crashes ([#237](https://github.com/EveryInc/compound-engineering-plugin/pull/237))
15
+ - **agent-browser inspection & debugging commands** — Added JS eval, console/errors, network, storage, device emulation, element debugging, recording/tracing, tabs, and advanced mouse commands to agent-browser skill ([#236](https://github.com/EveryInc/compound-engineering-plugin/pull/236))
16
+ - **test-browser port detection** — Auto-detects dev server port from CLAUDE.md, package.json, or .env files; supports `--port` flag ([#233](https://github.com/EveryInc/compound-engineering-plugin/pull/233))
17
+ - **lfg phase gating** — Added explicit GATE checks between /lfg steps to enforce plan-before-work ordering ([#231](https://github.com/EveryInc/compound-engineering-plugin/pull/231))
18
+
19
+ ### Fixed
20
+
21
+ - **Context7 API key auth** — MCP server config now passes `CONTEXT7_API_KEY` via `x-api-key` header to avoid anonymous rate limits ([#232](https://github.com/EveryInc/compound-engineering-plugin/pull/232))
22
+ - **CLI: MCP server merge order** — `sync` now correctly overwrites same-named MCP servers with plugin values instead of preserving stale entries
23
+
24
+ ### Removed
25
+
26
+ - **every-style-editor agent** — Removed duplicate agent; functionality already exists as `every-style-editor` skill ([#234](https://github.com/EveryInc/compound-engineering-plugin/pull/234))
27
+
28
+ ### Contributors
29
+
30
+ - Matt Van Horn ([@mvanhorn](https://x.com/mvanhorn)) — PRs #231–#238
31
+
32
+ ---
33
+
8
34
  ## [2.38.1] - 2026-03-01
9
35
 
10
36
  ### Fixed
@@ -34,15 +34,16 @@ agents/
34
34
  ├── workflow/ # Workflow automation agents
35
35
  └── docs/ # Documentation agents
36
36
 
37
- commands/
38
- ├── ce/ # Core workflow commands (ce:plan, ce:review, etc.)
39
- ├── workflows/ # Deprecated aliases for ce:* commands
40
- └── *.md # Utility commands
41
-
42
37
  skills/
43
- └── *.md # All skills at root level
38
+ ├── ce-*/ # Core workflow skills (ce:plan, ce:review, etc.)
39
+ ├── workflows-*/ # Deprecated aliases for ce:* skills
40
+ └── */ # All other skills
44
41
  ```
45
42
 
43
+ > **Note:** Commands were migrated to skills in v2.39.0. All former
44
+ > `/command-name` slash commands now live under `skills/command-name/SKILL.md`
45
+ > and work identically (Claude Code 2.1.3+ merged the two formats).
46
+
46
47
  ## Command Naming Convention
47
48
 
48
49
  **Workflow commands** use `ce:` prefix to unambiguously identify them as compound-engineering commands:
@@ -6,7 +6,7 @@ AI-powered development tools that get smarter with every use. Make each unit of
6
6
 
7
7
  | Component | Count |
8
8
  |-----------|-------|
9
- | Agents | 29 |
9
+ | Agents | 28 |
10
10
  | Commands | 22 |
11
11
  | Skills | 20 |
12
12
  | MCP Servers | 1 |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: learnings-researcher
3
3
  description: "Searches docs/solutions/ for relevant past solutions by frontmatter metadata. Use before implementing features or fixing problems to surface institutional knowledge and prevent repeated mistakes."
4
- model: haiku
4
+ model: inherit
5
5
  ---
6
6
 
7
7
  <examples>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ce:review
3
3
  description: Perform exhaustive code reviews using multi-agent analysis, ultra-thinking, and worktrees
4
- argument-hint: "[PR number, GitHub URL, branch name, or latest]"
4
+ argument-hint: "[PR number, GitHub URL, branch name, or latest] [--serial]"
5
5
  ---
6
6
 
7
7
  # Review Command
@@ -65,17 +65,50 @@ Read `compound-engineering.local.md` in the project root. If found, use `review_
65
65
 
66
66
  If no settings file exists, invoke the `setup` skill to create one. Then read the newly created file and continue.
67
67
 
68
+ #### Choose Execution Mode
69
+
70
+ <execution_mode>
71
+
72
+ Before launching review agents, check for context constraints:
73
+
74
+ **If `--serial` flag is passed OR conversation is in a long session:**
75
+
76
+ Run agents ONE AT A TIME in sequence. Wait for each agent to complete before starting the next. This uses less context but takes longer.
77
+
78
+ **Default (parallel):**
79
+
80
+ Run all agents simultaneously for speed. If you hit context limits, retry with `--serial` flag.
81
+
82
+ **Auto-detect:** If more than 5 review agents are configured, automatically switch to serial mode and inform the user:
83
+ "Running review agents in serial mode (6+ agents configured). Use --parallel to override."
84
+
85
+ </execution_mode>
86
+
68
87
  #### Parallel Agents to review the PR:
69
88
 
70
89
  <parallel_tasks>
71
90
 
91
+ **Parallel mode (default for ≤5 agents):**
92
+
72
93
  Run all configured review agents in parallel using Task tool. For each agent in the `review_agents` list:
73
94
 
74
95
  ```
75
96
  Task {agent-name}(PR content + review context from settings body)
76
97
  ```
77
98
 
78
- Additionally, always run these regardless of settings:
99
+ **Serial mode (--serial flag, or auto for 6+ agents):**
100
+
101
+ Run configured review agents ONE AT A TIME. For each agent in the `review_agents` list, wait for it to complete before starting the next:
102
+
103
+ ```
104
+ For each agent in review_agents:
105
+ 1. Task {agent-name}(PR content + review context)
106
+ 2. Wait for completion
107
+ 3. Collect findings
108
+ 4. Proceed to next agent
109
+ ```
110
+
111
+ Always run these last regardless of mode:
79
112
  - Task agent-native-reviewer(PR content) - Verify new features are agent-accessible
80
113
  - Task learnings-researcher(PR content) - Search docs/solutions/ for past issues related to this PR's modules and patterns
81
114
 
@@ -15,7 +15,6 @@ Run these checks:
15
15
  ```bash
16
16
  # Count components
17
17
  echo "Agents: $(ls plugins/compound-engineering/agents/*.md | wc -l)"
18
- echo "Commands: $(ls plugins/compound-engineering/commands/*.md | wc -l)"
19
18
  echo "Skills: $(ls -d plugins/compound-engineering/skills/*/ 2>/dev/null | wc -l)"
20
19
 
21
20
  # Validate JSON
@@ -7,7 +7,7 @@ disable-model-invocation: true
7
7
 
8
8
  # Create a Custom Claude Code Command
9
9
 
10
- Create a new slash command in `.claude/commands/` for the requested task.
10
+ Create a new skill in `.claude/skills/` for the requested task.
11
11
 
12
12
  ## Goal
13
13
 
@@ -128,10 +128,10 @@ Implement #$ARGUMENTS following these steps:
128
128
 
129
129
  ## Creating the Command File
130
130
 
131
- 1. **Create the file** at `.claude/commands/[name].md` (subdirectories like `workflows/` supported)
131
+ 1. **Create the directory** at `.claude/skills/[name]/SKILL.md`
132
132
  2. **Start with YAML frontmatter** (see section above)
133
- 3. **Structure the command** using the template above
134
- 4. **Test the command** by using it with appropriate arguments
133
+ 3. **Structure the skill** using the template above
134
+ 4. **Test the skill** by using it with appropriate arguments
135
135
 
136
136
  ## Command File Template
137
137
 
@@ -202,7 +202,15 @@ function renderHookHandlers(
202
202
  const wrapped = options.requireError
203
203
  ? ` if (input?.error) {\n${statements.map((line) => ` ${line}`).join("\n")}\n }`
204
204
  : rendered
205
+
206
+ // Wrap tool.execute.before handlers in try-catch to prevent a failing hook
207
+ // from crashing parallel tool call batches (causes API 400 errors).
208
+ // See: https://github.com/EveryInc/compound-engineering-plugin/issues/85
209
+ const isPreToolUse = event === "tool.execute.before"
205
210
  const note = options.note ? ` // ${options.note}\n` : ""
211
+ if (isPreToolUse) {
212
+ return ` "${event}": async (input) => {\n${note} try {\n ${wrapped}\n } catch (err) {\n console.error("[hook] ${event} error (non-fatal):", err)\n }\n }`
213
+ }
206
214
  return ` "${event}": async (input) => {\n${note}${wrapped}\n }`
207
215
  }
208
216
 
@@ -19,7 +19,7 @@ export async function mergeJsonConfigAtKey(options: {
19
19
  ...existing,
20
20
  [key]: {
21
21
  ...existingEntries,
22
- ...incoming,
22
+ ...incoming, // incoming plugin entries overwrite same-named servers
23
23
  },
24
24
  }
25
25
 
@@ -58,12 +58,16 @@ export async function writeOpenCodeBundle(outputRoot: string, bundle: OpenCodeBu
58
58
  const openCodePaths = resolveOpenCodePaths(outputRoot)
59
59
  await ensureDir(openCodePaths.root)
60
60
 
61
+ const hadExistingConfig = await pathExists(openCodePaths.configPath)
61
62
  const backupPath = await backupFile(openCodePaths.configPath)
62
63
  if (backupPath) {
63
64
  console.log(`Backed up existing config to ${backupPath}`)
64
65
  }
65
66
  const merged = await mergeOpenCodeConfig(openCodePaths.configPath, bundle.config)
66
67
  await writeJson(openCodePaths.configPath, merged)
68
+ if (hadExistingConfig) {
69
+ console.log("Merged plugin config into existing opencode.json (user settings preserved)")
70
+ }
67
71
 
68
72
  const agentsDir = openCodePaths.agentsDir
69
73
  for (const agent of bundle.agents) {
@@ -132,6 +132,18 @@ describe("convertClaudeToOpenCode", () => {
132
132
  expect(hookFile!.content).toContain("// timeout: 30s")
133
133
  expect(hookFile!.content).toContain("// Prompt hook for Write|Edit")
134
134
  expect(hookFile!.content).toContain("// Agent hook for Write|Edit: security-sentinel")
135
+
136
+ // PreToolUse (tool.execute.before) handlers are wrapped in try-catch
137
+ // to prevent hook failures from crashing parallel tool call batches (#85)
138
+ const beforeIdx = hookFile!.content.indexOf('"tool.execute.before"')
139
+ const afterIdx = hookFile!.content.indexOf('"tool.execute.after"')
140
+ const beforeBlock = hookFile!.content.slice(beforeIdx, afterIdx)
141
+ expect(beforeBlock).toContain("try {")
142
+ expect(beforeBlock).toContain("} catch (err) {")
143
+
144
+ // PostToolUse (tool.execute.after) handlers are NOT wrapped in try-catch
145
+ const afterBlock = hookFile!.content.slice(afterIdx, hookFile!.content.indexOf('"session.created"'))
146
+ expect(afterBlock).not.toContain("try {")
135
147
  })
136
148
 
137
149
  test("converts MCP servers", async () => {
@@ -3,6 +3,7 @@ import { promises as fs } from "fs"
3
3
  import path from "path"
4
4
  import os from "os"
5
5
  import { writeOpenCodeBundle } from "../src/targets/opencode"
6
+ import { mergeJsonConfigAtKey } from "../src/sync/json-config"
6
7
  import type { OpenCodeBundle } from "../src/types/opencode"
7
8
 
8
9
  async function exists(filePath: string): Promise<boolean> {
@@ -254,3 +255,38 @@ describe("writeOpenCodeBundle", () => {
254
255
  expect(backupContent).toBe("old content\n")
255
256
  })
256
257
  })
258
+
259
+ describe("mergeJsonConfigAtKey", () => {
260
+ test("incoming plugin entries overwrite same-named servers", async () => {
261
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "json-merge-"))
262
+ const configPath = path.join(tempDir, "opencode.json")
263
+
264
+ // User has an existing MCP server config
265
+ const existingConfig = {
266
+ model: "my-model",
267
+ mcp: {
268
+ "user-server": { type: "local", command: ["uvx", "user-srv"] },
269
+ },
270
+ }
271
+ await fs.writeFile(configPath, JSON.stringify(existingConfig, null, 2))
272
+
273
+ // Plugin syncs its servers, overwriting same-named entries
274
+ await mergeJsonConfigAtKey({
275
+ configPath,
276
+ key: "mcp",
277
+ incoming: {
278
+ "plugin-server": { type: "local", command: ["uvx", "plugin-srv"] },
279
+ "user-server": { type: "local", command: ["uvx", "plugin-override"] },
280
+ },
281
+ })
282
+
283
+ const merged = JSON.parse(await fs.readFile(configPath, "utf8"))
284
+
285
+ // User's top-level keys preserved
286
+ expect(merged.model).toBe("my-model")
287
+ // Plugin server added
288
+ expect(merged.mcp["plugin-server"]).toBeDefined()
289
+ // Plugin server overwrites same-named existing entry
290
+ expect(merged.mcp["user-server"].command[1]).toBe("plugin-override")
291
+ })
292
+ })
@@ -1,102 +0,0 @@
1
- # Grow Your Own Garden: Adaptive Agent Ecosystem
2
-
3
- > **Issue:** https://github.com/EveryInc/compound-engineering-plugin/issues/20
4
-
5
- ## The Idea
6
-
7
- Everyone grows their own garden, but we're all using the same process.
8
-
9
- Start from a **seed** (minimal core: `/plan`, `/work`, `/review`, `/compound`). Each `/compound` loop can suggest adding agents based on what you're working on—like building up a test suite to prevent regressions, but for code review expertise.
10
-
11
- ## Current Problem
12
-
13
- - Monolithic plugin: 24 agents, users use ~30%
14
- - No personalization (same agents for Rails dev and Python dev)
15
- - Static collection that doesn't adapt
16
-
17
- ## Proposed Solution
18
-
19
- ### The Seed (Core Plugin)
20
-
21
- 4 commands + minimal agents:
22
-
23
- | Component | What's Included |
24
- |-----------|-----------------|
25
- | Commands | `/plan`, `/work`, `/review`, `/compound` |
26
- | Review Agents | security, performance, simplicity, architecture, patterns |
27
- | Research Agents | best-practices, framework-docs, git-history, repo-analyst |
28
- | Skills | compound-docs, file-todos, git-worktree |
29
- | MCP Servers | playwright, context7 |
30
-
31
- ### The Growth Loop
32
-
33
- After each `/compound`:
34
-
35
- ```
36
- ✅ Learning documented
37
-
38
- 💡 It looks like you're using Rails.
39
- Would you like to add the "DHH Rails Reviewer"?
40
-
41
- [y] Yes [n] No [x] Never ask
42
- ```
43
-
44
- Three sources of new agents:
45
- 1. **Predefined** - "You're using Rails, add DHH reviewer?"
46
- 2. **Dynamic** - "You're using actor model, create an expert?"
47
- 3. **Custom** - "Want to create an agent for this pattern?"
48
-
49
- ### Agent Storage
50
-
51
- ```
52
- .claude/agents/ → Project-specific (highest priority)
53
- ~/.claude/agents/ → User's garden
54
- plugin/agents/ → From installed plugins
55
- ```
56
-
57
- ## Implementation Phases
58
-
59
- ### Phase 1: Split the Plugin
60
- - Create `agent-library/` with framework-specific agents (Rails, Python, TypeScript, Frontend)
61
- - Keep `compound-engineering` as core with universal agents
62
- - No breaking changes—existing users unaffected
63
-
64
- ### Phase 2: Agent Discovery
65
- - `/review` discovers agents from all three locations
66
- - Project agents override user agents override plugin agents
67
-
68
- ### Phase 3: Growth via /compound
69
- - Detect tech stack (Gemfile, package.json, etc.)
70
- - Suggest relevant agents after documenting learnings
71
- - Install accepted agents to `~/.claude/agents/`
72
-
73
- ### Phase 4: Management
74
- - `/agents list` - See your garden
75
- - `/agents add <name>` - Add from library
76
- - `/agents disable <name>` - Temporarily disable
77
-
78
- ## What Goes Where
79
-
80
- **Core (seed):** 11 framework-agnostic agents
81
- - security-sentinel, performance-oracle, code-simplicity-reviewer
82
- - architecture-strategist, pattern-recognition-specialist
83
- - 4 research agents, 2 workflow agents
84
-
85
- **Agent Library:** 10 specialized agents
86
- - Rails: kieran-rails, dhh-rails, data-integrity (3)
87
- - Python: kieran-python (1)
88
- - TypeScript: kieran-typescript (1)
89
- - Frontend: julik-races, design-iterator, design-reviewer, figma-sync (4)
90
- - Editorial: every-style-editor (1)
91
-
92
- ## Key Constraint
93
-
94
- Claude Code doesn't support plugin dependencies. Each plugin must be independent. Users manually install what they need, or we suggest additions via `/compound`.
95
-
96
- ## Acceptance Criteria
97
-
98
- - [ ] Core plugin works standalone with universal agents
99
- - [ ] `/compound` suggests agents based on detected tech stack
100
- - [ ] Users can accept/decline suggestions
101
- - [ ] `/agents` command for garden management
102
- - [ ] No breaking changes for existing users
@@ -1,279 +0,0 @@
1
- # Landing Page LaunchKit Refresh
2
-
3
- ## Overview
4
-
5
- Review and enhance the `/docs/index.html` landing page using LaunchKit elements and Pragmatic Technical Writing style (Hunt/Thomas, Joel Spolsky). The current implementation is strong but can be refined section-by-section.
6
-
7
- ## Current State Assessment
8
-
9
- ### What's Working Well
10
- - Specific, outcome-focused hero headline ("12 expert opinions in 30 seconds")
11
- - Developer-authentic copywriting (N+1 queries, CORS, SQL injection)
12
- - Stats section with clear metrics (23 agents, 16 commands, 11 skills, 2 MCP servers)
13
- - Philosophy section with concrete story (N+1 query bug)
14
- - Three-step installation with actual commands
15
- - FAQ accordion following LaunchKit patterns
16
- - Categorized feature sections with code examples
17
-
18
- ### Missing Elements (From Best Practices Research)
19
- 1. **Social Proof Section** - No testimonials, GitHub stars, or user metrics
20
- 2. **Visual Demo** - No GIF/animation showing the tool in action
21
- 3. **Arrow icons on CTAs** - 26% conversion boost from studies
22
- 4. **Trust indicators** - Open source badge, license info
23
-
24
- ---
25
-
26
- ## Section-by-Section Review Plan
27
-
28
- ### 1. Hero Section (lines 56-78)
29
-
30
- **Current:**
31
- ```html
32
- <h1>Your Code Reviews Just Got 12 Expert Opinions. In 30 Seconds.</h1>
33
- ```
34
-
35
- **Review Checklist:**
36
- - [ ] Headline follows Pragmatic Writing (concrete before abstract) ✅
37
- - [ ] Eyebrow badge is current (Version 2.6.0) - verify
38
- - [ ] Description paragraph under 3 sentences ✅
39
- - [ ] Button group has arrow icon on primary CTA
40
- - [ ] "Read the Docs" secondary CTA present ✅
41
-
42
- **Potential Improvements:**
43
- - Add `→` arrow to "Install Plugin" button
44
- - Consider adding animated terminal GIF below buttons showing `/review` in action
45
-
46
- ### 2. Stats Section (lines 81-104)
47
-
48
- **Current:** 4 stat cards (23 agents, 16 commands, 11 skills, 2 MCP servers)
49
-
50
- **Review Checklist:**
51
- - [ ] Numbers are accurate (verify against actual file counts)
52
- - [ ] Icons are appropriate for each stat
53
- - [ ] Hover effects working properly
54
- - [ ] Mobile layout (2x2 grid) is readable
55
-
56
- **Potential Improvements:**
57
- - Add "developers using" or "reviews run" metric if available
58
- - Consider adding subtle animation on scroll
59
-
60
- ### 3. Philosophy Section (lines 107-192)
61
-
62
- **Current:** "Why Your Third Code Review Should Be Easier Than Your First" with N+1 query story
63
-
64
- **Review Checklist:**
65
- - [ ] Opens with concrete story (N+1 query) ✅
66
- - [ ] Quote block is memorable and quotable
67
- - [ ] Four pillars (Plan, Delegate, Assess, Codify) are clear
68
- - [ ] Each pillar has: tagline, description, tool tags
69
- - [ ] Descriptions use "you" voice ✅
70
-
71
- **Potential Improvements:**
72
- - Review pillar descriptions for passive voice
73
- - Ensure each pillar description follows PAS (Problem, Agitate, Solve) pattern
74
- - Check tool tags are accurate and current
75
-
76
- ### 4. Agents Section (lines 195-423)
77
-
78
- **Current:** 23 agents in 5 categories (Review, Research, Design, Workflow, Docs)
79
-
80
- **Review Checklist:**
81
- - [ ] All 23 agents are listed (count actual files)
82
- - [ ] Categories are logical and scannable
83
- - [ ] Each card has: name, badge, description, usage code
84
- - [ ] Descriptions are conversational (not passive)
85
- - [ ] Critical badges (Security, Data) stand out
86
-
87
- **Potential Improvements:**
88
- - Review agent descriptions against pragmatic writing checklist
89
- - Ensure descriptions answer "when would I use this?"
90
- - Add concrete scenarios to generic descriptions
91
-
92
- ### 5. Commands Section (lines 426-561)
93
-
94
- **Current:** 16 commands in 2 categories (Workflow, Utility)
95
-
96
- **Review Checklist:**
97
- - [ ] All 16 commands are listed (count actual files)
98
- - [ ] Core workflow commands are highlighted
99
- - [ ] Descriptions are action-oriented
100
- - [ ] Command names match actual implementation
101
-
102
- **Potential Improvements:**
103
- - Review command descriptions for passive voice
104
- - Lead with outcomes, not features
105
- - Add "saves you X minutes" framing where appropriate
106
-
107
- ### 6. Skills Section (lines 564-703)
108
-
109
- **Current:** 11 skills in 3 categories (Development, Content/Workflow, Image Generation)
110
-
111
- **Review Checklist:**
112
- - [ ] All 11 skills are listed (count actual directories)
113
- - [ ] Featured skill (gemini-imagegen) is properly highlighted
114
- - [ ] API key requirement is clear
115
- - [ ] Skill invocation syntax is correct
116
-
117
- **Potential Improvements:**
118
- - Review skill descriptions against pragmatic writing
119
- - Ensure each skill answers "what problem does this solve?"
120
-
121
- ### 7. MCP Servers Section (lines 706-751)
122
-
123
- **Current:** 2 MCP servers (Playwright, Context7)
124
-
125
- **Review Checklist:**
126
- - [ ] Tool lists are accurate
127
- - [ ] Descriptions explain WHY not just WHAT
128
- - [ ] Framework support list is current (100+)
129
-
130
- **Potential Improvements:**
131
- - Add concrete example of each server in action
132
- - Consider before/after comparison
133
-
134
- ### 8. Installation Section (lines 754-798)
135
-
136
- **Current:** "Three Commands. Zero Configuration." with 3 steps
137
-
138
- **Review Checklist:**
139
- - [ ] Commands are accurate and work
140
- - [ ] Step 3 shows actual usage examples
141
- - [ ] Timeline visual (vertical line) renders correctly
142
- - [ ] Copy buttons work on code blocks
143
-
144
- **Potential Improvements:**
145
- - Add copy-to-clipboard functionality if missing
146
- - Consider adding "What you'll see" output example
147
-
148
- ### 9. FAQ Section (lines 801-864)
149
-
150
- **Current:** 5 questions in accordion format
151
-
152
- **Review Checklist:**
153
- - [ ] Questions address real objections
154
- - [ ] Answers are conversational (use "you")
155
- - [ ] Accordion expand/collapse works
156
- - [ ] No passive voice in answers
157
-
158
- **Potential Improvements:**
159
- - Review for weasel words ("best practices suggest")
160
- - Ensure answers are direct and actionable
161
-
162
- ### 10. CTA Section (lines 868-886)
163
-
164
- **Current:** "Install Once. Compound Forever." with Install + GitHub buttons
165
-
166
- **Review Checklist:**
167
- - [ ] Badge is eye-catching ("Free & Open Source")
168
- - [ ] Headline restates core value proposition
169
- - [ ] Primary CTA has arrow icon ✅
170
- - [ ] Trust line at bottom
171
-
172
- **Potential Improvements:**
173
- - Review trust line copy
174
- - Consider adding social proof element
175
-
176
- ---
177
-
178
- ## NEW: Social Proof Section (To Add)
179
-
180
- **Position:** After Stats section, before Philosophy section
181
-
182
- **Components:**
183
- - GitHub stars counter (dynamic or static)
184
- - "Trusted by X developers" metric
185
- - 2-3 testimonial quotes (if available)
186
- - Company logos (if applicable)
187
-
188
- **LaunchKit Pattern:**
189
- ```html
190
- <section class="social-proof-section">
191
- <div class="heading centered">
192
- <p class="paragraph m secondary">Trusted by developers at</p>
193
- </div>
194
- <div class="logo-grid">
195
- <!-- Company logos or GitHub badge -->
196
- </div>
197
- </section>
198
- ```
199
-
200
- ---
201
-
202
- ## Pragmatic Writing Style Checklist (Apply to ALL Copy)
203
-
204
- ### The Five Laws
205
- 1. **Concrete Before Abstract** - Story/example first, then principle
206
- 2. **Physical Analogies** - Import metaphors readers understand
207
- 3. **Conversational Register** - Use "you", contractions, asides
208
- 4. **Numbered Frameworks** - Create referenceable structures
209
- 5. **Humor as Architecture** - Mental anchors for dense content
210
-
211
- ### Anti-Patterns to Find and Fix
212
- - [ ] "It is recommended that..." → "Do this:"
213
- - [ ] "Best practices suggest..." → "Here's what works:"
214
- - [ ] Passive voice → Active voice
215
- - [ ] Abstract claims → Specific examples
216
- - [ ] Walls of text → Scannable lists
217
-
218
- ### Quality Checklist (Per Section)
219
- - [ ] Opens with concrete story or example?
220
- - [ ] Can reader skim headers and get the arc?
221
- - [ ] Uses "you" at least once?
222
- - [ ] Clear action reader can take?
223
- - [ ] Reads aloud like speech?
224
-
225
- ---
226
-
227
- ## Implementation Phases
228
-
229
- ### Phase 1: Copy Audit (No HTML Changes)
230
- 1. Read through entire page
231
- 2. Flag passive voice instances
232
- 3. Flag abstract claims without examples
233
- 4. Flag missing "you" voice
234
- 5. Document improvements needed
235
-
236
- ### Phase 2: Copy Rewrites
237
- 1. Rewrite flagged sections following pragmatic style
238
- 2. Ensure each section passes quality checklist
239
- 3. Maintain existing HTML structure
240
-
241
- ### Phase 3: Component Additions
242
- 1. Add arrow icons to primary CTAs
243
- 2. Add social proof section (if data available)
244
- 3. Consider visual demo element
245
-
246
- ### Phase 4: Verification
247
- 1. Validate all counts (agents, commands, skills)
248
- 2. Test all links and buttons
249
- 3. Verify mobile responsiveness
250
- 4. Check accessibility
251
-
252
- ---
253
-
254
- ## Files to Modify
255
-
256
- | File | Changes |
257
- |------|---------|
258
- | `docs/index.html` | Copy rewrites, potential new section |
259
- | `docs/css/style.css` | Social proof styles (if adding) |
260
-
261
- ---
262
-
263
- ## Success Criteria
264
-
265
- 1. All copy passes Pragmatic Writing quality checklist
266
- 2. No passive voice in any description
267
- 3. Every feature section answers "why should I care?"
268
- 4. Stats are accurate against actual file counts
269
- 5. Page loads in <3 seconds
270
- 6. Mobile layout is fully functional
271
-
272
- ---
273
-
274
- ## References
275
-
276
- - LaunchKit Template: https://launchkit.evilmartians.io/
277
- - Pragmatic Writing Skill: `~/.claude/skills/pragmatic-writing-skill/SKILL.md`
278
- - Current Landing Page: `/Users/kieranklaassen/compound-engineering-plugin/docs/index.html`
279
- - Style CSS: `/Users/kieranklaassen/compound-engineering-plugin/docs/css/style.css`