viepilot 2.15.0 → 2.22.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.
@@ -7,9 +7,10 @@ Allows research inline within the same brainstorm session when needed.
7
7
 
8
8
  | Feature | Claude Code (terminal) | Cursor (Agent/Skills) | Codex CLI | Antigravity (native) |
9
9
  |---------|----------------------|-----------------------|-----------|----------------------|
10
- | Interactive prompts | ✅ `AskUserQuestion` tool | ❌ text fallback | ❌ text fallback | ❌ text fallback |
10
+ | Interactive prompts | ✅ `AskUserQuestion` tool — **REQUIRED** | ❌ text fallback | ❌ text fallback | ❌ text fallback |
11
11
 
12
- When `AskUserQuestion` is not available, each prompt block falls back to the plain-text numbered list shown below it no configuration needed.
12
+ **Claude Code (terminal):** Always call `AskUserQuestion` first. Only fall back to the plain-text menu below if the tool returns an error or is unavailable.
13
+ **Cursor / Codex CLI / Antigravity / other adapters:** `AskUserQuestion` not available — use text menus below.
13
14
 
14
15
  ## ViePilot Skill Scope Policy (BUG-004)
15
16
 
@@ -47,12 +48,12 @@ Parse results to get list of existing sessions.
47
48
  **If previous sessions exist:**
48
49
 
49
50
  > **Adapter-aware prompt:**
50
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
51
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
51
52
  > - question: "Previous brainstorm sessions found. What would you like to do?"
52
53
  > - header: "Session"
53
54
  > - options: [{ label: "Continue recent session", description: "Resume the most recent session from where it stopped" }, { label: "Review specific session", description: "Choose a particular session to review or continue" }, { label: "New brainstorm session", description: "Start fresh — previous sessions are preserved" }]
54
55
  > - multiSelect: false
55
- > - **Cursor / Codex / Antigravity / other:** use text menu below
56
+ > **Cursor / Codex / Antigravity / other:** use text menu below
56
57
 
57
58
  ```
58
59
  I found previous brainstorm sessions:
@@ -137,12 +138,12 @@ If the user is brainstorming a landing page / homepage / marketing page:
137
138
  2. Present a layout menu for the user to choose from:
138
139
 
139
140
  > **Adapter-aware prompt:**
140
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
141
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
141
142
  > - question: "Which landing page layout fits your goals and audience?"
142
143
  > - header: "Layout"
143
144
  > - options: [{ label: "Layout A — Hero centric", description: "Hero + trust logos + features + CTA — best for brand awareness and conversions" }, { label: "Layout B — Problem/Solution", description: "Problem/Solution + social proof + pricing + FAQ — best for SaaS sign-ups" }, { label: "Layout C — Product storytelling", description: "Screenshots + testimonials + final CTA — best for product demos" }, { label: "Layout D — SaaS conversion", description: "Integrations + comparison + onboarding steps — best for tool adoption" }]
144
145
  > - multiSelect: false
145
- > - **Cursor / Codex / Antigravity / other:** use list below
146
+ > **Cursor / Codex / Antigravity / other:** use list below
146
147
 
147
148
  - Layout A: Hero centric + trust logos + features + CTA
148
149
  - Layout B: Problem/Solution + social proof + pricing + FAQ
@@ -593,6 +594,40 @@ After intake is **completed** or a **valid skip** (META already has profile) →
593
594
  <step name="save_session">
594
595
  ## 6. Save Session
595
596
 
597
+ ### Pre-Save Phase Assignment Validation (ENH-052)
598
+
599
+ Before writing the session file, validate phase assignment completeness:
600
+
601
+ **Scope-locked session** — `## Phases` section exists with real content OR user confirmed scope finalized (ref: Step 5.1 condition 1):
602
+
603
+ ```
604
+ CHECK 1: Does session draft contain a non-empty ## Phases section?
605
+ CHECK 2: Does Phase 1 have at least one feature/capability assigned?
606
+ CHECK 3: Are there any features listed outside a phase (unassigned)?
607
+ ```
608
+
609
+ **Gate condition:**
610
+ - If scope is locked AND (CHECK 1 fails OR CHECK 2 fails):
611
+ → **Block save.** Show:
612
+ ```
613
+ ⚠️ Phase assignment incomplete — cannot save as Completed.
614
+
615
+ Features were discussed but no phase assignments exist.
616
+ Before saving:
617
+ 1. Assign all features to phases (## Phases section)
618
+ 2. Ensure Phase 1 has at least one feature
619
+
620
+ Return to the conversation to assign phases, then /save again.
621
+ ```
622
+ - If scope is **not** locked (exploratory session — no feature assignments):
623
+ → **Allow save** with `Status: In Progress` and add advisory note to session file:
624
+ ```markdown
625
+ > ⚠️ Exploratory session — no phase assignments yet.
626
+ > Run /vp-brainstorm to continue and assign features to phases before /vp-crystallize.
627
+ ```
628
+ - If brownfield stub session (`IS_BROWNFIELD=true`): **skip this gate** — brownfield stubs intentionally have no phases.
629
+ - If all checks pass → proceed to file write below.
630
+
596
631
  Create/update file: `docs/brainstorm/session-{YYYY-MM-DD}.md`
