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 CHANGED
@@ -7,6 +7,130 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.22.0] - 2026-04-18
11
+
12
+ ### Added
13
+ - **ENH-058**: Workflow continuation prompt — AskUserQuestion at vp-evolve and vp-request completion
14
+ - `workflows/evolve.md` Step 5: AUQ asks "Execute now / Create request / Done" — selecting Execute invokes `/vp-auto` immediately
15
+ - `workflows/request.md` Step 7: AUQ asks "Plan phase / Create another / Done" — selecting Plan invokes `/vp-evolve` immediately
16
+ - Text fallback for Cursor / Codex / Copilot / Antigravity adapters (static list preserved)
17
+ - `skills/vp-evolve/SKILL.md` + `skills/vp-request/SKILL.md` AUQ prompt tables updated
18
+
19
+ ## [2.21.0] - 2026-04-18
20
+
21
+ ### Added
22
+ - **FEAT-019: GitHub Copilot Adapter** — install and run vp-* skills inside VS Code Copilot Chat and GitHub Copilot CLI
23
+ - `lib/adapters/copilot.cjs` — adapter definition with `~/.config/gh-copilot/` config home
24
+ - Auto-detect via `~/.config/gh-copilot/` directory or `gh` CLI binary presence
25
+ - Skill invocation: `/vp-status`, `/vp-auto`, etc. (same slash syntax as Claude Code / Cursor)
26
+ - Install command: `viepilot install --target copilot`
27
+ - 4 adapter-table SKILL.md files updated with GitHub Copilot row
28
+ - `docs/user/features/adapters.md` — Copilot section with surface matrix, prerequisites, limitations
29
+
30
+ ## [2.20.0] - 2026-04-18
31
+
32
+ ### Added
33
+ - **ENH-057: ViePilot Agents System** — 6 dedicated sub-agents for repetitive/parallelizable skill tasks:
34
+ - `tracker-agent`: TRACKER.md read/write delegation (phase status, task status, decision log)
35
+ - `research-agent`: WebSearch + WebFetch feasibility studies (auto-triggered in request.md Step 2B)
36
+ - `file-scanner-agent`: Glob + Grep repo-wide scanning (Explore subagent on Claude Code)
37
+ - `changelog-agent`: atomic CHANGELOG + version bump — single authority (resolves ENH-053)
38
+ - `test-generator-agent`: contract test scaffolding + run from acceptance criteria
39
+ - `doc-sync-agent`: bulk multi-file `.md` updates (≥5 files → 1 agent call)
40
+ - `agents/` directory with 6 agent definition files (`agents/*-agent.md`)
41
+ - Research-agent feasibility gate in `workflows/request.md` Step 2B — auto-triggered for Feature/platform requests
42
+ - Bulk-edit task detection in `workflows/autonomous.md` — doc-sync-agent invoked when ≥5 identical file types in task Paths
43
+ - Agent delegation table + invoke-agent patterns in `workflows/autonomous.md`
44
+ - `docs/dev/agents.md` — developer reference for agents layer architecture and invocation
45
+
46
+ ### Fixed
47
+ - **ENH-053**: Version bump authority unified in `changelog-agent` — `autonomous.md` and `evolve.md` both invoke it; no more inline duplication
48
+
49
+ ## [2.19.0] - 2026-04-18
50
+
51
+ ### Added
52
+ - **ENH-056: Skill invocation greeting banner** — all 17 `vp-*` skills now output
53
+ a version banner as the very first output on invocation:
54
+ ```
55
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
56
+ VIEPILOT ► VP-AUTO v0.2.2 (fw 2.19.0)
57
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
58
+ ```
59
+ Addresses Claude Code UI change where skill-load indicators are no longer shown;
60
+ users can now confirm which skill version is running. 119 contract tests added.
61
+
62
+ ## [2.18.0] - 2026-04-18
63
+
64
+ ### Fixed
65
+ - **vp-rollback** (BUG-014): `rollback.md` Step 7 now parses enriched tag format
66
+ `{project}-{branch}-{version}-vp-p{N}-t{M}` introduced by ENH-050. Rollback to
67
+ any Phase 57+ checkpoint correctly restores HANDOFF.json phase/task state.
68
+ All 3 formats (legacy, project-scoped, enriched) handled via `grep -oE vp-p[0-9]+`.
69
+
70
+ ### Changed
71
+ - **vp-crystallize** (ENH-051): Added "Brownfield Execution Path" table clarifying
72
+ which sub-steps (1A–1D) run, skip, or are conditional in brownfield mode.
73
+ Steps 1A/1B CONDITIONAL; Steps 1C/1D SKIP with rationale.
74
+ - **vp-brainstorm** (ENH-052): Step 6 now validates phase assignment before saving.
75
+ Scope-locked sessions with features but no phase assignments are blocked with
76
+ actionable message. Exploratory sessions and brownfield stubs bypass the gate.
77
+ - **Version bump rules** (ENH-053): Consolidated into `.viepilot/SYSTEM-RULES.md`
78
+ as single canonical table with precedence rule (MAJOR > MINOR > PATCH) and
79
+ mixed-phase handling. `evolve.md` and `autonomous.md` reference this table
80
+ instead of defining rules inline.
81
+ - **vp-audit post-phase hook** (ENH-054): Auto-hook integration upgraded from
82
+ conceptual note to concrete `<step name="post_phase_audit">` block in
83
+ `autonomous.md`. Runs 3 fast Tier 1+2 checks after every phase-complete event;
84
+ completely silent when no issues found; y/n prompt when issues detected.
85
+ - **AskUserQuestion enforcement** (ENH-055): All 13 AUQ prompt blocks across 4
86
+ workflows (evolve, request, brainstorm, crystallize) now explicitly mark Claude
87
+ Code adapter as REQUIRED. Plain-text menus remain as fallback for non-Claude-Code
88
+ adapters only. `vp-evolve/SKILL.md` gains new Adapter Compatibility section.
89
+
90
+ ### Files
91
+ - `workflows/rollback.md` — Step 7: 3-format tag parse with `grep -oE`
92
+ - `workflows/crystallize.md` — Brownfield Execution Path table (Step 0-C → Step 1)
93
+ - `workflows/brainstorm.md` — Pre-save phase validation gate in Step 6
94
+ - `.viepilot/SYSTEM-RULES.md` — Canonical Version Bump Rules table
95
+ - `workflows/evolve.md` — Version bump ref → SYSTEM-RULES.md; AUQ REQUIRED
96
+ - `workflows/autonomous.md` — Version bump ref + `post_phase_audit` step (5c)
97
+ - `workflows/audit.md` — Auto-hook: concrete integration spec replaces conceptual note
98
+ - `workflows/request.md`, `brainstorm.md`, `crystallize.md` — AUQ REQUIRED
99
+ - `skills/vp-evolve/SKILL.md` — New Adapter Compatibility section
100
+ - `skills/vp-request`, `vp-brainstorm`, `vp-crystallize` SKILL.md — AUQ REQUIRED
101
+ - `tests/unit/vp-workflow-consistency.test.js` — 35 contract tests
102
+
103
+ ## [2.17.0] - 2026-04-17
104
+
105
+ ### Changed
106
+ - **vp-auto** git tags now include active branch and package version for full
107
+ traceability. New format: `{prefix}-{branch}-{version}-vp-p{n}-t{n}`. (ENH-050)
108
+ - Branch resolved via `git rev-parse --abbrev-ref HEAD` (sanitized: `/` → `-`)
109
+ - Version resolved from `package.json` (fallback: `0.0.0`)
110
+ - Legacy tags (`{prefix}-vp-p{n}-*`) continue to be recognized by audit + rollback
111
+
112
+ ### Files
113
+ - `workflows/autonomous.md` — `TAG_PREFIX` resolution block (BRANCH_SAFE + VERSION);
114
+ task start, task done, and phase complete tag patterns updated to enriched format
115
+ - `workflows/audit.md` — `COMPLETE_TAGS` regex: added third alternative for enriched
116
+ format; `PREV_TAG` grep: extended char class to include `.` for version strings
117
+ - `workflows/rollback.md` — tag grep char class extended to include `.` for version strings
118
+ - `tests/unit/vp-enh050-git-tag-format.test.js` — 16 contract tests
119
+
120
+ ## [2.16.0] - 2026-04-17
121
+
122
+ ### Changed
123
+ - **vp-audit** Tier 4 (Framework Integrity) now runs silently — output is suppressed
124
+ when the check passes (✅) or is skipped (non-framework repo). Tier 4 is only
125
+ surfaced in the audit report when issues (⚠️) are found. (ENH-049)
126
+
127
+ ### Files
128
+ - `workflows/audit.md` — Step 4 skip: removed `echo "→ Tier 4 skipped"` message;
129
+ Step 4f report block wrapped in `TIER4_ISSUES > 0` guard; All Clear banner Tier 4
130
+ line removed; Issues Found banner Tier 4 line rendered only when `TIER4_ISSUES > 0`
131
+ - `skills/vp-audit/SKILL.md` — documented silent-by-default Tier 4 behavior (ENH-049)
132
+ - `tests/unit/vp-enh049-audit-tier4-silent.test.js` — 13 contract tests
133
+
10
134
  ## [2.15.0] - 2026-04-13
