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.
- package/CHANGELOG.md +137 -0
- package/README.md +3 -3
- package/bin/viepilot.cjs +3 -2
- 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 +28 -0
- package/skills/vp-brainstorm/SKILL.md +18 -2
- package/skills/vp-crystallize/SKILL.md +18 -2
- package/skills/vp-debug/SKILL.md +12 -0
- package/skills/vp-docs/SKILL.md +12 -0
- package/skills/vp-evolve/SKILL.md +33 -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 +19 -2
- 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 +140 -9
- package/workflows/brainstorm.md +41 -6
- package/workflows/crystallize.md +38 -12
- package/workflows/evolve.md +52 -17
- package/workflows/request.md +74 -15
- package/workflows/rollback.md +39 -7
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
|
|
|
@@ -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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
>
|
|
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
|
-
|
|
562
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
602
|
+
```
|
|
563
603
|
|
|
564
|
-
|
|
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>
|
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">
|