597
632
 
598
633
  ```markdown
@@ -6,9 +6,10 @@ Convert brainstorm sessions into structured artifacts for autonomous AI executio
6
6
 
7
7
  | Feature | Claude Code (terminal) | Cursor (Agent/Skills) | Codex CLI | Antigravity (native) |
8
8
  |---------|----------------------|-----------------------|-----------|----------------------|
9
- | Interactive prompts | ✅ `AskUserQuestion` tool | ❌ text fallback | ❌ text fallback | ❌ text fallback |
9
+ | Interactive prompts | ✅ `AskUserQuestion` tool — **REQUIRED** | ❌ text fallback | ❌ text fallback | ❌ text fallback |
10
10
 
11
- When `AskUserQuestion` is not available, each prompt block falls back to the plain-text numbered list shown below it no configuration needed.
11
+ **Claude Code (terminal):** Always call `AskUserQuestion` first. Only fall back to the plain-text menu below if the tool returns an error or is unavailable.
12
+ **Cursor / Codex CLI / Antigravity / other adapters:** `AskUserQuestion` not available — use text menus below.
12
13
 
13
14
  ## ViePilot Skill Scope Policy (BUG-004)
14
15
 
@@ -102,12 +103,12 @@ Ask the user for project information:
102
103
  ### License & Year
103
104
 
104
105
  > **Adapter-aware prompt (question 13):**
105
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
106
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
106
107
  > - question: "Which license for this project?"
107
108
  > - header: "License"
108
109
  > - options: [{ label: "MIT", description: "Permissive — most common open-source choice" }, { label: "Apache-2.0", description: "Permissive with patent grant — preferred for enterprise OSS" }, { label: "GPL-3.0", description: "Copyleft — derivative works must stay open-source" }, { label: "Proprietary", description: "All rights reserved — no public redistribution" }]
109
110
  > - multiSelect: false
110
- > - **Cursor / Codex / Antigravity / other:** use text list below
111
+ > **Cursor / Codex / Antigravity / other:** use text list below
111
112
 
112
113
  ```
113
114
  13. License?
@@ -134,12 +135,12 @@ Store all metadata for template generation.
134
135
  - Warn: "`.viepilot/` already exists. Re-running brownfield mode will overwrite artifacts."
135
136
 
136
137
  > **Adapter-aware prompt:**
137
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
138
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
138
139
  > - question: "`.viepilot/` already exists. Re-running brownfield mode will overwrite artifacts. Continue?"
139
140
  > - header: "Overwrite?"
140
141
  > - options: [{ label: "Yes, continue", description: "Overwrite existing .viepilot/ artifacts with new scan results" }, { label: "No, abort", description: "Stop here — keep existing artifacts unchanged" }]
141
142
  > - multiSelect: false
