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.
@@ -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"
@@ -271,14 +283,18 @@ This skill uses adapter-aware interactive prompts. Behavior depends on your adap
271
283
 
272
284
  | Adapter | Interactive Prompts | Notes |
273
285
  |---------|---------------------|-------|
274
- | Claude Code (terminal) | ✅ `AskUserQuestion` tool | Click-to-select UI, multi-select, preview panels |
286
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
275
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) |
276
288
  | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
277
289
  | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
278
290
  | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
279
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
+ **Claude Code (terminal) — AUQ preload required (ENH-059):**
295
+ Before the first interactive prompt, call `ToolSearch` with `query: "select:AskUserQuestion"` to load the deferred tool schema. Only after `ToolSearch` succeeds can `AskUserQuestion` be invoked. If `ToolSearch` returns an error, fall back to plain-text numbered list for that session.
280
296
 
281
- When `AskUserQuestion` is not available, the skill automatically falls back to
297
+ When `AskUserQuestion` is not available on other adapters, the skill automatically falls back to
282
298
  plain-text numbered list prompts — no configuration required.
283
299
 
284
300
  **Prompts using AskUserQuestion in this skill:**
@@ -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"
@@ -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,27 @@ 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) — AUQ preload required (ENH-059):**
208
+ Before the first interactive prompt, call `ToolSearch` with `query: "select:AskUserQuestion"` to load the deferred tool schema. Only after `ToolSearch` succeeds can `AskUserQuestion` be invoked. If `ToolSearch` returns an error, fall back to plain-text numbered list for that session.
209
+
210
+ **Prompts using AskUserQuestion in this skill:**
211
+ - Evolve mode selection (Step 2 — Add Feature / New Milestone / Refactor)
212
+ - Complexity selection (Step 3A — S/M/L/XL)
213
+ - Brainstorm routing decision (Step 3A — Yes / No)
214
+ - Workflow continuation (Step 5 — Execute /vp-auto / Create request / Done)
215
+
183
216
  <success_criteria>
184
217
  - [ ] User intent correctly identified
185
218
  - [ ] 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"
@@ -273,17 +285,22 @@ This skill uses adapter-aware interactive prompts. Behavior depends on your adap
273
285
 
274
286
  | Adapter | Interactive Prompts | Notes |
275
287
  |---------|---------------------|-------|
276
- | Claude Code (terminal) | ✅ `AskUserQuestion` tool | Click-to-select UI, multi-select, preview panels |
288
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
277
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) |
278
290
  | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
279
291
  | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
280
292
  | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
281
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
+ **Claude Code (terminal) — AUQ preload required (ENH-059):**
297
+ Before the first interactive prompt, call `ToolSearch` with `query: "select:AskUserQuestion"` to load the deferred tool schema. Only after `ToolSearch` succeeds can `AskUserQuestion` be invoked. If `ToolSearch` returns an error, fall back to plain-text numbered list for that session.
282
298
 
283
- When `AskUserQuestion` is not available, the skill automatically falls back to
299
+ When `AskUserQuestion` is not available on other adapters, the skill automatically falls back to
284
300
  plain-text numbered list prompts — no configuration required.
285
301
 
286
302
  **Prompts using AskUserQuestion in this skill:**
287
303
  - Request type detection (Bug / Feature / Enhancement / Tech Debt — Step 2)
288
304
  - Bug severity selection (Critical / High / Medium / Low — Step 4A)
289
305
  - Feature priority selection (Must-have / Should-have / Nice-to-have — Step 4B)
306
+ - 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"
@@ -100,7 +100,10 @@ fi
100
100
  ```bash
101
101
  # List completed phases (PHASE-STATE.md with status: complete)
102
102
  # List git tags matching legacy + project-scoped complete format
103
- COMPLETE_TAGS=$(git tag 2>/dev/null | grep -E '(^vp-p[0-9]+-complete$)|(^[a-z0-9-]+-vp-p[0-9]+-complete$)' | sort)
103
+ COMPLETE_TAGS=$(git tag 2>/dev/null | grep -E \
104
+ '(^vp-p[0-9]+-complete$)|(^[a-z0-9-]+-vp-p[0-9]+-complete$)|(^[a-z0-9._-]+-[a-z0-9._-]+-[0-9]+\.[0-9]+\.[0-9]+-vp-p[0-9]+-complete$)' \
105
+ | sort)
106
+ # Third alternative matches enriched format: prefix-branch-version-vp-pN-complete (ENH-050)
104
107
  # Report any phase marked complete in PHASE-STATE.md without a git tag
105
108
  ```
106
109
 
