@juicesharp/rpiv-pi 0.12.5 → 0.12.6
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 +26 -10
- package/agents/general-purpose.md +2 -3
- package/package.json +1 -1
- package/skills/annotate-guidance/SKILL.md +3 -3
- package/skills/annotate-inline/SKILL.md +3 -3
- package/skills/code-review/SKILL.md +2 -2
- package/skills/design/SKILL.md +2 -2
- package/skills/discover/SKILL.md +1 -1
- package/skills/explore/SKILL.md +1 -1
- package/skills/outline-test-cases/SKILL.md +1 -1
- package/skills/research/SKILL.md +1 -1
- package/skills/resume-handoff/SKILL.md +1 -1
- package/skills/revise/SKILL.md +2 -2
- package/skills/validate/SKILL.md +1 -1
- package/skills/write-test-cases/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -94,6 +94,22 @@ On first Pi Agent session start, rpiv-pi automatically:
|
|
|
94
94
|
|
|
95
95
|
Each skill produces an artifact consumed by the next. Run them in order, or jump in at any stage if you already have the input artifact.
|
|
96
96
|
|
|
97
|
+
### Recipes
|
|
98
|
+
|
|
99
|
+
Skills compose. Pick the entry point that matches your intent:
|
|
100
|
+
|
|
101
|
+
- **Form context before a task** — `/skill:discover "[topic]"` → `/skill:research <questions artifact>`. Produces a high-signal subspace of the codebase relevant to your topic, ready to feed directly into the next prompt.
|
|
102
|
+
- **Compare approaches before designing** — `/skill:explore "[problem]"` → `/skill:design <solutions artifact>`. Use when multiple valid solutions exist; the solutions artifact is a first-class input to `design` alongside a `research` artifact.
|
|
103
|
+
- **Full feature build** — `/skill:discover` → `research` → `design` → `plan` → `implement` → `validate` → (`code-review` ↔ `commit`). The default pipeline; jump in at any stage if you already have the input artifact. Review and commit are interchangeable in order — review `staged`/`working` before committing, or commit first and review the resulting branch (empty scope, first-parent vs default).
|
|
104
|
+
- **Investigate a bug** — `/skill:discover "why does X fail"` → `/skill:research <questions artifact>`. Fix from the research output without writing a plan when the change is small.
|
|
105
|
+
- **Adjust mid-implementation** — `/skill:revise <plan artifact>` → resume `/skill:implement`. Use when new constraints land after the plan is drafted.
|
|
106
|
+
- **Review before shipping** — `/skill:code-review` ↔ `/skill:commit`. Order is your call: review `staged`/`working` before committing to catch issues at the smallest blast radius, or commit first and review the resulting branch (empty scope defaults to feature-branch-vs-default-branch, first-parent). Produces a Quality/Security/Dependencies artifact under `thoughts/shared/reviews/` with claim-verifier-grounded findings and `status: approved | needs_changes`.
|
|
107
|
+
- **Audit a specific scope** — `/skill:code-review <commit|staged|working|hash|A..B|branch>`. Targeted lenses over a commit, range, staged/working tree, or PR branch; advisor adjudication applies when configured (`/advisor`).
|
|
108
|
+
- **Review-driven plan revision** — `/skill:code-review` → `/skill:revise <plan artifact>` → resume `/skill:implement`. When a mid-stream review surfaces structural findings that the existing plan can't absorb as spot fixes.
|
|
109
|
+
- **Scaffold manual UI test specs** — `/skill:outline-test-cases` → `/skill:write-test-cases <feature>`. Outline first via Frontend-First Discovery to map project scope and avoid duplicate coverage, then generate flow-based manual test cases (with a regression suite) under `.rpiv/test-cases/<feature>/`.
|
|
110
|
+
- **Hand off across sessions** — `/skill:create-handoff` → (new session) `/skill:resume-handoff <doc>`. Preserves context when stopping mid-task.
|
|
111
|
+
- **Onboard a fresh repo** — `/skill:annotate-guidance` once, then use the rest of the pipeline normally. Use `annotate-inline` instead if the project follows the `CLAUDE.md` convention.
|
|
112
|
+
|
|
97
113
|
### Skills
|
|
98
114
|
|
|
99
115
|
Invoke via `/skill:<name>` from inside a Pi Agent session.
|
|
@@ -157,18 +173,18 @@ Agents are dispatched automatically by skills via the `Agent` tool — you don't
|
|
|
157
173
|
|
|
158
174
|
| Agent | Purpose |
|
|
159
175
|
|---|---|
|
|
160
|
-
| `claim-verifier` | Grounds
|
|
176
|
+
| `claim-verifier` | Grounds each supplied code-review claim against repository state and tags it Verified / Weakened / Falsified |
|
|
161
177
|
| `codebase-analyzer` | Analyzes implementation details for specific components |
|
|
162
|
-
| `codebase-locator` | Locates files and components relevant to a task |
|
|
163
|
-
| `codebase-pattern-finder` | Finds similar implementations and usage
|
|
164
|
-
| `diff-auditor` |
|
|
165
|
-
| `integration-scanner` | Maps inbound references, outbound
|
|
166
|
-
| `peer-comparator` |
|
|
167
|
-
| `precedent-locator` | Finds similar past changes in git history |
|
|
168
|
-
| `test-case-locator` |
|
|
169
|
-
| `thoughts-analyzer` |
|
|
178
|
+
| `codebase-locator` | Locates files, directories, and components relevant to a feature or task |
|
|
179
|
+
| `codebase-pattern-finder` | Finds similar implementations and usage examples with concrete code snippets |
|
|
180
|
+
| `diff-auditor` | Walks a patch against a caller-supplied surface-list and emits `file:line \| verbatim \| surface-id \| note` rows |
|
|
181
|
+
| `integration-scanner` | Maps inbound references, outbound dependencies, config registrations, and event subscriptions for a component |
|
|
182
|
+
| `peer-comparator` | Compares a new file against a peer sibling and tags each invariant Mirrored / Missing / Diverged / Intentionally-absent |
|
|
183
|
+
| `precedent-locator` | Finds similar past changes in git history — commits, blast radius, and follow-up fixes |
|
|
184
|
+
| `test-case-locator` | Catalogs existing manual test cases under `.rpiv/test-cases/` and reports coverage stats |
|
|
185
|
+
| `thoughts-analyzer` | Performs deep-dive analysis on a research topic in `thoughts/` |
|
|
170
186
|
| `thoughts-locator` | Discovers relevant documents in the `thoughts/` directory |
|
|
171
|
-
| `web-search-researcher` | Researches web-
|
|
187
|
+
| `web-search-researcher` | Researches modern web-only information via deep search and fetch |
|
|
172
188
|
|
|
173
189
|
## Architecture
|
|
174
190
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: general-purpose
|
|
3
3
|
description: "General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you."
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
inheritProjectContext: false
|
|
4
|
+
systemPromptMode: append
|
|
5
|
+
inheritProjectContext: true
|
|
7
6
|
inheritSkills: false
|
|
8
7
|
---
|
|
9
8
|
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ Use the current working directory as the target project by default. If the user
|
|
|
22
22
|
- This ensures you have full context before decomposing the work
|
|
23
23
|
|
|
24
24
|
2. **Pass 1 — Map the project (parallel agents):**
|
|
25
|
-
- Dispatch all agents below
|
|
25
|
+
- Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
26
26
|
|
|
27
27
|
**Agent A — Project tree mapping:**
|
|
28
28
|
- agent: `codebase-locator`
|
|
@@ -75,7 +75,7 @@ Use the current working directory as the target project by default. If the user
|
|
|
75
75
|
- Adjust the target list based on user feedback
|
|
76
76
|
|
|
77
77
|
4. **Pass 2 — Analyze each layer (parallel analyzer agents):**
|
|
78
|
-
- For each confirmed target folder, dispatch all agents below
|
|
78
|
+
- For each confirmed target folder, dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
79
79
|
|
|
80
80
|
**For each target folder, spawn TWO agents:**
|
|
81
81
|
|
|
@@ -286,7 +286,7 @@ See the following for well-formed subfolder architecture.md examples:
|
|
|
286
286
|
- Folder is a simple grouping without unique constraints
|
|
287
287
|
|
|
288
288
|
## Important notes:
|
|
289
|
-
- Parallel subagent dispatch —
|
|
289
|
+
- Parallel subagent dispatch — every `subagent(...)` call in the same assistant message (multiple tool_use blocks in one response), never one per turn. Call shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`.
|
|
290
290
|
- **File reading**: Always read mentioned files FULLY (no limit/offset) before invoking skills
|
|
291
291
|
- **Critical ordering**: Follow the numbered steps exactly
|
|
292
292
|
- ALWAYS read mentioned files first before invoking skills (step 1)
|
|
@@ -22,7 +22,7 @@ Use the current working directory as the target project by default. If the user
|
|
|
22
22
|
- This ensures you have full context before decomposing the work
|
|
23
23
|
|
|
24
24
|
2. **Pass 1 — Map the project (parallel agents):**
|
|
25
|
-
- Dispatch all agents below
|
|
25
|
+
- Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
26
26
|
|
|
27
27
|
**Agent A — Project tree mapping:**
|
|
28
28
|
- agent: `codebase-locator`
|
|
@@ -73,7 +73,7 @@ Use the current working directory as the target project by default. If the user
|
|
|
73
73
|
- Adjust the target list based on user feedback
|
|
74
74
|
|
|
75
75
|
4. **Pass 2 — Analyze each layer (parallel analyzer agents):**
|
|
76
|
-
- For each confirmed target folder, dispatch all agents below
|
|
76
|
+
- For each confirmed target folder, dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
77
77
|
|
|
78
78
|
**For each target folder, spawn TWO agents:**
|
|
79
79
|
|
|
@@ -282,7 +282,7 @@ See the following for well-formed subfolder CLAUDE.md examples:
|
|
|
282
282
|
- Folder is a simple grouping without unique constraints
|
|
283
283
|
|
|
284
284
|
## Important notes:
|
|
285
|
-
- Parallel subagent dispatch —
|
|
285
|
+
- Parallel subagent dispatch — every `subagent(...)` call in the same assistant message (multiple tool_use blocks in one response), never one per turn. Call shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`.
|
|
286
286
|
- **File reading**: Always read mentioned files FULLY (no limit/offset) before invoking skills
|
|
287
287
|
- **Critical ordering**: Follow the numbered steps exactly
|
|
288
288
|
- ALWAYS read mentioned files first before invoking skills (step 1)
|
|
@@ -69,7 +69,7 @@ Every Wave-2 agent prompt contains EXACTLY: (a) `Known Context:` followed by the
|
|
|
69
69
|
|
|
70
70
|
## Step 2: Dispatch Wave-1 — Integration + Precedents + Deps/CVE + Peer-Mirror
|
|
71
71
|
|
|
72
|
-
Dispatch ALL agents below at T=0
|
|
72
|
+
Dispatch ALL agents below at T=0 as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })` (isolated conversation per agent). Do NOT wait for integration-scanner before dispatching precedents / dependencies / CVE — they do not consume Discovery-Map output, only `ChangedFiles` and the manifest diff (both orchestrator-produced in Step 1). Wait for all to return before proceeding.
|
|
73
73
|
|
|
74
74
|
**Agent — Integration map:**
|
|
75
75
|
- agent: `integration-scanner`
|
|
@@ -152,7 +152,7 @@ Peer mirrors: [peer-mirror agent output verbatim — Missing/Diverged rows only;
|
|
|
152
152
|
|
|
153
153
|
## Step 3: Dispatch Wave-2 — Quality + Security Lenses
|
|
154
154
|
|
|
155
|
-
Dispatch Quality + Security
|
|
155
|
+
Dispatch Quality + Security as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })` (isolated conversation per agent). Each receives the `## Discovery Map` block inline as `Known Context` above its task, and a pointer to `.git/code-review-patch.diff` for the diff itself. Precedents / Dependencies / CVE are already running from Wave-1 — do NOT re-dispatch them here; the prompts below document what those Wave-1 agents received, they are not re-issued.
|
|
156
156
|
|
|
157
157
|
**Wave-2 context isolation (LOAD-BEARING — violations cause silent quality collapse)**: Each Wave-2 agent receives EXACTLY two things, nothing else: (1) the Discovery Map (digested form) and (2) the literal path string `.git/code-review-patch.diff`.
|
|
158
158
|
|
package/skills/design/SKILL.md
CHANGED
|
@@ -52,7 +52,7 @@ When this command is invoked:
|
|
|
52
52
|
|
|
53
53
|
This is NOT a discovery sweep. Focus on DEPTH (how things work, what patterns to follow) not BREADTH (where things are).
|
|
54
54
|
|
|
55
|
-
1. **Dispatch all agents below
|
|
55
|
+
1. **Dispatch all agents below as parallel `subagent` tool calls in the same assistant message** — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
56
56
|
|
|
57
57
|
- Use **codebase-pattern-finder** to find existing implementations to model after — the primary template for code shape
|
|
58
58
|
- Use **codebase-analyzer** to understand HOW integration points work in detail
|
|
@@ -387,7 +387,7 @@ The artifact was created as a skeleton in Step 6 and filled progressively in Ste
|
|
|
387
387
|
| Novel work (new library/pattern) | + web-search-researcher |
|
|
388
388
|
| During code writing (if needed) | targeted codebase-analyzer for specific files |
|
|
389
389
|
|
|
390
|
-
When agents are searching for different things, dispatch them
|
|
390
|
+
When agents are searching for different things, dispatch them as parallel `subagent(...)` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Call shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Each agent runs in isolation — provide complete context in the prompt, including specific directory paths when the feature targets a known module. Don't write detailed prompts about HOW to search — just tell it what you're looking for and where.
|
|
391
391
|
|
|
392
392
|
## Important Notes
|
|
393
393
|
|
package/skills/discover/SKILL.md
CHANGED
|
@@ -55,7 +55,7 @@ Before Step 1, create a todo list tracking every step below (Step 1 through Step
|
|
|
55
55
|
|
|
56
56
|
This plan stays internal — do NOT present it to the developer unless asked.
|
|
57
57
|
|
|
58
|
-
3. **Dispatch all discovery agents
|
|
58
|
+
3. **Dispatch all discovery agents as parallel `subagent` tool calls in the same assistant message** — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
59
59
|
|
|
60
60
|
- Use **codebase-locator** for "Where do these files/symbols live?" slices — spawn one per focused code/discovery seam. Prefer 5-9 narrow discovery agents over 2-3 broad ones when the topic spans multiple subsystems.
|
|
61
61
|
- Use **thoughts-locator** only for historical docs, decisions, plans, and prior artifacts about the topic
|
package/skills/explore/SKILL.md
CHANGED
|
@@ -322,7 +322,7 @@ Wait for ALL agents to complete before proceeding.
|
|
|
322
322
|
|
|
323
323
|
## Important Notes
|
|
324
324
|
|
|
325
|
-
- Parallel subagent dispatch —
|
|
325
|
+
- Parallel subagent dispatch — every `subagent(...)` call in the same assistant message (multiple tool_use blocks in one response), never one per turn. Call shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`.
|
|
326
326
|
- Always spawn fresh research to validate current state - never rely on old research docs as source of truth
|
|
327
327
|
- Old research documents can provide historical context but must be validated against current code
|
|
328
328
|
- Generate 2-4 named candidates in Step 2; confirm them with the developer at Step 3 before per-candidate fit dispatch
|
|
@@ -51,7 +51,7 @@ Report detected mode:
|
|
|
51
51
|
|
|
52
52
|
First, detect the project's technology stack by checking for framework indicators (see Framework Detection Reference below).
|
|
53
53
|
|
|
54
|
-
Dispatch all agents below
|
|
54
|
+
Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
55
55
|
- Use the **codebase-locator** agent to find all registered routes, navigation menus, and page entry points
|
|
56
56
|
- Use the **codebase-locator** agent to find all frontend HTTP API call sites — report each call-site `file:line` and the literal URL template string found at the call site (e.g., ``${base}/users/${id}``). Frontend-to-backend URL correlation happens orchestrator-side in Step 3's Cross-Reference synthesis (`skills/outline-test-cases/SKILL.md:71-79`) using the backend-controller findings from the next agent.
|
|
57
57
|
- Use the **codebase-locator** agent to find all backend API controllers and route handlers
|
package/skills/research/SKILL.md
CHANGED
|
@@ -47,7 +47,7 @@ You are tasked with answering structured research questions by spawning targeted
|
|
|
47
47
|
|
|
48
48
|
## Step 2: Dispatch Analysis Agents
|
|
49
49
|
|
|
50
|
-
Dispatch all agents below
|
|
50
|
+
Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
51
51
|
|
|
52
52
|
**Default agent**: `codebase-analyzer` for all codebase questions. This agent has Read, Grep, Glob, LS — it can trace code paths, find patterns, and analyze integration points.
|
|
53
53
|
|
|
@@ -45,7 +45,7 @@ Then wait for the user's input.
|
|
|
45
45
|
- Other notes
|
|
46
46
|
|
|
47
47
|
2. **Spawn focused research agents**:
|
|
48
|
-
After reading all critical handoff/plan/research documents directly, dispatch all agents below
|
|
48
|
+
After reading all critical handoff/plan/research documents directly, dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
Task 1 - Gather artifact context:
|
package/skills/revise/SKILL.md
CHANGED
|
@@ -78,7 +78,7 @@ When this command is invoked:
|
|
|
78
78
|
|
|
79
79
|
If the user's feedback requires understanding new code patterns or validating assumptions:
|
|
80
80
|
|
|
81
|
-
1. **Dispatch all agents below
|
|
81
|
+
1. **Dispatch all agents below as parallel `subagent` tool calls in the same assistant message** — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
82
82
|
**For code investigation:**
|
|
83
83
|
- Use the **codebase-locator** agent to find relevant files
|
|
84
84
|
- Use the **codebase-analyzer** agent to understand implementation details
|
|
@@ -217,7 +217,7 @@ When updating success criteria, always maintain the two-category structure:
|
|
|
217
217
|
When spawning research agents:
|
|
218
218
|
|
|
219
219
|
1. **Only spawn if truly needed** - don't research for simple changes
|
|
220
|
-
2. **Parallel dispatch** —
|
|
220
|
+
2. **Parallel dispatch** — every `subagent(...)` call in the same assistant message (multiple tool_use blocks in one response), never one per turn. Call shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`.
|
|
221
221
|
3. **Each agent should be focused** on a specific area
|
|
222
222
|
4. **Provide detailed instructions** including:
|
|
223
223
|
- Exactly what to search for
|
package/skills/validate/SKILL.md
CHANGED
|
@@ -49,7 +49,7 @@ If starting fresh or need more context:
|
|
|
49
49
|
|
|
50
50
|
3. **Spawn parallel research agents** to verify implementation:
|
|
51
51
|
|
|
52
|
-
Dispatch all agents below
|
|
52
|
+
Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
53
53
|
- **general-purpose** agent — Verify implementation details match plan specifications (analyzer role)
|
|
54
54
|
- **general-purpose** agent — Verify implementation follows established codebase patterns (pattern-finder role)
|
|
55
55
|
|
|
@@ -70,7 +70,7 @@ When no _meta.md, detect the project's technology stack before spawning agents:
|
|
|
70
70
|
|
|
71
71
|
### Step 2: Discover Feature Code (parallel agents)
|
|
72
72
|
|
|
73
|
-
Dispatch all agents below
|
|
73
|
+
Dispatch all agents below as parallel `subagent` tool calls in the same assistant message — multiple tool_use blocks in one response, not one call per turn. Each call matches this shape: `subagent({ agent: "<agent-name>", task: "<task>", context: "fresh", artifacts: false })`. Wait for all to return before proceeding.
|
|
74
74
|
|
|
75
75
|
**Agent A — Web Layer Discovery:**
|
|
76
76
|
- agent: `codebase-locator`
|