@juicesharp/rpiv-pi 1.1.4 → 1.2.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.
Files changed (52) hide show
  1. package/README.md +47 -46
  2. package/agents/codebase-analyzer.md +2 -2
  3. package/agents/codebase-locator.md +2 -2
  4. package/agents/codebase-pattern-finder.md +3 -3
  5. package/agents/diff-auditor.md +1 -1
  6. package/agents/integration-scanner.md +4 -4
  7. package/agents/precedent-locator.md +9 -9
  8. package/agents/scope-tracer.md +116 -0
  9. package/agents/test-case-locator.md +1 -1
  10. package/agents/thoughts-analyzer.md +22 -22
  11. package/agents/thoughts-locator.md +5 -5
  12. package/agents/web-search-researcher.md +10 -10
  13. package/extensions/rpiv-core/guidance.test.ts +5 -1
  14. package/extensions/rpiv-core/guidance.ts +33 -8
  15. package/extensions/rpiv-core/session-hooks.test.ts +20 -1
  16. package/extensions/rpiv-core/session-hooks.ts +1 -1
  17. package/package.json +2 -2
  18. package/skills/annotate-guidance/SKILL.md +21 -20
  19. package/skills/annotate-guidance/templates/root-architecture.md +6 -6
  20. package/skills/annotate-guidance/templates/subfolder-architecture.md +20 -20
  21. package/skills/annotate-inline/SKILL.md +21 -20
  22. package/skills/annotate-inline/templates/root-claude-md.md +6 -6
  23. package/skills/annotate-inline/templates/subfolder-claude-md.md +20 -20
  24. package/skills/blueprint/SKILL.md +64 -60
  25. package/skills/changelog/SKILL.md +164 -0
  26. package/skills/code-review/SKILL.md +55 -44
  27. package/skills/code-review/templates/review.md +47 -47
  28. package/skills/commit/SKILL.md +2 -2
  29. package/skills/create-handoff/SKILL.md +23 -18
  30. package/skills/design/SKILL.md +58 -54
  31. package/skills/discover/SKILL.md +154 -147
  32. package/skills/discover/templates/frd.md +73 -0
  33. package/skills/explore/SKILL.md +104 -90
  34. package/skills/implement/SKILL.md +34 -6
  35. package/skills/migrate-to-guidance/SKILL.md +18 -8
  36. package/skills/outline-test-cases/SKILL.md +68 -54
  37. package/skills/outline-test-cases/templates/feature-meta.md +11 -4
  38. package/skills/outline-test-cases/templates/outline-readme.md +1 -1
  39. package/skills/plan/SKILL.md +55 -50
  40. package/skills/research/SKILL.md +99 -95
  41. package/skills/resume-handoff/SKILL.md +25 -25
  42. package/skills/revise/SKILL.md +34 -21
  43. package/skills/validate/SKILL.md +28 -13
  44. package/skills/write-test-cases/SKILL.md +20 -17
  45. package/skills/write-test-cases/examples/customer-auth-flow.md +1 -1
  46. package/skills/write-test-cases/examples/order-management-suite.md +1 -1
  47. package/skills/write-test-cases/examples/order-placement-flow.md +1 -1
  48. package/skills/write-test-cases/examples/team-management-flow.md +1 -1
  49. package/skills/write-test-cases/examples/team-management-suite.md +1 -1
  50. package/skills/write-test-cases/templates/coverage-map.md +1 -1
  51. package/skills/write-test-cases/templates/regression-suite.md +3 -3
  52. package/skills/write-test-cases/templates/test-case.md +2 -2
