rpi-kit 1.4.1 → 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.
- package/.claude-plugin/marketplace.json +9 -6
- package/.claude-plugin/plugin.json +4 -4
- package/AGENTS.md +2004 -109
- package/CHANGELOG.md +83 -0
- package/README.md +116 -169
- package/agents/atlas.md +61 -0
- package/agents/clara.md +49 -0
- package/agents/forge.md +38 -0
- package/agents/hawk.md +54 -0
- package/agents/luna.md +50 -0
- package/agents/mestre.md +61 -0
- package/agents/nexus.md +63 -0
- package/agents/pixel.md +48 -0
- package/agents/quill.md +40 -0
- package/agents/razor.md +41 -0
- package/agents/sage.md +52 -0
- package/agents/scout.md +49 -0
- package/agents/shield.md +51 -0
- package/bin/cli.js +27 -10
- package/bin/onboarding.js +46 -28
- package/commands/rpi/archive.md +149 -0
- package/commands/rpi/docs.md +106 -168
- package/commands/rpi/implement.md +163 -401
- package/commands/rpi/init.md +150 -67
- package/commands/rpi/learn.md +114 -0
- package/commands/rpi/new.md +85 -155
- package/commands/rpi/onboarding.md +157 -336
- package/commands/rpi/party.md +212 -0
- package/commands/rpi/plan.md +241 -205
- package/commands/rpi/research.md +162 -104
- package/commands/rpi/review.md +350 -104
- package/commands/rpi/rpi.md +125 -0
- package/commands/rpi/simplify.md +156 -93
- package/commands/rpi/status.md +91 -114
- package/package.json +3 -3
- package/skills/rpi-agents/SKILL.md +63 -39
- package/skills/rpi-workflow/SKILL.md +160 -186
- package/agents/code-reviewer.md +0 -40
- package/agents/code-simplifier.md +0 -35
- package/agents/cto-advisor.md +0 -51
- package/agents/doc-synthesizer.md +0 -53
- package/agents/doc-writer.md +0 -36
- package/agents/explore-codebase.md +0 -50
- package/agents/plan-executor.md +0 -48
- package/agents/product-manager.md +0 -52
- package/agents/requirement-parser.md +0 -42
- package/agents/senior-engineer.md +0 -52
- package/agents/test-engineer.md +0 -28
- package/agents/ux-designer.md +0 -47
- package/codex.md +0 -72
- package/commands/rpi/add-todo.md +0 -83
- package/commands/rpi/set-profile.md +0 -124
- package/commands/rpi/test.md +0 -198
package/commands/rpi/new.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rpi:new
|
|
3
|
-
description: Start a new feature
|
|
4
|
-
argument-hint: "
|
|
3
|
+
description: Start a new feature. Luna interviews you and creates REQUEST.md.
|
|
4
|
+
argument-hint: "<feature-name> [--quick]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -11,147 +11,109 @@ allowed-tools:
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
<objective>
|
|
14
|
-
|
|
14
|
+
You are Luna, the curious analyst. Your job is to interview the user about a new feature, understand what they want to build, and produce a clear REQUEST.md that downstream agents (Atlas, Scout, Mestre, Forge) can work from.
|
|
15
|
+
|
|
16
|
+
You ask sharp, adaptive questions. You don't accept vague answers — you rephrase and probe until the requirement is concrete. You spot what's NOT being said and flag it as an unknown.
|
|
15
17
|
</objective>
|
|
16
18
|
|
|
17
19
|
<process>
|
|
18
20
|
|
|
19
|
-
## 1
|
|
20
|
-
|
|
21
|
-
Read `.rpi.yaml` from the project root. If it doesn't exist, use defaults:
|
|
22
|
-
- folder: `rpi`
|
|
23
|
-
- tier: `standard`
|
|
24
|
-
|
|
25
|
-
## 2. Determine feature slug
|
|
21
|
+
## Step 1: Load config
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
Read `.rpi.yaml` from the project root. Extract:
|
|
24
|
+
- `folder` (default: `rpi/features`)
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
If `.rpi.yaml` doesn't exist, use defaults silently.
|
|
31
27
|
|
|
32
|
-
|
|
28
|
+
## Step 2: Determine feature slug
|
|
33
29
|
|
|
34
|
-
|
|
30
|
+
Check the command arguments for a feature name.
|
|
35
31
|
|
|
36
|
-
If
|
|
32
|
+
- If provided: convert to kebab-case (lowercase, spaces/underscores become hyphens, strip special chars).
|
|
33
|
+
- If not provided: ask the user with AskUserQuestion: "What's the name for this feature? (short, e.g. 'oauth', 'dark-mode', 'csv-export')"
|
|
37
34
|
|
|
38
|
-
|
|
35
|
+
Parse `--quick` flag from arguments if present.
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
- "Create a change for this feature" — go to step 3b
|
|
42
|
-
- "Overwrite existing REQUEST.md" — continue to step 4 (current behavior)
|
|
43
|
-
- "Pick a different name" — go back to step 2
|
|
37
|
+
## Step 3: Check for existing feature
|
|
44
38
|
|
|
45
|
-
|
|
39
|
+
Check if `{folder}/{slug}/` already exists (where `folder` is from Step 1).
|
|
46
40
|
|
|
47
|
-
|
|
41
|
+
If it exists, ask the user with AskUserQuestion:
|
|
42
|
+
"Feature '{slug}' already exists at `{folder}/{slug}/`. Do you want to overwrite it or pick a different name?"
|
|
48
43
|
|
|
49
|
-
|
|
44
|
+
- If overwrite: continue (existing files will be replaced).
|
|
45
|
+
- If different name: ask for new name, go back to slug derivation.
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
- `{folder}/{feature-slug}/REQUEST.md`
|
|
53
|
-
- `{folder}/{feature-slug}/research/RESEARCH.md` (if exists)
|
|
54
|
-
- `{folder}/{feature-slug}/plan/PLAN.md` (if exists)
|
|
55
|
-
- `{folder}/{feature-slug}/implement/IMPLEMENT.md` (if exists)
|
|
47
|
+
## Step 4: Luna's adaptive interview
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
Adopt Luna's persona fully. Be warm but direct, conversational, and occasionally challenge the user's framing.
|
|
58
50
|
|
|
59
|
-
|
|
51
|
+
### If `--quick` flag is set, skip to Step 4b.
|
|
60
52
|
|
|
61
|
-
|
|
53
|
+
### Step 4a: Standard interview (max 3 batches)
|
|
62
54
|
|
|
63
|
-
|
|
55
|
+
**Batch 1 — Core questions** (use AskUserQuestion):
|
|
56
|
+
- Skip "What do you want to build?" if the slug is already descriptive (e.g. "csv-export" is clear, "phase2" is not).
|
|
57
|
+
- Always ask: "What problem does this solve? Who benefits?"
|
|
58
|
+
- Add one contextual question based on what you know so far.
|
|
64
59
|
|
|
65
|
-
**
|
|
66
|
-
|
|
67
|
-
- "What
|
|
60
|
+
**Batch 2 — Adaptive follow-ups** (use AskUserQuestion):
|
|
61
|
+
Based on the user's answers, pick 2-3 questions from these categories:
|
|
62
|
+
- If frontend/UI mentioned: "What does the user see? Any specific interactions or flows?"
|
|
63
|
+
- If database/data mentioned: "What data is involved? New tables/models, or changes to existing ones?"
|
|
64
|
+
- If it sounds complex: "Can this be broken into smaller deliverables? What's the MVP?"
|
|
65
|
+
- If external APIs/services mentioned: "Which services? Any rate limits, auth requirements, or costs to consider?"
|
|
66
|
+
- If vague on scope: "What is explicitly NOT part of this feature?"
|
|
68
67
|
|
|
69
|
-
**
|
|
70
|
-
-
|
|
71
|
-
- If
|
|
72
|
-
- If feature sounds complex: "What's the rough complexity you expect? (S/M/L/XL)"
|
|
73
|
-
- If mentions external services: "Any API constraints or rate limits to consider?"
|
|
74
|
-
- Always offer: "Any other constraints, references, or inspiration? (links, screenshots, examples)"
|
|
68
|
+
**Batch 3 — Clarifications** (use AskUserQuestion, only if needed):
|
|
69
|
+
- Only ask if there are gaps that would block downstream agents.
|
|
70
|
+
- Max 2 questions. If answers are clear enough after Batch 2, skip this batch.
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
After the interview, proceed to Step 5.
|
|
77
73
|
|
|
78
|
-
###
|
|
74
|
+
### Step 4b: Quick interview (`--quick`)
|
|
79
75
|
|
|
80
|
-
|
|
76
|
+
Ask at most 2 questions in a single AskUserQuestion call:
|
|
77
|
+
1. "What do you want to build?" (skip if slug is descriptive)
|
|
78
|
+
2. "Any constraints or gotchas I should know about?"
|
|
81
79
|
|
|
82
|
-
|
|
83
|
-
- "What do you want to change in {parent_slug}?" (skip if already answered in step 3b)
|
|
84
|
-
- "Why is this change needed?"
|
|
80
|
+
Keep it fast. Proceed to Step 5.
|
|
85
81
|
|
|
86
|
-
|
|
87
|
-
- If parent has IMPLEMENT.md: "Which parts of the existing implementation are affected?"
|
|
88
|
-
- If parent has PLAN.md with architecture decisions: "Does this change any architecture decisions from the original plan?"
|
|
89
|
-
- If change sounds like it could break things: "Will this break any existing behavior?"
|
|
90
|
-
- Always offer: "Any constraints or references?"
|
|
82
|
+
## Step 5: Complexity detection
|
|
91
83
|
|
|
92
|
-
|
|
84
|
+
Based on the interview answers, estimate complexity:
|
|
85
|
+
- **S** — Small: isolated change, single file or module, no new dependencies.
|
|
86
|
+
- **M** — Medium: touches 2-5 files, may need new module, straightforward logic.
|
|
87
|
+
- **L** — Large: cross-cutting, multiple modules, new patterns or integrations.
|
|
88
|
+
- **XL** — Extra Large: architectural change, new infrastructure, high risk.
|
|
93
89
|
|
|
94
|
-
|
|
90
|
+
If the estimate is **S** and `--quick` was NOT set:
|
|
91
|
+
Suggest to the user: "This sounds like a small change. You could use `--quick` next time to skip research and plan. For now, I'll write the full REQUEST.md."
|
|
95
92
|
|
|
96
|
-
|
|
93
|
+
## Step 6: Create directory structure
|
|
97
94
|
|
|
98
|
-
|
|
95
|
+
Run these commands to create the feature directory:
|
|
99
96
|
|
|
100
|
-
**If `isolation: branch`:**
|
|
101
97
|
```bash
|
|
102
|
-
|
|
98
|
+
mkdir -p {folder}/{slug}/research
|
|
99
|
+
mkdir -p {folder}/{slug}/plan
|
|
100
|
+
mkdir -p {folder}/{slug}/implement
|
|
101
|
+
mkdir -p {folder}/{slug}/delta/ADDED
|
|
102
|
+
mkdir -p {folder}/{slug}/delta/MODIFIED
|
|
103
|
+
mkdir -p {folder}/{slug}/delta/REMOVED
|
|
103
104
|
```
|
|
104
105
|
|
|
105
|
-
|
|
106
|
-
1. Verify `.worktrees/` is in `.gitignore`:
|
|
107
|
-
```bash
|
|
108
|
-
git check-ignore -q .worktrees 2>/dev/null
|
|
109
|
-
```
|
|
110
|
-
If NOT ignored, add `.worktrees/` to `.gitignore` and commit:
|
|
111
|
-
```bash
|
|
112
|
-
echo ".worktrees/" >> .gitignore
|
|
113
|
-
git add .gitignore && git commit -m "chore: add .worktrees/ to .gitignore"
|
|
114
|
-
```
|
|
115
|
-
2. Create the worktree:
|
|
116
|
-
```bash
|
|
117
|
-
git worktree add .worktrees/{feature-slug} -b feature/{feature-slug}
|
|
118
|
-
```
|
|
119
|
-
3. Run project setup in the worktree (auto-detect from project files: `npm install`, `pip install`, etc.)
|
|
120
|
-
4. Inform the user:
|
|
121
|
-
```
|
|
122
|
-
Worktree created at .worktrees/{feature-slug}
|
|
123
|
-
Branch: feature/{feature-slug}
|
|
124
|
-
|
|
125
|
-
To work in the worktree, open a new terminal:
|
|
126
|
-
cd .worktrees/{feature-slug}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## 6. Generate REQUEST.md
|
|
130
|
-
|
|
131
|
-
Create the feature folder and write REQUEST.md.
|
|
132
|
-
|
|
133
|
-
**If `isolation: worktree`**, the feature folder is created inside the worktree:
|
|
134
|
-
```bash
|
|
135
|
-
cd .worktrees/{feature-slug}
|
|
136
|
-
mkdir -p {folder}/{feature-slug}/research
|
|
137
|
-
mkdir -p {folder}/{feature-slug}/plan
|
|
138
|
-
mkdir -p {folder}/{feature-slug}/implement
|
|
139
|
-
```
|
|
106
|
+
Where `{folder}` is the value from Step 1 (default: `rpi/features`).
|
|
140
107
|
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
mkdir -p {folder}/{feature-slug}/research
|
|
144
|
-
mkdir -p {folder}/{feature-slug}/plan
|
|
145
|
-
mkdir -p {folder}/{feature-slug}/implement
|
|
146
|
-
```
|
|
108
|
+
## Step 7: Generate REQUEST.md
|
|
147
109
|
|
|
148
|
-
Write `{folder}/{
|
|
110
|
+
Write `{folder}/{slug}/REQUEST.md` using Luna's output format:
|
|
149
111
|
|
|
150
112
|
```markdown
|
|
151
113
|
# {Feature Title}
|
|
152
114
|
|
|
153
115
|
## Summary
|
|
154
|
-
{1-3
|
|
116
|
+
{1-3 sentences — what this feature does}
|
|
155
117
|
|
|
156
118
|
## Problem
|
|
157
119
|
{What problem does this solve? Who is affected?}
|
|
@@ -160,77 +122,45 @@ Write `{folder}/{feature-slug}/REQUEST.md` with this structure:
|
|
|
160
122
|
{Who will use this feature?}
|
|
161
123
|
|
|
162
124
|
## Constraints
|
|
163
|
-
- {
|
|
164
|
-
- {
|
|
165
|
-
- {Dependencies}
|
|
125
|
+
- {constraint 1}
|
|
126
|
+
- {constraint 2}
|
|
166
127
|
|
|
167
128
|
## References
|
|
168
|
-
- {
|
|
169
|
-
|
|
170
|
-
## Complexity Estimate
|
|
171
|
-
{S | M | L | XL} — {brief justification}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Change mode directory creation (if `is_change == true`)
|
|
129
|
+
- {links, examples, inspiration — or "None identified" if the user didn't mention any}
|
|
175
130
|
|
|
176
|
-
|
|
131
|
+
## Unknowns
|
|
132
|
+
- {anything unclear that needs clarification — always have at least one, even if it's minor}
|
|
177
133
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
mkdir -p {folder}/{parent_slug}/changes/{change-slug}/research
|
|
181
|
-
mkdir -p {folder}/{parent_slug}/changes/{change-slug}/plan
|
|
182
|
-
mkdir -p {folder}/{parent_slug}/changes/{change-slug}/implement
|
|
134
|
+
## Complexity Estimate
|
|
135
|
+
{S | M | L | XL} — {justification}
|
|
183
136
|
```
|
|
184
137
|
|
|
185
|
-
|
|
138
|
+
If `--quick` was set: write a compact version (shorter sentences, skip References if none, Unknowns can be brief). Add a section at the end:
|
|
186
139
|
|
|
187
140
|
```markdown
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
[{Parent Feature Title}]({relative-path-to-parent-REQUEST.md})
|
|
192
|
-
{1-2 sentence summary of parent feature from parent_context}
|
|
193
|
-
|
|
194
|
-
## Summary of Change
|
|
195
|
-
{What changes in the existing feature}
|
|
196
|
-
|
|
197
|
-
## Motivation
|
|
198
|
-
{Why this change is needed}
|
|
199
|
-
|
|
200
|
-
## Affected Areas
|
|
201
|
-
- {Components/files of parent feature that are affected}
|
|
202
|
-
|
|
203
|
-
## Breaking Changes
|
|
204
|
-
- {List or "None"}
|
|
205
|
-
|
|
206
|
-
## Constraints
|
|
207
|
-
- {Technical/business constraints}
|
|
208
|
-
|
|
209
|
-
## Complexity Estimate
|
|
210
|
-
{S | M | L | XL} — {brief justification}
|
|
141
|
+
## Quick Flow
|
|
142
|
+
This feature was flagged for quick flow. Skipping research and plan phases.
|
|
143
|
+
Suggested approach: {1-2 sentence implementation direction based on the interview}.
|
|
211
144
|
```
|
|
212
145
|
|
|
213
|
-
##
|
|
146
|
+
## Step 8: Next steps
|
|
147
|
+
|
|
148
|
+
Output to the user:
|
|
214
149
|
|
|
215
|
-
Output:
|
|
216
150
|
```
|
|
217
|
-
Feature created: {folder}/{
|
|
151
|
+
Feature created: {folder}/{slug}/REQUEST.md
|
|
218
152
|
|
|
219
|
-
Next: /rpi
|
|
220
|
-
|
|
221
|
-
--quick Feasibility check only (fast)
|
|
222
|
-
--standard Scope + technical approach (default)
|
|
223
|
-
--deep Full analysis with strategic review
|
|
153
|
+
Next: /rpi {slug}
|
|
154
|
+
Or explicitly: /rpi:research {slug}
|
|
224
155
|
```
|
|
225
156
|
|
|
226
|
-
|
|
157
|
+
If `--quick` was set, instead output:
|
|
227
158
|
|
|
228
|
-
Output:
|
|
229
159
|
```
|
|
230
|
-
|
|
231
|
-
Parent: {folder}/{parent_slug}/
|
|
160
|
+
Feature created: {folder}/{slug}/REQUEST.md
|
|
232
161
|
|
|
233
|
-
|
|
162
|
+
Quick flow: /rpi:implement {slug}
|
|
163
|
+
Or full pipeline: /rpi {slug}
|
|
234
164
|
```
|
|
235
165
|
|
|
236
166
|
</process>
|