viepilot 2.15.0 → 2.23.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.
@@ -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
 
@@ -25,6 +26,8 @@ When `AskUserQuestion` is not available, each prompt block falls back to the pla
25
26
 
26
27
  <process>
27
28
 
29
+ > **AUQ preload — Claude Code adapter (ENH-059):** At session start, before any interactive prompt, call `ToolSearch` with `query: "select:AskUserQuestion"` to load the deferred schema. Required on Claude Code (terminal). Skip only if `ToolSearch` returns an error → use text fallback for that session.
30
+
28
31
  <step name="init">
29
32
  ## 1. Initialize
30
33
 
@@ -63,12 +66,12 @@ Parse `{{VP_ARGS}}` for type flag:
63
66
  If no flag, ask user:
64
67
 
65
68
  > **Adapter-aware prompt:**
66
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
69
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
67
70
  > - question: "What type of request would you like to create?"
68
71
  > - header: "Request type"
69
72
  > - 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
73
  > - multiSelect: false
71
- > - **Cursor / Codex / Antigravity / other:** use text menu below (Brainstorm and List options remain text-only)
74
+ > **Cursor / Codex / Antigravity / other:** use text menu below (Brainstorm and List options remain text-only)
72
75
 
73
76
  ```
74
77
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -86,6 +89,39 @@ What type of request?
86
89
  ```
87
90
  </step>
88
91
 
92
+ <step name="feasibility_gate">
93
+ ## 2B. Feasibility Gate — research-agent (ENH-057)
94
+
95
+ **Trigger**: auto-activate for **Feature** and **Enhancement** requests when any of:
96
+ - User description mentions a new platform, IDE, API, protocol, or SDK
97
+ - User asks "is this possible?", "how does X work?", "feasibility of X"
98
+ - Request type = Feature AND subject is an external integration
99
+
100
+ **Skip for**: Bug reports, internal refactors, Enhancement requests on known code.
101
+
102
+ If triggered:
103
+
104
+ **Claude Code (terminal) — invoke research-agent:**
105
+ ```
106
+ Agent({
107
+ subagent_type: "general-purpose",
108
+ description: "research-agent: feasibility study for {topic}",
109
+ prompt: `
110
+ Load agents/research-agent.md for full spec.
111
+ Topic: {extracted from user description}
112
+ Questions: ["What SDK/API exists?", "What are integration points?", "What config dir/convention?", "Feasibility rating?"]
113
+ Return a ## Research Findings section + ## Sources.
114
+ `
115
+ })
116
+ ```
117
+
118
+ **Non-Claude Code**: if web search available, perform inline research. Otherwise note "manual research needed" and continue gathering details.
119
+
120
+ **Output**: embed research-agent findings in the `## Research Findings` section of the request file.
121
+
122
+ > This gate made FEAT-019 (Copilot adapter) research systematic — apply it to all future platform/API feature requests.
123
+ </step>
124
+
89
125
  <step name="list_requests">
90
126
  ## 3. List Requests (if --list)
91
127
 
@@ -136,12 +172,12 @@ Options:
136
172
  6. Severity?
137
173
 
138
174
  > **Adapter-aware prompt:**
139
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
175
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
140
176
  > - question: "What is the bug severity?"
141
177
  > - header: "Severity"
142
178
  > - 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
179
  > - multiSelect: false
144
- > - **Cursor / Codex / Antigravity / other:** use text list below
180
+ > **Cursor / Codex / Antigravity / other:** use text list below
145
181
 
146
182
  1. Critical - System down, data loss
147
183
  2. High - Major feature broken
@@ -219,12 +255,12 @@ Create `BUG-{N}.md`:
219
255
  5. Priority?
220
256
 
221
257
  > **Adapter-aware prompt:**
222
- > - **Claude Code (terminal):** use `AskUserQuestion` tool spec:
258
+ > **Claude Code (terminal) — REQUIRED:** Call `AskUserQuestion` tool. Only fall back to text menu if the tool errors or is unavailable. AUQ spec:
223
259
  > - question: "What is the feature priority?"
224
260
  > - header: "Priority"
225
261
  > - 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
262
  > - multiSelect: false
227
- > - **Cursor / Codex / Antigravity / other:** use text list below
263
+ > **Cursor / Codex / Antigravity / other:** use text list below
228
264
 
229
265
  1. Must-have - Critical for release
230
266
  2. Should-have - Important but not blocking
@@ -256,6 +292,9 @@ Create `FEAT-{N}.md`:
256
292
  ## Summary
257
293
  {TITLE}
258
294
 
295
+ ## Research Findings
296
+ {Populated by research-agent if feasibility gate triggered (Step 2B); omit section if not applicable}
297
+
259
298
  ## Problem Statement
260
299
  {PROBLEM}
261
300
 
@@ -544,6 +583,8 @@ git push
544
583
  <step name="confirm">
545
584
  ## 7. Confirm
546
585
 
586
+ Output the request summary banner:
587
+
547
588
  ```
548
589
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
549
590
  VIEPILOT ► REQUEST CREATED ✓
@@ -558,15 +599,33 @@ git push
558
599
  File: .viepilot/requests/{TYPE}-{N}.md
559
600
 
560
601
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
561
- Next Steps
562
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
602
+ ```
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
+ Then **Claude Code adapter (terminal): use AskUserQuestion**:
569
605
 
606
+ ```
607
+ question: "Request {TYPE}-{N} logged. What would you like to do next?"
608
+ options:
609
+ - label: "Plan phase + tasks → /vp-evolve"
610
+ description: "Create ROADMAP entry, phase dir, and task files now (Recommended)"
611
+ - label: "Create another request → /vp-request"
612
+ description: "Log more requests before planning"
613
+ - label: "Done for now"
614
+ description: "Exit — request is saved in backlog"
615
+ ```
616
+
617
+ **On selection:**
618
+ - "Plan phase + tasks → /vp-evolve": invoke `/vp-evolve` skill
619
+ - "Create another request → /vp-request": invoke `/vp-request` skill
620
+ - "Done for now": print brief confirmation and exit
621
+
622
+ **Text fallback (Cursor, Codex, Copilot, Antigravity — AUQ not available):**
623
+ ```
624
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
625
+ Next:
626
+ - /vp-evolve Plan phase/tasks + ROADMAP
627
+ - /vp-request Create another request
628
+ - /vp-request --list View all requests
570
629
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
571
630
  ```
572
631
  </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">