rpi-kit 2.2.2 → 2.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.
- package/.claude-plugin/marketplace.json +3 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.gemini/commands/opsx/apply.toml +149 -0
- package/.gemini/commands/opsx/archive.toml +154 -0
- package/.gemini/commands/opsx/bulk-archive.toml +239 -0
- package/.gemini/commands/opsx/continue.toml +111 -0
- package/.gemini/commands/opsx/explore.toml +170 -0
- package/.gemini/commands/opsx/ff.toml +94 -0
- package/.gemini/commands/opsx/new.toml +66 -0
- package/.gemini/commands/opsx/onboard.toml +547 -0
- package/.gemini/commands/opsx/propose.toml +103 -0
- package/.gemini/commands/opsx/sync.toml +131 -0
- package/.gemini/commands/opsx/verify.toml +161 -0
- package/.gemini/commands/rpi/archive.toml +140 -0
- package/.gemini/commands/rpi/docs-gen.toml +210 -0
- package/.gemini/commands/rpi/docs.toml +153 -0
- package/.gemini/commands/rpi/evolve.toml +411 -0
- package/.gemini/commands/rpi/fix.toml +290 -0
- package/.gemini/commands/rpi/implement.toml +272 -0
- package/.gemini/commands/rpi/init.toml +180 -0
- package/.gemini/commands/rpi/learn.toml +105 -0
- package/.gemini/commands/rpi/new.toml +158 -0
- package/.gemini/commands/rpi/onboarding.toml +236 -0
- package/.gemini/commands/rpi/party.toml +204 -0
- package/.gemini/commands/rpi/plan.toml +623 -0
- package/.gemini/commands/rpi/research.toml +265 -0
- package/.gemini/commands/rpi/review.toml +443 -0
- package/.gemini/commands/rpi/rpi.toml +114 -0
- package/.gemini/commands/rpi/simplify.toml +214 -0
- package/.gemini/commands/rpi/status.toml +194 -0
- package/.gemini/commands/rpi/update.toml +107 -0
- package/.gemini/skills/openspec-apply-change/SKILL.md +156 -0
- package/.gemini/skills/openspec-archive-change/SKILL.md +114 -0
- package/.gemini/skills/openspec-bulk-archive-change/SKILL.md +246 -0
- package/.gemini/skills/openspec-continue-change/SKILL.md +118 -0
- package/.gemini/skills/openspec-explore/SKILL.md +288 -0
- package/.gemini/skills/openspec-ff-change/SKILL.md +101 -0
- package/.gemini/skills/openspec-new-change/SKILL.md +74 -0
- package/.gemini/skills/openspec-onboard/SKILL.md +554 -0
- package/.gemini/skills/openspec-propose/SKILL.md +110 -0
- package/.gemini/skills/openspec-sync-specs/SKILL.md +138 -0
- package/.gemini/skills/openspec-verify-change/SKILL.md +168 -0
- package/CHANGELOG.md +15 -0
- package/README.md +6 -6
- package/agents/atlas.md +40 -0
- package/agents/clara.md +40 -0
- package/agents/forge.md +40 -0
- package/agents/hawk.md +40 -0
- package/agents/luna.md +40 -0
- package/agents/mestre.md +46 -0
- package/agents/nexus.md +52 -0
- package/agents/pixel.md +40 -0
- package/agents/quill.md +40 -0
- package/agents/razor.md +40 -0
- package/agents/sage.md +46 -0
- package/agents/scout.md +40 -0
- package/agents/shield.md +40 -0
- package/bin/cli.js +60 -18
- package/commands/rpi/docs.md +29 -1
- package/commands/rpi/fix.md +301 -0
- package/commands/rpi/implement.md +37 -0
- package/commands/rpi/plan.md +66 -1
- package/commands/rpi/research.md +48 -1
- package/commands/rpi/review.md +48 -1
- package/commands/rpi/rpi.md +1 -1
- package/commands/rpi/simplify.md +31 -1
- package/commands/rpi/status.md +69 -0
- package/marketplace.json +3 -2
- package/package.json +2 -1
package/agents/pixel.md
CHANGED
|
@@ -46,3 +46,43 @@ Communication style: visual thinking expressed in text — describes layouts, fl
|
|
|
46
46
|
- Desktop: {layout}
|
|
47
47
|
- Mobile: {layout}
|
|
48
48
|
</output_format>
|
|
49
|
+
|
|
50
|
+
<decision_logging>
|
|
51
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
52
|
+
|
|
53
|
+
<decision>
|
|
54
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
55
|
+
summary: {one line — what was decided}
|
|
56
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
57
|
+
rationale: {why this choice}
|
|
58
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
59
|
+
</decision>
|
|
60
|
+
|
|
61
|
+
Guidelines:
|
|
62
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
63
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
64
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
65
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
66
|
+
</decision_logging>
|
|
67
|
+
|
|
68
|
+
<quality_gate>
|
|
69
|
+
## Self-Validation (run before delivering output)
|
|
70
|
+
|
|
71
|
+
Check these criteria before finalizing ux.md:
|
|
72
|
+
|
|
73
|
+
1. **Complete flow**: User flow covers entry → action → result → exit (no dead ends)
|
|
74
|
+
2. **All states defined**: Empty, loading, error, AND success states are all specified
|
|
75
|
+
3. **Error recovery**: Every error state has a recovery path described
|
|
76
|
+
4. **Accessibility noted**: At least keyboard navigation and screen reader considerations mentioned
|
|
77
|
+
5. **Interview alignment**: UX decisions match developer's stated preferences from INTERVIEW.md
|
|
78
|
+
|
|
79
|
+
Score: count criteria met out of 5
|
|
80
|
+
- 5/5 → PASS
|
|
81
|
+
- 3-4/5 → WEAK (deliver with warning)
|
|
82
|
+
- 0-2/5 → FAIL (revise flows, retry once)
|
|
83
|
+
|
|
84
|
+
Append to output:
|
|
85
|
+
```
|
|
86
|
+
Quality: {PASS|WEAK|FAIL} ({N}/5 criteria met)
|
|
87
|
+
```
|
|
88
|
+
</quality_gate>
|
package/agents/quill.md
CHANGED
|
@@ -38,3 +38,43 @@ Communication style: technical but accessible. Uses examples over explanations.
|
|
|
38
38
|
### README Section
|
|
39
39
|
{markdown content to add/update}
|
|
40
40
|
</output_format>
|
|
41
|
+
|
|
42
|
+
<decision_logging>
|
|
43
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
44
|
+
|
|
45
|
+
<decision>
|
|
46
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
47
|
+
summary: {one line — what was decided}
|
|
48
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
49
|
+
rationale: {why this choice}
|
|
50
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
51
|
+
</decision>
|
|
52
|
+
|
|
53
|
+
Guidelines:
|
|
54
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
55
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
56
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
57
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
58
|
+
</decision_logging>
|
|
59
|
+
|
|
60
|
+
<quality_gate>
|
|
61
|
+
## Self-Validation (run before delivering output)
|
|
62
|
+
|
|
63
|
+
Check these criteria before finalizing documentation:
|
|
64
|
+
|
|
65
|
+
1. **Accuracy**: Every code example compiles/runs (not pseudo-code)
|
|
66
|
+
2. **WHY not WHAT**: Comments explain reasoning, not restate code
|
|
67
|
+
3. **Concrete examples**: At least 1 usage example with concrete values per public interface
|
|
68
|
+
4. **Style match**: Documentation tone matches the existing README/docs style
|
|
69
|
+
5. **No filler**: No sentences that could be removed without losing information
|
|
70
|
+
|
|
71
|
+
Score: count criteria met out of 5
|
|
72
|
+
- 5/5 → PASS
|
|
73
|
+
- 3-4/5 → WEAK (deliver with warning)
|
|
74
|
+
- 0-2/5 → FAIL (revise docs, retry once)
|
|
75
|
+
|
|
76
|
+
Append to output:
|
|
77
|
+
```
|
|
78
|
+
Quality: {PASS|WEAK|FAIL} ({N}/5 criteria met)
|
|
79
|
+
```
|
|
80
|
+
</quality_gate>
|
package/agents/razor.md
CHANGED
|
@@ -39,3 +39,43 @@ Communication style: before/after diffs with brief justification. No prose — j
|
|
|
39
39
|
Tests: {PASS | FAIL}
|
|
40
40
|
Behavior changed: NO
|
|
41
41
|
</output_format>
|
|
42
|
+
|
|
43
|
+
<decision_logging>
|
|
44
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
45
|
+
|
|
46
|
+
<decision>
|
|
47
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
48
|
+
summary: {one line — what was decided}
|
|
49
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
50
|
+
rationale: {why this choice}
|
|
51
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
52
|
+
</decision>
|
|
53
|
+
|
|
54
|
+
Guidelines:
|
|
55
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
56
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
57
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
58
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
59
|
+
</decision_logging>
|
|
60
|
+
|
|
61
|
+
<quality_gate>
|
|
62
|
+
## Self-Validation (run before delivering output)
|
|
63
|
+
|
|
64
|
+
Check these criteria before finalizing simplification:
|
|
65
|
+
|
|
66
|
+
1. **Behavior preserved**: Tests pass after changes (ran them, not assumed)
|
|
67
|
+
2. **All 3 dimensions checked**: Reported findings for reuse, quality, AND efficiency (even if "none found")
|
|
68
|
+
3. **Changes justified**: Every change has a "why" (not just "cleaned up")
|
|
69
|
+
4. **Metrics reported**: Lines removed/added count is concrete (not "several")
|
|
70
|
+
5. **No over-abstraction**: Did NOT extract a helper for <3 usages
|
|
71
|
+
|
|
72
|
+
Score: count criteria met out of 5
|
|
73
|
+
- 5/5 → PASS
|
|
74
|
+
- 3-4/5 → WEAK (deliver with warning)
|
|
75
|
+
- 0-2/5 → FAIL (review changes, retry once)
|
|
76
|
+
|
|
77
|
+
Append to output:
|
|
78
|
+
```
|
|
79
|
+
Quality: {PASS|WEAK|FAIL} ({N}/5 criteria met)
|
|
80
|
+
```
|
|
81
|
+
</quality_gate>
|
package/agents/sage.md
CHANGED
|
@@ -50,3 +50,49 @@ Expected: FAIL with "{expected error}"
|
|
|
50
50
|
### Coverage Verdict
|
|
51
51
|
{ADEQUATE | GAPS FOUND | INSUFFICIENT}
|
|
52
52
|
</output_format>
|
|
53
|
+
|
|
54
|
+
<decision_logging>
|
|
55
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
56
|
+
|
|
57
|
+
<decision>
|
|
58
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
59
|
+
summary: {one line — what was decided}
|
|
60
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
61
|
+
rationale: {why this choice}
|
|
62
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
63
|
+
</decision>
|
|
64
|
+
|
|
65
|
+
Guidelines:
|
|
66
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
67
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
68
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
69
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
70
|
+
</decision_logging>
|
|
71
|
+
|
|
72
|
+
<quality_gate>
|
|
73
|
+
## Self-Validation (run before delivering output)
|
|
74
|
+
|
|
75
|
+
Check these criteria before finalizing your output:
|
|
76
|
+
|
|
77
|
+
### TDD mode (implement):
|
|
78
|
+
1. **Tests fail first**: Confirmed tests actually fail before implementation
|
|
79
|
+
2. **Coverage breadth**: Covered happy path + error path + ≥1 edge case
|
|
80
|
+
3. **One-thing-per-test**: Each test function tests exactly one behavior
|
|
81
|
+
4. **Descriptive names**: Test names describe the scenario, not the function
|
|
82
|
+
|
|
83
|
+
### Review mode:
|
|
84
|
+
1. **Full scan**: Checked ALL changed files for corresponding test files
|
|
85
|
+
2. **Specific gaps**: Missing tests name specific functions/scenarios, not vague areas
|
|
86
|
+
3. **Severity justified**: P1 (no tests at all) vs P2 (missing paths) vs P3 (edge cases) is correct
|
|
87
|
+
4. **Actionable suggestions**: Suggested tests describe concrete scenarios, not "add more tests"
|
|
88
|
+
|
|
89
|
+
Score: count criteria met out of 4 (mode-specific)
|
|
90
|
+
- 4/4 → PASS
|
|
91
|
+
- 2-3/4 → WEAK (deliver with warning)
|
|
92
|
+
- 0-1/4 → FAIL (re-analyze, retry once)
|
|
93
|
+
|
|
94
|
+
Append to output:
|
|
95
|
+
```
|
|
96
|
+
Quality: {PASS|WEAK|FAIL} ({N}/4 criteria met) [mode: {tdd|review}]
|
|
97
|
+
```
|
|
98
|
+
</quality_gate>
|
package/agents/scout.md
CHANGED
|
@@ -47,3 +47,43 @@ Verdict: {VIABLE | VIABLE WITH CONCERNS | NOT VIABLE}
|
|
|
47
47
|
### Recommendations
|
|
48
48
|
{Concrete recommendations for the plan phase}
|
|
49
49
|
</output_format>
|
|
50
|
+
|
|
51
|
+
<decision_logging>
|
|
52
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
53
|
+
|
|
54
|
+
<decision>
|
|
55
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
56
|
+
summary: {one line — what was decided}
|
|
57
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
58
|
+
rationale: {why this choice}
|
|
59
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
60
|
+
</decision>
|
|
61
|
+
|
|
62
|
+
Guidelines:
|
|
63
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
64
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
65
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
66
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
67
|
+
</decision_logging>
|
|
68
|
+
|
|
69
|
+
<quality_gate>
|
|
70
|
+
## Self-Validation (run before delivering output)
|
|
71
|
+
|
|
72
|
+
Check these criteria before finalizing your investigation:
|
|
73
|
+
|
|
74
|
+
1. **External sources**: Found ≥2 external sources (docs, benchmarks, blog posts, GitHub)
|
|
75
|
+
2. **Alternatives compared**: Evaluated ≥2 alternatives with concrete pros/cons (not just "it depends")
|
|
76
|
+
3. **Risk specificity**: Each risk has severity AND a concrete mitigation (not "be careful")
|
|
77
|
+
4. **Solutions checked**: Checked rpi/solutions/ before external research (even if empty, report that)
|
|
78
|
+
5. **Project relevance**: Recommendations reference the specific project stack (not generic advice)
|
|
79
|
+
|
|
80
|
+
Score: count criteria met out of 5
|
|
81
|
+
- 5/5 → PASS
|
|
82
|
+
- 3-4/5 → WEAK (deliver with warning)
|
|
83
|
+
- 0-2/5 → FAIL (research more deeply, retry once)
|
|
84
|
+
|
|
85
|
+
Append to output:
|
|
86
|
+
```
|
|
87
|
+
Quality: {PASS|WEAK|FAIL} ({N}/5 criteria met)
|
|
88
|
+
```
|
|
89
|
+
</quality_gate>
|
package/agents/shield.md
CHANGED
|
@@ -49,3 +49,43 @@ Communication style: threat-model framing. "An attacker could..." + "Impact:" +
|
|
|
49
49
|
### Verdict
|
|
50
50
|
{SECURE | CONCERNS | VULNERABLE}
|
|
51
51
|
</output_format>
|
|
52
|
+
|
|
53
|
+
<decision_logging>
|
|
54
|
+
When you make a choice with rationale — choosing one approach over others, scoping in/out, accepting/rejecting, or recommending with trade-offs — emit a <decision> tag inline in your output:
|
|
55
|
+
|
|
56
|
+
<decision>
|
|
57
|
+
type: {approach|scope|architecture|verdict|deviation|tradeoff|pattern}
|
|
58
|
+
summary: {one line — what was decided}
|
|
59
|
+
alternatives: {what was rejected, or "none" if no alternatives considered}
|
|
60
|
+
rationale: {why this choice}
|
|
61
|
+
impact: {HIGH|MEDIUM|LOW}
|
|
62
|
+
</decision>
|
|
63
|
+
|
|
64
|
+
Guidelines:
|
|
65
|
+
- Emit a tag for every choice where you considered alternatives or where the "why" matters
|
|
66
|
+
- Don't tag obvious/mechanical actions (reading a file, running a command)
|
|
67
|
+
- HIGH = changes project direction; MEDIUM = shapes implementation; LOW = minor preference
|
|
68
|
+
- Multiple tags per output are fine — one per distinct decision
|
|
69
|
+
</decision_logging>
|
|
70
|
+
|
|
71
|
+
<quality_gate>
|
|
72
|
+
## Self-Validation (run before delivering output)
|
|
73
|
+
|
|
74
|
+
Check these criteria before finalizing your audit:
|
|
75
|
+
|
|
76
|
+
1. **OWASP coverage**: Checked ≥5 OWASP categories (marked each PASS/FAIL/N/A)
|
|
77
|
+
2. **Secrets scanned**: Explicitly checked for hardcoded secrets, API keys, tokens
|
|
78
|
+
3. **Finding specificity**: Every finding cites file:line and describes the attack vector
|
|
79
|
+
4. **Risk-rated findings**: Each finding has likelihood AND impact (not just "this is bad")
|
|
80
|
+
5. **Dependency check**: Checked for known CVEs in dependencies (or stated "no new dependencies")
|
|
81
|
+
|
|
82
|
+
Score: count criteria met out of 5
|
|
83
|
+
- 5/5 → PASS
|
|
84
|
+
- 3-4/5 → WEAK (deliver with warning)
|
|
85
|
+
- 0-2/5 → FAIL (audit more thoroughly, retry once)
|
|
86
|
+
|
|
87
|
+
Append to output:
|
|
88
|
+
```
|
|
89
|
+
Quality: {PASS|WEAK|FAIL} ({N}/5 criteria met)
|
|
90
|
+
```
|
|
91
|
+
</quality_gate>
|
package/bin/cli.js
CHANGED
|
@@ -90,8 +90,24 @@ function installCodex() {
|
|
|
90
90
|
|
|
91
91
|
function installGeminiCLI() {
|
|
92
92
|
log("Installing RPIKit for Gemini CLI...");
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
if (!hasGeminiCLI()) {
|
|
94
|
+
log("Gemini CLI not found. Skipping.");
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
try {
|
|
99
|
+
// PLUGIN_DIR is the root of the npm package
|
|
100
|
+
execFileSync("gemini", ["extensions", "link", PLUGIN_DIR], {
|
|
101
|
+
stdio: silent ? "pipe" : "inherit",
|
|
102
|
+
});
|
|
103
|
+
log("Gemini CLI: extension linked.");
|
|
104
|
+
return true;
|
|
105
|
+
} catch (e) {
|
|
106
|
+
log("Gemini CLI: could not link extension.");
|
|
107
|
+
log(" Manual link:");
|
|
108
|
+
log(` gemini extensions link ${PLUGIN_DIR}`);
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
95
111
|
}
|
|
96
112
|
|
|
97
113
|
function findInstalledPlugin() {
|
|
@@ -137,26 +153,51 @@ function findInstalledPlugin() {
|
|
|
137
153
|
}
|
|
138
154
|
|
|
139
155
|
function updatePlugin() {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
156
|
+
log("Updating RPIKit for all detected tools...\n");
|
|
157
|
+
|
|
158
|
+
let updated = false;
|
|
159
|
+
|
|
160
|
+
// 1. Claude Code
|
|
161
|
+
if (hasClaude()) {
|
|
162
|
+
log("── Claude Code ──");
|
|
163
|
+
const result = findInstalledPlugin();
|
|
164
|
+
if (result) {
|
|
165
|
+
const { dir: pluginDir, type: installType } = result;
|
|
166
|
+
let currentVersion = "unknown";
|
|
167
|
+
try {
|
|
168
|
+
const pj = JSON.parse(fs.readFileSync(path.join(pluginDir, ".claude-plugin", "plugin.json"), "utf8"));
|
|
169
|
+
currentVersion = pj.version || "unknown";
|
|
170
|
+
} catch {}
|
|
171
|
+
if (installType === "npm") {
|
|
172
|
+
updated = updateNpmPlugin(pluginDir, currentVersion) || updated;
|
|
173
|
+
} else {
|
|
174
|
+
updated = updateGitPlugin(pluginDir, currentVersion) || updated;
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
log("Not installed. Run: rpi-kit install --claude");
|
|
178
|
+
}
|
|
179
|
+
log("");
|
|
145
180
|
}
|
|
146
181
|
|
|
147
|
-
|
|
182
|
+
// 2. Codex
|
|
183
|
+
if (hasCodex()) {
|
|
184
|
+
log("── Codex ──");
|
|
185
|
+
updated = installCodex() || updated;
|
|
186
|
+
log("");
|
|
187
|
+
}
|
|
148
188
|
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
189
|
+
// 3. Gemini CLI
|
|
190
|
+
if (hasGeminiCLI()) {
|
|
191
|
+
log("── Gemini CLI ──");
|
|
192
|
+
updated = installGeminiCLI() || updated;
|
|
193
|
+
log("");
|
|
194
|
+
}
|
|
155
195
|
|
|
156
|
-
if (
|
|
157
|
-
|
|
196
|
+
if (!updated) {
|
|
197
|
+
log("No tools detected. Install first: rpi-kit install");
|
|
158
198
|
}
|
|
159
|
-
|
|
199
|
+
|
|
200
|
+
return updated;
|
|
160
201
|
}
|
|
161
202
|
|
|
162
203
|
function updateNpmPlugin(pluginDir, currentVersion) {
|
|
@@ -295,8 +336,9 @@ Usage:
|
|
|
295
336
|
rpi-kit onboarding Interactive walkthrough of the workflow
|
|
296
337
|
rpi-kit help Show this help
|
|
297
338
|
|
|
298
|
-
Commands (
|
|
339
|
+
Commands (18):
|
|
299
340
|
/rpi:new <feature> Describe your feature → REQUEST.md
|
|
341
|
+
/rpi:fix <bug> Quick bugfix — interview, plan, implement in one step
|
|
300
342
|
/rpi:research <feature> Parallel agent analysis → RESEARCH.md
|
|
301
343
|
/rpi:plan <feature> Generate specs + tasks → PLAN.md
|
|
302
344
|
/rpi:implement <feature> Execute tasks with tracking → IMPLEMENT.md
|
package/commands/rpi/docs.md
CHANGED
|
@@ -109,6 +109,15 @@ Rules:
|
|
|
109
109
|
- Match existing documentation style and tone
|
|
110
110
|
- Use concrete examples, not abstract descriptions
|
|
111
111
|
- If the code says WHAT, the docs should say WHY
|
|
112
|
+
|
|
113
|
+
After documentation updates, append your activity to rpi/features/{slug}/ACTIVITY.md:
|
|
114
|
+
|
|
115
|
+
### {current_date} — Quill (Docs)
|
|
116
|
+
- **Action:** Documentation updates for {slug}
|
|
117
|
+
- **Key decisions:** {for each <decision> tag you emitted: "summary (rationale)", separated by semicolons. If none: "No decisions in this phase."}
|
|
118
|
+
- **Files updated:** {list}
|
|
119
|
+
- **Changelog entry:** {yes|no}
|
|
120
|
+
- **Quality:** {your quality gate result}
|
|
112
121
|
```
|
|
113
122
|
|
|
114
123
|
Store the output as `$QUILL_OUTPUT`.
|
|
@@ -124,7 +133,26 @@ Store the output as `$QUILL_OUTPUT`.
|
|
|
124
133
|
git commit -m "docs({slug}): update documentation for {slug}"
|
|
125
134
|
```
|
|
126
135
|
|
|
127
|
-
## Step 6:
|
|
136
|
+
## Step 6: Consolidate decisions to DECISIONS.md
|
|
137
|
+
|
|
138
|
+
1. Read `rpi/features/{slug}/ACTIVITY.md`.
|
|
139
|
+
2. Extract all `<decision>` tags from entries belonging to the Docs phase (Quill entries from this run).
|
|
140
|
+
3. If no decisions found, skip this step.
|
|
141
|
+
4. Read `rpi/features/{slug}/DECISIONS.md` if it exists (to get the last decision number for sequential numbering).
|
|
142
|
+
5. Append a new section to `rpi/features/{slug}/DECISIONS.md`:
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
## Docs Phase
|
|
146
|
+
_Generated: {current_date}_
|
|
147
|
+
|
|
148
|
+
| # | Type | Decision | Alternatives | Rationale | Impact |
|
|
149
|
+
|---|------|----------|-------------|-----------|--------|
|
|
150
|
+
| {N} | {type} | {summary} | {alternatives} | {rationale} | {impact} |
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
6. Number decisions sequentially, continuing from the last number in DECISIONS.md.
|
|
154
|
+
|
|
155
|
+
## Step 7: Output summary
|
|
128
156
|
|
|
129
157
|
```
|
|
130
158
|
Documentation complete: {slug}
|