rpi-kit 1.4.0 → 2.0.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 (53) hide show
  1. package/.claude-plugin/marketplace.json +9 -6
  2. package/.claude-plugin/plugin.json +4 -4
  3. package/AGENTS.md +2016 -117
  4. package/CHANGELOG.md +83 -0
  5. package/README.md +116 -169
  6. package/agents/atlas.md +61 -0
  7. package/agents/clara.md +49 -0
  8. package/agents/forge.md +38 -0
  9. package/agents/hawk.md +54 -0
  10. package/agents/luna.md +50 -0
  11. package/agents/mestre.md +61 -0
  12. package/agents/nexus.md +63 -0
  13. package/agents/pixel.md +48 -0
  14. package/agents/quill.md +40 -0
  15. package/agents/razor.md +41 -0
  16. package/agents/sage.md +52 -0
  17. package/agents/scout.md +49 -0
  18. package/agents/shield.md +51 -0
  19. package/bin/cli.js +160 -53
  20. package/bin/onboarding.js +46 -28
  21. package/commands/rpi/archive.md +149 -0
  22. package/commands/rpi/docs.md +106 -168
  23. package/commands/rpi/implement.md +163 -401
  24. package/commands/rpi/init.md +150 -67
  25. package/commands/rpi/learn.md +114 -0
  26. package/commands/rpi/new.md +85 -155
  27. package/commands/rpi/onboarding.md +157 -336
  28. package/commands/rpi/party.md +212 -0
  29. package/commands/rpi/plan.md +241 -205
  30. package/commands/rpi/research.md +162 -104
  31. package/commands/rpi/review.md +350 -104
  32. package/commands/rpi/rpi.md +125 -0
  33. package/commands/rpi/simplify.md +156 -93
  34. package/commands/rpi/status.md +91 -114
  35. package/package.json +7 -3
  36. package/skills/rpi-agents/SKILL.md +63 -39
  37. package/skills/rpi-workflow/SKILL.md +160 -186
  38. package/agents/code-reviewer.md +0 -108
  39. package/agents/code-simplifier.md +0 -82
  40. package/agents/cto-advisor.md +0 -61
  41. package/agents/doc-synthesizer.md +0 -67
  42. package/agents/doc-writer.md +0 -37
  43. package/agents/explore-codebase.md +0 -88
  44. package/agents/plan-executor.md +0 -95
  45. package/agents/product-manager.md +0 -59
  46. package/agents/requirement-parser.md +0 -51
  47. package/agents/senior-engineer.md +0 -61
  48. package/agents/test-engineer.md +0 -23
  49. package/agents/ux-designer.md +0 -58
  50. package/codex.md +0 -72
  51. package/commands/rpi/add-todo.md +0 -83
  52. package/commands/rpi/set-profile.md +0 -124
  53. package/commands/rpi/test.md +0 -198
package/bin/cli.js CHANGED
@@ -25,6 +25,11 @@ function hasCodex() {
25
25
  return result.status === 0;
26
26
  }
27
27
 
