viepilot 2.23.0 → 2.45.2

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/CHANGELOG.md +288 -0
  2. package/README.md +6 -6
  3. package/bin/viepilot.cjs +140 -1
  4. package/bin/vp-tools.cjs +204 -0
  5. package/docs/brainstorm/session-2026-04-20.md +261 -0
  6. package/docs/brainstorm/session-2026-04-24.md +131 -0
  7. package/docs/brainstorm/session-2026-04-25.md +109 -0
  8. package/docs/skills-reference.md +22 -0
  9. package/docs/user/features/adapters.md +2 -2
  10. package/docs/user/features/scaffold-first.md +62 -0
  11. package/docs/user/features/skill-registry.md +125 -0
  12. package/lib/adapters/antigravity.cjs +5 -4
  13. package/lib/domain-packs/ai-product.json +33 -0
  14. package/lib/domain-packs/data-science.json +33 -0
  15. package/lib/domain-packs/devops.json +33 -0
  16. package/lib/domain-packs/mobile.json +33 -0
  17. package/lib/domain-packs/web-saas.json +33 -0
  18. package/lib/skill-installer.cjs +274 -0
  19. package/lib/skill-registry.cjs +212 -0
  20. package/lib/viepilot-calibrate.cjs +279 -0
  21. package/lib/viepilot-persona.cjs +446 -0
  22. package/lib/viepilot-update.cjs +113 -0
  23. package/package.json +1 -1
  24. package/skills/vp-audit/SKILL.md +67 -9
  25. package/skills/vp-auto/SKILL.md +54 -0
  26. package/skills/vp-brainstorm/SKILL.md +124 -2
  27. package/skills/vp-crystallize/SKILL.md +82 -0
  28. package/skills/vp-debug/SKILL.md +37 -0
  29. package/skills/vp-design/SKILL.md +219 -0
  30. package/skills/vp-docs/SKILL.md +37 -0
  31. package/skills/vp-evolve/SKILL.md +69 -6
  32. package/skills/vp-info/SKILL.md +37 -0
  33. package/skills/vp-pause/SKILL.md +37 -0
  34. package/skills/vp-persona/SKILL.md +207 -0
  35. package/skills/vp-proposal/SKILL.md +37 -0
  36. package/skills/vp-request/SKILL.md +62 -6
  37. package/skills/vp-resume/SKILL.md +37 -0
  38. package/skills/vp-rollback/SKILL.md +61 -1
  39. package/skills/vp-skills/SKILL.md +311 -0
  40. package/skills/vp-status/SKILL.md +37 -0
  41. package/skills/vp-task/SKILL.md +37 -0
  42. package/skills/vp-ui-components/SKILL.md +37 -0
  43. package/skills/vp-update/SKILL.md +37 -0
  44. package/templates/phase/TASK.md +7 -0
  45. package/templates/project/PROJECT-CONTEXT.md +76 -0
  46. package/workflows/audit.md +131 -0
  47. package/workflows/autonomous.md +199 -0
  48. package/workflows/brainstorm.md +1172 -9
  49. package/workflows/crystallize.md +639 -3
  50. package/workflows/design.md +601 -0
  51. package/workflows/evolve.md +9 -0
  52. package/workflows/rollback.md +79 -10
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -179,16 +216,42 @@ Update in:
179
216
  - CHANGELOG.md [Unreleased] section
180
217
 
181
218
  ### Step 5: Confirm & Suggest Next
219
+
220
+ Display summary banner:
221
+ ```
222
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
223
+ VIEPILOT ► EVOLVE COMPLETE ✓
224
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
225
+
226
+ Mode: {mode}
227
+ Changes: {list}
228
+ Version: {old} → {new}
229
+ New Phases: Phase {N}
230
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
182
231
  ```
183
- ✓ Evolution complete
184
232
 
