@soleri/forge 9.3.1 → 9.5.0

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 (61) hide show
  1. package/dist/compose-claude-md.js +118 -7
  2. package/dist/compose-claude-md.js.map +1 -1
  3. package/dist/scaffold-filetree.js +42 -0
  4. package/dist/scaffold-filetree.js.map +1 -1
  5. package/dist/scaffolder.js +46 -2
  6. package/dist/scaffolder.js.map +1 -1
  7. package/dist/skills/agent-dev/SKILL.md +122 -0
  8. package/dist/skills/agent-guide/SKILL.md +116 -0
  9. package/dist/skills/agent-issues/SKILL.md +291 -0
  10. package/dist/skills/agent-persona/SKILL.md +66 -0
  11. package/dist/skills/deep-review/SKILL.md +12 -0
  12. package/dist/skills/deliver-and-ship/SKILL.md +123 -0
  13. package/dist/skills/discovery-phase/SKILL.md +69 -0
  14. package/dist/skills/env-setup/SKILL.md +151 -0
  15. package/dist/skills/executing-plans/SKILL.md +12 -0
  16. package/dist/skills/finishing-a-development-branch/SKILL.md +76 -0
  17. package/dist/skills/fix-and-learn/SKILL.md +12 -0
  18. package/dist/skills/mcp-doctor/SKILL.md +160 -0
  19. package/dist/skills/subagent-driven-development/SKILL.md +79 -0
  20. package/dist/skills/using-git-worktrees/SKILL.md +81 -0
  21. package/dist/skills/vault-curate/SKILL.md +99 -0
  22. package/dist/skills/verification-before-completion/SKILL.md +12 -0
  23. package/dist/skills/yolo-mode/SKILL.md +80 -0
  24. package/dist/templates/clean-worktrees.d.ts +5 -0
  25. package/dist/templates/clean-worktrees.js +59 -0
  26. package/dist/templates/clean-worktrees.js.map +1 -0
  27. package/dist/templates/setup-script.js +26 -1
  28. package/dist/templates/setup-script.js.map +1 -1
  29. package/dist/templates/shared-rules.js +160 -5
  30. package/dist/templates/shared-rules.js.map +1 -1
  31. package/dist/templates/skills.js +3 -29
  32. package/dist/templates/skills.js.map +1 -1
  33. package/dist/templates/vitest-config.js +1 -0
  34. package/dist/templates/vitest-config.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/compose-claude-md.ts +126 -9
  37. package/src/scaffold-filetree.ts +42 -0
  38. package/src/scaffolder.ts +49 -2
  39. package/src/skills/agent-dev/SKILL.md +122 -0
  40. package/src/skills/agent-guide/SKILL.md +116 -0
  41. package/src/skills/agent-issues/SKILL.md +291 -0
  42. package/src/skills/agent-persona/SKILL.md +66 -0
  43. package/src/skills/deep-review/SKILL.md +12 -0
  44. package/src/skills/deliver-and-ship/SKILL.md +123 -0
  45. package/src/skills/discovery-phase/SKILL.md +69 -0
  46. package/src/skills/env-setup/SKILL.md +151 -0
  47. package/src/skills/executing-plans/SKILL.md +12 -0
  48. package/src/skills/finishing-a-development-branch/SKILL.md +76 -0
  49. package/src/skills/fix-and-learn/SKILL.md +12 -0
  50. package/src/skills/mcp-doctor/SKILL.md +160 -0
  51. package/src/skills/subagent-driven-development/SKILL.md +79 -0
  52. package/src/skills/using-git-worktrees/SKILL.md +81 -0
  53. package/src/skills/vault-curate/SKILL.md +99 -0
  54. package/src/skills/verification-before-completion/SKILL.md +12 -0
  55. package/src/skills/yolo-mode/SKILL.md +80 -0
  56. package/src/templates/clean-worktrees.ts +58 -0
  57. package/src/templates/setup-script.ts +26 -1
  58. package/src/templates/shared-rules.ts +163 -5
  59. package/src/templates/skills.ts +3 -29
  60. package/src/templates/vitest-config.ts +1 -0
  61. package/vitest.config.ts +1 -0
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: env-setup
3
+ description: >
4
+ Use when a developer needs to set up, fix, or restore a local development environment.
5
+ Triggers on post-clone setup, project onboarding, first-time running a repo, pulled changes
6
+ that broke the build, missing or misconfigured dependencies, MODULE_NOT_FOUND or Cannot find
7
+ module errors, gyp ERR or native module build failures, missing .env files or unknown required
8
+ environment variables, database setup, Docker compose issues, or connection refused during
9
+ local dev. Covers Node.js, Python, Rust, Go, Ruby, PHP, and Docker-based projects.
10
+ ---
11
+
12
+ # Environment Setup
13
+
14
+ Detect what a project needs, diagnose what's missing, and produce an actionable setup checklist.
15
+
16
+ ## Overview
17
+
18
+ Scan the project root for configuration files, detect the tech stack and dependencies, identify gaps between what's required and what's present, then generate ordered setup steps. Offer to execute each step.
19
+
20
+ ## When to Use
21
+
22
+ - Just cloned a repo and need to get it running
23
+ - Getting errors after pulling changes (missing deps, env vars, DB migrations)
24
+ - Onboarding to an unfamiliar project
25
+ - Setting up a project on a new machine
26
+ - Docker/container environment not starting
27
+ - Missing `.env` file or environment variables
28
+
29
+ ## Detection Phase
30
+
31
+ Scan the project root and identify:
32
+
33
+ ### Package Managers & Dependencies
34
+
35
+ | File | Stack | Install Command |
36
+ | ------------------ | ------- | ------------------------------------------------------------ |
37
+ | `package.json` | Node.js | `npm install` / `yarn` / `pnpm install` (check for lockfile) |
38
+ | `requirements.txt` | Python | `pip install -r requirements.txt` |
39
+ | `pyproject.toml` | Python | `pip install -e .` or `poetry install` or `uv sync` |
40
+ | `Pipfile` | Python | `pipenv install` |
41
+ | `Cargo.toml` | Rust | `cargo build` |
42
+ | `go.mod` | Go | `go mod download` |
43
+ | `Gemfile` | Ruby | `bundle install` |
44
+ | `composer.json` | PHP | `composer install` |
45
+
46
+ **Lockfile priority:** If a lockfile exists (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`, `Pipfile.lock`, `poetry.lock`), use the matching package manager. Don't mix.
47
+
48
+ ### Environment Variables
49
+
50
+ 1. Check for `.env.example`, `.env.sample`, `.env.template`
51
+ 2. Check for existing `.env` — if missing, copy from template
52
+ 3. Parse template for required variables (lines without defaults or with placeholder values)
53
+ 4. Flag variables that need real values (API keys, secrets, database URLs)
54
+ 5. **If no template exists:** grep source for `process.env.`, `os.environ`, `env::var`, `os.Getenv` to discover env vars the project actually uses.
55
+
56
+ ### Native Dependencies
57
+
58
+ | Indicator | What It Means |
59
+ | ---------------------------------------- | -------------------------------------- |
60
+ | `better-sqlite3`, `sqlite3` in deps | Needs C++ compiler |
61
+ | `node-gyp` in deps or scripts | Needs Python 3 + C++ toolchain |
62
+ | `sharp` in deps | Needs `libvips` |
63
+ | `Cargo.toml` with `[build-dependencies]` | Needs Rust toolchain for build scripts |
64
+ | `setup.py` with `ext_modules` | Needs C compiler for Python extensions |
65
+
66
+ ### Databases
67
+
68
+ | File/Config | Database | Setup Needed |
69
+ | ---------------------------------------- | ---------------- | ---------------------------- |
70
+ | `docker-compose.yml` with postgres/mysql | PostgreSQL/MySQL | Container + migrations |
71
+ | `prisma/schema.prisma` | Prisma-managed | `npx prisma migrate dev` |
72
+ | `drizzle.config.*` | Drizzle-managed | `npx drizzle-kit push` |
73
+ | `alembic.ini` | SQLAlchemy | `alembic upgrade head` |
74
+ | `config/database.yml` | Rails | `rails db:create db:migrate` |
75
+
76
+ ### Infrastructure
77
+
78
+ | File | What It Means |
79
+ | --------------------------------------------- | ------------------------------------------- |
80
+ | `docker-compose.yml` | Services to start with `docker compose up` |
81
+ | `Dockerfile` | Can build container locally |
82
+ | `Makefile` | Check for `setup`, `install`, `dev` targets |
83
+ | `.tool-versions` / `.node-version` / `.nvmrc` | Required runtime version |
84
+ | `turbo.json` / `nx.json` / `lerna.json` | Monorepo setup |
85
+
86
+ ### IDE & Tool Integration
87
+
88
+ | File | Integration |
89
+ | ------------------------ | ---------------------------- |
90
+ | `.vscode/` | VS Code settings, extensions |
91
+ | `.mcp.json` / `mcp.json` | MCP server config |
92
+ | `.editorconfig` | Cross-editor formatting |
93
+
94
+ ## Diagnosis Phase
95
+
96
+ After detection, check what's present vs needed:
97
+
98
+ 1. **Runtime version** — does installed version match version files?
99
+ 2. **Dependencies installed?** — does `node_modules/`, `venv/`, `vendor/` exist?
100
+ 3. **Native build tools?** — are compilers available?
101
+ 4. **Env file present?** — does `.env` exist when a template does?
102
+ 5. **Database reachable?** — can the configured DB URL connect?
103
+ 6. **Docker running?** — is Docker daemon running if needed?
104
+ 7. **Build artifacts** — does the project need an initial build step?
105
+
106
+ ## Checklist Generation
107
+
108
+ Produce steps in dependency order:
109
+
110
+ ```
111
+ ## Setup Checklist
112
+
113
+ 1. [ ] Install runtime (Node 20.x via nvm)
114
+ 2. [ ] Install dependencies (pnpm install)
115
+ 3. [ ] Copy environment file (cp .env.example .env)
116
+ 4. [ ] Fill in required env vars: DATABASE_URL, API_KEY
117
+ 5. [ ] Start Docker services (docker compose up -d)
118
+ 6. [ ] Run database migrations (npx prisma migrate dev)
119
+ 7. [ ] Build the project (pnpm build)
120
+ 8. [ ] Start dev server (pnpm dev)
121
+ ```
122
+
123
+ **Order matters:** runtime -> deps -> env -> infrastructure -> migrations -> build -> run.
124
+
125
+ After presenting the checklist, offer: "Want me to run these steps for you?"
126
+
127
+ ## Execution Phase
128
+
129
+ If the user says yes, execute steps sequentially. Stop and ask if:
130
+
131
+ - A step fails
132
+ - A step requires manual input (API keys, passwords)
133
+ - A step would modify system-level config (global installs, PATH changes)
134
+
135
+ ## Monorepo Handling
136
+
137
+ If monorepo detected (turbo.json, nx.json, pnpm-workspace.yaml):
138
+
139
+ 1. Install root dependencies first
140
+ 2. Ask which package/app the user wants to work on
141
+ 3. Check for package-specific setup
142
+ 4. Run package-specific setup after root
143
+
144
+ ## Common Mistakes
145
+
146
+ - **Wrong package manager** — using `npm install` when `yarn.lock` exists. Always check lockfiles first.
147
+ - **Skipping env file** — project crashes on first API call. Always check for templates.
148
+ - **Missing native build tools** — `npm install` fails with gyp errors. Check before installing.
149
+ - **Missing runtime version** — subtle bugs from wrong Node/Python version.
150
+ - **Docker not running** — cryptic "connection refused" errors.
151
+ - **Stale dependencies** — after `git pull`, always re-install if lockfile changed.
@@ -77,6 +77,18 @@ Capture mid-execution learnings with `op:capture_quick` as they happen — don't
77
77
  - Forgetting to reconcile the plan after execution (drift data improves future plans)
78
78
  - Starting implementation on main/master without explicit consent
79
79
 
80
+ ## Rationalization Prevention
81
+
82
+ Do NOT rationalize away failures. If a verification step fails, the task is not complete.
83
+
84
+ - **HARD-GATE: Each task's verification must pass before marking it `completed`.**
85
+ - **HARD-GATE: Final verification (Step 6) must pass before `plan_reconcile`. Do not reconcile a failing plan.**
86
+ - Do not say "this task is basically done" when its verification has not run.
87
+ - Do not skip verification steps "to save time" -- they exist for a reason.
88
+ - Do not mark a task `completed` while its tests fail, even if the code "looks right."
89
+ - If a task is blocked or failing, leave it `in_progress` and report honestly.
90
+ - Do not treat reconciliation drift as permission to ignore failures.
91
+
80
92
  ## Quick Reference
81
93
 
82
94
  | Op | When to Use |
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: finishing-a-development-branch
3
+ description: >
4
+ Use when the user says "finish branch", "merge branch", "ready to merge", "PR ready",
5
+ "close branch", "submit PR", or wants to finalize a development branch for merge into
6
+ the base branch.
7
+ ---
8
+
9
+ # Finishing a Development Branch
10
+
11
+ Pre-merge checks, PR creation, merge strategy, and branch cleanup.
12
+
13
+ **Announce at start:** "I'm using the finishing-a-development-branch skill to prepare this branch for merge."
14
+
15
+ ## Step 1: Pre-Merge Checklist
16
+
17
+ Run all checks before creating a PR. Stop on any failure.
18
+
19
+ ```bash
20
+ npm test # all tests pass
21
+ npx tsc --noEmit # typecheck clean
22
+ npm run lint # no lint errors (if configured)
23
+ ```
24
+
25
+ Verify no uncommitted changes: `git status` should be clean. Commit or stash before proceeding.
26
+
27
+ ## Step 2: Create the Pull Request
28
+
29
+ 1. Push the branch: `git push -u origin <branch>`
30
+ 2. Create PR with `gh pr create`:
31
+ - **Title**: under 70 chars, conventional format (`feat:`, `fix:`, `refactor:`)
32
+ - **Body**: summary (what + why), test plan, breaking changes if any
33
+ - **Reviewers**: add if the user specifies or the repo has CODEOWNERS
34
+ - **Labels/milestone**: add if relevant
35
+
36
+ Keep the description focused on _why_ the change exists, not a file-by-file diff recap.
37
+
38
+ ## Step 3: Squash vs Merge Commit
39
+
40
+ | Signal | Strategy | Rationale |
41
+ | -------------------------------- | ---------------- | --------------------------------- |
42
+ | Many WIP/fixup commits | **Squash** | Clean history, one logical change |
43
+ | Each commit is a meaningful unit | **Merge commit** | Preserves granular history |
44
+ | Single commit on branch | Either | No difference |
45
+ | Team convention exists | **Follow it** | Consistency wins |
46
+
47
+ Default to **squash** unless the user or repo convention says otherwise.
48
+
49
+ ## Step 4: Handle Merge Conflicts
50
+
51
+ If the base branch has diverged:
52
+
53
+ 1. `git fetch origin && git rebase origin/<base>` — preferred, keeps history linear
54
+ 2. Resolve conflicts file by file, run the full checklist (Step 1) again after resolving
55
+ 3. `git rebase --continue` after each resolution
56
+ 4. If rebase is too complex, `git merge origin/<base>` is acceptable — ask the user
57
+
58
+ Never force-push a rebased branch that others are working on.
59
+
60
+ ## Step 5: Branch Cleanup
61
+
62
+ After merge is confirmed:
63
+
64
+ 1. `git checkout <base> && git pull`
65
+ 2. `git branch -d <branch>` — delete local branch
66
+ 3. If remote branch not auto-deleted: `git push origin --delete <branch>`
67
+
68
+ ## Anti-Patterns
69
+
70
+ - **Force-pushing to shared branches** — destroys others' history; only force-push personal branches
71
+ - **Merging without tests passing** — broken main is worse than a delayed merge
72
+ - **Giant PRs** — split if touching 10+ files across unrelated concerns
73
+ - **Empty PR descriptions** — reviewers need context; "fixes stuff" is not a description
74
+ - **Leaving stale branches** — delete after merge; stale branches create confusion
75
+
76
+ **Related skills:** executing-plans, verification-before-completion
@@ -90,6 +90,18 @@ Bug resolved, tests pass, root cause captured in vault. A fix without a capture
90
90
  - Skipping the capture step after fixing
91
91
  - Not running the full test suite to check regressions
92
92
 
93
+ ## Rationalization Prevention
94
+
95
+ Do NOT rationalize away failures. A fix is not done until it is proven done.
96
+
97
+ - **HARD-GATE: The original symptom must be verified as resolved (test passes, error gone) before claiming the bug is fixed.**
98
+ - **HARD-GATE: Full test suite must pass (no regressions) before completing the fix loop.**
99
+ - Do not say "the fix should work" -- reproduce the original issue and confirm it is gone.
100
+ - Do not say "this is unrelated" to dismiss a new test failure without investigation.
101
+ - Do not skip the capture step -- a fix without a vault entry is incomplete.
102
+ - If the fix introduces a new failure, the fix is not done. Do not rationalize it away.
103
+ - If you cannot verify the fix, say so. Never claim success without evidence.
104
+
93
105
  ## Quick Reference
94
106
 
95
107
  | Op | When to Use |
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: mcp-doctor
3
+ description: >
4
+ Use when MCP servers fail to connect, tools are missing, or the user says "check MCP",
5
+ "MCP not working", "server not connecting", "tools missing", "heal MCP", "fix MCP",
6
+ "mcp doctor", "mcp status". Diagnoses and repairs MCP server connectivity issues.
7
+ ---
8
+
9
+ # MCP Doctor — Diagnose and Heal MCP Connections
10
+
11
+ Systematically diagnose why MCP servers are not connecting and attempt to repair them.
12
+
13
+ ## Phase 1: Inventory
14
+
15
+ Read the `.mcp.json` in the project root to get the list of configured servers.
16
+
17
+ ```bash
18
+ cat .mcp.json
19
+ ```
20
+
21
+ For each server entry, record:
22
+
23
+ - Server name
24
+ - Command (`command` field)
25
+ - Arguments (`args` field)
26
+ - Working directory (`cwd` field, defaults to `.`)
27
+ - Environment variables (`env` field, if any)
28
+
29
+ ## Phase 2: Diagnose Each Server
30
+
31
+ For each configured server, run these checks in order:
32
+
33
+ ### 2a. Binary exists?
34
+
35
+ ```bash
36
+ which <command>
37
+ # e.g. which node, which uvx, which npx
38
+ ```
39
+
40
+ If the binary is missing, report it and suggest installation.
41
+
42
+ ### 2b. Entry point exists?
43
+
44
+ For `node` commands, check the script file exists:
45
+
46
+ ```bash
47
+ ls -la <args[0]>
48
+ ```
49
+
50
+ For `npx`/`uvx` commands, check the package resolves:
51
+
52
+ ```bash
53
+ npx --yes <package> --help 2>&1 | head -5
54
+ # or
55
+ uvx --from <source> <command> --help 2>&1 | head -5
56
+ ```
57
+
58
+ ### 2c. Server starts?
59
+
60
+ Attempt to start the server with a timeout to verify it initializes:
61
+
62
+ ```bash
63
+ timeout 10 <full command> 2>&1 &
64
+ sleep 3
65
+ kill %1 2>/dev/null
66
+ ```
67
+
68
+ Look for:
69
+
70
+ - Startup success messages (e.g. "Starting MCP server", "tools loaded")
71
+ - Error messages (missing dependencies, port conflicts, config errors)
72
+ - Crash/exit codes
73
+
74
+ ### 2d. Port conflicts?
75
+
76
+ If the server binds to a port, check for conflicts:
77
+
78
+ ```bash
79
+ lsof -i :<port>
80
+ ```
81
+
82
+ If a stale process holds the port, report the PID and suggest killing it.
83
+
84
+ ### 2e. Dependencies met?
85
+
86
+ For Node.js servers, check if `node_modules` exist:
87
+
88
+ ```bash
89
+ ls <cwd>/node_modules/.package-lock.json 2>/dev/null
90
+ ```
91
+
92
+ If missing, suggest `npm install`.
93
+
94
+ For Python (uvx) servers, the virtual env is managed by uvx — check if the package installs cleanly.
95
+
96
+ ## Phase 3: Repair
97
+
98
+ For each issue found, apply the appropriate fix:
99
+
100
+ | Issue | Fix |
101
+ | ----------------------------- | -------------------------------------- |
102
+ | Binary not found | Suggest install command |
103
+ | Entry point missing | `npm run build` or check path |
104
+ | Port conflict (stale process) | `kill <PID>` (ask user first) |
105
+ | Missing node_modules | `npm install` in the right directory |
106
+ | Config error in .mcp.json | Show the fix, apply with user approval |
107
+ | Package resolution failure | Clear cache, retry install |
108
+ | Server crashes on start | Show error log, diagnose root cause |
109
+
110
+ **IMPORTANT:** Never kill processes without user confirmation. Always show the PID and process name first.
111
+
112
+ ## Phase 4: Verify
113
+
114
+ After repairs, instruct the user:
115
+
116
+ > Repairs complete. Please restart MCP connections:
117
+ >
118
+ > 1. Type `/mcp` in the prompt
119
+ > 2. Toggle the repaired server(s) off and back on
120
+ > 3. Verify tools appear with a ToolSearch
121
+
122
+ Note: Claude Code does not support programmatic MCP restarts. The user must use `/mcp` to reconnect.
123
+
124
+ ## Phase 5: Report
125
+
126
+ Present findings as a table:
127
+
128
+ ```
129
+ ## MCP Doctor Report
130
+
131
+ | Server | Binary | Entry Point | Starts | Port | Status |
132
+ |--------|--------|-------------|--------|------|--------|
133
+ | soleri | node OK | dist/index.js OK | OK | — | Healthy |
134
+ | serena | uvx OK | git+... OK | OK | 24285 OK | Healthy |
135
+
136
+ ### Issues Found
137
+ | Server | Issue | Fix Applied |
138
+ |--------|-------|-------------|
139
+ | serena | Stale process on :24285 | Killed PID 1234 |
140
+
141
+ ### Action Required
142
+ - [ ] Run `/mcp` and reconnect repaired servers
143
+ ```
144
+
145
+ ## Common Issues
146
+
147
+ - **uvx servers**: Often fail due to network issues when pulling from git. Check connectivity.
148
+ - **Node servers**: Often fail because `dist/` hasn't been built. Run the build command.
149
+ - **Port conflicts**: Previous server instances that didn't shut down cleanly. Kill and restart.
150
+ - **cwd issues**: Relative `cwd: "."` resolves from where Claude Code launched, not the .mcp.json location.
151
+
152
+ ## Quick Reference
153
+
154
+ | Check | Command | What it tells you |
155
+ | -------------- | ------------------ | ------------------------------- |
156
+ | Binary exists | `which <cmd>` | Is the runtime installed? |
157
+ | Script exists | `ls <path>` | Is the entry point built? |
158
+ | Port free | `lsof -i :<port>` | Is something blocking the port? |
159
+ | Deps installed | `ls node_modules` | Are npm packages present? |
160
+ | Server starts | `timeout 10 <cmd>` | Does initialization succeed? |
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: subagent-driven-development
3
+ description: >
4
+ Use when the user says "use subagents", "parallel agents", "fan out", "dispatch agents",
5
+ "subagent driven", or when a task decomposes into 2+ independent units that benefit from
6
+ isolated execution. Covers when to dispatch, worktree isolation, and merge strategy.
7
+ ---
8
+
9
+ # Subagent-Driven Development
10
+
11
+ Decompose work into isolated units, dispatch subagents via the Agent tool, merge results back. You are the controller — you never implement, you orchestrate.
12
+
13
+ **Announce at start:** "I'm using the subagent-driven-development skill to dispatch isolated agents."
14
+
15
+ ## When to Dispatch
16
+
17
+ | Signal | Dispatch? |
18
+ | --------------------------------------------- | ---------------------------------------- |
19
+ | 2+ independent tasks touching different files | Yes — no conflict risk, parallel speedup |
20
+ | Risky/experimental work (spike, prototype) | Yes — isolate blast radius in a worktree |
21
+ | Large refactor across unrelated modules | Yes — each module is a clean unit |
22
+ | Single-file change or trivial fix | **No** — overhead exceeds benefit |
23
+ | Tasks with sequential dependencies | **No** — cannot parallelize |
24
+ | Tasks modifying the same file | **No** — guaranteed merge conflicts |
25
+
26
+ ## The Process
27
+
28
+ ### Step 1: Decompose
29
+
30
+ Break work into discrete units. For each, determine: files involved, dependencies on other units, conflict risk. Only units with no file overlap and no inter-dependency qualify for dispatch.
31
+
32
+ ### Step 2: Dispatch with Worktree Isolation
33
+
34
+ ```
35
+ Agent(prompt: "<task prompt>", isolation: "worktree")
36
+ ```
37
+
38
+ Each subagent prompt must include: (1) task scope, (2) file boundaries, (3) acceptance criteria, (4) rules — no commits, no out-of-scope changes, run tests before reporting.
39
+
40
+ Launch all independent subagents in a **single message** so they run in parallel.
41
+
42
+ ### Step 3: Review and Merge
43
+
44
+ For each returning subagent:
45
+
46
+ 1. **Review** — read actual file changes (do not trust self-reports alone), verify tests pass, check scope compliance
47
+ 2. **Merge** — `git merge` or `git cherry-pick` from the worktree branch, one at a time
48
+ 3. **Test** — run the full suite after each merge; only proceed if green
49
+ 4. **Conflicts** — resolve manually, re-run tests, capture as anti-pattern for future planning
50
+
51
+ After all merges, capture learnings:
52
+
53
+ ```
54
+ YOUR_AGENT_core op:capture_quick params:{
55
+ title: "subagent dispatch outcome",
56
+ description: "<which tasks parallelized well, which conflicted>"
57
+ }
58
+ ```
59
+
60
+ ## Anti-Patterns
61
+
62
+ | Anti-Pattern | Why It Fails |
63
+ | -------------------------------------------- | --------------------------------------------- |
64
+ | Dispatching for a 5-line fix | Startup overhead exceeds the work |
65
+ | Parallel dispatch of dependent tasks | Second agent works on stale assumptions |
66
+ | Skipping worktree isolation for nearby files | Silent overwrites between agents |
67
+ | Trusting self-reports without reading code | Agents miss edge cases or misunderstand scope |
68
+ | Dispatching 10+ agents at once | Review bottleneck shifts to the controller |
69
+
70
+ ## Merge Strategy
71
+
72
+ | Situation | Strategy |
73
+ | ----------------------------------- | -------------------------------------------------------- |
74
+ | Completely separate directories | Fast-forward merge, no conflicts expected |
75
+ | Different files in the same package | Merge one by one, test after each |
76
+ | Unexpected conflict | Resolve manually, re-run tests, capture as anti-pattern |
77
+ | Subagent result fails review | Dispatch fix subagent into same worktree (max 2 retries) |
78
+
79
+ **Related skills:** parallel-execute, executing-plans, verification-before-completion
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: using-git-worktrees
3
+ description: >
4
+ Use when the user says "worktree", "isolate", "parallel branch", "safe branch", or when a plan
5
+ has independent tasks that benefit from parallel execution in isolated branches. Provides the
6
+ protocol for creating, working in, and cleaning up git worktrees safely.
7
+ ---
8
+
9
+ # Using Git Worktrees
10
+
11
+ Isolate work into parallel branches without stashing or switching. Use for multi-task plans, risky changes, or parallel execution. Claude Code natively supports `isolation: "worktree"` on sub-agents.
12
+
13
+ **Announce at start:** "I'm using the using-git-worktrees skill to isolate this work."
14
+
15
+ ## When to Use
16
+
17
+ - Plan has 2+ independent tasks that can run in parallel
18
+ - Risky or experimental change that should not touch the main working tree
19
+ - Long-running task where you need the main branch clean for hotfixes
20
+
21
+ ## Creation Protocol
22
+
23
+ ```bash
24
+ # 1. Pre-flight — working tree must be clean
25
+ git status
26
+ git log origin/main..main # check for unpushed commits
27
+
28
+ # 2. Create worktree
29
+ git worktree add ../<repo>-<task> -b <branch-name>
30
+ cd ../<repo>-<task>
31
+
32
+ # 3. Bootstrap and baseline
33
+ npm install # shared .git does NOT share node_modules
34
+ npm test # must pass before any changes
35
+ ```
36
+
37
+ If the working tree is dirty, commit or stash first. If baseline tests fail, stop and investigate.
38
+
39
+ ## Working in a Worktree
40
+
41
+ - Full working copy — edit, test, commit normally
42
+ - Commits are visible across worktrees (shared `.git`)
43
+ - `git worktree list` to see all active worktrees
44
+
45
+ ## Cleanup Protocol
46
+
47
+ ```bash
48
+ # 1. Safety check — never delete with unpushed/uncommitted work
49
+ git log origin/<branch>..<branch> # unpushed commits?
50
+ git diff --stat # uncommitted changes?
51
+
52
+ # 2. Merge or discard
53
+ git merge <branch-name> # from main worktree
54
+ # OR: git branch -D <branch-name> # only if work is abandoned
55
+
56
+ # 3. Remove and verify
57
+ git worktree remove ../<repo>-<task>
58
+ git worktree prune
59
+ git worktree list # confirm removal
60
+ ```
61
+
62
+ ## Anti-Patterns
63
+
64
+ - Creating worktrees for single-file changes or one-liner fixes
65
+ - Leaving orphan worktrees after tasks complete — always clean up
66
+ - Deleting the worktree directory manually instead of `git worktree remove`
67
+ - Forgetting `npm install` in new worktree
68
+ - Skipping baseline tests before starting work
69
+
70
+ ## Quick Reference
71
+
72
+ | Action | Command |
73
+ | -------------- | ------------------------------------------------ |
74
+ | Create | `git worktree add ../<name> -b <branch>` |
75
+ | List | `git worktree list` |
76
+ | Remove | `git worktree remove ../<name>` |
77
+ | Prune | `git worktree prune` |
78
+ | Check unpushed | `git log origin/<branch>..<branch>` |
79
+ | Claude Code | Sub-agent with `isolation: "worktree"` parameter |
80
+
81
+ **Related skills:** executing-plans, parallel-execute
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: vault-curate
3
+ description: >
4
+ Use when the user says "clean vault", "deduplicate", "groom knowledge",
5
+ "consolidate vault", "vault maintenance", "find duplicates", "merge patterns",
6
+ "check contradictions", "vault health", or wants to maintain, clean, reorganize,
7
+ or improve the quality of the agent's knowledge base.
8
+ ---
9
+
10
+ # Vault Curate — Knowledge Maintenance
11
+
12
+ Maintain vault quality through deduplication, grooming, contradiction detection, and consolidation. A well-curated vault produces better search results and brain recommendations.
13
+
14
+ ## When to Use
15
+
16
+ Periodically (weekly or after heavy capture sessions), when search quality degrades, when vault health shows warnings, or when the user explicitly requests maintenance.
17
+
18
+ ## Orchestration Sequence
19
+
20
+ ### Step 1: Health Assessment
21
+
22
+ ```
23
+ YOUR_AGENT_core op:knowledge_health
24
+ ```
25
+
26
+ ```
27
+ YOUR_AGENT_core op:get_vault_analytics
28
+ ```
29
+
30
+ Present the health summary to the user before proceeding: total entries, quality scores, staleness, coverage gaps.
31
+
32
+ ### Step 2: Detect Duplicates
33
+
34
+ ```
35
+ YOUR_AGENT_core op:curator_detect_duplicates
36
+ ```
37
+
38
+ This finds entries with overlapping titles, descriptions, or content. Review the duplicate pairs — some may be intentional (different contexts) while others are true duplicates.
39
+
40
+ For true duplicates:
41
+
42
+ ```
43
+ YOUR_AGENT_core op:merge_patterns
44
+ params: { patternIds: ["<id1>", "<id2>"] }
45
+ ```
46
+
47
+ Preserve the best content from each.
48
+
49
+ ### Step 3: Find Contradictions
50
+
51
+ ```
52
+ YOUR_AGENT_core op:curator_contradictions
53
+ ```
54
+
55
+ Contradictions erode trust in vault search results. For each contradiction: decide which entry is correct (check dates, context, evidence), then archive or update the incorrect one.
56
+
57
+ ### Step 4: Groom Entries
58
+
59
+ ```
60
+ YOUR_AGENT_core op:curator_groom_all
61
+ ```
62
+
63
+ Runs tag enrichment and metadata cleanup across all entries. This improves searchability and categorization.
64
+
65
+ For targeted grooming of specific entries:
66
+
67
+ ```
68
+ YOUR_AGENT_core op:curator_groom
69
+ params: { entryIds: ["<id>"], tags: ["<tag>"] }
70
+ ```
71
+
72
+ ### Step 5: Full Consolidation
73
+
74
+ ```
75
+ YOUR_AGENT_core op:curator_consolidate
76
+ ```
77
+
78
+ Runs the complete pipeline: dedup + archive stale entries + resolve contradictions. This is the heavy-duty cleanup.
79
+
80
+ ### Step 6: Knowledge Reorganization
81
+
82
+ ```
83
+ YOUR_AGENT_core op:knowledge_reorganize
84
+ params: { mode: "preview" }
85
+ ```
86
+
87
+ Preview first, then run again with `mode: "apply"` if the preview looks good.
88
+
89
+ ### Step 7: Verify Results
90
+
91
+ ```
92
+ YOUR_AGENT_core op:knowledge_health
93
+ ```
94
+
95
+ Compare with Step 1 metrics. Vault health should improve: fewer duplicates, no contradictions, better coverage.
96
+
97
+ ## Exit Criteria
98
+
99
+ Curation is complete when: duplicates merged, contradictions resolved, entries groomed, and health metrics improved compared to Step 1 baseline.