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.
- package/CHANGELOG.md +124 -0
- package/README.md +3 -3
- package/docs/dev/agents.md +131 -0
- package/docs/user/features/adapters.md +51 -0
- package/lib/adapters/antigravity.cjs +2 -1
- package/lib/adapters/claude-code.cjs +2 -1
- package/lib/adapters/codex.cjs +2 -1
- package/lib/adapters/copilot.cjs +44 -0
- package/lib/adapters/cursor.cjs +2 -1
- package/lib/adapters/index.cjs +1 -0
- package/lib/viepilot-install.cjs +9 -0
- package/package.json +1 -1
- package/skills/vp-audit/SKILL.md +15 -0
- package/skills/vp-auto/SKILL.md +12 -0
- package/skills/vp-brainstorm/SKILL.md +14 -1
- package/skills/vp-crystallize/SKILL.md +14 -1
- package/skills/vp-debug/SKILL.md +12 -0
- package/skills/vp-docs/SKILL.md +12 -0
- package/skills/vp-evolve/SKILL.md +32 -0
- package/skills/vp-info/SKILL.md +12 -0
- package/skills/vp-pause/SKILL.md +12 -0
- package/skills/vp-proposal/SKILL.md +12 -0
- package/skills/vp-request/SKILL.md +15 -1
- package/skills/vp-resume/SKILL.md +12 -0
- package/skills/vp-rollback/SKILL.md +12 -0
- package/skills/vp-status/SKILL.md +12 -0
- package/skills/vp-task/SKILL.md +12 -0
- package/skills/vp-ui-components/SKILL.md +12 -0
- package/skills/vp-update/SKILL.md +12 -0
- package/workflows/audit.md +72 -37
- package/workflows/autonomous.md +138 -9
- package/workflows/brainstorm.md +41 -6
- package/workflows/crystallize.md +38 -12
- package/workflows/evolve.md +50 -17
- package/workflows/request.md +72 -15
- package/workflows/rollback.md +39 -7
package/workflows/brainstorm.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
package/workflows/crystallize.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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?
|
package/workflows/evolve.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
> **
|
|
58
|
-
>
|
|
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
|
-
> **
|
|
85
|
-
>
|
|
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
|
-
>
|
|
93
|
+
> **Cursor / Codex / Antigravity / other:** use text below
|
|
91
94
|
|
|
92
95
|
5. Estimated complexity? (S/M/L/XL)
|
|
93
96
|
|
|
94
|
-
> **
|
|
95
|
-
>
|
|
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
|
-
>
|
|
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
|
-
|
|
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
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
-
|
|
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>
|
package/workflows/request.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
|
|
562
|
-
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
Then — **Claude Code adapter (terminal): use AskUserQuestion**:
|
|
563
603
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
/vp-
|
|
568
|
-
|
|
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>
|
package/workflows/rollback.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
136
|
-
|
|
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">
|