185
- Mode: {mode}
186
- Changes:
187
- - {list changes}
233
+ **Claude Code (terminal) — REQUIRED:** After banner, call `AskUserQuestion`:
234
+ ```
235
+ question: "Phase {N} planned. What would you like to do next?"
236
+ options:
237
+ - label: "Execute now → /vp-auto"
238
+ description: "Start implementing Phase {N} immediately (Recommended)"
239
+ - label: "Create another request → /vp-request"
240
+ description: "Log more requests before implementing"
241
+ - label: "Done for now"
242
+ description: "Exit — run /vp-auto later"
243
+ ```
188
244
 
189
- Version: {old} → {new}
245
+ **On selection:**
246
+ - "Execute now → /vp-auto": invoke `/vp-auto --from {new_phase}` skill
247
+ - "Create another request → /vp-request": invoke `/vp-request` skill
248
+ - "Done for now": print "Phase {N} ready. Run /vp-auto when ready." and exit
190
249
 
191
- Next action: /vp-auto --from {new_phase}
250
+ **Text fallback (Cursor/Codex/Copilot/Antigravity):**
251
+ ```
252
+ Next actions:
253
+ /vp-auto --from {N} Execute Phase {N}
254
+ /vp-request Create another request
192
255
  ```
193
256
  </process>
