rpi-kit 1.0.0 → 1.0.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.
- package/README.md +19 -3
- package/agents/test-engineer.md +7 -0
- package/bin/cli.js +14 -2
- package/bin/onboarding.js +145 -0
- package/commands/rpi/add-todo.md +83 -0
- package/commands/rpi/implement.md +41 -0
- package/commands/rpi/init.md +2 -2
- package/commands/rpi/new.md +47 -3
- package/commands/rpi/onboarding.md +241 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -6,13 +6,29 @@ RPIKit guides AI-first developers through a structured 3-phase pipeline with val
|
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
-
### Claude Code
|
|
9
|
+
### Claude Code
|
|
10
|
+
|
|
11
|
+
**From the marketplace (recommended):**
|
|
10
12
|
|
|
11
13
|
```bash
|
|
12
14
|
claude plugin install rpi-kit
|
|
13
15
|
```
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
**From npm:**
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g rpi-kit
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The postinstall script registers the plugin automatically. If it fails, register manually:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
claude plugin install /path/to/rpi-kit
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
> **Tip:** `npm root -g` shows where global packages are installed. The path is usually something like `~/.nvm/versions/node/vX.X.X/lib/node_modules/rpi-kit`.
|
|
30
|
+
|
|
31
|
+
**From source:**
|
|
16
32
|
|
|
17
33
|
```bash
|
|
18
34
|
git clone https://github.com/dmend3z/rpi-kit.git
|
|
@@ -147,7 +163,7 @@ commit_style: conventional # Commit message format
|
|
|
147
163
|
parallel_threshold: 8 # Task count for parallel mode
|
|
148
164
|
skip_artifacts: [] # Artifacts to never generate
|
|
149
165
|
review_after_implement: true # Mandatory review gate
|
|
150
|
-
|
|
166
|
+
isolation: none # none | branch | worktree
|
|
151
167
|
tdd: false # Enable Test-Driven Development
|
|
152
168
|
test_runner: auto # Test command (auto-detect or explicit)
|
|
153
169
|
```
|
package/agents/test-engineer.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-engineer
|
|
3
|
+
description: Writes focused, minimal failing tests before implementation code exists. Follows strict TDD — one test at a time, verify it fails, then hand off to the implementer. Spawned by /rpi:test and /rpi:implement (when TDD enabled).
|
|
4
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
color: red
|
|
6
|
+
---
|
|
7
|
+
|
|
1
8
|
# Test Engineer
|
|
2
9
|
|
|
3
10
|
You write focused, minimal failing tests before implementation code exists. You follow strict TDD: one test at a time, verify it fails, then hand off to the implementer.
|
package/bin/cli.js
CHANGED
|
@@ -28,14 +28,14 @@ function hasCodex() {
|
|
|
28
28
|
function installClaude() {
|
|
29
29
|
log("Installing RPIKit for Claude Code...");
|
|
30
30
|
try {
|
|
31
|
-
execFileSync("claude", ["plugin", "
|
|
31
|
+
execFileSync("claude", ["plugin", "install", PLUGIN_DIR], {
|
|
32
32
|
stdio: silent ? "pipe" : "inherit",
|
|
33
33
|
});
|
|
34
34
|
log("Claude Code: installed.");
|
|
35
35
|
return true;
|
|
36
36
|
} catch {
|
|
37
37
|
log("Claude Code: could not register plugin automatically.");
|
|
38
|
-
log(" Manual install: claude plugin
|
|
38
|
+
log(" Manual install: claude plugin install " + PLUGIN_DIR);
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -85,6 +85,7 @@ Usage:
|
|
|
85
85
|
rpi-kit install --claude Install for Claude Code only
|
|
86
86
|
rpi-kit install --codex Install for Codex only (copies AGENTS.md to cwd)
|
|
87
87
|
rpi-kit uninstall Remove from Claude Code
|
|
88
|
+
rpi-kit onboarding Interactive walkthrough of the workflow
|
|
88
89
|
rpi-kit help Show this help
|
|
89
90
|
|
|
90
91
|
After install, use in Claude Code:
|
|
@@ -127,10 +128,21 @@ switch (command) {
|
|
|
127
128
|
log(" rpi-kit install --codex");
|
|
128
129
|
}
|
|
129
130
|
}
|
|
131
|
+
|
|
132
|
+
if (installed && !silent) {
|
|
133
|
+
log("");
|
|
134
|
+
log("New to RPIKit? Run: rpi-kit onboarding");
|
|
135
|
+
}
|
|
130
136
|
}
|
|
131
137
|
break;
|
|
132
138
|
}
|
|
133
139
|
|
|
140
|
+
case "onboarding": {
|
|
141
|
+
const { run } = require("./onboarding");
|
|
142
|
+
run();
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
|
|
134
146
|
case "uninstall":
|
|
135
147
|
uninstallClaude();
|
|
136
148
|
break;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
const readline = require("readline");
|
|
2
|
+
|
|
3
|
+
const CYAN = "\x1b[36m";
|
|
4
|
+
const GREEN = "\x1b[32m";
|
|
5
|
+
const YELLOW = "\x1b[33m";
|
|
6
|
+
const DIM = "\x1b[2m";
|
|
7
|
+
const BOLD = "\x1b[1m";
|
|
8
|
+
const RESET = "\x1b[0m";
|
|
9
|
+
|
|
10
|
+
const steps = [
|
|
11
|
+
{
|
|
12
|
+
title: "Welcome to RPIKit",
|
|
13
|
+
body: `
|
|
14
|
+
${BOLD}Research → Plan → Implement${RESET}
|
|
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.
|
|
19
|
+
|
|
20
|
+
${DIM}11 specialized agents simulate a product team:
|
|
21
|
+
engineers, PMs, designers, reviewers — all working in parallel.${RESET}`,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
title: "The Pipeline",
|
|
25
|
+
body: `
|
|
26
|
+
${DIM}Your feature flows through these phases:${RESET}
|
|
27
|
+
|
|
28
|
+
${CYAN}/rpi:new${RESET} Describe your feature → ${BOLD}REQUEST.md${RESET}
|
|
29
|
+
│
|
|
30
|
+
${CYAN}/rpi:research${RESET} Parallel agent analysis → ${BOLD}RESEARCH.md${RESET} + GO/NO-GO
|
|
31
|
+
│
|
|
32
|
+
${CYAN}/rpi:plan${RESET} Generate specs + tasks → ${BOLD}PLAN.md${RESET} + eng/pm/ux.md
|
|
33
|
+
│
|
|
34
|
+
${CYAN}/rpi:implement${RESET} Execute tasks with tracking → ${BOLD}IMPLEMENT.md${RESET}
|
|
35
|
+
│
|
|
36
|
+
${CYAN}/rpi:simplify${RESET} Code quality checks → auto-fix issues
|
|
37
|
+
│
|
|
38
|
+
${CYAN}/rpi:review${RESET} Review against plan → PASS / FAIL
|
|
39
|
+
│
|
|
40
|
+
${CYAN}/rpi:docs${RESET} Document the code → inline docs + changelog`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
title: "Research Tiers",
|
|
44
|
+
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}`,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: "Feature Folder Structure",
|
|
55
|
+
body: `
|
|
56
|
+
${DIM}Each feature gets its own folder with all artifacts:${RESET}
|
|
57
|
+
|
|
58
|
+
rpi/
|
|
59
|
+
└── ${BOLD}your-feature/${RESET}
|
|
60
|
+
├── REQUEST.md ${DIM}What and why${RESET}
|
|
61
|
+
├── research/
|
|
62
|
+
│ └── RESEARCH.md ${DIM}GO/NO-GO analysis${RESET}
|
|
63
|
+
├── plan/
|
|
64
|
+
│ ├── PLAN.md ${DIM}Task checklist${RESET}
|
|
65
|
+
│ ├── eng.md ${DIM}Technical spec${RESET}
|
|
66
|
+
│ ├── pm.md ${DIM}Product requirements${RESET}
|
|
67
|
+
│ └── ux.md ${DIM}UX design${RESET}
|
|
68
|
+
└── implement/
|
|
69
|
+
├── IMPLEMENT.md ${DIM}Execution audit trail${RESET}
|
|
70
|
+
└── DOCS.md ${DIM}Documentation summary${RESET}`,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
title: "TDD Support",
|
|
74
|
+
body: `
|
|
75
|
+
${DIM}RPIKit supports strict Test-Driven Development per task:${RESET}
|
|
76
|
+
|
|
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
|
|
80
|
+
|
|
81
|
+
${DIM}Enable in .rpi.yaml:${RESET}
|
|
82
|
+
tdd: true
|
|
83
|
+
test_runner: auto
|
|
84
|
+
|
|
85
|
+
${DIM}Or run standalone:${RESET} /rpi:test your-feature --task 1.2`,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "Get Started",
|
|
89
|
+
body: `
|
|
90
|
+
${BOLD}Step 1:${RESET} Open Claude Code in your project
|
|
91
|
+
|
|
92
|
+
${BOLD}Step 2:${RESET} Initialize RPIKit
|
|
93
|
+
${CYAN}/rpi:init${RESET}
|
|
94
|
+
|
|
95
|
+
${BOLD}Step 3:${RESET} Create your first feature
|
|
96
|
+
${CYAN}/rpi:new my-feature${RESET}
|
|
97
|
+
|
|
98
|
+
${BOLD}Step 4:${RESET} Follow the pipeline
|
|
99
|
+
${CYAN}/rpi:research my-feature${RESET}
|
|
100
|
+
${CYAN}/rpi:plan my-feature${RESET}
|
|
101
|
+
${CYAN}/rpi:implement my-feature${RESET}
|
|
102
|
+
|
|
103
|
+
${DIM}Use /rpi:status anytime to see where you are.${RESET}
|
|
104
|
+
|
|
105
|
+
${GREEN}Happy building!${RESET}`,
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
|
|
109
|
+
function run() {
|
|
110
|
+
const rl = readline.createInterface({
|
|
111
|
+
input: process.stdin,
|
|
112
|
+
output: process.stdout,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
let current = 0;
|
|
116
|
+
|
|
117
|
+
function show(index) {
|
|
118
|
+
const step = steps[index];
|
|
119
|
+
const progress = `${DIM}[${index + 1}/${steps.length}]${RESET}`;
|
|
120
|
+
|
|
121
|
+
console.clear();
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(` ${progress} ${BOLD}${step.title}${RESET}`);
|
|
124
|
+
console.log(` ${"─".repeat(50)}`);
|
|
125
|
+
console.log(step.body);
|
|
126
|
+
console.log();
|
|
127
|
+
|
|
128
|
+
if (index < steps.length - 1) {
|
|
129
|
+
rl.question(` ${DIM}Press Enter to continue (q to quit)${RESET} `, (answer) => {
|
|
130
|
+
if (answer.toLowerCase() === "q") {
|
|
131
|
+
rl.close();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
current++;
|
|
135
|
+
show(current);
|
|
136
|
+
});
|
|
137
|
+
} else {
|
|
138
|
+
rl.close();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
show(0);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
module.exports = { run };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rpi:add-todo
|
|
3
|
+
description: Add a quick todo so you don't forget what to implement next.
|
|
4
|
+
argument-hint: "[todo title]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- AskUserQuestion
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<objective>
|
|
14
|
+
Create a todo file in `{folder}/todos/` to capture an implementation idea before it's forgotten.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<process>
|
|
18
|
+
|
|
19
|
+
## 1. Load config
|
|
20
|
+
|
|
21
|
+
Read `.rpi.yaml` for folder path. Default to `rpi/` if not found.
|
|
22
|
+
|
|
23
|
+
## 2. Ensure todos folder exists
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
mkdir -p {folder}/todos
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 3. Determine todo title
|
|
30
|
+
|
|
31
|
+
If `$ARGUMENTS` contains a title, use it. Otherwise ask:
|
|
32
|
+
"What do you want to remember to implement?"
|
|
33
|
+
|
|
34
|
+
Convert the title to a kebab-case slug for the filename.
|
|
35
|
+
|
|
36
|
+
## 4. Check for duplicates
|
|
37
|
+
|
|
38
|
+
Use Glob to check if `{folder}/todos/{slug}.md` already exists. If yes, warn the user and ask if they want to update the existing one or pick a different name.
|
|
39
|
+
|
|
40
|
+
## 5. Quick interview
|
|
41
|
+
|
|
42
|
+
Ask 1-2 focused questions using AskUserQuestion:
|
|
43
|
+
|
|
44
|
+
- "Brief description — what should this do?" (skip if the title is already descriptive enough)
|
|
45
|
+
- "Priority?" — Options: `high`, `medium` (default), `low`
|
|
46
|
+
|
|
47
|
+
Keep it fast. The point is to capture the idea before it's lost, not to write a full spec.
|
|
48
|
+
|
|
49
|
+
## 6. Create the todo file
|
|
50
|
+
|
|
51
|
+
Write `{folder}/todos/{slug}.md`:
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
# {Todo Title}
|
|
55
|
+
|
|
56
|
+
## What
|
|
57
|
+
{Brief description of what to implement}
|
|
58
|
+
|
|
59
|
+
## Priority
|
|
60
|
+
{high | medium | low}
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
- {Any extra context the user mentioned, or leave empty}
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
Added: {YYYY-MM-DD}
|
|
67
|
+
Status: pending
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 7. Confirm
|
|
71
|
+
|
|
72
|
+
Output:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Todo added: {folder}/todos/{slug}.md
|
|
76
|
+
Priority: {priority}
|
|
77
|
+
|
|
78
|
+
Quick actions:
|
|
79
|
+
/rpi:new {slug} Promote to a full RPI feature
|
|
80
|
+
/rpi:todos List all pending todos
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
</process>
|
|
@@ -272,4 +272,45 @@ Feature {feature-slug} implementation complete but review found issues:
|
|
|
272
272
|
Fix and re-run: /rpi:review {feature-slug}
|
|
273
273
|
```
|
|
274
274
|
|
|
275
|
+
## 12. Handle isolation cleanup
|
|
276
|
+
|
|
277
|
+
Read `isolation` from `.rpi.yaml`.
|
|
278
|
+
|
|
279
|
+
**If `isolation: none`** — do nothing.
|
|
280
|
+
|
|
281
|
+
**If `isolation: branch`:**
|
|
282
|
+
Ask the user:
|
|
283
|
+
```
|
|
284
|
+
Feature branch: feature/{feature-slug}
|
|
285
|
+
Want to merge into {main-branch} now? (yes/no)
|
|
286
|
+
```
|
|
287
|
+
If yes:
|
|
288
|
+
```bash
|
|
289
|
+
git checkout {main-branch}
|
|
290
|
+
git merge feature/{feature-slug}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**If `isolation: worktree`:**
|
|
294
|
+
Ask the user:
|
|
295
|
+
```
|
|
296
|
+
Worktree: .worktrees/{feature-slug}
|
|
297
|
+
Branch: feature/{feature-slug}
|
|
298
|
+
Want to merge into {main-branch} and remove the worktree? (yes/no)
|
|
299
|
+
```
|
|
300
|
+
If yes:
|
|
301
|
+
```bash
|
|
302
|
+
cd {project-root}
|
|
303
|
+
git checkout {main-branch}
|
|
304
|
+
git merge feature/{feature-slug}
|
|
305
|
+
git worktree remove .worktrees/{feature-slug}
|
|
306
|
+
```
|
|
307
|
+
If no:
|
|
308
|
+
```
|
|
309
|
+
Worktree preserved at .worktrees/{feature-slug}
|
|
310
|
+
To merge later:
|
|
311
|
+
git checkout {main-branch} && git merge feature/{feature-slug}
|
|
312
|
+
To remove:
|
|
313
|
+
git worktree remove .worktrees/{feature-slug}
|
|
314
|
+
```
|
|
315
|
+
|
|
275
316
|
</process>
|
package/commands/rpi/init.md
CHANGED
|
@@ -34,7 +34,7 @@ Use AskUserQuestion to gather preferences. Ask up to 4 questions at a time:
|
|
|
34
34
|
|
|
35
35
|
**Batch 3:**
|
|
36
36
|
- "Task count threshold for parallel execution?" — Options: 8 (Recommended), 5, 12, always sequential
|
|
37
|
-
- "
|
|
37
|
+
- "How do you want to isolate features?" — Options: `none` (Recommended — work on current branch), `branch` (create a git branch per feature), `worktree` (create a git worktree + branch in `.worktrees/`)
|
|
38
38
|
|
|
39
39
|
**Batch 4 (TDD):**
|
|
40
40
|
- "Enable Test-Driven Development during implementation?" — Options: No (default), Yes
|
|
@@ -55,7 +55,7 @@ commit_style: {conventional|descriptive}
|
|
|
55
55
|
parallel_threshold: {number}
|
|
56
56
|
skip_artifacts: []
|
|
57
57
|
review_after_implement: true
|
|
58
|
-
|
|
58
|
+
isolation: {none|branch|worktree}
|
|
59
59
|
tdd: {true|false}
|
|
60
60
|
test_runner: {auto|command}
|
|
61
61
|
```
|
package/commands/rpi/new.md
CHANGED
|
@@ -48,10 +48,54 @@ Start with core questions, then ask follow-ups based on answers.
|
|
|
48
48
|
|
|
49
49
|
Use AskUserQuestion for structured questions. Keep it conversational — 2-3 questions per batch, max 3 batches. Stop when you have enough to write a clear REQUEST.md.
|
|
50
50
|
|
|
51
|
-
## 5.
|
|
51
|
+
## 5. Set up isolation
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
Read `isolation` from `.rpi.yaml` (default: `none`).
|
|
54
54
|
|
|
55
|
+
**If `isolation: none`** — do nothing, continue on current branch.
|
|
56
|
+
|
|
57
|
+
**If `isolation: branch`:**
|
|
58
|
+
```bash
|
|
59
|
+
git checkout -b feature/{feature-slug}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**If `isolation: worktree`:**
|
|
63
|
+
1. Verify `.worktrees/` is in `.gitignore`:
|
|
64
|
+
```bash
|
|
65
|
+
git check-ignore -q .worktrees 2>/dev/null
|
|
66
|
+
```
|
|
67
|
+
If NOT ignored, add `.worktrees/` to `.gitignore` and commit:
|
|
68
|
+
```bash
|
|
69
|
+
echo ".worktrees/" >> .gitignore
|
|
70
|
+
git add .gitignore && git commit -m "chore: add .worktrees/ to .gitignore"
|
|
71
|
+
```
|
|
72
|
+
2. Create the worktree:
|
|
73
|
+
```bash
|
|
74
|
+
git worktree add .worktrees/{feature-slug} -b feature/{feature-slug}
|
|
75
|
+
```
|
|
76
|
+
3. Run project setup in the worktree (auto-detect from project files: `npm install`, `pip install`, etc.)
|
|
77
|
+
4. Inform the user:
|
|
78
|
+
```
|
|
79
|
+
Worktree created at .worktrees/{feature-slug}
|
|
80
|
+
Branch: feature/{feature-slug}
|
|
81
|
+
|
|
82
|
+
To work in the worktree, open a new terminal:
|
|
83
|
+
cd .worktrees/{feature-slug}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 6. Generate REQUEST.md
|
|
87
|
+
|
|
88
|
+
Create the feature folder and write REQUEST.md.
|
|
89
|
+
|
|
90
|
+
**If `isolation: worktree`**, the feature folder is created inside the worktree:
|
|
91
|
+
```bash
|
|
92
|
+
cd .worktrees/{feature-slug}
|
|
93
|
+
mkdir -p {folder}/{feature-slug}/research
|
|
94
|
+
mkdir -p {folder}/{feature-slug}/plan
|
|
95
|
+
mkdir -p {folder}/{feature-slug}/implement
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Otherwise:**
|
|
55
99
|
```bash
|
|
56
100
|
mkdir -p {folder}/{feature-slug}/research
|
|
57
101
|
mkdir -p {folder}/{feature-slug}/plan
|
|
@@ -84,7 +128,7 @@ Write `{folder}/{feature-slug}/REQUEST.md` with this structure:
|
|
|
84
128
|
{S | M | L | XL} — {brief justification}
|
|
85
129
|
```
|
|
86
130
|
|
|
87
|
-
##
|
|
131
|
+
## 7. Next step
|
|
88
132
|
|
|
89
133
|
Output:
|
|
90
134
|
```
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rpi:onboarding
|
|
3
|
+
description: Interactive guided tour of the RPI workflow. Walks through each phase with a real demo feature, explaining what happens at each step.
|
|
4
|
+
argument-hint: "[--demo]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- AskUserQuestion
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<objective>
|
|
14
|
+
Guide a new user through the RPIKit workflow with clear explanations of each phase. Optionally create a demo feature to show the pipeline in action.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<process>
|
|
18
|
+
|
|
19
|
+
## 1. Welcome
|
|
20
|
+
|
|
21
|
+
Output:
|
|
22
|
+
```
|
|
23
|
+
Welcome to RPIKit — Research, Plan, Implement.
|
|
24
|
+
|
|
25
|
+
RPIKit is a structured workflow that guides you through 3 phases before writing
|
|
26
|
+
any code. Each phase produces artifacts that feed the next, with validation
|
|
27
|
+
gates that prevent premature implementation.
|
|
28
|
+
|
|
29
|
+
Let me walk you through the pipeline.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 2. Explain the pipeline
|
|
33
|
+
|
|
34
|
+
Present the full pipeline with brief descriptions:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
The RPIKit Pipeline
|
|
38
|
+
───────────────────
|
|
39
|
+
|
|
40
|
+
/rpi:init One-time project setup (.rpi.yaml)
|
|
41
|
+
|
|
42
|
+
/rpi:new Describe your feature → REQUEST.md
|
|
43
|
+
│ You answer a few questions about what you want to build.
|
|
44
|
+
│ RPIKit captures requirements in a structured format.
|
|
45
|
+
▼
|
|
46
|
+
/rpi:research Analyze feasibility → RESEARCH.md
|
|
47
|
+
│ 2-6 agents run in parallel: parsing requirements,
|
|
48
|
+
│ exploring your codebase, assessing scope and risk.
|
|
49
|
+
│ Produces a GO / NO-GO verdict.
|
|
50
|
+
▼
|
|
51
|
+
/rpi:plan Generate specs + tasks → PLAN.md
|
|
52
|
+
│ Creates technical spec (eng.md), product requirements
|
|
53
|
+
│ (pm.md), UX design (ux.md), and a task checklist.
|
|
54
|
+
│ Adapts which artifacts to create based on feature type.
|
|
55
|
+
▼
|
|
56
|
+
/rpi:implement Execute tasks → IMPLEMENT.md
|
|
57
|
+
│ Builds the feature task-by-task with per-task commits.
|
|
58
|
+
│ Supports TDD (Red-Green-Refactor) and parallel execution.
|
|
59
|
+
▼
|
|
60
|
+
/rpi:simplify Code quality → auto-fix
|
|
61
|
+
│ 3 agents check: code reuse, quality patterns, efficiency.
|
|
62
|
+
│ Fixes issues directly.
|
|
63
|
+
▼
|
|
64
|
+
/rpi:review Verify against plan → PASS / FAIL
|
|
65
|
+
│ Reviews completeness, correctness, deviations, test
|
|
66
|
+
│ coverage. Every finding cites a plan requirement.
|
|
67
|
+
▼
|
|
68
|
+
/rpi:docs Document the code → inline docs + changelog
|
|
69
|
+
Adds JSDoc/docstrings, API docs, README and changelog
|
|
70
|
+
updates. Only runs after review PASS.
|
|
71
|
+
|
|
72
|
+
/rpi:status Dashboard — see all features and their current phase.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 3. Explain the agents
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
RPIKit simulates a product team with 12 specialized agents:
|
|
79
|
+
|
|
80
|
+
Research agents (run in parallel):
|
|
81
|
+
┌─────────────────────┬──────────────────────────────────────┐
|
|
82
|
+
│ Requirement Parser │ Extracts testable requirements │
|
|
83
|
+
│ Codebase Explorer │ Scans your code for patterns │
|
|
84
|
+
│ Product Manager │ Scope, user stories, effort │
|
|
85
|
+
│ Senior Engineer │ Architecture, dependencies │
|
|
86
|
+
│ CTO Advisor │ Risk, strategy (deep tier only) │
|
|
87
|
+
│ UX Designer │ User flows, interactions (if UI) │
|
|
88
|
+
│ Doc Synthesizer │ Merges all outputs into RESEARCH.md │
|
|
89
|
+
└─────────────────────┴──────────────────────────────────────┘
|
|
90
|
+
|
|
91
|
+
Execution agents:
|
|
92
|
+
┌─────────────────────┬──────────────────────────────────────┐
|
|
93
|
+
│ Plan Executor │ Implements one task at a time │
|
|
94
|
+
│ Test Engineer │ Writes failing tests (TDD) │
|
|
95
|
+
│ Code Simplifier │ Reuse, quality, efficiency checks │
|
|
96
|
+
│ Code Reviewer │ Reviews against plan requirements │
|
|
97
|
+
│ Doc Writer │ Generates code documentation │
|
|
98
|
+
└─────────────────────┴──────────────────────────────────────┘
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 4. Explain research tiers
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Research Tiers — control depth and cost:
|
|
105
|
+
|
|
106
|
+
--quick 2 agents "Can we do this?"
|
|
107
|
+
Requirements + codebase scan.
|
|
108
|
+
Use for small features or feasibility checks.
|
|
109
|
+
|
|
110
|
+
--standard 4 agents "How should we do this?" (default)
|
|
111
|
+
Adds product scope and technical approach.
|
|
112
|
+
Use for most features.
|
|
113
|
+
|
|
114
|
+
--deep 6 agents "Should we do this?"
|
|
115
|
+
Adds strategic risk and UX analysis.
|
|
116
|
+
Use for large features or risky changes.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 5. Show folder structure
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Feature Folder Structure:
|
|
123
|
+
|
|
124
|
+
rpi/
|
|
125
|
+
└── your-feature/
|
|
126
|
+
├── REQUEST.md ← What you want to build
|
|
127
|
+
├── research/
|
|
128
|
+
│ └── RESEARCH.md ← GO/NO-GO analysis
|
|
129
|
+
├── plan/
|
|
130
|
+
│ ├── PLAN.md ← Task checklist by phases
|
|
131
|
+
│ ├── eng.md ← Technical specification
|
|
132
|
+
│ ├── pm.md ← Product requirements (adaptive)
|
|
133
|
+
│ └── ux.md ← UX design (adaptive)
|
|
134
|
+
└── implement/
|
|
135
|
+
├── IMPLEMENT.md ← Execution audit trail
|
|
136
|
+
└── DOCS.md ← Documentation summary
|
|
137
|
+
|
|
138
|
+
Each file is a gate — you can't plan without research, can't implement
|
|
139
|
+
without a plan, can't document without a passing review.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 6. Ask about demo
|
|
143
|
+
|
|
144
|
+
Use AskUserQuestion:
|
|
145
|
+
"Want me to create a demo feature so you can see the pipeline in action? I'll create a small example feature and walk you through each step."
|
|
146
|
+
|
|
147
|
+
Options:
|
|
148
|
+
- "Yes, show me a demo" → proceed to step 7
|
|
149
|
+
- "No, I'll start on my own" → skip to step 8
|
|
150
|
+
|
|
151
|
+
## 7. Demo walkthrough (if user wants demo)
|
|
152
|
+
|
|
153
|
+
Create a minimal demo feature to show what each artifact looks like:
|
|
154
|
+
|
|
155
|
+
### 7.1 Create demo config
|
|
156
|
+
|
|
157
|
+
If `.rpi.yaml` doesn't exist, create a minimal one:
|
|
158
|
+
```yaml
|
|
159
|
+
folder: rpi
|
|
160
|
+
tier: quick
|
|
161
|
+
auto_simplify: true
|
|
162
|
+
commit_style: conventional
|
|
163
|
+
parallel_threshold: 8
|
|
164
|
+
review_after_implement: true
|
|
165
|
+
isolation: none
|
|
166
|
+
tdd: false
|
|
167
|
+
test_runner: auto
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 7.2 Create demo REQUEST.md
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
mkdir -p rpi/demo-greeting/research
|
|
174
|
+
mkdir -p rpi/demo-greeting/plan
|
|
175
|
+
mkdir -p rpi/demo-greeting/implement
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Write `rpi/demo-greeting/REQUEST.md`:
|
|
179
|
+
```markdown
|
|
180
|
+
# Greeting Message
|
|
181
|
+
|
|
182
|
+
## Summary
|
|
183
|
+
Add a simple greeting function that returns a personalized welcome message.
|
|
184
|
+
|
|
185
|
+
## Problem
|
|
186
|
+
The application has no way to greet users by name. This is needed for the onboarding flow.
|
|
187
|
+
|
|
188
|
+
## Target Users
|
|
189
|
+
All new users during their first session.
|
|
190
|
+
|
|
191
|
+
## Constraints
|
|
192
|
+
- Must be a pure function (no side effects)
|
|
193
|
+
- Must handle missing or empty names gracefully
|
|
194
|
+
|
|
195
|
+
## References
|
|
196
|
+
- None
|
|
197
|
+
|
|
198
|
+
## Complexity Estimate
|
|
199
|
+
S — Single function with basic input validation
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 7.3 Explain what just happened
|
|
203
|
+
|
|
204
|
+
Output:
|
|
205
|
+
```
|
|
206
|
+
I created a demo feature: rpi/demo-greeting/
|
|
207
|
+
|
|
208
|
+
This is what /rpi:new does — it interviews you about your feature and creates
|
|
209
|
+
REQUEST.md with structured requirements.
|
|
210
|
+
|
|
211
|
+
In a real workflow, the next steps would be:
|
|
212
|
+
/rpi:research demo-greeting → agents analyze feasibility
|
|
213
|
+
/rpi:plan demo-greeting → generate specs and task checklist
|
|
214
|
+
/rpi:implement demo-greeting → build it task by task
|
|
215
|
+
|
|
216
|
+
You can run these commands now to see the full pipeline, or delete the demo:
|
|
217
|
+
rm -rf rpi/demo-greeting
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 8. Next steps
|
|
221
|
+
|
|
222
|
+
Output:
|
|
223
|
+
```
|
|
224
|
+
You're ready to go! Here's your first workflow:
|
|
225
|
+
|
|
226
|
+
1. /rpi:init Set up your preferences
|
|
227
|
+
2. /rpi:new my-feature Describe what you want to build
|
|
228
|
+
3. /rpi:research my-feature Let the agents analyze it
|
|
229
|
+
4. /rpi:plan my-feature Generate the implementation plan
|
|
230
|
+
5. /rpi:implement my-feature Build it
|
|
231
|
+
|
|
232
|
+
Use /rpi:status anytime to see where your features stand.
|
|
233
|
+
|
|
234
|
+
Tips:
|
|
235
|
+
- Start with --quick tier for small features
|
|
236
|
+
- Use --deep tier when adding new architecture or risky dependencies
|
|
237
|
+
- Enable tdd: true in .rpi.yaml if you want test-first development
|
|
238
|
+
- Run /rpi:simplify anytime to check code quality on recent changes
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
</process>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rpi-kit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Research → Plan → Implement. A systematic feature development workflow for Claude Code.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Daniel Mendes",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"LICENSE"
|
|
31
31
|
],
|
|
32
32
|
"scripts": {
|
|
33
|
+
"test": "node --test test/cli.test.js test/commands.test.js",
|
|
33
34
|
"postinstall": "node bin/cli.js install --silent"
|
|
34
35
|
}
|
|
35
36
|
}
|