11
135
 
12
136
  ### Changed (ENH-048 — Phase 78: AskUserQuestion Adapter-Aware Integration)
package/README.md CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  **Autonomous Vibe Coding Framework / Bộ khung phát triển tự động có kiểm soát**
4
4
 
5
- [![Version](https://img.shields.io/badge/version-2.15.0-blue.svg)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-2.22.0-blue.svg)](CHANGELOG.md)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-17-purple.svg)](#skills-reference)
8
8
  [![Workflows](https://img.shields.io/badge/workflows-13-orange.svg)](#workflows)
9
9
  [![Templates](https://img.shields.io/badge/templates-17-cyan.svg)](#templates)
10
- [![Tests](https://img.shields.io/badge/tests-957%20passing-brightgreen.svg)](tests/)
10
+ [![Tests](https://img.shields.io/badge/tests-1140%20passing-brightgreen.svg)](tests/)
11
11
  [![GitHub](https://img.shields.io/github/stars/0-CODE/viepilot?style=social)](https://github.com/0-CODE/viepilot)
12
12
 
13
- **Versioning:** Shield **2.15.0** is the **ViePilot framework SemVer** tracked in `.viepilot/TRACKER.md` and `CHANGELOG.md`. The npm `package.json` field `version` (**2.15.0**) is the Node package identifier for this repo; use the framework version for milestone releases and docs.
13
+ **Versioning:** Shield **2.19.0** is the **ViePilot framework SemVer** tracked in `.viepilot/TRACKER.md` and `CHANGELOG.md`. The npm `package.json` field `version` (**2.19.0**) is the Node package identifier for this repo; use the framework version for milestone releases and docs.
14
14
 
15
15
  ViePilot là bộ skill framework cho phép AI assistant (Claude, GPT, etc.) phát triển dự án một cách **tự động**, **có kiểm soát**, và **có thể khôi phục**. Thiết kế theo các tiêu chuẩn chuyên nghiệp: Semantic Versioning, Conventional Commits, Keep a Changelog.
16
16
 
@@ -0,0 +1,131 @@
1
+ # ViePilot Agents Layer
2
+
3
+ Developer reference for the agents system introduced in ENH-057 (v2.20.0).
4
+
5
+ ## Why Agents?
6
+
7
+ Before v2.20.0, vp-* skills handled everything inline: research web fetches, TRACKER.md
8
+ updates, CHANGELOG writes, file scans, test generation, and doc updates all ran
9
+ sequentially in the main LLM context. This caused:
10
+
11
+ 1. **Context bloat** — long skill runs exhausted context with intermediate data
12
+ 2. **Sequential bottleneck** — research + write + verify ran one-at-a-time
13
+ 3. **Skill coupling** — each skill re-implemented the same patterns (tracker update, version bump)
14
+ 4. **No parallelism** — vp-auto tasks that could run concurrently didn't
15
+
16
+ The agents layer delegates these operations to dedicated sub-agents — isolated contexts
17
+ that run in parallel or in sequence without polluting the calling skill's conversation.
18
+
19
+ ## Architecture
20
+
21
+ ```
22
+ vp-* skill (orchestrator)
23
+
24
+ ├── tracker-agent ← .viepilot/TRACKER.md read/write
25
+ ├── research-agent ← WebSearch + WebFetch (isolated context)
26
+ ├── file-scanner-agent ← Glob + Grep (repo-wide scanning)
27
+ ├── changelog-agent ← CHANGELOG + version bump (single authority)
28
+ ├── test-generator-agent ← tests/*.test.js generation + run
29
+ └── doc-sync-agent ← skills/*/SKILL.md bulk update
30
+ ```
31
+
32
+ Agent definitions live in `agents/` at the repo root. They are installed to
33
+ `{viepilotDir}/agents/` alongside workflows and templates.
34
+
35
+ ## Agent Catalog
36
+
37
+ ### tracker-agent
38
+ **File**: `agents/tracker-agent.md`
39
+ **Purpose**: Read/write TRACKER.md — phase status, task status, decision log, request table.
40
+ **When to invoke**: vp-auto (task start/complete/phase complete), vp-request (Step 5), vp-evolve (phase creation).
41
+ **Claude Code subagent_type**: `general-purpose`
42
+
43
+ ### research-agent
44
+ **File**: `agents/research-agent.md`
45
+ **Purpose**: WebSearch + WebFetch + summarize for feasibility studies and tech research.
46
+ **When to invoke**: vp-request (Step 2B — auto-triggered for Feature/platform requests), vp-brainstorm (external validation).
47
+ **Claude Code subagent_type**: `general-purpose`
48
+
49
+ ### file-scanner-agent
50
+ **File**: `agents/file-scanner-agent.md`
51
+ **Purpose**: Glob + Grep across repo to find affected files, detect stale refs.
52
+ **When to invoke**: vp-audit (Tier 1–4), vp-evolve (impact analysis), vp-rollback (state restore).
53
+ **Claude Code subagent_type**: `Explore` (specialized for codebase scanning)
54
+
55
+ ### changelog-agent
56
+ **File**: `agents/changelog-agent.md`
57
+ **Purpose**: Atomically append CHANGELOG entry + bump package.json version.
58
+ **When to invoke**: vp-auto post-phase (last task), vp-evolve (milestone ship).
59
+ **Claude Code subagent_type**: `general-purpose`
60
+ **Note**: Single authority for version bumps — resolves ENH-053.
61
+
62
+ ### test-generator-agent
63
+ **File**: `agents/test-generator-agent.md`
64
+ **Purpose**: Generate contract tests from acceptance criteria, run suite, report pass/fail.
65
+ **When to invoke**: Last task of each phase (the `N.last` contract-test task pattern).
66
+ **Claude Code subagent_type**: `general-purpose`
67
+
68
+ ### doc-sync-agent
69
+ **File**: `agents/doc-sync-agent.md`
70
+ **Purpose**: Bulk-apply the same change to ≥5 `.md` files (adapter rows, banners, etc.).
71
+ **When to invoke**: Auto-triggered by autonomous.md when task Paths block has ≥5 identical file types.
72
+ **Claude Code subagent_type**: `general-purpose`
73
+
74
+ ## Invocation Patterns
75
+
76
+ ### Claude Code (terminal)
77
+
78
+ Use the `Agent` tool with the appropriate `subagent_type`:
79
+
80
+ ```js
81
+ Agent({
82
+ subagent_type: "general-purpose", // or "Explore" for file-scanner
83
+ description: "{agent-name}: {operation-summary}",
84
+ prompt: `
85
+ Load agents/{agent-name}.md for the full specification.
86
+ Execute operation: {operation}
87
+ Inputs: {inputs}
88
+ `
89
+ })
90
+ ```
91
+
92
+ ### Cursor / Codex / Antigravity
93
+
94
+ Execute the equivalent operation inline in the same session. The agent `.md` file
95
+ describes the exact steps — follow them as a scoped sub-prompt.
96
+
97
+ ## Adapter Behavior Table
98
+
99
+ | Agent | Claude Code | Cursor | Codex | Antigravity |
100
+ |-------|------------|--------|-------|-------------|
101
+ | tracker-agent | Subagent (general-purpose) | Inline | Inline | Inline |
102
+ | research-agent | Subagent (general-purpose) | Inline if web available | Inline if web available | Inline if web available |
103
+ | file-scanner-agent | Subagent (Explore) | Inline | Inline | Inline |
104
+ | changelog-agent | Subagent (general-purpose) | Inline | Inline | Inline |
105
+ | test-generator-agent | Subagent (general-purpose) | Inline | Inline | Inline |
106
+ | doc-sync-agent | Subagent (general-purpose) | Sequential inline | Sequential inline | Sequential inline |
107
+
108
+ ## Adding a New Agent
109
+
110
+ 1. Create `agents/{name}-agent.md` with all required sections:
111
+ - `## Purpose`
112
+ - `## Inputs`
113
+ - `## Outputs`
114
+ - `## Invocation Pattern` (Claude Code + text fallback)
115
+ - `## Adapter Behavior` (table covering all 4 adapters)
116
+ - `## Notes`
117
+
118
+ 2. Add the agent to the delegation table in `workflows/autonomous.md`
119
+ under `## Agent Delegation`.
120
+
121
+ 3. Wire invocation into the relevant workflow steps.
122
+
123
+ 4. Add to `installSubdirs` in the adapter that should include `agents/`.
124
+
125
+ 5. Write a contract test in `tests/unit/` verifying the file exists and has required sections.
126
+
127
+ ## Naming Conventions
128
+
129
+ - File: `agents/{name}-agent.md` (kebab-case, always ends in `-agent`)
130
+ - Reference: `{name}-agent` (e.g., `tracker-agent`, not `tracker`)
131
+ - Invocation: `Load agents/{name}-agent.md for full spec.`
@@ -10,6 +10,7 @@ ViePilot supports multiple AI coding platforms via its adapter system (FEAT-013)
10
10
  | `cursor-agent` / `cursor-ide` | Cursor | `~/.cursor/skills/` | `~/.cursor/viepilot/` | — | `/vp-status` |
11
11
  | `antigravity` | Google Antigravity | `~/.antigravity/skills/` | `~/.antigravity/viepilot/` | — | `/vp-status` |
12
12
  | `codex` | OpenAI Codex CLI | `~/.codex/skills/` | `~/.codex/viepilot/` | — | `$vp-status` |
13
+ | `copilot` | GitHub Copilot | `~/.config/gh-copilot/skills/` | `~/.config/gh-copilot/viepilot/` | — | `/vp-status` |
13
14
 
14
15
  > **Note — Codex invocation syntax:** OpenAI Codex CLI uses `$skill-name` to invoke skills (e.g. `$vp-status`, `$vp-brainstorm`). The `/command` prefix is reserved for Codex built-in controls (`/plan`, `/clear`, `/diff`, etc.). SKILL.md file format is fully compatible — no changes needed to skill content.
15
16
 
@@ -28,6 +29,9 @@ viepilot install --target antigravity
28
29
  # OpenAI Codex CLI
29
30
  viepilot install --target codex
30
31
 
32
+ # GitHub Copilot
33
+ viepilot install --target copilot
34
+
31
35
  # Multiple targets at once
32
36
  viepilot install --target claude-code,antigravity
33
37
  ```
@@ -45,6 +49,53 @@ At install time, `{envToolDir}` is replaced with each adapter's `executionContex
45
49
  - `cursor` → `.cursor/viepilot`
46
50
  - `antigravity` → `.antigravity/viepilot`
47
51
  - `codex` → `.codex/viepilot`
52
+ - `copilot` → `.config/gh-copilot/viepilot`
53
+
54
+ ## GitHub Copilot
55
+
56
+ GitHub Copilot adapter (FEAT-019) enables vp-* skills to run inside VS Code Copilot Chat and the GitHub Copilot CLI.
57
+
58
+ ### Surface support
59
+
60
+ | Surface | Status | Notes |
61
+ |---------|--------|-------|
62
+ | VS Code Copilot Chat | ✅ Supported | Invoke with `/vp-status`, `/vp-auto`, etc. |
63
+ | GitHub Copilot CLI | ✅ Supported | Invoke with `/vp-status` in CLI chat |
64
+ | Copilot Cloud Agents | ⚠️ Preview | GitHub Copilot Extensions (Public Preview); subject to change |
65
+ | JetBrains Copilot | ⚠️ Pending | Copilot Chat for JetBrains — skills not yet validated |
66
+
67
+ ### Prerequisites
68
+
69
+ - **gh CLI** installed (`brew install gh` or [cli.github.com](https://cli.github.com))
70
+ - **GitHub Copilot subscription** (Individual, Business, or Enterprise)
71
+ - **GitHub Copilot extension** for VS Code (marketplace ID: `GitHub.copilot-chat`)
72
+
73
+ ### Installation
74
+
75
+ ```bash
76
+ npx viepilot install --target copilot
77
+ ```
78
+
79
+ Files are installed to:
80
+ - Skills: `~/.config/gh-copilot/skills/`
81
+ - Workflows + lib: `~/.config/gh-copilot/viepilot/`
82
+
83
+ After install, open VS Code, open Copilot Chat (`Ctrl+Shift+I` / `Cmd+Shift+I`), and type `/vp-status`.
84
+
85
+ ### Availability detection
86
+
87
+ The installer detects Copilot by checking (in order):
88
+
89
+ 1. `~/.config/gh-copilot/` directory exists (primary)
90
+ 2. `gh` binary found at `/usr/local/bin/gh`, `/opt/homebrew/bin/gh`, or `~/.local/bin/gh` (secondary)
91
+
92
+ ### Known limitations
93
+
94
+ | Feature | Status |
95
+ |---------|--------|
96
+ | `AskUserQuestion` interactive prompts | ❌ Not available — skills use text-based menus |
97
+ | Hooks (PreToolUse, Stop, etc.) | ❌ Copilot uses `.agent.md` convention, not programmatic hooks |
98
+ | MCP server integration | 🔜 Planned for Phase 2 |
48
99
 
49
100
  ## Adding a new adapter
50
101
 
@@ -24,7 +24,8 @@ module.exports = {
24
24
  path.join('templates', 'architect'),
25
25
  'bin',
26
26
  'lib',
27
- 'ui-components'
27
+ 'ui-components',
28
+ 'agents'
28
29
  ],
29
30
  isAvailable: (home) => {
30
31
  const h = home || os.homedir();
@@ -32,7 +32,8 @@ module.exports = {
32
32
  path.join('templates', 'architect'),
33
33
  'bin',
34
34
  'lib',
35
- 'ui-components'
35
+ 'ui-components',
36
+ 'agents'
36
37
  ],
37
38
  // Detection: is this platform available on the current machine?
38
39
  isAvailable: (home) => {
@@ -25,7 +25,8 @@ module.exports = {
25
25
  path.join('templates', 'architect'),
26
26
  'bin',
27
27
  'lib',
28
- 'ui-components'
28
+ 'ui-components',
29
+ 'agents'
29
30
  ],
30
31
  isAvailable: (home) => {
31
32
  const h = home || os.homedir();
@@ -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.15.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"
@@ -115,12 +127,13 @@ This skill uses adapter-aware interactive prompts. Behavior depends on your adap
115
127
 
116
128
  | Adapter | Interactive Prompts | Notes |
117
129
  |---------|---------------------|-------|
118
- | Claude Code (terminal) | ✅ `AskUserQuestion` tool | Click-to-select UI, multi-select, preview panels |
130
+ | Claude Code (terminal) | ✅ `AskUserQuestion` tool — **REQUIRED** | Must call AUQ; plain-text only if tool errors or is unavailable |
119
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) |
120
132
  | Cursor (Plan Mode) | ⚠️ Partial | `AskQuestion` in Plan Mode only — not in Agent/Skills Mode |
121
133
  | Cursor (Agent/Skills) | ❌ Text fallback | AskQuestion not available in Agent Mode |
122
134
  | Codex CLI | ❌ Text fallback | Native tool N/A; community MCP available |
123
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 |
124
137
 
125
138
  When `AskUserQuestion` is not available, the skill automatically falls back to
126
139
  plain-text numbered list prompts — no configuration required.
@@ -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,12 +283,13 @@ 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 |
280
293
 
281
294
  When `AskUserQuestion` is not available, the skill automatically falls back to
282
295
  plain-text numbered list prompts — no configuration required.
@@ -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"