viepilot 2.12.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +203 -0
  2. package/README.md +11 -9
  3. package/docs/dev/agents.md +131 -0
  4. package/docs/skills-reference.md +12 -0
  5. package/docs/user/features/adapters.md +51 -0
  6. package/docs/user/features/interactive-prompts.md +83 -0
  7. package/lib/adapters/antigravity.cjs +2 -1
  8. package/lib/adapters/claude-code.cjs +2 -1
  9. package/lib/adapters/codex.cjs +2 -1
  10. package/lib/adapters/copilot.cjs +44 -0
  11. package/lib/adapters/cursor.cjs +2 -1
  12. package/lib/adapters/index.cjs +1 -0
  13. package/lib/viepilot-install.cjs +9 -0
  14. package/package.json +1 -1
  15. package/skills/vp-audit/SKILL.md +15 -0
  16. package/skills/vp-auto/SKILL.md +12 -0
  17. package/skills/vp-brainstorm/SKILL.md +34 -0
  18. package/skills/vp-crystallize/SKILL.md +51 -1
  19. package/skills/vp-debug/SKILL.md +12 -0
  20. package/skills/vp-docs/SKILL.md +28 -6
  21. package/skills/vp-evolve/SKILL.md +32 -0
  22. package/skills/vp-info/SKILL.md +12 -0
  23. package/skills/vp-pause/SKILL.md +12 -0
  24. package/skills/vp-proposal/SKILL.md +12 -0
  25. package/skills/vp-request/SKILL.md +36 -0
  26. package/skills/vp-resume/SKILL.md +12 -0
  27. package/skills/vp-rollback/SKILL.md +12 -0
  28. package/skills/vp-status/SKILL.md +12 -0
  29. package/skills/vp-task/SKILL.md +12 -0
  30. package/skills/vp-ui-components/SKILL.md +12 -0
  31. package/skills/vp-update/SKILL.md +12 -0
  32. package/templates/proposal/docx/project-detail.docx +0 -0
  33. package/templates/proposal/pptx/general.pptx +0 -0
  34. package/templates/proposal/pptx/product-pitch.pptx +0 -0
  35. package/templates/proposal/pptx/tech-architecture.pptx +0 -0
  36. package/workflows/audit.md +72 -37
  37. package/workflows/autonomous.md +138 -9
  38. package/workflows/brainstorm.md +61 -0
  39. package/workflows/crystallize.md +219 -8
  40. package/workflows/documentation.md +26 -11
  41. package/workflows/evolve.md +76 -7
  42. package/workflows/request.md +99 -7
  43. package/workflows/rollback.md +39 -7
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+ const os = require('os');
3
+ const path = require('path');
4
+ const fs = require('fs');
5
+
6
+ module.exports = {
7
+ id: 'copilot',
8
+ name: 'GitHub Copilot',
9
+ // Paths (home-relative; resolved at install time)
10
+ skillsDir: (home) => path.join(home, '.config', 'gh-copilot', 'skills'),
11
+ viepilotDir: (home) => path.join(home, '.config', 'gh-copilot', 'viepilot'),
12
+ // {envToolDir} in SKILL.md files resolves to this value at install time (ENH-035)
13
+ executionContextBase: '.config/gh-copilot/viepilot',
14
+ // Copilot Chat uses /skill-name (same as Claude Code / Cursor)
15
+ postInstallHint: 'Open Copilot Chat in VS Code and type /vp-status to get started',
16
+ hooks: {
17
+ configFile: null, // Copilot uses .agent.md convention, not programmatic hooks
18
+ schema: 'copilot',
19
+ supportedEvents: []
20
+ },
21
+ installSubdirs: [
22
+ 'workflows',
23
+ path.join('templates', 'project'),
24
+ path.join('templates', 'phase'),
25
+ path.join('templates', 'architect'),
26
+ 'bin',
27
+ 'lib',
28
+ 'ui-components',
29
+ 'agents'
30
+ ],
31
+ isAvailable: (home) => {
32
+ const h = home || os.homedir();
33
+ // Primary: gh-copilot config dir exists
34
+ if (fs.existsSync(path.join(h, '.config', 'gh-copilot'))) return true;
35
+ // Secondary: gh CLI installed at common paths (user likely has Copilot access)
36
+ const ghPaths = [
37
+ '/usr/local/bin/gh',
38
+ '/opt/homebrew/bin/gh',
39
+ '/usr/bin/gh',
40
+ path.join(h, '.local', 'bin', 'gh'),
41
+ ];
42
+ return ghPaths.some((p) => fs.existsSync(p));
43
+ },
44
+ };
@@ -23,7 +23,8 @@ module.exports = {
23
23
  path.join('templates', 'architect'),
24
24
  'bin',
25
25
  'lib',
26
- 'ui-components'
26
+ 'ui-components',
27
+ 'agents'
27
28
  ],
