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.
- package/CHANGELOG.md +288 -0
- package/README.md +6 -6
- package/bin/viepilot.cjs +140 -1
- package/bin/vp-tools.cjs +204 -0
- package/docs/brainstorm/session-2026-04-20.md +261 -0
- package/docs/brainstorm/session-2026-04-24.md +131 -0
- package/docs/brainstorm/session-2026-04-25.md +109 -0
- package/docs/skills-reference.md +22 -0
- package/docs/user/features/adapters.md +2 -2
- package/docs/user/features/scaffold-first.md +62 -0
- package/docs/user/features/skill-registry.md +125 -0
- package/lib/adapters/antigravity.cjs +5 -4
- package/lib/domain-packs/ai-product.json +33 -0
- package/lib/domain-packs/data-science.json +33 -0
- package/lib/domain-packs/devops.json +33 -0
- package/lib/domain-packs/mobile.json +33 -0
- package/lib/domain-packs/web-saas.json +33 -0
- package/lib/skill-installer.cjs +274 -0
- package/lib/skill-registry.cjs +212 -0
- package/lib/viepilot-calibrate.cjs +279 -0
- package/lib/viepilot-persona.cjs +446 -0
- package/lib/viepilot-update.cjs +113 -0
- package/package.json +1 -1
- package/skills/vp-audit/SKILL.md +67 -9
- package/skills/vp-auto/SKILL.md +54 -0
- package/skills/vp-brainstorm/SKILL.md +124 -2
- package/skills/vp-crystallize/SKILL.md +82 -0
- package/skills/vp-debug/SKILL.md +37 -0
- package/skills/vp-design/SKILL.md +219 -0
- package/skills/vp-docs/SKILL.md +37 -0
- package/skills/vp-evolve/SKILL.md +69 -6
- package/skills/vp-info/SKILL.md +37 -0
- package/skills/vp-pause/SKILL.md +37 -0
- package/skills/vp-persona/SKILL.md +207 -0
- package/skills/vp-proposal/SKILL.md +37 -0
- package/skills/vp-request/SKILL.md +62 -6
- package/skills/vp-resume/SKILL.md +37 -0
- package/skills/vp-rollback/SKILL.md +61 -1
- package/skills/vp-skills/SKILL.md +311 -0
- package/skills/vp-status/SKILL.md +37 -0
- package/skills/vp-task/SKILL.md +37 -0
- package/skills/vp-ui-components/SKILL.md +37 -0
- package/skills/vp-update/SKILL.md +37 -0
- package/templates/phase/TASK.md +7 -0
- package/templates/project/PROJECT-CONTEXT.md +76 -0
- package/workflows/audit.md +131 -0
- package/workflows/autonomous.md +199 -0
- package/workflows/brainstorm.md +1172 -9
- package/workflows/crystallize.md +639 -3
- package/workflows/design.md +601 -0
- package/workflows/evolve.md +9 -0
- 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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
package/skills/vp-info/SKILL.md
CHANGED
|
@@ -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
|
package/skills/vp-pause/SKILL.md
CHANGED
|
@@ -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
|