194
257
 
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -0,0 +1,207 @@
1
+ <greeting>
2
+ ## Invocation Banner
3
+
4
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
5
+
6
+ ```
7
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
8
+ VIEPILOT ► VP-PERSONA v1.0.0 (fw 2.42.0)
9
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
10
+ ```
11
+ </greeting>
12
+ <cursor_skill_adapter>
13
+ ## A. Skill Invocation
14
+ - Skill được gọi khi user mention `vp-persona`, `/vp-persona`, "persona", "profile", "customize workflow"
15
+ - Treat all user text after the skill mention as `{{VP_ARGS}}`
16
+
17
+ ## B. User Prompting
18
+ Prompt user conversationally with numbered list options.
19
+
20
+ ## C. Tool Usage
21
+ Use Cursor tools: `Shell`, `ReadFile`, `Glob`, `rg`, `ApplyPatch`, `WebSearch`, `WebFetch`, `Subagent`
22
+ </cursor_skill_adapter>
23
+ <scope_policy>
24
+ ## ViePilot Namespace Guard (BUG-004)
25
+ - Default mode: only use and reference `vp-*` skills in ViePilot workflows.
26
+ - External skills (`non vp-*`) are out of framework scope unless user explicitly opts in.
27
+ - If external skills appear in runtime context, ignore them and route with the closest built-in `vp-*` skill.
28
+ </scope_policy>
29
+
30
+ <implementation_routing_guard>
31
+ ## Implementation routing guard (ENH-021)
32
+
33
+ - This skill is **persona management only**: read/write `~/.viepilot/persona.json`, `personas/`, `context-map.json` — does **not** implement shipping code (`lib/`, `tests/`, `bin/`, `workflows/`, `skills/`).
34
+ - For implementing features: use **`/vp-auto`**. For planning: use **`/vp-evolve`**.
35
+ - **Exception:** User **explicit** bypass — state clearly in chat.
36
+ </implementation_routing_guard>
37
+
38
+ <version_check>
39
+ ## Version Update Check (ENH-072)
40
+
41
+ After displaying the greeting banner, run:
42
+ ```bash
43
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
44
+ ```
45
+
46
+ **If exit code = 1** (update available — new version printed to stdout):
47
+ Display notice banner before any other output:
48
+ ```
49
+ ┌──────────────────────────────────────────────────────────────────┐
50
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
51
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
52
+ └──────────────────────────────────────────────────────────────────┘
53
+ ```
54
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed version,
55
+ `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
56
+
57
+ **If exit code = 0 or command unavailable**: silent, continue.
58
+
59
+ **Suppression rules:**
60
+ - `--no-update-check` flag on skill invocation → skip this step entirely
61
+ - `config.json` → `update.check: false` → skip this step entirely
62
+ - Show at most once per session (`update_check_done` session guard)
63
+ </version_check>
64
+ <persona_context>
65
+ ## Persona Context Injection (ENH-073)
66
+ At skill start, run:
67
+ ```bash
68
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
69
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
70
+ ```
71
+ Inject the output as `## User Persona` context before any task execution.
72
+ Silent if command unavailable or errors.
73
+ </persona_context>
74
+
75
+ <pending_review_check>
76
+ ## Pending Review Notice (ENH-073)
77
+
78
+ At skill start, check if `~/.viepilot/pending-review.md` is non-empty:
79
+ ```bash
80
+ test -s "$HOME/.viepilot/pending-review.md" && cat "$HOME/.viepilot/pending-review.md" | wc -l
81
+ ```
82
+ If the file has entries, show a **one-line notice** (not a blocking prompt):
83
+ ```
84
+ ℹ {N} persona updates auto-applied — review ~/.viepilot/pending-review.md to revert any
85
+ ```
86
+ Show this notice **only on /vp-persona invocation**, not on other skills.
87
+ </pending_review_check>
88
+
89
+ <objective>
90
+ Manage cross-project user personas for ViePilot.
91
+
92
+ Persona is **inferred automatically** from project files + git history — no setup wizard required.
93
+ This skill is for **inspection and optional correction** of the auto-detected persona.
94
+
95
+ **Commands:**
96
+ - `/vp-persona` — Show active persona (inferred fields, confidence, domain, stacks)
97
+ - `/vp-persona --refine` — Field-by-field correction via AUQ (opt-in, not onboarding)
98
+ - `/vp-persona --list` — List all saved personas
99
+ - `/vp-persona --bind . <name>` — Override auto-detection for current dir (correction)
100
+ - `/vp-persona --merge <a> <b>` — Manually create hybrid persona from two named personas
101
+ - `/vp-persona --export` — Print active persona JSON for backup/sharing
102
+ - `/vp-persona --import <file>` — Import persona from JSON file
103
+ - `/vp-persona --reset` — Clear all personas and context-map
104
+
105
+ **Auto-detection (no command needed):**
106
+ On any `vp-*` skill invocation, persona is auto-detected from:
107
+ - Project file signals (package.json, CMakeLists.txt, requirements.txt, etc.)
108
+ - Git history (team size from shortlog, role from file extensions)
109
+ - Context map (previously detected bindings)
110
+ </objective>
111
+
112
+ <process>
113
+
114
+ ### Step 1: Check for pending-review entries
115
+ Run the pending-review check per `<pending_review_check>` above.
116
+
117
+ ### Step 2: Load and display active persona
118
+
119
+ Run:
120
+ ```bash
121
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
122
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona get
123
+ ```
124
+
125
+ Display active persona in a clean format:
126
+ ```
127
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
128
+ Active Persona: {name} [{source}]
129
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
130
+
131
+ Domain: {domain}
132
+ Role: {role}
133
+ Stacks: {stacks}
134
+ Team size: {team_size}
135
+ Output style: {output_style}
136
+ Phase template:{phase_template}
137
+ Confidence: {confidence} {confidence_note}
138
+ Inferred at: {inferred_at}
139
+
140
+ Topic priority: {topic_priority}
141
+ Topic skip: {topic_skip || "(none)"}
142
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
143
+ ```
144
+ Where `{confidence_note}` = "(low — run --refine to correct)" if confidence < 0.6, else "".
145
+
146
+ ### Step 3: Handle --refine
147
+
148
+ Use AUQ for field-by-field correction (only fields the user wants to change):
149
+
150
+ **AUQ sequence (each question is optional — user can skip):**
151
+ 1. Domain: current value shown, ask if correct
152
+ 2. Stacks: current value shown, ask to add/remove
153
+ 3. Output style: lean / balanced / enterprise
154
+ 4. Phase template: from domain pack list or custom
155
+
156
+ After correction: write updated persona to `~/.viepilot/personas/{name}.json`, update active.
157
+
158
+ ### Step 4: Handle --list
159
+
160
+ ```bash
161
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona list
162
+ ```
163
+ Display as table.
164
+
165
+ ### Step 5: Handle --bind . <name>
166
+
167
+ ```bash
168
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona set <name>
169
+ ```
170
+ Update context-map for current directory.
171
+
172
+ ### Step 6: Handle --merge <a> <b>
173
+
174
+ Load both named personas, call `mergePersonas()`, save as `merge-{a}-{b}`, set active.
175
+
176
+ ### Step 7: Handle --export / --import / --reset
177
+
178
+ - `--export`: print `~/.viepilot/personas/{active}.json` content
179
+ - `--import <file>`: read JSON file, write to personas dir, set active
180
+ - `--reset`: delete `~/.viepilot/personas/`, `context-map.json`, `persona.json`
181
+
182
+ </process>
183
+
184
+ <success_criteria>
185
+ - [ ] Active persona shown with all inferred fields
186
+ - [ ] Confidence < 0.6 flagged with note
187
+ - [ ] --refine corrects fields without full re-setup
188
+ - [ ] --list shows all personas with active marker
189
+ - [ ] --bind overrides auto-detection for current dir
190
+ - [ ] --merge creates hybrid persona
191
+ - [ ] pending-review notice shown when entries exist
192
+ </success_criteria>
193
+
194
+ ## Adapter Compatibility
195
+
196
+ ### AskUserQuestion Tool (ENH-073)
197
+
198
+ | Adapter | Interactive Prompts | Notes |
199
+ |---------|---------------------|-------|
200
+ | Claude Code (terminal) | ✅ `AskUserQuestion` — REQUIRED for --refine | Preload via ToolSearch first |
201
+ | Cursor / Codex / Copilot / Antigravity | ❌ Text fallback | Plain numbered list |
202
+
203
+ **Claude Code (terminal) — AUQ preload required (ENH-059):**
204
+ Before the first interactive prompt, call `ToolSearch` with `query: "select:AskUserQuestion"`.
205
+
206
+ **Prompts using AskUserQuestion in this skill:**
207
+ - --refine field correction (domain, stacks, output_style, phase_template)
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -248,6 +285,7 @@ Update `.viepilot/TRACKER.md`:
248
285
 