@@ -215,7 +218,8 @@ for phase_state in $RECENT_PHASES; do
215
218
  PHASE_NUM=$(basename "$PHASE_DIR" | grep -o '^[0-9]*' | sed 's/^0*//')
216
219
  TAG_PREFIX=$(vp-tools tag-prefix --raw 2>/dev/null || echo "vp")
217
220
  PHASE_TAG="${TAG_PREFIX}-p${PHASE_NUM}-complete"
218
- PREV_TAG=$(git tag --sort=-version:refname 2>/dev/null | grep -E "(vp-p.*-complete|[a-z0-9-]+-vp-p.*-complete)" | grep -A1 "^$PHASE_TAG$" | tail -1)
221
+ PREV_TAG=$(git tag --sort=-version:refname 2>/dev/null | grep -E "(vp-p.*-complete|[a-z0-9._-]+-vp-p.*-complete)" | grep -A1 "^$PHASE_TAG$" | tail -1)
222
+ # [a-z0-9._-]+ covers both legacy (viepilot-vp-p60) and enriched (viepilot-main-2.17.0-vp-p80) formats
219
223
  if [ -n "$PREV_TAG" ]; then
220
224
  DOCS_CHANGED=$(git diff "$PREV_TAG"..HEAD --name-only 2>/dev/null | grep "^docs/" | wc -l | tr -d ' ')
221
225
  if [ "$DOCS_CHANGED" -eq 0 ]; then
@@ -338,8 +342,7 @@ Include source links and last-updated timestamp.
338
342
 
339
343
  ```bash
340
344
  if [ "$IS_VIEPILOT_FRAMEWORK" != "true" ]; then
341
- echo "→ Tier 4 skipped (not a viepilot framework repo)"
342
- # Jump to step 5 (report)
345
+ # Tier 4 skipped silently — not a viepilot framework repo
343
346
  fi
344
347
  ```
345
348
 