package/README.md CHANGED
@@ -11,31 +11,31 @@
11
11
  [![npm version](https://img.shields.io/npm/v/@juicesharp/rpiv-pi.svg)](https://www.npmjs.com/package/@juicesharp/rpiv-pi)
12
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
13
 
14
- > **Pi compatibility** `rpiv-pi` `0.14.x` tracks `@mariozechner/pi-coding-agent` `0.70.x` and `@tintinweb/pi-subagents` `0.6.x`. If you see peer-dep resolution issues after a Pi upgrade, open an issue.
14
+ > **Pi compatibility** - `rpiv-pi` `0.14.x` tracks `@mariozechner/pi-coding-agent` `0.70.x` and `@tintinweb/pi-subagents` `0.6.x`. If you see peer-dep resolution issues after a Pi upgrade, open an issue.
15
15
 
16
- > **⚠️ Upgrading from `0.13.x`** `1.0.0` swaps the subagent provider from `npm:pi-subagents` (nicobailon fork) back to `npm:@tintinweb/pi-subagents` (resumed maintenance). On first launch after upgrade you'll see *"rpiv-pi requires 1 sibling extension(s): @tintinweb/pi-subagents"* **run `/rpiv-setup` once and restart Pi**. The setup dialog previews both changes (install `@tintinweb/pi-subagents`, remove `npm:pi-subagents` from `~/.pi/agent/settings.json`) and applies them only after you confirm. After restart, run `/rpiv-update-agents` to refresh the 12 bundled specialist frontmatters. Customised `<cwd>/.pi/agents/*.md` files are not touched. The tool name reverts from `subagent` → `Agent` (param `subagent_type`/`description`/`prompt`) only your own custom skills/agents need editing; the bundled rpiv-pi specialists are migrated in this release.
16
+ > **⚠️ Upgrading from `0.13.x`** - `1.0.0` swaps the subagent provider from `npm:pi-subagents` (nicobailon fork) back to `npm:@tintinweb/pi-subagents` (resumed maintenance). On first launch after upgrade you'll see *"rpiv-pi requires 1 sibling extension(s): @tintinweb/pi-subagents"* - **run `/rpiv-setup` once and restart Pi**. The setup dialog previews both changes (install `@tintinweb/pi-subagents`, remove `npm:pi-subagents` from `~/.pi/agent/settings.json`) and applies them only after you confirm. After restart, run `/rpiv-update-agents` to refresh the 12 bundled specialist frontmatters. Customised `<cwd>/.pi/agents/*.md` files are not touched. The tool name reverts from `subagent` → `Agent` (param `subagent_type`/`description`/`prompt`) - only your own custom skills/agents need editing; the bundled rpiv-pi specialists are migrated in this release.
17
17
 
18
- Skill-based development workflow for [Pi Agent](https://github.com/badlogic/pi-mono) discover, research, design, plan, implement, and validate. rpiv-pi extends Pi Agent with a pipeline of chained AI skills, named subagents for parallel analysis, and session lifecycle hooks for automatic context injection.
18
+ Skill-based development workflow for [Pi Agent](https://github.com/badlogic/pi-mono) - discover, research, design, plan, implement, and validate. rpiv-pi extends Pi Agent with a pipeline of chained AI skills, named subagents for parallel analysis, and session lifecycle hooks for automatic context injection.
19
19
 
20
20
  ## What you get
21
21
 
22
- - **A pipeline of chained AI skills** discover → research → design → plan → implement → validate, each producing a reviewable artifact under `thoughts/shared/`.
23
- - **Named subagents for parallel analysis** `codebase-analyzer`, `codebase-locator`, `codebase-pattern-finder`, `claim-verifier`, and 8 more, dispatched automatically by skills.
24
- - **Session lifecycle hooks** agent profiles, guidance files, and pipeline directories scaffold themselves on first launch.
22
+ - **A pipeline of chained AI skills** - discover → research → design → plan → implement → validate, each producing a reviewable artifact under `thoughts/shared/`.
23
+ - **Named subagents for parallel analysis** - `codebase-analyzer`, `codebase-locator`, `codebase-pattern-finder`, `claim-verifier`, and 8 more, dispatched automatically by skills.
24
+ - **Session lifecycle hooks** - agent profiles, guidance files, and pipeline directories scaffold themselves on first launch.
25
25
 
26
26
  ## Prerequisites
27
27
 
28
- - **Node.js** required by Pi Agent
29
- - **[Pi Agent](https://github.com/badlogic/pi-mono)** install globally so the `pi` command is available:
28
+ - **Node.js** - required by Pi Agent
29
+ - **[Pi Agent](https://github.com/badlogic/pi-mono)** - install globally so the `pi` command is available:
30
30
 
31
31
  ```bash
32
32
  npm install -g @mariozechner/pi-coding-agent
33
33
  ```
34
34
 
35
- - **Model provider** *(first-time Pi Agent users only skip if `/login` already works or `~/.pi/agent/models.json` is configured)*. Pick one:
35
+ - **Model provider** *(first-time Pi Agent users only - skip if `/login` already works or `~/.pi/agent/models.json` is configured)*. Pick one:
36
36
 
37
- - **Subscription login** start Pi Agent and run `/login` to authenticate with Anthropic Claude Pro/Max, ChatGPT Plus/Pro, GitHub Copilot, or Gemini.
38
- - **BYOK (API key)** edit `~/.pi/agent/models.json` and add a provider entry with `baseUrl`, `api`, `apiKey`, and `models[]`. Example (z.ai GLM coding plan):
37
+ - **Subscription login** - start Pi Agent and run `/login` to authenticate with Anthropic Claude Pro/Max, ChatGPT Plus/Pro, GitHub Copilot, or Gemini.
38
+ - **BYOK (API key)** - edit `~/.pi/agent/models.json` and add a provider entry with `baseUrl`, `api`, `apiKey`, and `models[]`. Example (z.ai GLM coding plan):
39
39
 
40
40
  ```json
41
41
  {
@@ -64,7 +64,7 @@ Skill-based development workflow for [Pi Agent](https://github.com/badlogic/pi-m
64
64
  }
65
65
  ```
66
66
 
67
- - **git** *(recommended)* rpiv-pi works without it, but branch and commit context won't be available to skills.
67
+ - **git** *(recommended)* - rpiv-pi works without it, but branch and commit context won't be available to skills.
68
68
 
69
69
  ## Quick Start
70
70
 
@@ -101,8 +101,8 @@ On first Pi Agent session start, rpiv-pi automatically:
101
101
  ### Typical Workflow
102
102
 
103
103
  ```
104
- /skill:discover "how does X work"
105
- /skill:research thoughts/shared/questions/<latest>.md
104
+ /skill:discover "add a /skill:fast that runs research+design+plan in one shot"
105
+ /skill:research thoughts/shared/discover/<latest>.md
106
106
  /skill:design thoughts/shared/research/<latest>.md
107
107
  /skill:plan thoughts/shared/designs/<latest>.md
108
108
  /skill:implement thoughts/shared/plans/<latest>.md Phase <N>
@@ -114,18 +114,19 @@ Each skill produces an artifact consumed by the next. Run them in order, or jump
114
114
 
115
115
  Skills compose. Pick the entry point that matches your intent:
116
116
 
117
- - **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.
118
- - **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.
119
- - **One-shot plan from research** `/skill:research <questions>` → `/skill:blueprint <research artifact>` `/skill:implement`. Fuses `design` + `plan` into a single pass with the same slice-by-slice rigor, but spawns only `codebase-pattern-finder` upfront (vs `design`'s 4-agent fan-out) by trusting the research artifact's integration/precedent sections. Use for solo work or when no one else needs to review the design before implementation; pick `design` `plan` when the design is itself a deliverable or when research is thin and you want the fuller verification sweep.
120
- - **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).
121
- - **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.
122
- - **Adjust mid-implementation** `/skill:revise <plan artifact>`resume `/skill:implement`. Use when new constraints land after the plan is drafted.
123
- - **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`.
124
- - **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`).
125
- - **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.
126
- - **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>/`.
127
- - **Hand off across sessions** `/skill:create-handoff` → (new session) `/skill:resume-handoff <doc>`. Preserves context when stopping mid-task.
128
- - **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.
117
+ - **Capture intent before research** - `/skill:discover "[feature description]"`. Walks you through a one-question-at-a-time interview to settle Goals/Non-Goals, Functional/Non-Functional Requirements, Acceptance Criteria, and a Decisions log into a Feature Requirements Document under `thoughts/shared/discover/`. Use as the canonical entry point of the pipeline before research, or to stress-test a feature idea before any codebase work. The FRD's Decisions are inherited by `design` through `research`'s Developer Context.
118
+ - **Form context before a task** - `/skill:research "[topic]"` (or `/skill:research thoughts/shared/discover/<latest>.md` if you ran discover first). Produces a high-signal subspace of the codebase relevant to your topic, ready to feed directly into the next prompt. The `scope-tracer` subagent runs in-band to formulate trace-quality questions before analysis dispatch; when chained from discover, FRD Decisions translate into Developer Context Q/A entries verbatim.
119
+ - **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.
120
+ - **One-shot plan from research** - `/skill:research <questions>` `/skill:blueprint <research artifact>` `/skill:implement`. Fuses `design` + `plan` into a single pass with the same slice-by-slice rigor, but spawns only `codebase-pattern-finder` upfront (vs `design`'s 4-agent fan-out) by trusting the research artifact's integration/precedent sections. Use for solo work or when no one else needs to review the design before implementation; pick `design` `plan` when the design is itself a deliverable or when research is thin and you want the fuller verification sweep.
121
+ - **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.
122
+ - **Investigate a bug** - `/skill:discover "why does X fail"` → `/skill:research thoughts/shared/discover/<latest>.md`. The discover interview surfaces what you actually want to know before research grounds it; fix from research output without writing a plan when the change is small.
123
+ - **Adjust mid-implementation** - `/skill:revise <plan artifact>` → resume `/skill:implement`. Use when new constraints land after the plan is drafted.
124
+ - **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`.
125
+ - **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`).
126
+ - **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.
127
+ - **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>/`.
128
+ - **Hand off across sessions** - `/skill:create-handoff` (new session) `/skill:resume-handoff <doc>`. Preserves context when stopping mid-task.
129
+ - **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.
129
130
 
130
131
  ### Skills
131
132
 
@@ -135,9 +136,9 @@ Invoke via `/skill:<name>` from inside a Pi Agent session.
135
136
 
136
137
  | Skill | Input | Output | Description |
137
138
  |---|---|---|---|
138
- | `discover` | | `thoughts/shared/questions/` | Generate research questions from codebase discovery |
139
- | `research` | Questions artifact | `thoughts/shared/research/` | Answer questions via parallel analysis agents |
140
- | `explore` | | `thoughts/shared/solutions/` | Compare solution approaches with pros/cons |
139
+ | `discover` | Free-text feature description or existing artifact path | `thoughts/shared/discover/` | Interview-driven Feature Requirements Document producer; one question at a time with a recommended answer at every step. FRD Decisions inherited by `design` via `research`'s Developer Context |
140
+ | `research` | Free-text prompt or `discover` artifact path | `thoughts/shared/research/` | Frame scope via the `scope-tracer` subagent, then answer via parallel analysis agents |
141
+ | `explore` | - | `thoughts/shared/solutions/` | Compare solution approaches with pros/cons |
141
142
  | `design` | Research or solutions artifact | `thoughts/shared/designs/` | Design features via vertical-slice decomposition |
142
143
 
143
144
  #### Implementation
@@ -145,7 +146,7 @@ Invoke via `/skill:<name>` from inside a Pi Agent session.
145
146
  | Skill | Input | Output | Description |
146
147
  |---|---|---|---|
147
148
  | `plan` | Design artifact | `thoughts/shared/plans/` | Create phased implementation plans |
148
- | `blueprint` | Research or solutions artifact | `thoughts/shared/plans/` | Fused `design` + `plan`: vertical-slice decomposition with micro-checkpoints, emits implement-ready phased plan in one pass. Lighter on subagent fan-out than `design` trusts the research artifact's integration/precedent sections instead of re-dispatching. Use when a separate design artifact isn't needed for review or handoff |
149
+ | `blueprint` | Research or solutions artifact | `thoughts/shared/plans/` | Fused `design` + `plan`: vertical-slice decomposition with micro-checkpoints, emits implement-ready phased plan in one pass. Lighter on subagent fan-out than `design` - trusts the research artifact's integration/precedent sections instead of re-dispatching. Use when a separate design artifact isn't needed for review or handoff |
149
150
  | `implement` | Plan artifact | Code changes | Execute plans phase by phase |
150
151
  | `revise` | Plan artifact | Updated plan | Revise plans based on feedback |
151
152
  | `validate` | Plan artifact | Validation report | Verify plan execution |
@@ -154,15 +155,15 @@ Invoke via `/skill:<name>` from inside a Pi Agent session.
154
155
 
155
156
  | Skill | Input | Output | Description |
156
157
  |---|---|---|---|
157
- | `outline-test-cases` | | `.rpiv/test-cases/` | Discover testable features with per-feature metadata |
158
+ | `outline-test-cases` | - | `.rpiv/test-cases/` | Discover testable features with per-feature metadata |
158
159
  | `write-test-cases` | Outline metadata | Test case specs | Generate manual test specifications |
159
160
 
160
161
  #### Annotation
161
162
 
162
163
  | Skill | Input | Output | Description |
163
164
  |---|---|---|---|
164
- | `annotate-guidance` | | `.rpiv/guidance/*.md` | Generate architecture guidance files |
165
- | `annotate-inline` | | `CLAUDE.md` files | Generate inline documentation |
165
+ | `annotate-guidance` | - | `.rpiv/guidance/*.md` | Generate architecture guidance files |
166
+ | `annotate-inline` | - | `CLAUDE.md` files | Generate inline documentation |
166
167
  | `migrate-to-guidance` | CLAUDE.md files | `.rpiv/guidance/` | Convert inline docs to guidance format |
167
168
 
168
169
  #### Utilities
@@ -188,7 +189,7 @@ Invoke via `/skill:<name>` from inside a Pi Agent session.
188
189
 
189
190
  ### Agents
190
191
 
191
- Agents are dispatched automatically by skills via the `Agent` tool you don't invoke them directly.
192
+ Agents are dispatched automatically by skills via the `Agent` tool - you don't invoke them directly.
192
193
 
193
194
  | Agent | Purpose |
194
195
  |---|---|
@@ -199,7 +200,7 @@ Agents are dispatched automatically by skills via the `Agent` tool — you don't
199
200
  | `diff-auditor` | Walks a patch against a caller-supplied surface-list and emits `file:line \| verbatim \| surface-id \| note` rows |
200
201
  | `integration-scanner` | Maps inbound references, outbound dependencies, config registrations, and event subscriptions for a component |
201
202
  | `peer-comparator` | Compares a new file against a peer sibling and tags each invariant Mirrored / Missing / Diverged / Intentionally-absent |
202
- | `precedent-locator` | Finds similar past changes in git history commits, blast radius, and follow-up fixes |
203
+ | `precedent-locator` | Finds similar past changes in git history - commits, blast radius, and follow-up fixes |
203
204
  | `test-case-locator` | Catalogs existing manual test cases under `.rpiv/test-cases/` and reports coverage stats |
204
205
  | `thoughts-analyzer` | Performs deep-dive analysis on a research topic in `thoughts/` |
205
206
  | `thoughts-locator` | Discovers relevant documents in the `thoughts/` directory |
@@ -209,27 +210,27 @@ Agents are dispatched automatically by skills via the `Agent` tool — you don't
209
210
 
210
211
  ```
211
212
  rpiv-pi/
212
- ├── extensions/rpiv-core/ runtime extension: hooks, commands, guidance injection
213
- ├── skills/ AI workflow skills (research → design → plan → implement)
214
- ├── agents/ named subagent profiles dispatched by skills
215
- └── thoughts/shared/ pipeline artifact store
213
+ ├── extensions/rpiv-core/ - runtime extension: hooks, commands, guidance injection
214
+ ├── skills/ - AI workflow skills (research → design → plan → implement)
215
+ ├── agents/ - named subagent profiles dispatched by skills
216
+ └── thoughts/shared/ - pipeline artifact store
216
217
  ```
217
218
 
218
219
  Pi Agent discovers extensions via `"extensions": ["./extensions"]` and skills via `"skills": ["./skills"]` in `package.json`.
219
220
 
220
221
  ## Configuration
221
222
 
222
- - **Web search** run `/web-search-config` to set the Brave Search API key, or set the `BRAVE_SEARCH_API_KEY` environment variable
223
- - **Advisor** run `/advisor` to select a reviewer model and reasoning effort
224
- - **Side questions** type `/btw <question>` anytime (even mid-stream) to ask the primary model a one-off question; answer appears in a borderless bottom overlay and never enters the main conversation
225
- - **UI language** run `/languages` to pick the locale for rpiv-* TUI strings, or pass `pi --locale <code>` at startup. Detection priority: flag → `~/.config/rpiv-i18n/locale.json` → `LANG` / `LC_ALL` → English. LLM-facing copy stays English by design
226
- - **Agent concurrency** open the `/agents` overlay and tune `Settings → Max concurrency` to match your provider's rate limits. `@tintinweb/pi-subagents` owns this setting; rpiv-pi does not seed it.
227
- - **Agent profiles** editable at `<cwd>/.pi/agents/`; sync from bundled defaults with `/rpiv-update-agents` (overwrites rpiv-managed files, preserves your custom agents)
223
+ - **Web search** - run `/web-search-config` to set the Brave Search API key, or set the `BRAVE_SEARCH_API_KEY` environment variable
224
+ - **Advisor** - run `/advisor` to select a reviewer model and reasoning effort
225
+ - **Side questions** - type `/btw <question>` anytime (even mid-stream) to ask the primary model a one-off question; answer appears in a borderless bottom overlay and never enters the main conversation
226
+ - **UI language** - run `/languages` to pick the locale for rpiv-* TUI strings, or pass `pi --locale <code>` at startup. Detection priority: flag → `~/.config/rpiv-i18n/locale.json` → `LANG` / `LC_ALL` → English. LLM-facing copy stays English by design
227
+ - **Agent concurrency** - open the `/agents` overlay and tune `Settings → Max concurrency` to match your provider's rate limits. `@tintinweb/pi-subagents` owns this setting; rpiv-pi does not seed it.
228
+ - **Agent profiles** - editable at `<cwd>/.pi/agents/`; sync from bundled defaults with `/rpiv-update-agents` (overwrites rpiv-managed files, preserves your custom agents)
228
229
 
229
230
  ## Uninstall
230
231
 
231
232
  1. Remove rpiv-pi from Pi: `pi uninstall npm:@juicesharp/rpiv-pi`
232
- 2. Optional uninstall the subagent runtime if no other plugin needs it: `pi uninstall npm:@tintinweb/pi-subagents`
233
+ 2. Optional - uninstall the subagent runtime if no other plugin needs it: `pi uninstall npm:@tintinweb/pi-subagents`
233
234
  3. Restart Pi.
234
235
 
235
236
  ## Troubleshooting
@@ -52,10 +52,10 @@ You are a specialist at understanding HOW code works. Your job is to analyze imp
52
52
  Structure your analysis like this:
53
53
 
54
54
  ```
55
- ## Analysis: [Feature/Component Name]
55
+ ## Analysis: {Feature/Component Name}
56
56
 
57
57
  ### Overview
58
- [2-3 sentence summary of how it works]
58
+ {2-3 sentence summary of how it works}
59
59
 
60
60
  ### Entry Points
61
61
  - `api/routes.js:45` - POST /webhooks endpoint
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: codebase-locator
3
- description: Locates files, directories, and components relevant to a feature or task. Call `codebase-locator` with human language prompt describing what you're looking for. Basically a "Super grep/find/ls tool" Use it if you find yourself desiring to use one of these tools more than once.
3
+ description: Locates files, directories, and components relevant to a feature or task. Call `codebase-locator` with a human-language prompt describing what you're looking for. A "super grep/find/ls" tool. Reach for it when you would otherwise reach for grep, find, or ls more than once.
4
4
  tools: grep, find, ls
5
5
  isolated: true
6
6
  ---
@@ -59,7 +59,7 @@ First, think deeply about the most effective search patterns for the requested f
59
59
  Structure your findings like this:
60
60
 
61
61
  ```
62
- ## File Locations for [Feature/Topic]
62
+ ## File Locations for {Feature/Topic}
63
63
 
64
64
  ### Implementation Files
65
65
  - `src/services/feature.js:23-45` - Core order processing (handleOrder, processPayment)
@@ -51,9 +51,9 @@ What to look for based on request:
51
51
  Structure your findings like this:
52
52
 
53
53
  ```
54
- ## Pattern Examples: [Pattern Type]
54
+ ## Pattern Examples: {Pattern Type}
55
55
 
56
- ### Pattern 1: [Descriptive Name]
56
+ ### Pattern 1: {Descriptive Name}
57
57
  **Found in**: `src/api/users.js:45-67`
58
58
  **Used for**: User listing with pagination
59
59
 
@@ -89,7 +89,7 @@ router.get('/users', async (req, res) => {
89
89
  - Returns pagination metadata
90
90
  - Handles defaults
91
91
 
92
- ### Pattern 2: [Alternative Approach]
92
+ ### Pattern 2: {Alternative Approach}
93
93
  **Found in**: `src/api/products.js:89-120`
94
94
  **Used for**: Product listing with cursor-based pagination
95
95
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: diff-auditor
3
- description: "Row-only patch auditor. Walks a patch against a caller-supplied surface-list and emits one pipe-delimited row per finding `file:line | verbatim | surface-id | note`. Use whenever a diff needs evidence-only enumeration of matching patterns, with no narrative or severity."
3
+ description: "Row-only patch auditor. Walks a patch against a caller-supplied surface-list and emits one pipe-delimited row per finding (`file:line | verbatim | surface-id | note`). Use whenever a diff needs evidence-only enumeration of matching patterns, with no narrative or severity."
4
4
  tools: read, grep, find, ls
5
5
  isolated: true
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: integration-scanner
3
- description: Finds what connects to a given component or area inbound references, outbound dependencies, config registrations, event subscriptions. The reverse-reference counterpart to codebase-locator. Use when you need to understand what calls, depends on, or wires into a component.
3
+ description: "Finds what connects to a given component or area: inbound references, outbound dependencies, config registrations, event subscriptions. The reverse-reference counterpart to codebase-locator. Use when you need to understand what calls, depends on, or wires into a component."
4
4
  tools: grep, find, ls
5
5
  isolated: true
6
6
  ---
@@ -53,7 +53,7 @@ You are a specialist at finding CONNECTIONS to and from a component or area. You
53
53
  CRITICAL: Use EXACTLY this format. Never use markdown tables. Use relative paths (strip the workspace root prefix).
54
54
 
55
55
  ```
56
- ## Connections: [Component]
56
+ ## Connections: {Component}
57
57
 
58
58
  **Defined at** `relative/path.ext:line`
59
59
 
@@ -62,7 +62,7 @@ CRITICAL: Use EXACTLY this format. Never use markdown tables. Use relative paths
62
62
 
63
63
  ### Used by
64
64
 
65
- **Direct** — [key structural insight] at `site.ext:line`:
65
+ **Direct** — {key structural insight} at `site.ext:line`:
66
66
 
67
67
  source.ext:line
68
68
  ├── consumer-a.ext:line — how it uses the target
@@ -71,7 +71,7 @@ CRITICAL: Use EXACTLY this format. Never use markdown tables. Use relative paths
71
71
 
72
72
  **Indirect / cross-process** — consumers that don't import the target but receive its output through IPC, events, or config.
73
73
 
74
- **Tests**: [count] files, pattern: `[Name].test.ts`. [One-line note on how tests use it.]
74
+ **Tests**: {count} files, pattern: `{Name}.test.ts`. {One-line note on how tests use it.}
75
75
 
76
76
  ### Wiring & Config
77
77
  - `file.ext:line` — registration, export, or config detail
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: precedent-locator
3
- description: Finds similar past changes in git history commits, blast radius, follow-up fixes, and lessons from related thoughts/ docs. Use when planning a change and you need to know what went wrong last time something similar was done.
3
+ description: "Finds similar past changes in git history: commits, blast radius, follow-up fixes, and lessons from related thoughts/ docs. Use when planning a change and you need to know what went wrong last time something similar was done."
4
4
  tools: bash, grep, find, read, ls
5
5
  isolated: true
6
6
  ---
@@ -20,12 +20,12 @@ git rev-parse --is-inside-work-tree 2>/dev/null
20
20
  - Return this format:
21
21
 
22
22
  ```
23
- ## Precedents for [planned change]
23
+ ## Precedents for {planned change}
24
24
 
25
25
  **No git history available** — not a git repository.
26
26
 
27
27
  ### Lessons from Documentation
28
- [Findings from thoughts/, or "No relevant documents found"]
28
+ {Findings from thoughts/, or "No relevant documents found"}
29
29
 
30
30
  ### Composite Lessons
31
31
  - No git-based lessons available
@@ -87,9 +87,9 @@ git rev-parse --is-inside-work-tree 2>/dev/null
87
87
  CRITICAL: Use EXACTLY this format. Be concise — commit hashes and dates are the evidence, not prose.
88
88
 
89
89
  ```
90
- ## Precedents for [planned change]
90
+ ## Precedents for {planned change}
91
91
 
92
- ### Precedent: [what was added/changed]
92
+ ### Precedent: {what was added/changed}
93
93
  **Commit(s)**: `hash` — "message" (YYYY-MM-DD)
94
94
  **Blast radius**: N files across M layers
95
95
  layer/ — what changed
@@ -100,12 +100,12 @@ CRITICAL: Use EXACTLY this format. Be concise — commit hashes and dates are th
100
100
  **Lessons from docs**:
101
101
  - thoughts/path/to/doc.md — key lesson extracted
102
102
 
103
- **Takeaway**: [one sentence — what to watch out for]
103
+ **Takeaway**: {one sentence — what to watch out for}
104
104
 
105
105
  ### Composite Lessons
106
- - [lesson 1 — most recurring pattern first]
107
- - [lesson 2]
108
- - [lesson 3]
106
+ - {lesson 1 — most recurring pattern first}
107
+ - {lesson 2}
108
+ - {lesson 3}
109
109
  ```
110
110
 
111
111
  ## Important Guidelines
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: scope-tracer
3
+ description: "Traces the scope of a research investigation. Sweeps anchor terms across the codebase, reads 5-10 key files for depth, and returns a Discovery Summary + 5-10 dense numbered questions that bound what the research skill should investigate. Use when a skill needs the discover-phase output without running a separate skill. Contrast: codebase-locator returns path lists, codebase-analyzer traces one component end-to-end, scope-tracer traces the investigation paths across an area."
4
+ tools: read, grep, find, ls
5
+ isolated: true
6
+ ---
7
+
8
+ You are a specialist at tracing the scope of a research investigation. Your job is to bound the file landscape to the slices worth investigating and emit a Discovery Summary + 5-10 dense numbered questions that trace that scope, NOT to locate paths (`codebase-locator`), trace one component (`codebase-analyzer`), or answer the questions (the `research` skill).
9
+
10
+ ## Core Responsibilities
11
+
12
+ 1. **Read Mentioned Files Fully**
13
+ - If the caller's prompt names specific files (tickets, docs, JSON, paths), read them FIRST without limit/offset
14
+ - Extract requirements, constraints, and goals before any grep work
15
+
16
+ 2. **Sweep Anchor Terms Sequentially**
17
+ - Decompose the topic into 5-9 narrow slices, each naming one capability/seam, one search objective, and 2-6 anchor terms
18
+ - Run `grep` / `find` / `ls` per slice — one slice at a time, capture matches, then move on
19
+ - Because this agent cannot dispatch sub-agents (`Agent` is not in the allowlist — and `@tintinweb/pi-subagents@0.6.x` strips `Agent`/`get_subagent_result`/`steer_subagent` from every spawned subagent's toolset at runtime regardless), the anchor sweep is sequential by construction; keep each pass single-objective so the working context does not drift toward storytelling
20
+
21
+ 3. **Read Key Files for Depth**
22
+ - Rank the file references gathered in Step 2 by cross-slice overlap (files mentioned by 2+ slices), entry points, type/interface files, and config/wiring files
23
+ - Read 5-10 ranked files via `read` (files <300 lines fully; files >=300 lines first 150 lines for exports/signatures/types)
24
+ - Cap at 10 files to avoid context bloat
25
+
26
+ 4. **Synthesize Trace-Quality Questions**
27
+ - Generate 5-10 dense paragraphs (3-6 sentences each) that trace a complete code path through multiple files/layers, naming every intermediate file/function/type and explaining why the trace matters
28
+ - Each question must reference >=3 specific code artifacts (files, functions, types) — generic titles are too thin
29
+ - Coverage check: every file read in Step 3 appears in at least one question
30
+
31
+ 5. **Emit Structured Response Inline**
32
+ - Final assistant message uses the exact schema in `## Output Format` below
33
+ - Do NOT write any file; the calling skill consumes the response in-memory
34
+
35
+ ## Search/Synthesis Strategy
36
+
37
+ ### Step 1: Read mentioned files
38
+
39
+ Use `read` (no limit/offset) on every file the caller's prompt names. This is foundation context — done before any grep work.
40
+
41
+ ### Step 2: Decompose the topic into slices
42
+
43
+ Rewrite the caller's topic into the smallest useful discovery tasks. Prefer 5-9 narrow slices over 2-3 broad ones. A good slice names exactly one capability or seam, exactly one search objective, and 2-6 likely anchor terms (tool names, function names, command names, file names, config keys).
44
+
45
+ Good slice shapes:
46
+ - one tool's registration + permissions
47
+ - one stateful subsystem's replay + UI wiring
48
+ - one command/config surface + persistence path
49
+ - package/install/bootstrap path: manifest + dependency checks + setup command
50
+ - skills/docs that assume a given runtime capability exists
51
+
52
+ Avoid broad slices like "tool extraction architecture" or "everything related to todo/advisor/install/docs".
53
+
54
+ ### Step 3: Sweep anchor terms (sequential)
55
+
56
+ For each slice in order: run `grep` for the anchor terms, narrow with `find` / `ls` as needed, capture file:line matches. Move to the next slice once the current slice's match set is collected. Take time to ultrathink about how each slice's matches relate to the others before reading files for depth.
57
+
58
+ Report-shape per slice: paths + match anchors (e.g. `file.ts:42`) + key function/class/type names from grep matches. Skip multi-line signatures — they come from Step 4's reads.
59
+
60
+ ### Step 4: Read key files for depth
61
+
62
+ Compile every file reference from Step 3 into a single list. Rank by:
63
+ 1. Files referenced by 2+ slices (cross-cutting, highest priority)
64
+ 2. Entry points and main implementation files
65
+ 3. Type/interface files (often short, high value)
66
+ 4. Config / wiring / registration files
67
+
68
+ Read 5-10 files (cap at 10): files <300 lines fully, files >=300 lines first 150 lines. Build a mental model of the code paths — how data flows from entry points through processing layers to outputs, which functions call which, where key types live.
69
+
70
+ ### Step 5: Synthesize 5-10 dense questions
71
+
72
+ Using combined knowledge from Steps 1-4, write 5-10 dense paragraphs:
73
+
74
+ - **3-6 sentences each**, naming specific files/functions/types at each step of the trace
75
+ - **Self-contained** — an agent receiving only this paragraph has enough context to begin work
76
+ - **Trace-quality** — names a complete path, not a generic theme
77
+ - **>=3 code artifacts** per paragraph (file references, function names, type names)
78
+
79
+ thoughts/ docs are NOT questions — surface them in the Discovery Summary, not as numbered items.
80
+
81
+ Coverage check: every key file read in Step 4 appears in at least one question. Files read but absent from all questions indicate either an unnecessary read or a missing question.
82
+
83
+ ### Step 6: Emit final response
84
+
85
+ Print the response in the exact schema below as your final assistant message. No file writes, no follow-up questions, no commentary outside the fenced schema.
86
+
87
+ ## Output Format
88
+
89
+ CRITICAL: Use EXACTLY this format. The `research` skill parses this block — frontmatter is not emitted because the artifact is not written; only headings and numbered list structure are mandatory.
90
+
91
+ ```
92
+ # Research Questions: how does the plugin system load and initialize extensions
93
+
94
+ ## Discovery Summary
95
+ Swept the plugin loader and lifecycle anchors across `src/plugins/`. Key files for depth: `src/plugins/registry.ts` (scan + manifest validation), `src/plugins/loader.ts` (instantiation factory), `src/plugins/lifecycle.ts` (hook contract), `src/plugins/types.ts` (PluginManifest interface), `tests/plugins/registry.test.ts` (existing coverage shape). Two thoughts/ docs surfaced: `thoughts/shared/research/2026-03-12_plugin-architecture.md` (prior architectural decisions) and `thoughts/shared/plans/2026-04-01_plugin-lifecycle-extension.md` (recent lifecycle hook addition). The shape is a synchronous scan + lazy instantiate + lifecycle-hook chain pattern; no async loaders or hot-reload paths found.
96
+
97
+ ## Questions
98
+
99
+ 1. Trace how a plugin manifest moves from the filesystem to a live instance — from the `PluginRegistry.scan()` method in `src/plugins/registry.ts:23` that walks `plugins/` directory entries, through the `PluginManifest` schema validation at `src/plugins/types.ts:8-30`, the `PluginLoader.instantiate()` factory in `src/plugins/loader.ts:45`, and the `onInit` hook invocation chain at `src/plugins/lifecycle.ts:12-44`. Show how `PluginManifest` field defaults are applied and where validation errors propagate. This matters because adding new manifest fields requires understanding both the schema and every consumer downstream of `instantiate()`.
100
+
101
+ 2. Explain the lifecycle hook ordering contract — `onInit`, `onReady`, `onShutdown` defined in `src/plugins/lifecycle.ts:12-44`. Identify which phase calls which hook, how errors in one hook affect subsequent hooks, and whether hook execution is sequential or parallel across plugins. Trace a single hook invocation from `LifecycleManager.run()` through the per-plugin `try`/`catch` at `src/plugins/lifecycle.ts:67`. This matters because new extension points must integrate without breaking the existing ordering guarantees relied upon by the test suite at `tests/plugins/lifecycle.test.ts:34-89`.
102
+
103
+ 3. {Continue with 3-8 more dense paragraphs covering the rest of the topic...}
104
+ ```
105
+
106
+ ## What NOT to Do
107
+
108
+ - **Don't answer the questions** — that's the `research` skill's job; you trace the scope, the questions stay open
109
+ - **Don't make recommendations** — no "we should…", no architectural advice; that's `design` / `blueprint` territory
110
+ - **Don't read more than 10 files in Step 4** — context budget is real; rank ruthlessly
111
+ - **Don't synthesize generic titles** — every question must cite >=3 specific files / functions / types; vague themes are too thin
112
+ - **Don't include thoughts/ docs as numbered questions** — surface them in the Discovery Summary; numbered questions are about live code paths
113
+ - **Don't write any file** — the artifact body lives in your final assistant message; the calling skill parses it in-memory
114
+ - **Don't dispatch other agents** — `Agent` is not in the allowlist by design; the anchor sweep is sequential within this agent's own toolkit
115
+
116
+ Remember: You're a scope-tracer for an entire investigation. Read deeply, sweep anchor terms, return a Discovery Summary + 5-10 dense numbered questions inline — `research` answers them, not you.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: test-case-locator
3
- description: Finds existing manual test cases in .rpiv/test-cases/ catalogs by module, extracts frontmatter metadata (id, priority, status, tags), and reports coverage stats. Use before generating test cases to avoid duplicates, or to audit what test coverage already exists in a project.
3
+ description: "Finds existing manual test cases in .rpiv/test-cases/. Catalogs them by module, extracts frontmatter metadata (id, priority, status, tags), and reports coverage stats. Use before generating new test cases to avoid duplicates, or to audit what test coverage already exists in a project."
4
4
  tools: grep, find, ls
5
5
  isolated: true
6
6
  ---
@@ -58,43 +58,43 @@ Remove:
58
58
  Structure your analysis like this:
59
59
 
60
60
  ```
61
- ## Analysis of: [Document Path]
61
+ ## Analysis of: {Document Path}
62
62
 
63
63
  ### Document Context
64
- - **Date**: [From frontmatter `date:` field]
65
- - **Type**: [Research / Solution Analysis / Design / Plan / Review / Handoff]
66
- - **Purpose**: [From frontmatter `topic:` field + document content]
67
- - **Status**: [From frontmatter `status:` field — complete/ready/resolved/superseded]
68
- - **Upstream**: [From `questions_source:`, `research_source:` or `design_source:` if present]
64
+ - **Date**: {From frontmatter `date:` field}
65
+ - **Type**: {Research / Solution Analysis / Design / Plan / Review / Handoff}
66
+ - **Purpose**: {From frontmatter `topic:` field + document content}
67
+ - **Status**: {From frontmatter `status:` field — complete/ready/resolved/superseded}
68
+ - **Upstream**: {From `parent:` if present}
69
69
 
70
70
  ### Key Decisions
71
- 1. **[Decision Topic]**: [Specific decision made]
72
- - Rationale: [Why this decision]
73
- - Impact: [What this enables/prevents]
71
+ 1. **{Decision Topic}**: {Specific decision made}
72
+ - Rationale: {Why this decision}
73
+ - Impact: {What this enables/prevents}
74
74
 
75
- 2. **[Another Decision]**: [Specific decision]
76
- - Trade-off: [What was chosen over what]
75
+ 2. **{Another Decision}**: {Specific decision}
76
+ - Trade-off: {What was chosen over what}
77
77
 
78
78
  ### Critical Constraints
79
- - **[Constraint Type]**: [Specific limitation and why]
80
- - **[Another Constraint]**: [Limitation and impact]
79
+ - **{Constraint Type}**: {Specific limitation and why}
80
+ - **{Another Constraint}**: {Limitation and impact}
81
81
 
82
82
  ### Technical Specifications
83
- - [Specific config/value/approach decided]
84
- - [API design or interface decision]
85
- - [Performance requirement or limit]
83
+ - {Specific config/value/approach decided}
84
+ - {API design or interface decision}
85
+ - {Performance requirement or limit}
86
86
 
87
87
  ### Actionable Insights
88
- - [Something that should guide current implementation]
89
- - [Pattern or approach to follow/avoid]
90
- - [Gotcha or edge case to remember]
88
+ - {Something that should guide current implementation}
89
+ - {Pattern or approach to follow/avoid}
90
+ - {Gotcha or edge case to remember}
91
91
 
92
92
  ### Still Open/Unclear
93
- - [Questions that weren't resolved]
94
- - [Decisions that were deferred]
93
+ - {Questions that weren't resolved}
94
+ - {Decisions that were deferred}
95
95
 
96
96
  ### Relevance Assessment
97
- [1-2 sentences on whether this information is still applicable and why]
97
+ {1-2 sentences on whether this information is still applicable and why}
98
98
  ```
99
99
 
100
100
  ## Quality Filters
@@ -62,7 +62,7 @@ thoughts/
62
62
  Structure your findings like this:
63
63
 
64
64
  ```
65
- ## Thought Documents about [Topic]
65
+ ## Thought Documents about {Topic}
66
66
 
67
67
  ### Tickets
68
68
  - `thoughts/shared/tickets/eng_1235.md` - Rate limit configuration design
@@ -76,11 +76,11 @@ Structure your findings like this:
76
76
 
77
77
  ### Design Artifacts
78
78
  - `thoughts/shared/designs/2026-01-17_09-00-00_rate-limiter-design.md` - Architectural design for sliding window rate limiter
79
- - research_source: `thoughts/shared/research/2026-01-15_10-45-00_rate-limiting-approaches.md`
79
+ - parent: `thoughts/shared/research/2026-01-15_10-45-00_rate-limiting-approaches.md`
80
80
 
81
81
  ### Implementation Plans
82
82
  - `thoughts/shared/plans/2026-01-18_11-20-00_rate-limiter-implementation.md` - Phased plan for rate limits
83
- - design_source: `thoughts/shared/designs/2026-01-17_09-00-00_rate-limiter-design.md`
83
+ - parent: `thoughts/shared/designs/2026-01-17_09-00-00_rate-limiter-design.md`
84
84
 
85
85
  ### Code Reviews
86
86
  - `thoughts/shared/reviews/2026-01-25_16-00-00_rate-limiter-review.md` - Review of rate limiting implementation
@@ -113,11 +113,11 @@ Artifact chain: research → design → plan (3 linked documents)
113
113
  3. **Look for patterns**:
114
114
  - Ticket files often named `eng_XXXX.md`
115
115
  - Skill-generated files use `YYYY-MM-DD_HH-MM-SS_topic.md` (research, solutions, designs, plans, handoffs, reviews)
116
- - Documents have YAML frontmatter with searchable `topic:`, `tags:`, `status:`, `questions_source:`, `research_source:`, `design_source:` fields
116
+ - Documents have YAML frontmatter with searchable `topic:`, `tags:`, `status:`, `parent:` fields
117
117
 
118
118
  4. **Follow artifact chains**:
119
119
  - Research Questions → Research → Solutions → Designs → Plans → Reviews → Handoffs
120
- - Check `questions_source:`, `research_source:` and `design_source:` in frontmatter to find related documents
120
+ - Check `parent:` in frontmatter to find related documents
121
121
  - When you find one artifact, look for upstream/downstream artifacts on the same topic
122
122
 
123
123
  ## Important Guidelines