28
29
  isAvailable: (home) => {
29
30
  const h = home || os.homedir();
@@ -6,6 +6,7 @@ const adapters = {
6
6
  'cursor-ide': require('./cursor.cjs'), // alias
7
7
  'antigravity': require('./antigravity.cjs'),
8
8
  'codex': require('./codex.cjs'),
9
+ 'copilot': require('./copilot.cjs'),
9
10
  };
10
11
 
11
12
  /**
@@ -191,6 +191,15 @@ function buildInstallPlan(packageRoot, envSource = process.env, opts = {}) {
191
191
  steps.push(ent.isDirectory() ? { kind: 'copy_dir', from: src, to: dest } : { kind: 'copy_file', from: src, to: dest });
192
192
  }
193
193
  }
194
+ // ENH-057: copy agents/ directory (agents layer added in v2.20.0)
195
+ const agentsRoot = path.join(root, 'agents');
196
+ if (fs.existsSync(agentsRoot)) {
197
+ for (const ent of listDirEntries(root, 'agents')) {
198
+ const src = path.join(root, 'agents', ent.name);
199
+ const dest = path.join(vpDir, 'agents', ent.name);
200
+ steps.push(ent.isDirectory() ? { kind: 'copy_dir', from: src, to: dest } : { kind: 'copy_file', from: src, to: dest });
201
+ }
202
+ }
194
203
  // BUG-007: copy package.json so resolveViepilotPackageRoot() finds the root
195
204
  steps.push({ kind: 'copy_file', from: path.join(root, 'package.json'), to: path.join(vpDir, 'package.json') });
196
205
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viepilot",
3
- "version": "2.12.0",
3
+ "version": "2.22.0",
4
4
  "description": "**Autonomous Vibe Coding Framework / Bộ khung phát triển tự động có kiểm soát**",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -4,6 +4,18 @@ description: "Audit state, docs drift, and stack best-practice compliance — wo
4
4
  version: 0.3.2
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-AUDIT v0.3.2 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-audit`, `/vp-audit`, "audit", "kiểm tra", "check docs"
@@ -74,6 +86,9 @@ When auditing a project bootstrapped via `vp-crystallize --brownfield`:
74
86
  - `ARCHITECTURE.md` counts vs actual `skills/`, `workflows/`, CLI
75
87
  - `README.md` viepilot-specific badges (version, skills-N, workflows-N)
76
88
  - `docs/skills-reference.md` sections vs `skills/` directory
89
+ - **Silent by default (ENH-049):** Tier 4 output is suppressed when all checks pass (✅)
90
+ or when the check is skipped (non-framework repo). Output only appears when issues (⚠️)
91
+ are found. Non-framework repos: Tier 4 skipped silently with no message.
77
92
 
78
93
  **Output:**
79
94
  - Report by 4 tiers, each tier with its own status
@@ -4,6 +4,18 @@ description: "Autonomous execution loop with control points and recovery"
4
4
  version: 0.2.2
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-AUTO v0.2.2 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-auto`, `/vp-auto`, "auto", "vibe", "chạy tự động"
@@ -4,6 +4,18 @@ description: "Brainstorm session to collect ideas and decisions for the project"
4
4
  version: 1.1.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-BRAINSTORM v1.1.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-brainstorm`, `/vp-brainstorm`, hoặc yêu cầu "brainstorm"
@@ -107,3 +119,25 @@ Key steps:
107
119
  - [ ] **FEAT-009**: intake completed, binding already present, **or** waiver with reason before Completed; session records **`## Project meta intake (FEAT-009)`**
108
120
  - [ ] Next steps suggested
109
121
  </success_criteria>
122
+
123
+ ## Adapter Compatibility
124
+
125
+ ### AskUserQuestion Tool (ENH-048)
126
+ This skill uses adapter-aware interactive prompts. Behavior depends on your adapter:
127
+
128
+ | Adapter | Interactive Prompts | Notes |
129
+ |---------|---------------------|-------|
130
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
131
+ | Claude Code (VS Code ext) | ⚠️ Partial | Terminal yes; VS Code UI pending [anthropics/claude-code#12609](https://github.com/anthropics/claude-code/issues/12609) |
132
+ | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
133
+ | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
134
+ | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
135
+ | Antigravity (native agent) | ❌ Text fallback | Artifact model, no raw tool calls |
136
+ | GitHub Copilot | ✅ `/skill-name` in Chat | Via `.agent.md` custom agent; AUQ not available — text fallback |
137
+
138
+ When `AskUserQuestion` is not available, the skill automatically falls back to
139
+ plain-text numbered list prompts — no configuration required.
140
+
141
+ **Prompts using AskUserQuestion in this skill:**
142
+ - Session intent (continue / review / new — Step 2)
143
+ - Landing page layout selection (Step 4 — Layout A/B/C/D)
@@ -4,6 +4,18 @@ description: "Convert brainstorm sessions into executable artifacts"
4
4
  version: 0.8.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-CRYSTALLIZE v0.8.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-crystallize`, `/vp-crystallize`, hoặc "crystallize", "setup project"
@@ -100,8 +112,21 @@ Scanner runs 12 signal categories across the existing codebase:
100
112
  11. **Git history** — commit convention, version pattern, contributors, repo URL
101
113
  12. **Language survey** — file extension glob → language distribution
102
114
 
115
+ **Multi-repo / monorepo support (ENH-047):**
116
+
117
+ - **Git submodule detection** — reads `.gitmodules`; scans each initialized submodule path (Signal Cat 1+2+4); records uninitialized paths as `primary_language: MISSING`. Never runs `git submodule update` — read-only.
118
+ - **Polyrepo hints** — detects docker-compose `../` build contexts, `file:../` deps, CI cross-repo clones, README external links, Makefile `cd ../` targets; outputs `polyrepo_hints[]`; prompts user to supply `related_repos[]` (optional).
119
+ - **Per-module gap detection** — every `modules[]` entry carries `gap_tier` (DETECTED/ASSUMED/MISSING), `must_detect_status{}` (evidence per field: value + source + tier), and `open_questions[]`. A module with `gap_tier: MISSING` blocks artifact generation with a targeted per-field prompt.
120
+
121
+ **Scan Report contains:**
122
+ - Root `gap_tier` (= worst tier across all modules: MISSING > ASSUMED > DETECTED)
123
+ - `modules[]` — one entry per workspace/submodule/root with `gap_tier`, `must_detect_status{}`, `open_questions[]`
124
+ - `polyrepo_hints[]` — polyrepo signals (omitted when empty, no empty arrays)
125
+ - `related_repos[]` — user-supplied sibling repos (omitted when empty)
126
+ - Root `open_questions[]` — includes rollup from all modules
127
+
103
128
  Produces **Scan Report** (YAML) with DETECTED / ASSUMED / MISSING classification.
104
- MUST-DETECT gaps (project_name, primary_language, ≥1 framework, current_version) block artifact generation until user fills interactively.
129
+ MUST-DETECT gaps (root: project_name, primary_language, ≥1 framework, current_version; per-module: primary_language, framework, module_purpose, entry_point) block artifact generation until user fills interactively.
105
130
  Generates `docs/brainstorm/session-brownfield-import.md` stub for `vp-audit` compatibility.
106
131
  Safety: never reads `.env`; skips `node_modules/`, `.git/`, `target/`, `build/`, `dist/`.
107
132
  </objective>
@@ -250,3 +275,28 @@ Ask user for (confirm proposals from profile if present):
250
275
  - [ ] **ENH-022:** Every generated Mermaid diagram has a `.viepilot/architecture/<canonical-name>.mermaid` file in sync with `ARCHITECTURE.md` (no extra files created for N/A)
251
276
  - [ ] **FEAT-009:** When profile is bound — ARCHITECTURE + PROJECT-CONTEXT record the profile source; if not — state none / not configured explicitly
252
277
  </success_criteria>
278
+
279
+ ## Adapter Compatibility
280
+
281
+ ### AskUserQuestion Tool (ENH-048)
282
+ This skill uses adapter-aware interactive prompts. Behavior depends on your adapter:
283
+
284
+ | Adapter | Interactive Prompts | Notes |
285
+ |---------|---------------------|-------|
286
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
287
+ | Claude Code (VS Code ext) | ⚠️ Partial | Terminal yes; VS Code UI pending [anthropics/claude-code#12609](https://github.com/anthropics/claude-code/issues/12609) |
288
+ | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
289
+ | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
290
+ | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
291
+ | Antigravity (native agent) | ❌ Text fallback | Artifact model, no raw tool calls |
292
+ | GitHub Copilot | ✅ `/skill-name` in Chat | Via `.agent.md` custom agent; AUQ not available — text fallback |
293
+
294
+ When `AskUserQuestion` is not available, the skill automatically falls back to
295
+ plain-text numbered list prompts — no configuration required.
296
+
297
+ **Prompts using AskUserQuestion in this skill:**
298
+ - License selection (Step 0 metadata)
299
+ - Brownfield overwrite confirmation (Step 0-B)
300
+ - Polyrepo related-repos prompt (Step 0-B)
301
+ - UI direction gate choice (Step 1A)
302
+ - Architect mode suggestion (Step 1D)
@@ -4,6 +4,18 @@ description: "Systematic debugging with persistent state tracking across session
4
4
  version: 0.2.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-DEBUG v0.2.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-debug`, `/vp-debug`, "debug", "gỡ lỗi"
@@ -4,6 +4,18 @@ description: "Generate comprehensive documentation for the project"
4
4
  version: 0.2.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-DOCS v0.2.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-docs`, `/vp-docs`, "docs", "documentation", "tài liệu"
@@ -80,19 +92,29 @@ Optional flags:
80
92
 
81
93
  ### Step 0: Resolve Project Context (ALWAYS first)
82
94
  ```bash
83
- # Read actual GitHub URL — never use hardcoded placeholder
95
+ # Forge-agnostic remote URL parser supports GitHub, GitLab, Bitbucket, Azure DevOps, Gitea, self-hosted
84
96
  REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "")
85
- GITHUB_SLUG=$(echo "$REMOTE_URL" | sed 's|.*github\.com[:/]||; s|\.git$||')
86
- GITHUB_OWNER=$(echo "$GITHUB_SLUG" | cut -d'/' -f1)
87
- GITHUB_REPO=$(echo "$GITHUB_SLUG" | cut -d'/' -f2)
97
+ if echo "$REMOTE_URL" | grep -q 'dev\.azure\.com'; then
98
+ GIT_HOST="dev.azure.com"
99
+ GIT_OWNER=$(echo "$REMOTE_URL" | sed 's|.*dev\.azure\.com/||; s|/.*||')
100
+ GIT_REPO=$(echo "$REMOTE_URL" | sed 's|.*/_git/||; s|\.git$||; s|/$||')
101
+ elif echo "$REMOTE_URL" | grep -q '^git@'; then
102
+ GIT_HOST=$(echo "$REMOTE_URL" | sed 's|^git@||; s|:.*||')
103
+ GIT_OWNER=$(echo "$REMOTE_URL" | sed 's|^git@[^:]*:||; s|/.*||')
104
+ GIT_REPO=$(echo "$REMOTE_URL" | sed 's|^git@[^:]*:[^/]*/||; s|\.git$||')
105
+ else
106
+ GIT_HOST=$(echo "$REMOTE_URL" | sed 's|^https\?://||; s|/.*||')
107
+ GIT_OWNER=$(echo "$REMOTE_URL" | sed 's|^https\?://[^/]*/||; s|/.*||')
108
+ GIT_REPO=$(echo "$REMOTE_URL" | sed 's|^https\?://[^/]*/[^/]*/||; s|\.git$||; s|/$||')
109
+ fi
88
110
  # Fallback: use searchable placeholder, not 'your-org'
89
- [ -z "$GITHUB_OWNER" ] && GITHUB_OWNER="{GITHUB_OWNER}" && GITHUB_REPO="{GITHUB_REPO}"
111
+ [ -z "$GIT_OWNER" ] && GIT_HOST="{GIT_HOST}" && GIT_OWNER="{GIT_OWNER}" && GIT_REPO="{GIT_REPO}"
90
112
 
91
113
  ACTUAL_SKILLS=$(ls skills/*/SKILL.md 2>/dev/null | wc -l | tr -d ' ')
92
114
  ACTUAL_WORKFLOWS=$(ls workflows/*.md 2>/dev/null | wc -l | tr -d ' ')
93
115
  ```
94
116
 
95
- > Use `$GITHUB_OWNER/$GITHUB_REPO` in all generated files.
117
+ > Use `$GIT_HOST`, `$GIT_OWNER`, `$GIT_REPO` in all generated files.
96
118
  > Use `$ACTUAL_SKILLS` and `$ACTUAL_WORKFLOWS` for counts.
97
119
  > **Never write** `your-org`, `YOUR_USERNAME`, `YOUR_ORG` into generated files.
98
120
 
@@ -4,6 +4,18 @@ description: "Upgrade, add features, or start a new milestone"
4
4
  version: 0.3.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-EVOLVE v0.3.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-evolve`, `/vp-evolve`, "evolve", "thêm feature", "milestone mới", "upgrade"
@@ -180,6 +192,26 @@ Next action: /vp-auto --from {new_phase}
180
192
  ```
181
193
  </process>
182
194
 
195
+ ## Adapter Compatibility
196
+
197
+ ### AskUserQuestion Tool (ENH-048 + ENH-055)
198
+
199
+ | Adapter | Interactive Prompts | Notes |
200
+ |---------|---------------------|-------|
201
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
202
+ | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
203
+ | Codex CLI | ❌ Text fallback | Native tool N/A |
204
+ | Antigravity (native agent) | ❌ Text fallback | Artifact model, no raw tool calls |
205
+ | GitHub Copilot | ✅ `/skill-name` in Chat | Via `.agent.md` custom agent; AUQ not available — text fallback |
206
+
207
+ **Claude Code (terminal):** Always call `AskUserQuestion` first. Only fall back to the plain-text menu if the tool returns an error or is unavailable.
208
+
209
+ **Prompts using AskUserQuestion in this skill:**
210
+ - Evolve mode selection (Step 2 — Add Feature / New Milestone / Refactor)
211
+ - Complexity selection (Step 3A — S/M/L/XL)
212
+ - Brainstorm routing decision (Step 3A — Yes / No)
213
+ - Workflow continuation (Step 5 — Execute /vp-auto / Create request / Done)
214
+
183
215
  <success_criteria>
184
216
  - [ ] User intent correctly identified
185
217
  - [ ] Architecture compatibility checked
@@ -4,6 +4,18 @@ description: "Display ViePilot version, npm latest, skills/workflows list via vp
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-INFO v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-info`, `/vp-info`, "viepilot version", "phiên bản viepilot", "skills list bundle"
@@ -4,6 +4,18 @@ description: "Pause work with context preservation to resume later"
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-PAUSE v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-pause`, `/vp-pause`, "pause", "dừng", "tạm nghỉ"
@@ -4,6 +4,18 @@ description: "Generate professional proposal packages (.pptx + .docx + .md) from
4
4
  version: 0.1.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-PROPOSAL v0.1.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-proposal`, `/vp-proposal`, "proposal", "pitch deck", "presentation", "tài liệu đề xuất"
@@ -4,6 +4,18 @@ description: "Create new request: feature, bug fix, enhancement, or brainstorm c
4
4
  version: 0.2.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-REQUEST v0.2.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-request`, `/vp-request`, "request", "yêu cầu", "bug", "lỗi", "feature mới", "nâng cấp"
@@ -265,3 +277,27 @@ Update `.viepilot/TRACKER.md`:
265
277
  - [ ] TRACKER.md updated
266
278
  - [ ] Appropriate routing suggested
267
279
  </success_criteria>
280
+
281
+ ## Adapter Compatibility
282
+
283
+ ### AskUserQuestion Tool (ENH-048)
284
+ This skill uses adapter-aware interactive prompts. Behavior depends on your adapter:
285
+
286
+ | Adapter | Interactive Prompts | Notes |
287
+ |---------|---------------------|-------|
288
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
289
+ | Claude Code (VS Code ext) | ⚠️ Partial | Terminal yes; VS Code UI pending [anthropics/claude-code#12609](https://github.com/anthropics/claude-code/issues/12609) |
290
+ | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
291
+ | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
292
+ | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
293
+ | Antigravity (native agent) | ❌ Text fallback | Artifact model, no raw tool calls |
294
+ | GitHub Copilot | ✅ `/skill-name` in Chat | Via `.agent.md` custom agent; AUQ not available — text fallback |
295
+
296
+ When `AskUserQuestion` is not available, the skill automatically falls back to
297
+ plain-text numbered list prompts — no configuration required.
298
+
299
+ **Prompts using AskUserQuestion in this skill:**
300
+ - Request type detection (Bug / Feature / Enhancement / Tech Debt — Step 2)
301
+ - Bug severity selection (Critical / High / Medium / Low — Step 4A)
302
+ - Feature priority selection (Must-have / Should-have / Nice-to-have — Step 4B)
303
+ - Workflow continuation (Step 6 — Plan /vp-evolve / Create another / Done)
@@ -4,6 +4,18 @@ description: "Resume work from previous session with full context restoration"
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-RESUME v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-resume`, `/vp-resume`, "resume", "tiếp tục", "where was i"
@@ -4,6 +4,18 @@ description: "Rollback to any checkpoint safely with state preservation"
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-ROLLBACK v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-rollback`, `/vp-rollback`, "rollback", "quay lại"
@@ -4,6 +4,18 @@ description: "Display progress dashboard and actionable insights"
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-STATUS v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-status`, `/vp-status`, "status", "tiến độ", "đang ở đâu"
@@ -4,6 +4,18 @@ description: "Manual control over individual tasks"
4
4
  version: 0.2.0
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-TASK v0.2.0 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-task`, `/vp-task`
@@ -4,6 +4,18 @@ description: "Manage workflow for collecting and reusing UI components"
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-UI-COMPONENTS v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-ui-components`, `/vp-ui-components`, "ui components", "component library", "21st.dev component"
@@ -4,6 +4,18 @@ description: "Upgrade viepilot package via npm (dry-run, --yes, --global) via vp
4
4
  version: 0.1.1
5
5
  ---
6
6
 
7
+ <greeting>
8
+ ## Invocation Banner
9
+
10
+ Output this banner as the **first** thing on every invocation — before questions, work, or any other output:
11
+
12
+ ```
13
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
14
+ VIEPILOT ► VP-UPDATE v0.1.1 (fw 2.19.0)
15
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
16
+ ```
17
+ </greeting>
18
+
7
19
  <cursor_skill_adapter>
8
20
  ## A. Skill Invocation
9
21
  - Skill được gọi khi user mention `vp-update`, `/vp-update`, "upgrade viepilot", "cập nhật viepilot npm"