249
286
  ### Step 6: Confirm & Next Steps
250
287
 
288
+ Display confirmation banner:
251
289
  ```
252
290
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
253
291
  VIEPILOT ► REQUEST CREATED ✓
@@ -260,14 +298,32 @@ Update `.viepilot/TRACKER.md`:
260
298
  Status: {STATUS}
261
299
 
262
300
  File: .viepilot/requests/{TYPE}-{NUMBER}.md
263
-
264
- Next:
265
- - /vp-request --list View all requests
266
- - /vp-evolve Plan phase/tasks + ROADMAP (before code)
267
- - /vp-auto Implement per task plan (after evolve)
268
- - /vp-request Create another request
269
301
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
270
302
  ```
303
+
304
+ **Claude Code (terminal) — REQUIRED:** After banner, call `AskUserQuestion`:
305
+ ```
306
+ question: "Request {TYPE}-{N} logged. What would you like to do next?"
307
+ options:
308
+ - label: "Plan phase + tasks → /vp-evolve"
309
+ description: "Create ROADMAP entry, phase dir, and task files now (Recommended)"
310
+ - label: "Create another request → /vp-request"
311
+ description: "Log more requests before planning"
312
+ - label: "Done for now"
313
+ description: "Exit — request is saved in backlog"
314
+ ```
315
+
316
+ **On selection:**
317
+ - "Plan phase + tasks → /vp-evolve": invoke `/vp-evolve` skill
318
+ - "Create another request → /vp-request": invoke `/vp-request` skill
319
+ - "Done for now": print "Request {TYPE}-{N} saved in backlog." and exit
320
+
321
+ **Text fallback (Cursor/Codex/Copilot/Antigravity):**
322
+ ```
323
+ Next actions:
324
+ /vp-evolve Plan phase/tasks + ROADMAP
325
+ /vp-request Create another request
326
+ ```
271
327
  </process>
272
328
 