142
- > - **Cursor / Codex / Antigravity / other:** use text prompt below
143
+ > **Cursor / Codex / Antigravity / other:** use text prompt below
143
144
  >
144
145
  > Ask: "Continue? (y/n)" — abort if n.
145
146
 
@@ -227,12 +228,12 @@ If `polyrepo_hints` is empty → skip this section entirely (no empty array in c
227
228
  **Interactive prompt** (fire when `polyrepo_hints` non-empty):
228
229
 
229
230
  > **Adapter-aware prompt:**
230
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
231
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
231
232
  > - question: "Polyrepo signals detected — this repo may be part of a multi-repo system. Would you like to provide related repo URLs?"
232
233
  > - header: "Polyrepo?"
233
234
  > - options: [{ label: "Yes, I'll list them", description: "Provide sibling repo URLs — improves system-level context accuracy" }, { label: "Skip for now", description: "Continue without related repos — affected fields will be marked ASSUMED" }]
234
235
  > - multiSelect: false
235
- > - **Cursor / Codex / Antigravity / other:** use text prompt below
236
+ > **Cursor / Codex / Antigravity / other:** use text prompt below
236
237
 
237
238
  ```
238
239
  ⚠️ Polyrepo signals detected:
@@ -786,6 +787,31 @@ When generating TRACKER.md in Step 9 (brownfield mode only), append:
786
787
 
787
788
  </step>
788
789
 
790
+ <step name="brownfield_execution_path">
791
+ ## Brownfield Execution Path
792
+
793
+ When `IS_BROWNFIELD=true`, the following table governs which steps execute:
794
+
795
+ | Step | Name | Brownfield behavior | Rationale |
796
+ |------|------|---------------------|-----------|
797
+ | 0 | Collect metadata | **RUN** | Always needed |
798
+ | 0-B | Brownfield scanner | **RUN** | Core brownfield step |
799
+ | 0-C | Generate brainstorm stub | **RUN** | Creates `session-brownfield-import.md` |
800
+ | 1 | Analyze brainstorm | **RUN (stub only)** | Reads brownfield stub; skips greenfield-only checks |
801
+ | 1A | UI direction gate | **CONDITIONAL** — run if `.viepilot/ui-direction/` already exists in the project |
802
+ | 1B | Stack research cache | **CONDITIONAL** — skip if brownfield scanner already populated stack cache |
803
+ | 1C | Architect artifact consumption | **SKIP** — no architect HTML workspace in a brownfield import |
804
+ | 1D | Architect auto-activate suggestion | **SKIP** — no scope brainstorm; architect mode not applicable |
805
+ | 2+ | All subsequent steps | **RUN** — same as greenfield from Step 2 onward |
806
+
807
+ > **Implementation note for AI agents:** When `IS_BROWNFIELD=true`, check each CONDITIONAL
808
+ > step against the stated condition before executing. Do **not** skip Step 1 entirely —
809
+ > read the brownfield stub to extract stack + gap data for Step 2 (AI-GUIDE.md generation).
810
+ > For Step 1B: check `~/.viepilot/stacks/` for entries created during the Step 0-B scan;
811
+ > if present and non-empty, skip the full research pass in 1B.
812
+
813
+ </step>
814
+
789
815
  <step name="analyze_brainstorm">
790
816
  ## Step 1: Analyze Brainstorm
791
817
 
@@ -842,12 +868,12 @@ Check if `.viepilot/ui-direction/` exists and contains any session artifacts.
842
868
  If `ui_scope_detected = true` **AND** artifacts are missing → **STOP** and present:
843
869
 
844
870
  > **Adapter-aware prompt:**
845
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
871
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
846
872
  > - question: "UI Direction artifacts missing. The brainstorm indicates UI scope but `.viepilot/ui-direction/` has no artifacts. How to proceed?"
847
873
  > - header: "UI Direction"
848
874
  > - options: [{ label: "Return to /vp-brainstorm --ui (Recommended)", description: "Create UI direction artifacts first for best results" }, { label: "Continue with assumptions", description: "Record assumptions in ARCHITECTURE.md and proceed without visual direction" }]
849
875
  > - multiSelect: false
850
- > - **Cursor / Codex / Antigravity / other:** use text menu below
876
+ > **Cursor / Codex / Antigravity / other:** use text menu below
851
877
 
852
878
  ```
853
879
  ⚠️ UI Direction artifacts missing
@@ -1016,12 +1042,12 @@ If `.viepilot/architect/` does **not** exist but brainstorm shows complex archit
1016
1042
  - Suggest (soft prompt — not a hard block):
1017
1043
 
1018
1044
  > **Adapter-aware prompt:**
1019
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
1045
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
1020
1046
  > - question: "Complex architecture detected (≥5 services/components). Would you like to create architecture visualizations first with /vp-brainstorm --architect?"
1021
1047
  > - header: "Architect?"
1022
1048
  > - options: [{ label: "Yes, go to architect mode", description: "Create visual architecture diagrams before crystallizing (recommended for complex systems)" }, { label: "No, continue now", description: "Continue crystallize with text-only brainstorm — no visual diagrams" }]
1023
1049
  > - multiSelect: false
1024
- > - **Cursor / Codex / Antigravity / other:** use text menu below
1050
+ > **Cursor / Codex / Antigravity / other:** use text menu below
1025
1051
 
1026
1052
  ```
1027
1053
  💡 Would you like to return to /vp-brainstorm --architect to create visualizations first?
@@ -6,9 +6,10 @@ Upgrade or expand the project: add features, start a new milestone, or refactor.
6
6
 
7
7
  | Feature | Claude Code (terminal) | Cursor (Agent/Skills) | Codex CLI | Antigravity (native) |
8
8
  |---------|----------------------|-----------------------|-----------|----------------------|
9
- | Interactive prompts | ✅ `AskUserQuestion` tool | ❌ text fallback | ❌ text fallback | ❌ text fallback |
9
+ | Interactive prompts | ✅ `AskUserQuestion` tool — **REQUIRED** | ❌ text fallback | ❌ text fallback | ❌ text fallback |
10
10
 
11
- When `AskUserQuestion` is not available, each prompt block falls back to the plain-text numbered list shown below it no configuration needed.
11
+ **Claude Code (terminal):** Always call `AskUserQuestion` first. Only fall back to the plain-text menu below if the tool returns an error or is unavailable.
12
+ **Cursor / Codex CLI / Antigravity / other adapters:** `AskUserQuestion` not available — use text menus below.
12
13
 
13
14
  ## ViePilot Skill Scope Policy (BUG-004)
14
15
 
@@ -54,8 +55,9 @@ Determine:
54
55
  How would you like to evolve the project?
55
56
  ```
56
57
 
57
- > **Adapter-aware prompt:**
58
- > - **Claude Code (terminal):** use `AskUserQuestion` tool — spec:
58
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable.
59
+ > **Cursor / Codex / Antigravity:** use text menu below.
60
+ > AUQ spec:
59
61
  > - question: "How would you like to evolve the project?"
60
62
  > - header: "Evolve mode"
61
63
  > - options: [{ label: "Add Feature", description: "Add a new capability to the current milestone" }, { label: "New Milestone", description: "Archive current milestone and start a new scope" }, { label: "Refactor", description: "Improve existing code without adding new features" }]
@@ -81,23 +83,25 @@ Describe the new feature:
81
83
  3. Which services/modules affected?
82
84
  4. Dependencies on existing code?
83
85
 
84
- > **Adapter-aware prompt (question 5 — complexity):**
85
- > - **Claude Code (terminal):** use `AskUserQuestion` tool — spec:
86
+ > **Claude Code (terminal) — REQUIRED (question 5 — complexity):** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable.
87
+ > **Cursor / Codex / Antigravity:** use text menu below.
88
+ > AUQ spec:
86
89
  > - question: "Estimated implementation complexity?"
87
90
  > - header: "Complexity"
88
91
  > - options: [{ label: "S — Small", description: "Few hours — isolated change, 1 file" }, { label: "M — Medium", description: "1–2 days — 1–2 files, some integration" }, { label: "L — Large", description: "3–5 days — multiple modules affected" }, { label: "XL — Extra Large", description: "1+ week — architectural change or major feature" }]
89
92
  > - multiSelect: false
90
- > - **Cursor / Codex / Antigravity / other:** use text below
93
+ > **Cursor / Codex / Antigravity / other:** use text below
91
94
 
92
95
  5. Estimated complexity? (S/M/L/XL)
93
96
 
94
- > **Adapter-aware prompt (question 6 — brainstorm routing):**
95
- > - **Claude Code (terminal):** use `AskUserQuestion` tool — spec:
97
+ > **Claude Code (terminal) — REQUIRED (question 6 — brainstorm routing):** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable.
98
+ > **Cursor / Codex / Antigravity:** use text menu below.
99
+ > AUQ spec:
96
100
  > - question: "Does this feature need a brainstorm session first?"
97
101
  > - header: "Brainstorm?"
98
102
  > - options: [{ label: "Yes — go to /vp-brainstorm", description: "Research-heavy, UX-driven, or landing page feature — brainstorm first" }, { label: "No — plan directly", description: "Scope is clear — proceed to phase/task planning now" }]
99
103
  > - multiSelect: false
100
- > - **Cursor / Codex / Antigravity / other:** use text below
104
+ > **Cursor / Codex / Antigravity / other:** use text below
101
105
 
102
106
  6. Need deep brainstorm? (landing page / UX / growth ideas / research-heavy)
103
107
  ```
@@ -288,13 +292,15 @@ Add to ROADMAP.md as phase {N+0.5} or insert between phases.
288
292
  <step name="update_version">
289
293
  ## 4. Update Version
290
294
 
291
- Based on changes:
295
+ Apply the canonical bump rules from `.viepilot/SYSTEM-RULES.md → Version Bump Rules`.
296
+ Precedence: MAJOR > MINOR > PATCH. Mixed phase → highest applicable bump wins.
292
297
 
293
- | Mode | Version Bump |
294
- |------|--------------|
295
- | Add Feature | MINOR (x.Y.z) |
296
- | New Milestone | MAJOR or MINOR |
297
- | Refactor | PATCH (x.y.Z) |
298
+ Quick reference:
299
+ - Add Feature → **MINOR**
300
+ - Bug fix only **PATCH**
301
+ - Refactor (no behavior change) **PATCH**
302
+ - Mixed feature + fix → **MINOR**
303
+ - Breaking change → **MAJOR**
298
304
 
299
305
  Update in:
300
306
  - TRACKER.md
@@ -305,6 +311,8 @@ Update in:
305
311
  <step name="confirm">
306
312
  ## 5. Confirm & Suggest Next
307
313
 
314
+ Output the evolution summary banner:
315
+
308
316
  ```
309
317
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
310
318
  VIEPILOT ► EVOLVE COMPLETE ✓
@@ -322,7 +330,32 @@ Update in:
322
330
  - Phase {N}: {name}
323
331
 
324
332
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
325
- Next: /vp-auto --from {new_phase}
333
+ ```
334
+
335
+ Then — **Claude Code adapter (terminal): use AskUserQuestion**:
336
+
337
+ ```
338
+ question: "Phase {N} planned. What would you like to do next?"
339
+ options:
340
+ - label: "Execute now → /vp-auto"
341
+ description: "Start implementing Phase {N} immediately (Recommended)"
342
+ - label: "Create another request → /vp-request"
343
+ description: "Log more requests before implementing"
344
+ - label: "Done for now"
345
+ description: "Exit — run /vp-auto later to start implementation"
346
+ ```
347
+
348
+ **On selection:**
349
+ - "Execute now → /vp-auto": invoke `/vp-auto --from {new_phase}` skill
350
+ - "Create another request → /vp-request": invoke `/vp-request` skill
351
+ - "Done for now": print brief confirmation and exit
352
+
353
+ **Text fallback (Cursor, Codex, Copilot, Antigravity — AUQ not available):**
354
+ ```
355
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
356
+ Next:
357
+ - /vp-auto --from {new_phase} Execute Phase {N}
358
+ - /vp-request Create another request
326
359
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
327
360
  ```
328
361
  </step>
@@ -6,9 +6,10 @@ Create and manage project requests: bugs, features, enhancements, tech debt, and
6
6
 
7
7
  | Feature | Claude Code (terminal) | Cursor (Agent/Skills) | Codex CLI | Antigravity (native) |
8
8
  |---------|----------------------|-----------------------|-----------|----------------------|
9
- | Interactive prompts | ✅ `AskUserQuestion` tool | ❌ text fallback | ❌ text fallback | ❌ text fallback |
9
+ | Interactive prompts | ✅ `AskUserQuestion` tool — **REQUIRED** | ❌ text fallback | ❌ text fallback | ❌ text fallback |
10
10
 
11
- When `AskUserQuestion` is not available, each prompt block falls back to the plain-text numbered list shown below it no configuration needed.
11
+ **Claude Code (terminal):** Always call `AskUserQuestion` first. Only fall back to the plain-text menu below if the tool returns an error or is unavailable.
12
+ **Cursor / Codex CLI / Antigravity / other adapters:** `AskUserQuestion` not available — use text menus below.
12
13
 
13
14
  ## ViePilot Skill Scope Policy (BUG-004)
14
15
 
@@ -63,12 +64,12 @@ Parse `{{VP_ARGS}}` for type flag:
63
64
  If no flag, ask user:
64
65
 
65
66
  > **Adapter-aware prompt:**
66
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
67
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
67
68
  > - question: "What type of request would you like to create?"
68
69
  > - header: "Request type"
69
70
  > - options: [{ label: "🐛 Bug Report", description: "Something is broken — file a defect report" }, { label: "✨ Feature Request", description: "New functionality — add a capability that doesn't exist yet" }, { label: "🔧 Enhancement", description: "Improve existing feature — make something better" }, { label: "🧹 Technical Debt", description: "Code cleanup / refactor — no new behavior" }]
70
71
  > - multiSelect: false
71
- > - **Cursor / Codex / Antigravity / other:** use text menu below (Brainstorm and List options remain text-only)
72
+ > **Cursor / Codex / Antigravity / other:** use text menu below (Brainstorm and List options remain text-only)
72
73
 
73
74
  ```
74
75
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -86,6 +87,39 @@ What type of request?
86
87
  ```
87
88
  </step>
88
89
 
90
+ <step name="feasibility_gate">
91
+ ## 2B. Feasibility Gate — research-agent (ENH-057)
92
+
93
+ **Trigger**: auto-activate for **Feature** and **Enhancement** requests when any of:
94
+ - User description mentions a new platform, IDE, API, protocol, or SDK
95
+ - User asks "is this possible?", "how does X work?", "feasibility of X"
96
+ - Request type = Feature AND subject is an external integration
97
+
98
+ **Skip for**: Bug reports, internal refactors, Enhancement requests on known code.
99
+
100
+ If triggered:
101
+
102
+ **Claude Code (terminal) — invoke research-agent:**
103
+ ```
104
+ Agent({
105
+ subagent_type: "general-purpose",
106
+ description: "research-agent: feasibility study for {topic}",
107
+ prompt: `
108
+ Load agents/research-agent.md for full spec.
109
+ Topic: {extracted from user description}
110
+ Questions: ["What SDK/API exists?", "What are integration points?", "What config dir/convention?", "Feasibility rating?"]
111
+ Return a ## Research Findings section + ## Sources.
112
+ `
113
+ })
114
+ ```
115
+
116
+ **Non-Claude Code**: if web search available, perform inline research. Otherwise note "manual research needed" and continue gathering details.
117
+
118
+ **Output**: embed research-agent findings in the `## Research Findings` section of the request file.
119
+
120
+ > This gate made FEAT-019 (Copilot adapter) research systematic — apply it to all future platform/API feature requests.
121
+ </step>
122
+
89
123
  <step name="list_requests">
90
124
  ## 3. List Requests (if --list)
91
125
 
@@ -136,12 +170,12 @@ Options:
136
170
  6. Severity?
137
171
 
138
172
  > **Adapter-aware prompt:**
139
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
173
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
140
174
  > - question: "What is the bug severity?"
141
175
  > - header: "Severity"
142
176
  > - options: [{ label: "Critical", description: "System down, data loss — needs immediate attention" }, { label: "High", description: "Major feature broken — significantly impacts users" }, { label: "Medium", description: "Feature impaired — workaround exists" }, { label: "Low", description: "Minor / cosmetic issue — no functional impact" }]
143
177
  > - multiSelect: false
144
- > - **Cursor / Codex / Antigravity / other:** use text list below
178
+ > **Cursor / Codex / Antigravity / other:** use text list below
145
179
 
146
180
  1. Critical - System down, data loss
147
181
  2. High - Major feature broken
@@ -219,12 +253,12 @@ Create `BUG-{N}.md`:
219
253
  5. Priority?
220
254
 
221
255
  > **Adapter-aware prompt:**
222
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
256
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
223
257
  > - question: "What is the feature priority?"
224
258
  > - header: "Priority"
225
259
  > - options: [{ label: "Must-have", description: "Critical for release — cannot ship without it" }, { label: "Should-have", description: "Important but not blocking — include if capacity allows" }, { label: "Nice-to-have", description: "Quality-of-life improvement — can defer to next milestone" }]
226
260
  > - multiSelect: false
227
- > - **Cursor / Codex / Antigravity / other:** use text list below
261
+ > **Cursor / Codex / Antigravity / other:** use text list below
228
262
 
229
263
  1. Must-have - Critical for release
230
264
  2. Should-have - Important but not blocking
@@ -256,6 +290,9 @@ Create `FEAT-{N}.md`:
256
290
  ## Summary
257
291
  {TITLE}
258
292
 
293
+ ## Research Findings
294
+ {Populated by research-agent if feasibility gate triggered (Step 2B); omit section if not applicable}
295
+
259
296
  ## Problem Statement
260
297
  {PROBLEM}
261
298
 
@@ -544,6 +581,8 @@ git push
544
581
  <step name="confirm">
545
582
  ## 7. Confirm
546
583
 
584
+ Output the request summary banner:
585
+
547
586
  ```
548
587
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
549
588
  VIEPILOT ► REQUEST CREATED ✓
@@ -558,15 +597,33 @@ git push
558
597
  File: .viepilot/requests/{TYPE}-{N}.md
559
598
 
560
599
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
561
- Next Steps
562
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
600
+ ```
601
+
602
+ Then — **Claude Code adapter (terminal): use AskUserQuestion**:
563
603
 
564
- /vp-request --list View all requests
565
- /vp-evolve ROADMAP + phase/tasks (before code)
566
- /vp-auto Implement theo task plan (sau evolve)
567
- /vp-request Create another request
568
- /vp-status See overall progress
604
+ ```
605
+ question: "Request {TYPE}-{N} logged. What would you like to do next?"
606
+ options:
607
+ - label: "Plan phase + tasks → /vp-evolve"
608
+ description: "Create ROADMAP entry, phase dir, and task files now (Recommended)"
609
+ - label: "Create another request → /vp-request"
610
+ description: "Log more requests before planning"
611
+ - label: "Done for now"
612
+ description: "Exit — request is saved in backlog"
613
+ ```
614
+
615
+ **On selection:**
616
+ - "Plan phase + tasks → /vp-evolve": invoke `/vp-evolve` skill
617
+ - "Create another request → /vp-request": invoke `/vp-request` skill
618
+ - "Done for now": print brief confirmation and exit
569
619
 
620
+ **Text fallback (Cursor, Codex, Copilot, Antigravity — AUQ not available):**
621
+ ```
622
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
623
+ Next:
624
+ - /vp-evolve Plan phase/tasks + ROADMAP
625
+ - /vp-request Create another request
626
+ - /vp-request --list View all requests
570
627
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
571
628
  ```
572
629
  </step>
@@ -8,7 +8,8 @@ Safe rollback to any ViePilot checkpoint with backup and state preservation.
8
8
  ## 1. List Available Checkpoints
9
9
 
10
10
  ```bash
11
- git tag --sort=-creatordate | rg "(^vp-p|^-*vp-backup|^[a-z0-9-]+-vp-p|^[a-z0-9-]+-vp-backup)" | head -20
11
+ git tag --sort=-creatordate | rg "(^vp-p|^-*vp-backup|^[a-z0-9._-]+-vp-p|^[a-z0-9._-]+-vp-backup)" | head -20
12
+ # [a-z0-9._-]+ matches both legacy and enriched (prefix-branch-version-vp-p*) formats (ENH-050)
12
13
  ```
13
14
 
14
15
  For each tag, get info:
@@ -127,13 +128,44 @@ git log -1 --oneline
127
128
  <step name="update_state">
128
129
  ## 7. Update State Files
129
130
 
130
- Parse tag to determine phase/task (support both legacy and project-scoped):
131
- - `vp-p{N}-t{M}` or `{project}-vp-p{N}-t{M}` → Phase N, Task M, status: in_progress
132
- - `vp-p{N}-t{M}-done` or `{project}-vp-p{N}-t{M}-done` → Phase N, Task M+1, status: not_started
133
- - `vp-p{N}-complete` or `{project}-vp-p{N}-complete` → Phase N+1, Task 1, status: not_started
131
+ Parse tag to determine phase/task 3 supported formats (ENH-050):
134
132
 
135
- Update HANDOFF.json accordingly.
136
- Update TRACKER.md progress.
133
+ - **Format A** (legacy): `vp-p{N}-t{M}[-done]` or `vp-p{N}-complete`
134
+ - **Format B** (project-scoped): `{project}-vp-p{N}-t{M}[-done]` or `{project}-vp-p{N}-complete`
135
+ - **Format C** (enriched): `{project}-{branch}-{version}-vp-p{N}-t{M}[-done|-complete]`
136
+
137
+ For all formats, extract N and M by matching the terminal segments:
138
+
139
+ ```bash
140
+ TAG="{selected_tag}"
141
+
142
+ # Extract phase number — works for all 3 formats
143
+ PHASE_NUM=$(echo "$TAG" | grep -oE 'vp-p[0-9]+' | grep -oE '[0-9]+$')
144
+
145
+ # Extract task number if present
146
+ TASK_NUM=$(echo "$TAG" | grep -oE '\-t[0-9]+' | tail -1 | grep -oE '[0-9]+$')
147
+
148
+ # Determine restore intent
149
+ if echo "$TAG" | grep -q '\-complete$'; then
150
+ # Phase complete tag → restore to start of next phase
151
+ RESTORE_PHASE=$((PHASE_NUM + 1))
152
+ RESTORE_TASK=1
153
+ RESTORE_STATUS="not_started"
154
+ elif echo "$TAG" | grep -q '\-done$'; then
155
+ # Task done tag → restore to start of next task
156
+ RESTORE_PHASE=$PHASE_NUM
157
+ RESTORE_TASK=$((TASK_NUM + 1))
158
+ RESTORE_STATUS="not_started"
159
+ else
160
+ # Task start tag → restore to in-progress state
161
+ RESTORE_PHASE=$PHASE_NUM
162
+ RESTORE_TASK=${TASK_NUM:-1}
163
+ RESTORE_STATUS="in_progress"
164
+ fi
165
+ ```
166
+
167
+ Update HANDOFF.json with `RESTORE_PHASE`, `RESTORE_TASK`, `RESTORE_STATUS`.
168
+ Update TRACKER.md progress accordingly.
137
169
  </step>
138
170
 
139
171
  <step name="confirm_success">