rpi-kit 1.4.1 → 2.1.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 +117 -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 +134 -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/commands/rpi/update.md +113 -0
- package/package.json +3 -3
- package/skills/rpi-agents/SKILL.md +63 -39
- package/skills/rpi-workflow/SKILL.md +161 -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/simplify.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rpi:simplify
|
|
3
|
-
description:
|
|
4
|
-
argument-hint: "<feature-
|
|
3
|
+
description: Razor analyzes the implementation for reuse, quality, and efficiency improvements.
|
|
4
|
+
argument-hint: "<feature-name>"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -12,120 +12,183 @@ allowed-tools:
|
|
|
12
12
|
- Agent
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
Run 3 parallel code review sub-agents (reuse, quality, efficiency) on the implementation changes, aggregate findings, and fix issues directly.
|
|
17
|
-
</objective>
|
|
15
|
+
# /rpi:simplify — Simplify Phase
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
Razor analyzes the full implementation diff across 3 dimensions — reuse, quality, and efficiency — and applies improvements directly. Tests must pass before and after.
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Read `.rpi.yaml` for folder path. Also read `profile` and `models` keys.
|
|
24
|
-
|
|
25
|
-
Parse `{feature-slug}` from arguments.
|
|
26
|
-
|
|
27
|
-
**Resolution order:**
|
|
28
|
-
1. Check if `{folder}/{feature-slug}/` exists → type = "feature", path = `{folder}/{feature-slug}`
|
|
29
|
-
2. If not, Glob `{folder}/*/changes/{feature-slug}/` → if found, type = "change", path = matched path, parent_path = parent directory
|
|
30
|
-
3. If multiple matches → AskUserQuestion listing all matches with full paths
|
|
31
|
-
4. If no match → error: `Feature not found: {feature-slug}`
|
|
19
|
+
---
|
|
32
20
|
|
|
33
|
-
|
|
21
|
+
## Step 1: Load config and validate
|
|
22
|
+
|
|
23
|
+
1. Read `.rpi.yaml` for config. Apply defaults if missing:
|
|
24
|
+
- `folder`: `rpi/features`
|
|
25
|
+
- `context_file`: `rpi/context.md`
|
|
26
|
+
- `commit_style`: `conventional`
|
|
27
|
+
2. Parse `$ARGUMENTS` to extract `{slug}`.
|
|
28
|
+
3. Validate `rpi/features/{slug}/implement/IMPLEMENT.md` exists. If not:
|
|
29
|
+
```
|
|
30
|
+
IMPLEMENT.md not found for '{slug}'. Run /rpi:implement {slug} first.
|
|
31
|
+
```
|
|
32
|
+
Stop.
|
|
33
|
+
4. Read `rpi/features/{slug}/implement/IMPLEMENT.md`. Verify all tasks are marked `[x]` (done). If any task is `[ ]` (pending) or `BLOCKED`:
|
|
34
|
+
```
|
|
35
|
+
Implementation is not complete for '{slug}'. {N} tasks remaining.
|
|
36
|
+
Complete all tasks before simplifying: /rpi:implement {slug}
|
|
37
|
+
```
|
|
38
|
+
Stop.
|
|
39
|
+
|
|
40
|
+
## Step 2: Get implementation diff
|
|
41
|
+
|
|
42
|
+
1. Read `rpi/features/{slug}/implement/IMPLEMENT.md` — extract all commit hashes from the Execution Log.
|
|
43
|
+
2. Use git to get the combined diff of all implementation commits:
|
|
44
|
+
```bash
|
|
45
|
+
git diff {first_commit}^..{last_commit}
|
|
46
|
+
```
|
|
47
|
+
3. Store the diff as `$IMPL_DIFF`.
|
|
48
|
+
4. Collect the list of all files changed — store as `$CHANGED_FILES`.
|
|
49
|
+
|
|
50
|
+
## Step 3: Gather context
|
|
51
|
+
|
|
52
|
+
1. Read `rpi/features/{slug}/plan/eng.md` if it exists — store as `$ENG`.
|
|
53
|
+
2. Read `rpi/context.md` (project context) if it exists — store as `$CONTEXT`.
|
|
54
|
+
|
|
55
|
+
## Step 4: Run tests (baseline)
|
|
56
|
+
|
|
57
|
+
1. Run the project's test suite to establish baseline:
|
|
58
|
+
```bash
|
|
59
|
+
npm test # or whatever the project uses
|
|
60
|
+
```
|
|
61
|
+
2. If tests fail before simplification:
|
|
62
|
+
```
|
|
63
|
+
Tests are already failing before simplification. Fix failing tests first.
|
|
64
|
+
```
|
|
65
|
+
Stop.
|
|
66
|
+
3. Store the test output as `$BASELINE_TESTS`.
|
|
67
|
+
|
|
68
|
+
## Step 5: Launch Razor with 3 parallel sub-checks
|
|
69
|
+
|
|
70
|
+
Launch Razor agent with this prompt:
|
|
34
71
|
|
|
35
|
-
Get the diff of all implementation changes:
|
|
36
|
-
```bash
|
|
37
|
-
git diff HEAD~{number_of_commits}
|
|
38
72
|
```
|
|
73
|
+
You are Razor. Simplify the implementation for feature: {slug}
|
|
39
74
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
## 1b. Resolve model
|
|
43
|
-
|
|
44
|
-
Resolve the model for the `implement` phase following the Model Resolution Algorithm in the rpi-workflow skill. Store as `{resolved_model}`. If a model is resolved, output the status message before agent spawns.
|
|
75
|
+
## Implementation Diff
|
|
76
|
+
{$IMPL_DIFF}
|
|
45
77
|
|
|
46
|
-
##
|
|
78
|
+
## Changed Files
|
|
79
|
+
{$CHANGED_FILES}
|
|
47
80
|
|
|
48
|
-
|
|
81
|
+
## Engineering Spec
|
|
82
|
+
{$ENG}
|
|
49
83
|
|
|
50
|
-
|
|
84
|
+
## Project Context
|
|
85
|
+
{$CONTEXT}
|
|
51
86
|
|
|
52
|
-
|
|
53
|
-
You are checking code for reuse opportunities.
|
|
54
|
-
|
|
55
|
-
Here is the diff of recent changes:
|
|
56
|
-
{diff}
|
|
57
|
-
|
|
58
|
-
For each change:
|
|
59
|
-
1. Search the codebase for existing utilities and helpers that could replace newly written code. Use Grep to find similar patterns — check utility directories, shared modules, and adjacent files.
|
|
60
|
-
2. Flag any new function that duplicates existing functionality. Cite the existing function.
|
|
61
|
-
3. Flag inline logic that could use an existing utility — hand-rolled string manipulation, manual path handling, custom type guards.
|
|
62
|
-
|
|
63
|
-
Output format:
|
|
64
|
-
## Reuse Findings
|
|
65
|
-
- {file}:{line} — {description} → Use existing `{function}` from `{path}`
|
|
66
|
-
```
|
|
87
|
+
Your task — analyze the implementation across 3 dimensions IN PARALLEL:
|
|
67
88
|
|
|
68
|
-
###
|
|
89
|
+
### 1. Reuse
|
|
90
|
+
- Scan for duplicated code within the changed files
|
|
91
|
+
- Scan for duplication against existing codebase utilities
|
|
92
|
+
- Identify extraction opportunities (shared functions, constants, types)
|
|
93
|
+
- Check for reimplemented functionality that already exists in the project
|
|
69
94
|
|
|
70
|
-
|
|
71
|
-
|
|
95
|
+
### 2. Quality
|
|
96
|
+
- Naming: unclear variable/function names, inconsistent conventions
|
|
97
|
+
- Complexity: functions doing too much, deep nesting, long parameter lists
|
|
98
|
+
- Code smells: magic numbers, dead code, commented-out code, unnecessary abstractions
|
|
99
|
+
- Consistency: does the new code match the patterns in context.md?
|
|
72
100
|
|
|
73
|
-
|
|
74
|
-
|
|
101
|
+
### 3. Efficiency
|
|
102
|
+
- Algorithm choices: O(n^2) where O(n) is possible, unnecessary iterations
|
|
103
|
+
- Database/API queries: N+1 problems, missing batching, redundant calls
|
|
104
|
+
- Imports: unused imports, heavy imports where lighter alternatives exist
|
|
105
|
+
- Memory: unnecessary copies, large objects held in scope too long
|
|
75
106
|
|
|
76
|
-
|
|
77
|
-
1.
|
|
78
|
-
2.
|
|
79
|
-
3.
|
|
80
|
-
4.
|
|
81
|
-
5.
|
|
107
|
+
RULES:
|
|
108
|
+
1. Read ALL changed files before making any modifications
|
|
109
|
+
2. Apply fixes directly to the code — do not just list suggestions
|
|
110
|
+
3. Each fix must preserve existing behavior (no functional changes)
|
|
111
|
+
4. Match the project's existing style and patterns
|
|
112
|
+
5. Do NOT over-abstract — only extract if there are 3+ duplications
|
|
113
|
+
6. After all fixes, list what you changed and why
|
|
82
114
|
|
|
83
115
|
Output format:
|
|
84
|
-
##
|
|
85
|
-
- {file}:{
|
|
116
|
+
## Changes Applied
|
|
117
|
+
- {file}: {what changed} — {why}
|
|
118
|
+
|
|
119
|
+
## Metrics
|
|
120
|
+
- Reuse: {N} fixes
|
|
121
|
+
- Quality: {N} fixes
|
|
122
|
+
- Efficiency: {N} fixes
|
|
123
|
+
- Lines removed: {N}
|
|
124
|
+
- Lines added: {N}
|
|
86
125
|
```
|
|
87
126
|
|
|
88
|
-
|
|
89
|
-
|
|
127
|
+
Store Razor's output as `$RAZOR_OUTPUT`.
|
|
128
|
+
|
|
129
|
+
## Step 6: Run tests (verification)
|
|
130
|
+
|
|
131
|
+
1. Run the project's test suite again:
|
|
132
|
+
```bash
|
|
133
|
+
npm test
|
|
134
|
+
```
|
|
135
|
+
2. If tests fail after Razor's changes:
|
|
136
|
+
- Show the failing tests to the user.
|
|
137
|
+
- Revert Razor's changes: `git checkout -- .`
|
|
138
|
+
- Inform the user:
|
|
139
|
+
```
|
|
140
|
+
Razor's changes broke {N} tests. Changes have been reverted.
|
|
141
|
+
Review the failures and re-run: /rpi:simplify {slug}
|
|
142
|
+
```
|
|
143
|
+
- Stop.
|
|
144
|
+
3. If all tests pass: continue.
|
|
145
|
+
|
|
146
|
+
## Step 7: Commit simplification changes
|
|
147
|
+
|
|
148
|
+
1. Stage all modified files:
|
|
149
|
+
```bash
|
|
150
|
+
git add {list of files Razor modified}
|
|
151
|
+
```
|
|
152
|
+
2. Commit with a descriptive message following `commit_style` from config:
|
|
153
|
+
```bash
|
|
154
|
+
git commit -m "refactor({slug}): simplify implementation — Razor"
|
|
155
|
+
```
|
|
156
|
+
3. Store the commit hash as `$SIMPLIFY_COMMIT`.
|
|
157
|
+
|
|
158
|
+
## Step 8: Update IMPLEMENT.md
|
|
159
|
+
|
|
160
|
+
Append a simplification results section to `rpi/features/{slug}/implement/IMPLEMENT.md`:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
## Simplify
|
|
164
|
+
|
|
165
|
+
Agent: Razor
|
|
166
|
+
Date: {YYYY-MM-DD}
|
|
167
|
+
Commit: {$SIMPLIFY_COMMIT}
|
|
168
|
+
|
|
169
|
+
### Changes
|
|
170
|
+
{list of changes from $RAZOR_OUTPUT}
|
|
171
|
+
|
|
172
|
+
### Metrics
|
|
173
|
+
- Reuse fixes: {N}
|
|
174
|
+
- Quality fixes: {N}
|
|
175
|
+
- Efficiency fixes: {N}
|
|
176
|
+
- Net lines: {+/-N}
|
|
90
177
|
```
|
|
91
|
-
You are checking code efficiency in recent changes.
|
|
92
178
|
|
|
93
|
-
|
|
94
|
-
{diff}
|
|
179
|
+
## Step 9: Output summary
|
|
95
180
|
|
|
96
|
-
Check for:
|
|
97
|
-
1. Unnecessary work — redundant computations, repeated reads, duplicate API calls, N+1 patterns
|
|
98
|
-
2. Missed concurrency — independent operations run sequentially
|
|
99
|
-
3. Hot-path bloat — blocking work on startup or per-request paths
|
|
100
|
-
4. Unnecessary existence checks — TOCTOU anti-pattern
|
|
101
|
-
5. Memory — unbounded structures, missing cleanup, listener leaks
|
|
102
|
-
6. Overly broad operations — reading entire files when portion needed
|
|
103
|
-
|
|
104
|
-
Output format:
|
|
105
|
-
## Efficiency Findings
|
|
106
|
-
- {file}:{line} — {pattern}: {description}
|
|
107
181
|
```
|
|
182
|
+
Simplify complete: {slug}
|
|
108
183
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
184
|
+
Razor applied {total} fixes:
|
|
185
|
+
- Reuse: {N}
|
|
186
|
+
- Quality: {N}
|
|
187
|
+
- Efficiency: {N}
|
|
112
188
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
3. Fix each valid issue directly using Edit tool
|
|
116
|
-
4. For each fix, note what was changed
|
|
189
|
+
Tests: all passing
|
|
190
|
+
Commit: {$SIMPLIFY_COMMIT}
|
|
117
191
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
Simplify complete for {feature-slug}:
|
|
122
|
-
- Reuse: {N} findings, {M} fixed
|
|
123
|
-
- Quality: {N} findings, {M} fixed
|
|
124
|
-
- Efficiency: {N} findings, {M} fixed
|
|
125
|
-
|
|
126
|
-
{Or: "Code was already clean — no issues found."}
|
|
192
|
+
Next: /rpi {slug}
|
|
193
|
+
Or explicitly: /rpi:review {slug}
|
|
127
194
|
```
|
|
128
|
-
|
|
129
|
-
After finishing, update IMPLEMENT.md `## Simplify Findings` section with the results.
|
|
130
|
-
|
|
131
|
-
</process>
|
package/commands/rpi/status.md
CHANGED
|
@@ -1,154 +1,131 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rpi:status
|
|
3
|
-
description: Show all
|
|
4
|
-
argument-hint: "[feature-
|
|
3
|
+
description: Show all features, their current phase, and progress.
|
|
4
|
+
argument-hint: "[feature-name]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Glob
|
|
8
8
|
- Bash
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
Display detailed status cards for all features (or a specific feature) in the RPI workflow.
|
|
13
|
-
</objective>
|
|
11
|
+
# /rpi:status — Feature Status Dashboard
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Show all active features with their current phase, verdict, and progress. Optionally show detailed view for a specific feature.
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Read `.rpi.yaml` for folder path. Default to `rpi/` if not found. Also read `profile` and `models` keys.
|
|
20
|
-
|
|
21
|
-
## 2. Discover features and changes
|
|
15
|
+
---
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
{folder}/*/REQUEST.md
|
|
26
|
-
```
|
|
17
|
+
## Step 1: Load config
|
|
27
18
|
|
|
28
|
-
|
|
19
|
+
Read `.rpi.yaml` for config. Apply defaults if missing:
|
|
20
|
+
- `folder`: `rpi/features`
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
{folder}/*/changes/*/REQUEST.md
|
|
33
|
-
```
|
|
22
|
+
Parse `$ARGUMENTS` to extract optional `{slug}` for detailed view.
|
|
34
23
|
|
|
35
|
-
|
|
24
|
+
## Step 2: Find all features
|
|
36
25
|
|
|
37
|
-
|
|
38
|
-
1. Check if it matches a top-level feature → show that feature and its changes
|
|
39
|
-
2. If not, check if it matches a change slug → show just that change (with parent context)
|
|
40
|
-
3. Resolution follows the shared Resolve Feature Path logic:
|
|
41
|
-
- Check `{folder}/{slug}/` exists → type = "feature"
|
|
42
|
-
- Glob `{folder}/*/changes/{slug}/` → type = "change"
|
|
43
|
-
- Multiple matches → AskUserQuestion
|
|
26
|
+
Glob `{folder}/*/REQUEST.md` to find all active features.
|
|
44
27
|
|
|
45
28
|
If no features found:
|
|
46
29
|
```
|
|
47
|
-
No
|
|
48
|
-
Run /rpi:new to start your first feature.
|
|
30
|
+
No features found. Run /rpi:new to start.
|
|
49
31
|
```
|
|
32
|
+
Stop.
|
|
50
33
|
|
|
51
|
-
## 3
|
|
52
|
-
|
|
53
|
-
For each feature slug, check which files exist:
|
|
34
|
+
## Step 3: Detect phase for each feature
|
|
54
35
|
|
|
55
|
-
|
|
56
|
-
- `research/RESEARCH.md` exists, no `plan/PLAN.md` → Phase: **researched**
|
|
57
|
-
- `plan/PLAN.md` exists, no `implement/IMPLEMENT.md` → Phase: **planned**
|
|
58
|
-
- `implement/IMPLEMENT.md` exists → Phase: **implementing** or **complete**
|
|
36
|
+
For each feature directory found, determine the current phase by checking which artifacts exist:
|
|
59
37
|
|
|
60
|
-
|
|
61
|
-
|
|
38
|
+
1. Has `REQUEST.md`, no `research/RESEARCH.md` → phase = **request** (next: research)
|
|
39
|
+
2. Has `research/RESEARCH.md`, no `plan/PLAN.md` → phase = **research** (next: plan)
|
|
40
|
+
3. Has `plan/PLAN.md`, no `implement/IMPLEMENT.md` → phase = **plan** (next: implement)
|
|
41
|
+
4. Has `implement/IMPLEMENT.md` with unchecked tasks (`- [ ]`) → phase = **implement** (in progress)
|
|
42
|
+
5. Has `implement/IMPLEMENT.md` with all tasks checked, no "## Simplify" section → phase = **implement** (next: simplify)
|
|
43
|
+
6. Has "## Simplify" section, no "## Review Verdict" section → phase = **simplify** (next: review)
|
|
44
|
+
7. Has "## Review Verdict" with PASS → phase = **review** (next: docs)
|
|
45
|
+
8. Everything done → phase = **complete**
|
|
62
46
|
|
|
63
|
-
## 4
|
|
47
|
+
## Step 4: Gather metadata per feature
|
|
64
48
|
|
|
65
|
-
For each feature
|
|
49
|
+
For each feature:
|
|
66
50
|
|
|
67
|
-
|
|
68
|
-
- Read RESEARCH.md
|
|
51
|
+
### Verdict
|
|
52
|
+
- Read `research/RESEARCH.md` if it exists. Look for `## Verdict` section. Extract: GO | GO with concerns | NO-GO.
|
|
53
|
+
- If no RESEARCH.md: verdict = "pending"
|
|
69
54
|
|
|
70
|
-
|
|
71
|
-
- Read
|
|
55
|
+
### Complexity
|
|
56
|
+
- Read `REQUEST.md`. Look for `## Complexity Estimate` section. Extract: S | M | L | XL.
|
|
57
|
+
- If not found: complexity = "unknown"
|
|
72
58
|
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
- Count done / blocked / deviated / rolled_back
|
|
78
|
-
- Identify current task (first unchecked in PLAN.md order that has no checkpoint)
|
|
79
|
-
- Read latest session file in `sessions/` for session count and tier
|
|
80
|
-
- If no checkpoints (old-style):
|
|
81
|
-
- Fall back to reading IMPLEMENT.md for `[x]` vs `[ ]` counts
|
|
82
|
-
- Check for review verdict in IMPLEMENT.md
|
|
59
|
+
### Task progress (if plan/implement exists)
|
|
60
|
+
- Read `plan/PLAN.md` if it exists. Count total tasks (lines matching `- [ ]` or `- [x]` pattern).
|
|
61
|
+
- Read `implement/IMPLEMENT.md` if it exists. Count completed tasks (`- [x]`) vs total.
|
|
62
|
+
- Express as: `{completed}/{total} tasks`
|
|
83
63
|
|
|
84
|
-
|
|
85
|
-
- Read IMPLEMENT.md for final review verdict and completion timestamp
|
|
64
|
+
## Step 5: Display status
|
|
86
65
|
|
|
87
|
-
|
|
66
|
+
### If no specific feature requested (overview mode)
|
|
88
67
|
|
|
89
|
-
|
|
90
|
-
- With profile: `Profile: {profile} (research: {model}, plan: {model}, implement: {model}, review: {model})`
|
|
91
|
-
- With overrides, mark overridden phases with `*`: `Profile: balanced (research: opus, plan: opus, implement: opus*, review: opus)`
|
|
92
|
-
- No profile: `Profile: none (inheriting parent model)`
|
|
68
|
+
Output a status card per feature, sorted by phase (most advanced first):
|
|
93
69
|
|
|
94
|
-
Then output a card per feature:
|
|
95
|
-
|
|
96
|
-
```markdown
|
|
97
|
-
## {feature-slug}
|
|
98
|
-
Phase: {phase} ({progress details})
|
|
99
|
-
Verdict: {GO|GO with concerns|NO-GO|—}
|
|
100
|
-
{Complexity: S|M|L|XL (if known)}
|
|
101
|
-
{Tier: 1|2|3 (context weight: {weight}) (if implementing)}
|
|
102
|
-
{Sessions: {count} (if implementing with checkpoints)}
|
|
103
|
-
{Current: Task {id} — {name} (if implementing)}
|
|
104
|
-
{Blocked: Task {id} — {reason} (if any blocked)}
|
|
105
|
-
{Review: PASS|FAIL (if reviewed)}
|
|
106
70
|
```
|
|
71
|
+
# RPI Status
|
|
107
72
|
|
|
108
|
-
|
|
73
|
+
## {feature-slug}
|
|
74
|
+
Phase: {phase} {task_progress if applicable}
|
|
75
|
+
Verdict: {verdict}
|
|
76
|
+
Complexity: {complexity}
|
|
109
77
|
|
|
110
|
-
|
|
111
|
-
|
|
78
|
+
## {feature-slug-2}
|
|
79
|
+
Phase: {phase}
|
|
80
|
+
Verdict: {verdict}
|
|
81
|
+
Complexity: {complexity}
|
|
112
82
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
## oauth2-auth
|
|
116
|
-
Phase: implement (6/9 tasks)
|
|
117
|
-
Verdict: GO
|
|
118
|
-
Complexity: M
|
|
119
|
-
Tier: 2 (context weight: 14.5)
|
|
120
|
-
Sessions: 2
|
|
121
|
-
Current: Task 2.1 — Login component
|
|
122
|
-
└─ add-social-login [research: GO]
|
|
123
|
-
└─ fix-token-refresh [new]
|
|
124
|
-
|
|
125
|
-
## payment-system
|
|
126
|
-
Phase: research
|
|
127
|
-
Verdict: pending
|
|
128
|
-
Complexity: —
|
|
129
|
-
|
|
130
|
-
## dark-mode
|
|
131
|
-
Phase: plan (ready to implement)
|
|
132
|
-
Verdict: GO
|
|
133
|
-
Complexity: S
|
|
134
|
-
|
|
135
|
-
## csv-export
|
|
136
|
-
Phase: new
|
|
137
|
-
Verdict: —
|
|
83
|
+
---
|
|
84
|
+
{total_count} feature(s) active
|
|
138
85
|
```
|
|
139
86
|
|
|
140
|
-
|
|
141
|
-
|
|
87
|
+
Phase display format:
|
|
88
|
+
- `request` → "request (awaiting research)"
|
|
89
|
+
- `research` → "research (awaiting plan)"
|
|
90
|
+
- `plan` → "plan (awaiting implement)"
|
|
91
|
+
- `implement` → "implement ({completed}/{total} tasks)"
|
|
92
|
+
- `simplify` → "simplify (awaiting review)"
|
|
93
|
+
- `review` → "review (awaiting docs)"
|
|
94
|
+
- `complete` → "complete"
|
|
142
95
|
|
|
143
|
-
|
|
96
|
+
### If specific feature requested (detailed mode)
|
|
144
97
|
|
|
145
|
-
|
|
146
|
-
- **new** → `/rpi:research {slug}`
|
|
147
|
-
- **researched (GO)** → `/rpi:plan {slug}`
|
|
148
|
-
- **researched (NO-GO)** → Review alternatives or `/rpi:plan {slug} --force`
|
|
149
|
-
- **planned** → `/rpi:implement {slug}`
|
|
150
|
-
- **implementing** → `/rpi:implement {slug} --resume`
|
|
151
|
-
- **complete (PASS)** → Done
|
|
152
|
-
- **complete (FAIL)** → `/rpi:review {slug}`
|
|
98
|
+
If `{slug}` was provided in arguments, show detailed view for that feature:
|
|
153
99
|
|
|
154
|
-
|
|
100
|
+
```
|
|
101
|
+
# RPI Status: {slug}
|
|
102
|
+
|
|
103
|
+
Phase: {phase} {task_progress}
|
|
104
|
+
Verdict: {verdict}
|
|
105
|
+
Complexity: {complexity}
|
|
106
|
+
|
|
107
|
+
## Artifacts
|
|
108
|
+
- REQUEST.md: {exists/missing}
|
|
109
|
+
- research/RESEARCH.md: {exists/missing}
|
|
110
|
+
- plan/PLAN.md: {exists/missing}
|
|
111
|
+
- plan/eng.md: {exists/missing}
|
|
112
|
+
- plan/pm.md: {exists/missing}
|
|
113
|
+
- plan/ux.md: {exists/missing}
|
|
114
|
+
- implement/IMPLEMENT.md: {exists/missing}
|
|
115
|
+
- delta/: {count of files in ADDED + MODIFIED + REMOVED}
|
|
116
|
+
|
|
117
|
+
## Tasks
|
|
118
|
+
{If PLAN.md exists, list all tasks with their status: [x] or [ ]}
|
|
119
|
+
|
|
120
|
+
## Review
|
|
121
|
+
{If Review Verdict exists in IMPLEMENT.md, show verdict and finding counts}
|
|
122
|
+
|
|
123
|
+
## Next
|
|
124
|
+
{Suggest the next command to run, e.g. "/rpi {slug}" or "/rpi:archive {slug}" if complete}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
If the requested feature does not exist:
|
|
128
|
+
```
|
|
129
|
+
Feature '{slug}' not found. Available features:
|
|
130
|
+
- {list of existing feature slugs}
|
|
131
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rpi:update
|
|
3
|
+
description: Update RPIKit plugin to the latest version from the remote repository.
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Bash
|
|
7
|
+
- Read
|
|
8
|
+
- Glob
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /rpi:update — Update RPIKit
|
|
12
|
+
|
|
13
|
+
Pull the latest version of RPIKit from the remote repository and clear the plugin cache.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Step 1: Find the installed plugin directory
|
|
18
|
+
|
|
19
|
+
Search for the RPIKit installation:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
find ~/.claude/plugins -name "plugin.json" -path "*/rpi-kit/*" 2>/dev/null
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
From the results, determine the plugin root directory (the parent of `.claude-plugin/`).
|
|
26
|
+
|
|
27
|
+
If not found:
|
|
28
|
+
```
|
|
29
|
+
RPIKit installation not found in ~/.claude/plugins/.
|
|
30
|
+
Re-install from the marketplace or run:
|
|
31
|
+
claude plugin add git@github.com:dmend3z/rpi-kit.git
|
|
32
|
+
```
|
|
33
|
+
Stop.
|
|
34
|
+
|
|
35
|
+
Store the plugin root path as `$PLUGIN_DIR`.
|
|
36
|
+
|
|
37
|
+
## Step 2: Show current version
|
|
38
|
+
|
|
39
|
+
Read `$PLUGIN_DIR/.claude-plugin/plugin.json` and extract the current `version` field.
|
|
40
|
+
Store as `$CURRENT_VERSION`.
|
|
41
|
+
|
|
42
|
+
Also get the current git commit:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd $PLUGIN_DIR && git rev-parse --short HEAD
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Store as `$CURRENT_COMMIT`.
|
|
49
|
+
|
|
50
|
+
## Step 3: Pull latest changes
|
|
51
|
+
|
|
52
|
+
Run git pull in the plugin directory:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd $PLUGIN_DIR && git pull origin main 2>&1
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If it fails:
|
|
59
|
+
- If "not a git repository": report the error and suggest re-installing.
|
|
60
|
+
- If merge conflict: report the error and suggest `cd $PLUGIN_DIR && git reset --hard origin/main` (ask user first — this discards local changes).
|
|
61
|
+
- If network error: report "Could not reach remote. Check your connection."
|
|
62
|
+
- Stop on any error.
|
|
63
|
+
|
|
64
|
+
If output says "Already up to date.":
|
|
65
|
+
```
|
|
66
|
+
RPIKit is already up to date (v{$CURRENT_VERSION}, {$CURRENT_COMMIT}).
|
|
67
|
+
```
|
|
68
|
+
Stop.
|
|
69
|
+
|
|
70
|
+
## Step 4: Show what changed
|
|
71
|
+
|
|
72
|
+
Get the new version:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
cd $PLUGIN_DIR && cat .claude-plugin/plugin.json | grep '"version"'
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Store as `$NEW_VERSION`.
|
|
79
|
+
|
|
80
|
+
Get the new commit:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
cd $PLUGIN_DIR && git rev-parse --short HEAD
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Store as `$NEW_COMMIT`.
|
|
87
|
+
|
|
88
|
+
Show the changelog between old and new commits:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
cd $PLUGIN_DIR && git log --oneline $CURRENT_COMMIT..$NEW_COMMIT
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Step 5: Clear plugin cache
|
|
95
|
+
|
|
96
|
+
Remove cached versions so Claude Code picks up the new files:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
rm -rf ~/.claude/plugins/cache/rpi-kit 2>/dev/null
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Step 6: Output summary
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
RPIKit updated!
|
|
106
|
+
|
|
107
|
+
{$CURRENT_VERSION} ({$CURRENT_COMMIT}) → {$NEW_VERSION} ({$NEW_COMMIT})
|
|
108
|
+
|
|
109
|
+
Changes:
|
|
110
|
+
{git log output from step 4}
|
|
111
|
+
|
|
112
|
+
Restart Claude Code to load the new version.
|
|
113
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rpi-kit",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Research → Plan → Implement.
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Research → Plan → Implement. AI-assisted feature development with 13 named agents, delta specs, and knowledge compounding.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Daniel Mendes",
|
|
7
7
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"agents/",
|
|
29
29
|
"skills/",
|
|
30
30
|
"AGENTS.md",
|
|
31
|
-
"
|
|
31
|
+
"CHANGELOG.md",
|
|
32
32
|
"README.md",
|
|
33
33
|
"LICENSE"
|
|
34
34
|
],
|