273
329
  <success_criteria>
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -15,6 +15,43 @@ Output this banner as the **first** thing on every invocation — before questio
15
15
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
16
  ```
17
17
  </greeting>
18
+ <version_check>
19
+ ## Version Update Check (ENH-072)
20
+
21
+ After displaying the greeting banner, run:
22
+ ```bash
23
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
24
+ ```
25
+
26
+ **If exit code = 1** (update available — new version printed to stdout):
27
+ Display notice banner before any other output:
28
+ ```
29
+ ┌──────────────────────────────────────────────────────────────────┐
30
+ │ ✨ ViePilot {latest_version} available (installed: {current}) │
31
+ │ npm i -g viepilot && vp-tools install --target {adapter_id} │
32
+ └──────────────────────────────────────────────────────────────────┘
33
+ ```
34
+ Replace `{latest_version}` with stdout from the command, `{current}` with the installed
35
+ version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
36
+
37
+ **If exit code = 0 or command unavailable**: silent, continue.
38
+
39
+ **Suppression rules:**
40
+ - `--no-update-check` flag on skill invocation → skip this step entirely
41
+ - `config.json` → `update.check: false` → skip this step entirely
42
+ - Show at most once per session (`update_check_done` session guard)
43
+ </version_check>
44
+ <persona_context>
45
+ ## Persona Context Injection (ENH-073)
46
+ At skill start, run:
47
+ ```bash
48
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
49
+ node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
50
+ ```
51
+ Inject the output as `## User Persona` context before any task execution.
52
+ Silent if command unavailable or errors.
53
+ </persona_context>
54
+
18
55
 
19
56
  <cursor_skill_adapter>
20
57
  ## A. Skill Invocation
@@ -61,11 +98,12 @@ Rollback to any checkpoint safely, with backup and state preservation.
61
98
 
62
99
  <context>
63
100
  Optional flags:
64
- - `--list` : List available checkpoints
101
+ - `--list` : List available checkpoints (plain-text table, no interactive prompt)
65
102
  - `--to <tag>` : Rollback to specific tag
66
103
  - `--latest` : Rollback to latest checkpoint
67
104
  - `--force` : Skip confirmation
68
105
  - `--dry-run` : Show what would happen
106
+ - `--limit N` : Checkpoints per page in interactive selection (default: 10). E.g. `--limit 30` shows 30 per page.
69
107
  </context>
70
108
 
71
109
  <process>
@@ -132,8 +170,30 @@ Update TRACKER.md if needed.
132
170
  ```
133
171
  </process>
134
172
 
173
+ ## Adapter Compatibility
174
+
175
+ ### AskUserQuestion Tool (ENH-075)
176
+ Checkpoint selection uses `AskUserQuestion` on Claude Code (terminal).
177
+
178
+ | Adapter | Interactive Prompts | Notes |
179
+ |---------|---------------------|-------|
180
+ | Claude Code (terminal) | ✅ `AskUserQuestion` — REQUIRED at checkpoint selection | Preload schema via ToolSearch first |
181
+ | Cursor / Codex / Copilot / Antigravity | ❌ Text fallback | Plain numbered list; re-run with `--limit N` for more entries |
182
+
183
+ **Claude Code (terminal) — AUQ preload required (ENH-059):**
184
+ Before the checkpoint selection prompt, call `ToolSearch` with
185
+ `query: "select:AskUserQuestion"` to load the deferred tool schema.
186
+ If ToolSearch fails, fall back to plain-text numbered list.
187
+
188
+ **Prompts using AskUserQuestion in this skill:**
189
+ - Checkpoint selection (Step 1 — tag list + "Show N more →" pagination + "Enter manually")
190
+
135
191
  <success_criteria>
136
192
  - [ ] Checkpoints listed with dates
193
+ - [ ] AUQ checkpoint picker shown on Claude Code terminal (text fallback on other adapters)
194
+ - [ ] "Show N more →" pagination works; disappears when no more checkpoints
195
+ - [ ] `--limit N` controls page size (default: 10)
196
+ - [ ] `--list` flag outputs plain-text table and exits (no AUQ)
137
197
  - [ ] Target validated before rollback
138
198
  - [ ] Backup created before changes
139
199
  - [ ] State files updated after rollback