@@ -389,14 +392,22 @@ MISSING_IN_SKILLSREF=$(comm -23 <(echo "$ACTUAL_SKILLS_LIST") <(echo "$DOCUMENTE
389
392
  ```
390
393
 
391
394
  ### 4f. Report Tier 4 results
392
- ```
393
- TIER 4: Framework Integrity
394
- ─────────────────────────────────────────────────
395
- Skills count (ARCHITECTURE.md) {N in sync | ⚠️ N actual vs M documented}
396
- Workflows count {✅ N in sync | ⚠️ N actual vs M documented}
397
- CLI commands count {✅ N in sync | ⚠️ N actual vs M documented}
398
- README.md badges {✅ In sync | ⚠️ version/skills/workflows drift}
399
- docs/skills-reference.md {✅ Complete | ⚠️ N skills missing}
395
+
396
+ > **Silent by default (ENH-049):** Only output Tier 4 results when `TIER4_ISSUES > 0`.
397
+ > If all checks pass or Tier 4 was skipped, produce no output — the user does not
398
+ > need to see "In sync" or "ℹ️ Skipped" every run.
399
+
400
+ ```bash
401
+ if [ "$TIER4_ISSUES" -gt 0 ]; then
402
+ echo " TIER 4: Framework Integrity"
403
+ echo " ─────────────────────────────────────────────────"
404
+ # Print each failing check:
405
+ # Skills count (ARCHITECTURE.md) ⚠️ N actual vs M documented
406
+ # Workflows count ⚠️ N actual vs M documented
407
+ # CLI commands count ⚠️ N actual vs M documented
408
+ # README.md badges ⚠️ version/skills/workflows drift
409
+ # docs/skills-reference.md ⚠️ N skills missing
410
+ fi
400
411
  ```
401
412
  </step>
402
413
 
@@ -412,7 +423,6 @@ MISSING_IN_SKILLSREF=$(comm -23 <(echo "$ACTUAL_SKILLS_LIST") <(echo "$DOCUMENTE
412
423
  Tier 1: ViePilot State ✅ All consistent
413
424
  Tier 2: Project Docs ✅ No drift detected
414
425
  Tier 3: Stack Practices {✅ In sync | ⚠️ N issues}
415
- Tier 4: Framework {✅ In sync | ℹ️ Skipped}
416
426
 
417
427
  Everything looks good!
418
428
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -427,7 +437,9 @@ MISSING_IN_SKILLSREF=$(comm -23 <(echo "$ACTUAL_SKILLS_LIST") <(echo "$DOCUMENTE
427
437
  Tier 1: ViePilot State {✅ | ⚠️ N issues}
428
438
  Tier 2: Project Docs {✅ | ⚠️ N issues}
429
439
  Tier 3: Stack Practices {✅ | ⚠️ N issues}
430
- Tier 4: Framework { | ⚠️ N issues | ℹ️ Skipped}
440
+ {if TIER4_ISSUES > 0}
441
+ Tier 4: Framework ⚠️ {TIER4_ISSUES} issues
442
+ {/if}
431
443
 
432
444
  ISSUES DETAIL:
433
445
  {list each issue with context}
@@ -512,32 +524,55 @@ Create `.viepilot/audit-report.md`:
512
524
  <integration>
513
525
  ## Auto-Hook Integration
514
526
 
515
- Add to `workflows/autonomous.md` after phase complete:
527
+ The following `&lt;step name="post_phase_audit"&gt;` block is inserted into `workflows/autonomous.md`
528
+ immediately after the `&lt;step name="phase_complete"&gt;` block (after git tag + push, before
529
+ starting the next phase).
516
530
 
517
531
  ```xml
518
- <step name="post_phase_audit">
519
- ## Post-Phase Documentation Audit
520
-
521
- After marking phase complete:
522
-
523
- 1. Run silent audit (Tier 1 + Tier 2 only)
524
- ```bash
525
- # Conceptually:
526
- /vp-audit --silent
527
- ```
528
-
529
- 2. If issues found:
530
- ```
531
- ⚠️ Documentation may be out of sync.
532
-
533
- Run /vp-audit to check and fix.
534
-
535
- Continue anyway? (y/n)
536
- ```
537
-
538
- 3. Recommend running before version bump
539
- </step>
532
+ &lt;step name="post_phase_audit"&gt;
533
+ ## Post-Phase Documentation Audit (Tier 1 + 2 only)
534
+
535
+ After the phase-complete git tag is created, run a fast silent audit:
536
+
537
+ ```bash
538
+ AUDIT_ISSUES=0
539
+
540
+ # Tier 1: ROADMAP.md phase marked ✅?
541
+ PHASE_IN_ROADMAP=$(grep -c "Phase ${PHASE_NUM}.*✅" .viepilot/ROADMAP.md 2>/dev/null || echo "0")
542
+ [ "$PHASE_IN_ROADMAP" -eq 0 ] && AUDIT_ISSUES=$((AUDIT_ISSUES+1)) && \
543
+ echo "⚠️ Tier 1: Phase ${PHASE_NUM} not marked ✅ in ROADMAP.md"
544
+
545
+ # Tier 1: HANDOFF.json current phase matches?
546
+ HANDOFF_PHASE=$(node -e "try{const h=require('./.viepilot/HANDOFF.json');console.log(h.phase||'')}catch(e){}" 2>/dev/null)
547
+ [ "$HANDOFF_PHASE" != "$PHASE_NUM" ] && AUDIT_ISSUES=$((AUDIT_ISSUES+1)) && \
548
+ echo "⚠️ Tier 1: HANDOFF.json phase=$HANDOFF_PHASE, expected $PHASE_NUM"
549
+
550
+ # Tier 2: README.md version badge matches package.json?
551
+ PKG_VERSION=$(node -p "require('./package.json').version" 2>/dev/null)
552
+ README_VERSION=$(grep -o 'version-[0-9]*\.[0-9]*\.[0-9]*' README.md 2>/dev/null | head -1 | sed 's/version-//')
553
+ [ "$PKG_VERSION" != "$README_VERSION" ] && AUDIT_ISSUES=$((AUDIT_ISSUES+1)) && \
554
+ echo "⚠️ Tier 2: README.md badge=$README_VERSION, package.json=$PKG_VERSION"
555
+ ```
556
+
557
+ If `AUDIT_ISSUES > 0`:
540
558
  ```
559
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
560
+ POST-PHASE AUDIT: {AUDIT_ISSUES} issue(s) found
561
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
562
+ {list issues above}
563
+
564
+ Fix now before starting next phase? (y/n)
565
+ → y: run /vp-audit --fix then continue
566
+ → n: continue (issues noted, non-blocking)
567
+ ```
568
+
569
+ If `AUDIT_ISSUES == 0`: silent — no output.
570
+ &lt;/step&gt;
571
+ ```
572
+
573
+ > **Note:** This hook runs Tier 1 + Tier 2 checks only (3 fast assertions). It does NOT
574
+ > invoke `/vp-audit` in full — Tier 3 (stack) and Tier 4 (framework) are too slow for
575
+ > a post-phase gate. For a full audit, run `/vp-audit` manually.
541
576
  </integration>
542
577
 
543
578
  <success_criteria>