28
+ function hasGeminiCLI() {
29
+ const result = spawnSync("gemini", ["--version"], { stdio: "pipe" });
30
+ return result.status === 0;
31
+ }
32
+
28
33
  function installClaude() {
29
34
  log("Installing RPIKit for Claude Code...");
30
35
  try {
@@ -46,7 +51,7 @@ function installCodex() {
46
51
 
47
52
  if (fs.existsSync(dest)) {
48
53
  const existing = fs.readFileSync(dest, "utf8");
49
- if (existing.includes("RPI Agent Definitions")) {
54
+ if (existing.includes("RPIKit Agents")) {
50
55
  log("Codex: AGENTS.md already contains RPI definitions.");
51
56
  return true;
52
57
  }
@@ -62,6 +67,12 @@ function installCodex() {
62
67
  return true;
63
68
  }
64
69
 
70
+ function installGeminiCLI() {
71
+ log("Installing RPIKit for Gemini CLI...");
72
+ log("Gemini CLI: coming soon. Please see documentation for manual setup.");
73
+ return true;
74
+ }
75
+
65
76
  function uninstallClaude() {
66
77
  log("Removing RPIKit from Claude Code...");
67
78
  try {
@@ -78,82 +89,178 @@ function uninstallClaude() {
78
89
 
79
90
  function printHelp() {
80
91
  console.log(`
81
- RPIKit — Research → Plan → Implement
92
+ RPIKit v2 — Research → Plan → Implement
93
+
94
+ 7-phase workflow with 13 named agents, delta specs,
95
+ and knowledge compounding for AI-assisted feature development.
82
96
 
83
97
  Usage:
84
- rpi-kit install Install for detected tools (Claude Code + Codex)
98
+ rpi-kit install Interactive setup for AI tools
85
99
  rpi-kit install --claude Install for Claude Code only
86
100
  rpi-kit install --codex Install for Codex only (copies AGENTS.md to cwd)
101
+ rpi-kit install --gemini Install for Gemini CLI only
87
102
  rpi-kit uninstall Remove from Claude Code
88
103
  rpi-kit onboarding Interactive walkthrough of the workflow
89
104
  rpi-kit help Show this help
90
105
 
91
- After install, use in Claude Code:
92
- /rpi:init Configure for your project
93
- /rpi:new <feature> Start a new feature
94
- /rpi:research <feature> Research feasibility
95
- /rpi:plan <feature> Generate implementation plan
96
- /rpi:implement <feature> Build it
97
- /rpi:docs <feature> Document the code
98
- /rpi:status Show all features
106
+ Commands (14):
107
+ /rpi:new <feature> Describe your feature → REQUEST.md
108
+ /rpi:research <feature> Parallel agent analysis → RESEARCH.md
109
+ /rpi:plan <feature> Generate specs + tasks → PLAN.md
110
+ /rpi:implement <feature> Execute tasks with tracking → IMPLEMENT.md
111
+ /rpi:simplify <feature> Code quality checks → auto-fix issues
112
+ /rpi:review <feature> Review against plan → PASS / FAIL
113
+ /rpi:docs <feature> Document the code → DOCS.md + changelog
114
+
115
+ /rpi:init Configure RPIKit for your project
116
+ /rpi:status Show all features and their phases
117
+ /rpi <feature> Auto-progress to next phase
118
+ /rpi:onboarding Guided first-time setup
119
+ /rpi:learn [description] Capture a solution to knowledge base
120
+ /rpi:archive <feature> Archive a completed feature
121
+ /rpi:party Multi-agent debate on any topic
122
+
123
+ Agents (13):
124
+ Luna (Analyst) · Atlas (Explorer) · Scout (Researcher) · Nexus (Synthesizer)
125
+ Mestre (Architect) · Clara (PM) · Pixel (UX) · Forge (Builder)
126
+ Sage (Tester) · Razor (Simplifier) · Hawk (Reviewer) · Shield (Security)
127
+ Quill (Doc Writer)
99
128
  `);
100
129
  }
101
130
 
102
- switch (command) {
103
- case "install": {
104
- const claudeOnly = flags.includes("--claude");
105
- const codexOnly = flags.includes("--codex");
131
+ async function run() {
132
+ switch (command) {
133
+ case "install": {
134
+ const claudeOnly = flags.includes("--claude");
135
+ const codexOnly = flags.includes("--codex");
136
+ const geminiOnly = flags.includes("--gemini");
106
137
 
107
- if (claudeOnly) {
108
- installClaude();
109
- } else if (codexOnly) {
110
- installCodex();
111
- } else {
112
- let installed = false;
138
+ if (claudeOnly) {
139
+ installClaude();
140
+ break;
141
+ }
142
+ if (codexOnly) {
143
+ installCodex();
144
+ break;
145
+ }
146
+ if (geminiOnly) {
147
+ installGeminiCLI();
148
+ break;
149
+ }
150
+
151
+ // If silent, use the original auto-install behavior
152
+ if (silent) {
153
+ let installed = false;
154
+ if (hasClaude()) installed = installClaude() || installed;
155
+ if (hasCodex()) installed = installCodex() || installed;
156
+ if (hasGeminiCLI()) installed = installGeminiCLI() || installed;
157
+ if (!installed) {
158
+ const result = installClaude();
159
+ if (!result) {
160
+ log("\nNo supported tool detected (claude, codex, gemini).");
161
+ log("Run manually after installing Claude Code, Codex, or Gemini CLI:");
162
+ log(" rpi-kit install --claude");
163
+ log(" rpi-kit install --codex");
164
+ log(" rpi-kit install --gemini");
165
+ }
166
+ }
167
+ break;
168
+ }
169
+
170
+ // Interactive prompt
171
+ let p;
172
+ let color;
173
+ try {
174
+ p = await import("@clack/prompts");
175
+ color = (await import("picocolors")).default;
176
+ } catch (e) {
177
+ console.error("Failed to load interactive prompt dependencies. Falling back to default install.");
178
+ let installed = false;
179
+ if (hasClaude()) installed = installClaude() || installed;
180
+ if (hasCodex()) installed = installCodex() || installed;
181
+ if (!installed) installClaude();
182
+ break;
183
+ }
184
+
185
+ console.clear();
186
+ p.intro(color.bgCyan(color.black(" RPIKit Setup ")));
113
187
 
114
- if (hasClaude()) {
115
- installed = installClaude() || installed;
188
+ p.log.message(color.dim("RPIKit configured: Claude Code, Codex, Gemini CLI"));
189
+
190
+ const options = [
191
+ { value: "claude", label: "Claude Code", hint: hasClaude() ? "detected" : "" },
192
+ { value: "codex", label: "Codex", hint: hasCodex() ? "detected" : "" },
193
+ { value: "gemini", label: "Gemini CLI", hint: hasGeminiCLI() ? "detected" : "" }
194
+ ];
195
+
196
+ const initialValues = options.filter(o => o.hint === "detected").map(o => o.value);
197
+ if (initialValues.length === 0) {
198
+ initialValues.push("claude"); // default selection if none detected
116
199
  }
117
200
 
118
- if (hasCodex()) {
119
- installed = installCodex() || installed;
201
+ const selectedTools = await p.multiselect({
202
+ message: `Select tools to set up (${options.length} available)`,
203
+ options: options,
204
+ initialValues,
205
+ required: false
206
+ });
207
+
208
+ if (p.isCancel(selectedTools)) {
209
+ p.cancel("Setup cancelled.");
210
+ process.exit(0);
120
211
  }
121
212
 
122
- if (!installed && !silent) {
123
- const result = installClaude();
124
- if (!result) {
125
- log("\nNo supported tool detected (claude, codex).");
126
- log("Run manually after installing Claude Code or Codex:");
127
- log(" rpi-kit install --claude");
128
- log(" rpi-kit install --codex");
213
+ if (selectedTools.length === 0) {
214
+ p.outro("No tools selected.");
215
+ break;
216
+ }
217
+
218
+ console.log(); // Spacing
219
+
220
+ let installed = false;
221
+ for (const tool of selectedTools) {
222
+ if (tool === "claude") {
223
+ installed = installClaude() || installed;
224
+ } else if (tool === "codex") {
225
+ installed = installCodex() || installed;
226
+ } else if (tool === "gemini") {
227
+ installed = installGeminiCLI() || installed;
129
228
  }
130
229
  }
131
230
 
132
- if (installed && !silent) {
133
- log("");
134
- log("New to RPIKit? Run: rpi-kit onboarding");
231
+ if (installed) {
232
+ console.log();
233
+ p.outro(color.green("Setup complete! New to RPIKit? Run: rpi-kit onboarding"));
234
+ } else {
235
+ p.outro(color.yellow("Setup finished with some issues."));
135
236
  }
237
+
238
+ break;
136
239
  }
137
- break;
138
- }
139
240
 
140
- case "onboarding": {
141
- const { run } = require("./onboarding");
142
- run();
143
- break;
144
- }
241
+ case "onboarding": {
242
+ const { run } = require("./onboarding");
243
+ run();
244
+ break;
245
+ }
145
246
 
146
- case "uninstall":
147
- uninstallClaude();
148
- break;
247
+ case "uninstall":
248
+ uninstallClaude();
249
+ break;
149
250
 
150
- case "help":
151
- case "--help":
152
- case "-h":
153
- printHelp();
154
- break;
251
+ case "help":
252
+ case "--help":
253
+ case "-h":
254
+ printHelp();
255
+ break;
155
256
 
156
- default:
157
- if (!silent) printHelp();
158
- break;
257
+ default:
258
+ if (!silent) printHelp();
259
+ break;
260
+ }
159
261
  }
262
+
263
+ run().catch((err) => {
264
+ console.error(err);
265
+ process.exit(1);
266
+ });
package/bin/onboarding.js CHANGED
@@ -9,27 +9,28 @@ const RESET = "\x1b[0m";
9
9
 
10
10
  const steps = [
11
11
  {
12
- title: "Welcome to RPIKit",
12
+ title: "Welcome to RPIKit v2",
13
13
  body: `
14
14
  ${BOLD}Research → Plan → Implement${RESET}
15
15
 
16
- RPIKit is a structured feature development workflow for Claude Code and Codex.
17
- It guides you through 3 phases with validation gates, so you research before
18
- you plan, and plan before you code.
16
+ RPIKit v2 is a structured feature development workflow for Claude Code and Codex.
17
+ It guides you through ${CYAN}7 phases${RESET} with validation gates, delta specs, and
18
+ knowledge compounding — so you research before you plan, and plan before you code.
19
19
 
20
- ${DIM}12 specialized agents simulate a product team:
21
- engineers, PMs, designers, reviewers all working in parallel.${RESET}`,
20
+ ${DIM}13 named agents simulate a product team:
21
+ Luna (Analyst), Atlas (Explorer), Scout (Researcher), Forge (Builder),
22
+ Hawk (Reviewer), Shield (Security), Quill (Doc Writer), and more.${RESET}`,
22
23
  },
23
24
  {
24
- title: "The Pipeline",
25
+ title: "The 7-Phase Pipeline",
25
26
  body: `
26
- ${DIM}Your feature flows through these phases:${RESET}
27
+ ${DIM}Your feature flows through 7 phases:${RESET}
27
28
 
28
29
  ${CYAN}/rpi:new${RESET} Describe your feature → ${BOLD}REQUEST.md${RESET}
29
30
 
30
31
  ${CYAN}/rpi:research${RESET} Parallel agent analysis → ${BOLD}RESEARCH.md${RESET} + GO/NO-GO
31
32
 
32
- ${CYAN}/rpi:plan${RESET} Generate specs + tasks → ${BOLD}PLAN.md${RESET} + eng/pm/ux.md
33
+ ${CYAN}/rpi:plan${RESET} Generate delta specs + tasks → ${BOLD}PLAN.md${RESET} + eng/pm/ux.md
33
34
 
34
35
  ${CYAN}/rpi:implement${RESET} Execute tasks with tracking → ${BOLD}IMPLEMENT.md${RESET}
35
36
 
@@ -37,25 +38,34 @@ ${DIM}Your feature flows through these phases:${RESET}
37
38
 
38
39
  ${CYAN}/rpi:review${RESET} Review against plan → PASS / FAIL
39
40
 
40
- ${CYAN}/rpi:docs${RESET} Document the code → inline docs + changelog`,
41
+ ${CYAN}/rpi:docs${RESET} Document the code → ${BOLD}DOCS.md${RESET} + changelog
42
+
43
+ ${DIM}Plus: /rpi:learn for knowledge compounding, /rpi:archive to wrap up.${RESET}`,
41
44
  },
42
45
  {
43
- title: "Research Tiers",
46
+ title: "Key v2 Concepts",
44
47
  body: `
45
- ${DIM}Control depth and cost with tier flags:${RESET}
46
-
47
- ${GREEN}--quick${RESET} 2 agents Fast feasibility check
48
- ${YELLOW}--standard${RESET} 4 agents Scope + technical approach ${DIM}(default)${RESET}
49
- ${CYAN}--deep${RESET} 6 agents Full strategic analysis
50
-
51
- ${DIM}Agents run in parallel — deep research doesn't mean slow research.${RESET}`,
48
+ ${BOLD}Delta Specs${RESET}
49
+ ${DIM}Specs capture system state. Features only record what changes:${RESET}
50
+ rpi/specs/ ${DIM}Source of truth${RESET}
51
+ rpi/features/{slug}/delta/
52
+ ├── ADDED/ ${DIM}New spec files${RESET}
53
+ ├── MODIFIED/ ${DIM}Changes to existing specs${RESET}
54
+ └── REMOVED/ ${DIM}Specs being deleted${RESET}
55
+
56
+ ${BOLD}Knowledge Compounding${RESET}
57
+ ${DIM}A persistent knowledge base that grows with every feature:${RESET}
58
+ ${CYAN}/rpi:learn${RESET} ${DIM}Manually capture lessons${RESET}
59
+ ${CYAN}/rpi:archive${RESET} ${DIM}Merge delta into specs, clean up${RESET}
60
+
61
+ ${DIM}Scout checks past solutions before external research.${RESET}`,
52
62
  },
53
63
  {
54
64
  title: "Feature Folder Structure",
55
65
  body: `
56
66
  ${DIM}Each feature gets its own folder with all artifacts:${RESET}
57
67
 
58
- rpi/
68
+ rpi/features/
59
69
  └── ${BOLD}your-feature/${RESET}
60
70
  ├── REQUEST.md ${DIM}What and why${RESET}
61
71
  ├── research/
@@ -65,24 +75,32 @@ ${DIM}Each feature gets its own folder with all artifacts:${RESET}
65
75
  │ ├── eng.md ${DIM}Technical spec${RESET}
66
76
  │ ├── pm.md ${DIM}Product requirements${RESET}
67
77
  │ └── ux.md ${DIM}UX design${RESET}
78
+ ├── delta/ ${DIM}What changes (specs diff)${RESET}
79
+ │ ├── ADDED/
80
+ │ ├── MODIFIED/
81
+ │ └── REMOVED/
68
82
  └── implement/
69
83
  ├── IMPLEMENT.md ${DIM}Execution audit trail${RESET}
70
84
  └── DOCS.md ${DIM}Documentation summary${RESET}`,
71
85
  },
72
86
  {
73
- title: "TDD Support",
87
+ title: "Quick Flow & Flags",
74
88
  body: `
75
- ${DIM}RPIKit supports strict Test-Driven Development per task:${RESET}
89
+ ${BOLD}Quick Flow${RESET} ${DIM}— for small features${RESET}
90
+
91
+ ${CYAN}/rpi:new my-feature --quick${RESET}
92
+
93
+ Luna asks 1-2 questions → compact REQUEST.md → Forge implements
94
+ directly with a mini-plan (3-5 tasks). Skips research and full plan.
76
95
 
77
- ${CYAN}RED${RESET} → Write one failing test
78
- ${GREEN}GREEN${RESET} → Write minimal code to pass
79
- ${YELLOW}REFACTOR${RESET} → Clean up, re-run tests
96
+ ${BOLD}Global Flags${RESET}
80
97
 
81
- ${DIM}Enable in .rpi.yaml:${RESET}
82
- tdd: true
83
- test_runner: auto
98
+ ${GREEN}--quick${RESET} Skip research + full plan
99
+ ${YELLOW}--force${RESET} Re-run a phase even if artifacts exist
100
+ ${CYAN}--skip=phase${RESET} Skip specific phase(s)
101
+ ${CYAN}--from=phase${RESET} Start from a specific phase
84
102
 
85
- ${DIM}Or run standalone:${RESET} /rpi:test your-feature --task 1.2`,
103
+ ${DIM}TDD is also supported — enable in .rpi.yaml with tdd: true${RESET}`,
86
104
  },
87
105
  {
88
106
  title: "Get Started",
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: rpi:archive
3
+ description: Merge delta specs into main specs and clean up the feature directory.
4
+ argument-hint: "<feature-name>"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ ---
13
+
14
+ # /rpi:archive — Archive Feature
15
+
16
+ Merge the feature's delta specs into the main `rpi/specs/` directory, preserve any solutions worth saving, and delete the feature directory. History is preserved in git.
17
+
18
+ ---
19
+
20
+ ## Step 1: Load config and validate
21
+
22
+ 1. Read `.rpi.yaml` for config. Apply defaults if missing:
23
+ - `folder`: `rpi/features`
24
+ - `specs_dir`: `rpi/specs`
25
+ - `solutions_dir`: `rpi/solutions`
26
+ 2. Parse `$ARGUMENTS` to extract `{slug}`.
27
+ 3. Validate `rpi/features/{slug}/` exists. If not:
28
+ ```
29
+ Feature '{slug}' not found. Nothing to archive.
30
+ ```
31
+ Stop.
32
+
33
+ ## Step 2: Validate review verdict
34
+
35
+ 1. Read `rpi/features/{slug}/implement/IMPLEMENT.md`.
36
+ 2. Look for a `## Review` section with a verdict of `PASS` or `PASS with concerns`.
37
+ 3. If verdict is `FAIL`:
38
+ ```
39
+ Review verdict is FAIL for '{slug}'.
40
+ Fix the issues and re-run: /rpi:review {slug}
41
+ Cannot archive a feature that hasn't passed review.
42
+ ```
43
+ Stop.
44
+ 4. If no review section or verdict is found:
45
+ ```
46
+ No review verdict found for '{slug}'.
47
+ Run /rpi:review {slug} before archiving.
48
+ ```
49
+ Stop.
50
+
51
+ ## Step 3: Read delta contents
52
+
53
+ 1. Scan `rpi/features/{slug}/delta/ADDED/` for all files — store as `$ADDED_FILES`.
54
+ 2. Scan `rpi/features/{slug}/delta/MODIFIED/` for all files — store as `$MODIFIED_FILES`.
55
+ 3. Scan `rpi/features/{slug}/delta/REMOVED/` for all files — store as `$REMOVED_FILES`.
56
+ 4. Read the contents of each file found.
57
+
58
+ If all three directories are empty:
59
+ ```
60
+ No delta specs found for '{slug}'. Skipping specs merge.
61
+ ```
62
+ Proceed to Step 5.
63
+
64
+ ## Step 4: Launch Nexus to merge delta into specs
65
+
66
+ Use the Agent tool to launch Nexus for the merge:
67
+
68
+ ```
69
+ You are Nexus. Merge the delta specs for feature '{slug}' into the main specs directory.
70
+
71
+ ## ADDED Files (copy to rpi/specs/)
72
+ {for each file in $ADDED_FILES: filename and full contents}
73
+
74
+ ## MODIFIED Files (apply changes to existing rpi/specs/ files)
75
+ {for each file in $MODIFIED_FILES: filename, delta contents, and current contents of the target spec file in rpi/specs/}
76
+
77
+ ## REMOVED Files (delete from rpi/specs/)
78
+ {for each file in $REMOVED_FILES: filename}
79
+
80
+ Your task:
81
+ 1. For each ADDED file: determine the correct path under rpi/specs/ and write the file there.
82
+ - Use the file's content as-is. Preserve the directory structure (e.g. delta/ADDED/auth/oauth.md → rpi/specs/auth/oauth.md).
83
+ 2. For each MODIFIED file: read the current spec at rpi/specs/{path}, apply the changes from the delta version.
84
+ - The delta file contains the updated version of the spec. Merge it intelligently:
85
+ - Preserve any sections in the original that aren't addressed by the delta
86
+ - Update sections that the delta modifies
87
+ - Add new sections from the delta
88
+ 3. For each REMOVED file: note the path under rpi/specs/ that should be deleted.
89
+
90
+ Output format:
91
+ ## Merge Plan
92
+ ### Files to Write
93
+ - {path}: {action: created | updated} — {brief description}
94
+
95
+ ### Files to Delete
96
+ - {path} — {reason}
97
+
98
+ ### Warnings
99
+ - {any conflicts or issues detected}
100
+ (or "No warnings.")
101
+ ```
102
+
103
+ Store the output as `$NEXUS_MERGE`.
104
+
105
+ After Nexus responds, execute the merge plan:
106
+ 1. **ADDED**: Write each file to `rpi/specs/{path}` (create directories as needed).
107
+ 2. **MODIFIED**: Write the merged content to `rpi/specs/{path}`.
108
+ 3. **REMOVED**: Delete the files from `rpi/specs/`.
109
+
110
+ ## Step 5: Check for solutions worth saving
111
+
112
+ 1. Read `rpi/features/{slug}/implement/IMPLEMENT.md` for the review section.
113
+ 2. If the review flagged solutions saved to `rpi/solutions/`:
114
+ - Verify each referenced solution file exists in `rpi/solutions/`.
115
+ - If any are missing, warn:
116
+ ```
117
+ Warning: Solution '{path}' referenced in review but not found.
118
+ ```
119
+
120
+ ## Step 6: Delete feature directory
121
+
122
+ Remove the entire feature directory:
123
+
124
+ ```bash
125
+ rm -rf rpi/features/{slug}
126
+ ```
127
+
128
+ ## Step 7: Commit
129
+
130
+ Stage all changes and commit:
131
+
132
+ ```bash
133
+ git add -A
134
+ git commit -m "chore: archive {slug} — delta merged, feature complete"
135
+ ```
136
+
137
+ ## Step 8: Output summary
138
+
139
+ ```
140
+ Archive complete: {slug}
141
+
142
+ Specs merged:
143
+ - Added: {N} files
144
+ - Modified: {N} files
145
+ - Removed: {N} files
146
+
147
+ Feature directory deleted: rpi/features/{slug}/
148
+ History preserved in git.
149
+ ```