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/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,143 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.23.0] - 2026-04-18
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **ENH-059**: AskUserQuestion ToolSearch preload — all vp-* skills and workflow files on Claude Code adapter now instruct the model to call `ToolSearch { query: "select:AskUserQuestion" }` before the first interactive prompt, preventing deferred-tool fallback to text menus
|
|
14
|
+
- 5 SKILL.md files updated: `vp-request`, `vp-evolve`, `vp-auto`, `vp-brainstorm`, `vp-crystallize`
|
|
15
|
+
- 3 workflow files updated: `workflows/request.md`, `workflows/evolve.md`, `workflows/autonomous.md`
|
|
16
|
+
- `vp-auto/SKILL.md` now has a full AUQ adapter compatibility section
|
|
17
|
+
|
|
18
|
+
## [2.22.1] - 2026-04-18
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **BUG-015**: `copilot` adapter missing from `bin/viepilot.cjs` CLI — `TARGETS` array and `printHelp()` text now include `copilot`; `viepilot --list-targets` shows GitHub Copilot; `viepilot install --target copilot` no longer fails with "Unknown target"
|
|
22
|
+
|
|
23
|
+
## [2.22.0] - 2026-04-18
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- **ENH-058**: Workflow continuation prompt — AskUserQuestion at vp-evolve and vp-request completion
|
|
27
|
+
- `workflows/evolve.md` Step 5: AUQ asks "Execute now / Create request / Done" — selecting Execute invokes `/vp-auto` immediately
|
|
28
|
+
- `workflows/request.md` Step 7: AUQ asks "Plan phase / Create another / Done" — selecting Plan invokes `/vp-evolve` immediately
|
|
29
|
+
- Text fallback for Cursor / Codex / Copilot / Antigravity adapters (static list preserved)
|
|
30
|
+
- `skills/vp-evolve/SKILL.md` + `skills/vp-request/SKILL.md` AUQ prompt tables updated
|
|
31
|
+
|
|
32
|
+
## [2.21.0] - 2026-04-18
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
- **FEAT-019: GitHub Copilot Adapter** — install and run vp-* skills inside VS Code Copilot Chat and GitHub Copilot CLI
|
|
36
|
+
- `lib/adapters/copilot.cjs` — adapter definition with `~/.config/gh-copilot/` config home
|
|
37
|
+
- Auto-detect via `~/.config/gh-copilot/` directory or `gh` CLI binary presence
|
|
38
|
+
- Skill invocation: `/vp-status`, `/vp-auto`, etc. (same slash syntax as Claude Code / Cursor)
|
|
39
|
+
- Install command: `viepilot install --target copilot`
|
|
40
|
+
- 4 adapter-table SKILL.md files updated with GitHub Copilot row
|
|
41
|
+
- `docs/user/features/adapters.md` — Copilot section with surface matrix, prerequisites, limitations
|
|
42
|
+
|
|
43
|
+
## [2.20.0] - 2026-04-18
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
- **ENH-057: ViePilot Agents System** — 6 dedicated sub-agents for repetitive/parallelizable skill tasks:
|
|
47
|
+
- `tracker-agent`: TRACKER.md read/write delegation (phase status, task status, decision log)
|
|
48
|
+
- `research-agent`: WebSearch + WebFetch feasibility studies (auto-triggered in request.md Step 2B)
|
|
49
|
+
- `file-scanner-agent`: Glob + Grep repo-wide scanning (Explore subagent on Claude Code)
|
|
50
|
+
- `changelog-agent`: atomic CHANGELOG + version bump — single authority (resolves ENH-053)
|
|
51
|
+
- `test-generator-agent`: contract test scaffolding + run from acceptance criteria
|
|
52
|
+
- `doc-sync-agent`: bulk multi-file `.md` updates (≥5 files → 1 agent call)
|
|
53
|
+
- `agents/` directory with 6 agent definition files (`agents/*-agent.md`)
|
|
54
|
+
- Research-agent feasibility gate in `workflows/request.md` Step 2B — auto-triggered for Feature/platform requests
|
|
55
|
+
- Bulk-edit task detection in `workflows/autonomous.md` — doc-sync-agent invoked when ≥5 identical file types in task Paths
|
|
56
|
+
- Agent delegation table + invoke-agent patterns in `workflows/autonomous.md`
|
|
57
|
+
- `docs/dev/agents.md` — developer reference for agents layer architecture and invocation
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
- **ENH-053**: Version bump authority unified in `changelog-agent` — `autonomous.md` and `evolve.md` both invoke it; no more inline duplication
|
|
61
|
+
|
|
62
|
+
## [2.19.0] - 2026-04-18
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
- **ENH-056: Skill invocation greeting banner** — all 17 `vp-*` skills now output
|
|
66
|
+
a version banner as the very first output on invocation:
|
|
67
|
+
```
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
VIEPILOT ► VP-AUTO v0.2.2 (fw 2.19.0)
|
|
70
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
71
|
+
```
|
|
72
|
+
Addresses Claude Code UI change where skill-load indicators are no longer shown;
|
|
73
|
+
users can now confirm which skill version is running. 119 contract tests added.
|
|
74
|
+
|
|
75
|
+
## [2.18.0] - 2026-04-18
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
- **vp-rollback** (BUG-014): `rollback.md` Step 7 now parses enriched tag format
|
|
79
|
+
`{project}-{branch}-{version}-vp-p{N}-t{M}` introduced by ENH-050. Rollback to
|
|
80
|
+
any Phase 57+ checkpoint correctly restores HANDOFF.json phase/task state.
|
|
81
|
+
All 3 formats (legacy, project-scoped, enriched) handled via `grep -oE vp-p[0-9]+`.
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
- **vp-crystallize** (ENH-051): Added "Brownfield Execution Path" table clarifying
|
|
85
|
+
which sub-steps (1A–1D) run, skip, or are conditional in brownfield mode.
|
|
86
|
+
Steps 1A/1B CONDITIONAL; Steps 1C/1D SKIP with rationale.
|
|
87
|
+
- **vp-brainstorm** (ENH-052): Step 6 now validates phase assignment before saving.
|
|
88
|
+
Scope-locked sessions with features but no phase assignments are blocked with
|
|
89
|
+
actionable message. Exploratory sessions and brownfield stubs bypass the gate.
|
|
90
|
+
- **Version bump rules** (ENH-053): Consolidated into `.viepilot/SYSTEM-RULES.md`
|
|
91
|
+
as single canonical table with precedence rule (MAJOR > MINOR > PATCH) and
|
|
92
|
+
mixed-phase handling. `evolve.md` and `autonomous.md` reference this table
|
|
93
|
+
instead of defining rules inline.
|
|
94
|
+
- **vp-audit post-phase hook** (ENH-054): Auto-hook integration upgraded from
|
|
95
|
+
conceptual note to concrete `<step name="post_phase_audit">` block in
|
|
96
|
+
`autonomous.md`. Runs 3 fast Tier 1+2 checks after every phase-complete event;
|
|
97
|
+
completely silent when no issues found; y/n prompt when issues detected.
|
|
98
|
+
- **AskUserQuestion enforcement** (ENH-055): All 13 AUQ prompt blocks across 4
|
|
99
|
+
workflows (evolve, request, brainstorm, crystallize) now explicitly mark Claude
|
|
100
|
+
Code adapter as REQUIRED. Plain-text menus remain as fallback for non-Claude-Code
|
|
101
|
+
adapters only. `vp-evolve/SKILL.md` gains new Adapter Compatibility section.
|
|
102
|
+
|
|
103
|
+
### Files
|
|
104
|
+
- `workflows/rollback.md` — Step 7: 3-format tag parse with `grep -oE`
|
|
105
|
+
- `workflows/crystallize.md` — Brownfield Execution Path table (Step 0-C → Step 1)
|
|
106
|
+
- `workflows/brainstorm.md` — Pre-save phase validation gate in Step 6
|
|
107
|
+
- `.viepilot/SYSTEM-RULES.md` — Canonical Version Bump Rules table
|
|
108
|
+
- `workflows/evolve.md` — Version bump ref → SYSTEM-RULES.md; AUQ REQUIRED
|
|
109
|
+
- `workflows/autonomous.md` — Version bump ref + `post_phase_audit` step (5c)
|
|
110
|
+
- `workflows/audit.md` — Auto-hook: concrete integration spec replaces conceptual note
|
|
111
|
+
- `workflows/request.md`, `brainstorm.md`, `crystallize.md` — AUQ REQUIRED
|
|
112
|
+
- `skills/vp-evolve/SKILL.md` — New Adapter Compatibility section
|
|
113
|
+
- `skills/vp-request`, `vp-brainstorm`, `vp-crystallize` SKILL.md — AUQ REQUIRED
|
|
114
|
+
- `tests/unit/vp-workflow-consistency.test.js` — 35 contract tests
|
|
115
|
+
|
|
116
|
+
## [2.17.0] - 2026-04-17
|
|
117
|
+
|
|
118
|
+
### Changed
|
|
119
|
+
- **vp-auto** git tags now include active branch and package version for full
|
|
120
|
+
traceability. New format: `{prefix}-{branch}-{version}-vp-p{n}-t{n}`. (ENH-050)
|
|
121
|
+
- Branch resolved via `git rev-parse --abbrev-ref HEAD` (sanitized: `/` → `-`)
|
|
122
|
+
- Version resolved from `package.json` (fallback: `0.0.0`)
|
|
123
|
+
- Legacy tags (`{prefix}-vp-p{n}-*`) continue to be recognized by audit + rollback
|
|
124
|
+
|
|
125
|
+
### Files
|
|
126
|
+
- `workflows/autonomous.md` — `TAG_PREFIX` resolution block (BRANCH_SAFE + VERSION);
|
|
127
|
+
task start, task done, and phase complete tag patterns updated to enriched format
|
|
128
|
+
- `workflows/audit.md` — `COMPLETE_TAGS` regex: added third alternative for enriched
|
|
129
|
+
format; `PREV_TAG` grep: extended char class to include `.` for version strings
|
|
130
|
+
- `workflows/rollback.md` — tag grep char class extended to include `.` for version strings
|
|
131
|
+
- `tests/unit/vp-enh050-git-tag-format.test.js` — 16 contract tests
|
|
132
|
+
|
|
133
|
+
## [2.16.0] - 2026-04-17
|
|
134
|
+
|
|
135
|
+
### Changed
|
|
136
|
+
- **vp-audit** Tier 4 (Framework Integrity) now runs silently — output is suppressed
|
|
137
|
+
when the check passes (✅) or is skipped (non-framework repo). Tier 4 is only
|
|
138
|
+
surfaced in the audit report when issues (⚠️) are found. (ENH-049)
|
|
139
|
+
|
|
140
|
+
### Files
|
|
141
|
+
- `workflows/audit.md` — Step 4 skip: removed `echo "→ Tier 4 skipped"` message;
|
|
142
|
+
Step 4f report block wrapped in `TIER4_ISSUES > 0` guard; All Clear banner Tier 4
|
|
143
|
+
line removed; Issues Found banner Tier 4 line rendered only when `TIER4_ISSUES > 0`
|
|
144
|
+
- `skills/vp-audit/SKILL.md` — documented silent-by-default Tier 4 behavior (ENH-049)
|
|
145
|
+
- `tests/unit/vp-enh049-audit-tier4-silent.test.js` — 13 contract tests
|
|
146
|
+
|
|
10
147
|
## [2.15.0] - 2026-04-13
|
|
11
148
|
|
|
12
149
|
### 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
|
-
[](CHANGELOG.md)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](#skills-reference)
|
|
8
8
|
[](#workflows)
|
|
9
9
|
[](#templates)
|
|
10
|
-
[](tests/)
|
|
11
11
|
[](https://github.com/0-CODE/viepilot)
|
|
12
12
|
|
|
13
|
-
**Versioning:** Shield **2.
|
|
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
|
|
package/bin/viepilot.cjs
CHANGED
|
@@ -23,6 +23,7 @@ const TARGETS = [
|
|
|
23
23
|
{ id: 'cursor-ide', label: 'Cursor IDE' },
|
|
24
24
|
{ id: 'antigravity', label: adapterMap['antigravity'].name },
|
|
25
25
|
{ id: 'codex', label: adapterMap['codex'].name },
|
|
26
|
+
{ id: 'copilot', label: adapterMap['copilot'].name },
|
|
26
27
|
];
|
|
27
28
|
|
|
28
29
|
function printHelp() {
|
|
@@ -36,14 +37,14 @@ Usage:
|
|
|
36
37
|
viepilot --list-targets
|
|
37
38
|
|
|
38
39
|
Install options:
|
|
39
|
-
--target <id|id,id|all> Target profile(s): claude-code
|
|
40
|
+
--target <id|id,id|all> Target profile(s): claude-code, cursor-agent, cursor-ide, antigravity, codex, copilot
|
|
40
41
|
--yes Non-interactive mode (skip confirmations)
|
|
41
42
|
--dry-run Print actions only (Node installer; no bash)
|
|
42
43
|
--list-targets Print supported targets and exit
|
|
43
44
|
--help Show help
|
|
44
45
|
|
|
45
46
|
Uninstall options:
|
|
46
|
-
--target <id|id,id|all> Remove assets (claude-code: ~/.claude/skills/vp-*; cursor-*: ~/.cursor/skills/vp-*; antigravity: ~/.antigravity/skills/vp-*; codex: ~/.codex/skills/vp-*)
|
|
47
|
+
--target <id|id,id|all> Remove assets (claude-code: ~/.claude/skills/vp-*; cursor-*: ~/.cursor/skills/vp-*; antigravity: ~/.antigravity/skills/vp-*; codex: ~/.codex/skills/vp-*; copilot: ~/.config/gh-copilot/skills/vp-*)
|
|
47
48
|
--yes Non-interactive mode (skip confirmations)
|
|
48
49
|
--dry-run Print actions only, do not remove files
|
|
49
50
|
`);
|
|
@@ -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
|
|
package/lib/adapters/codex.cjs
CHANGED
|
@@ -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
|
+
};
|
package/lib/adapters/cursor.cjs
CHANGED
package/lib/adapters/index.cjs
CHANGED
package/lib/viepilot-install.cjs
CHANGED
|
@@ -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
package/skills/vp-audit/SKILL.md
CHANGED
|
@@ -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
|
package/skills/vp-auto/SKILL.md
CHANGED
|
@@ -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"
|
|
@@ -230,6 +242,22 @@ At any control point, offer:
|
|
|
230
242
|
Display progress summary on stop.
|
|
231
243
|
</process>
|
|
232
244
|
|
|
245
|
+
## Adapter Compatibility
|
|
246
|
+
|
|
247
|
+
### AskUserQuestion Tool (ENH-059)
|
|
248
|
+
Control-point prompts use `AskUserQuestion` on Claude Code (terminal).
|
|
249
|
+
|
|
250
|
+
| Adapter | Interactive Prompts | Notes |
|
|
251
|
+
|---------|---------------------|-------|
|
|
252
|
+
| Claude Code (terminal) | ✅ `AskUserQuestion` — **REQUIRED** at control points | Preload schema via ToolSearch first |
|
|
253
|
+
| Cursor / Codex / Copilot / Antigravity | ❌ Text fallback | Plain numbered list |
|
|
254
|
+
|
|
255
|
+
**Claude Code (terminal) — AUQ preload required (ENH-059):**
|
|
256
|
+
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.
|
|
257
|
+
|
|
258
|
+
**Prompts using AskUserQuestion in this skill:**
|
|
259
|
+
- Control point decisions (retry / skip / rollback / stop — Step 7)
|
|
260
|
+
|
|
233
261
|
<success_criteria>
|
|
234
262
|
- [ ] Phases executed in dependency order
|
|
235
263
|
- [ ] Tasks tracked with git tags
|
|
@@ -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,14 +127,18 @@ 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 |
|
|
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 |
|
|
137
|
+
|
|
138
|
+
**Claude Code (terminal) — AUQ preload required (ENH-059):**
|
|
139
|
+
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.
|
|
124
140
|
|
|
125
|
-
When `AskUserQuestion` is not available, the skill automatically falls back to
|
|
141
|
+
When `AskUserQuestion` is not available on other adapters, the skill automatically falls back to
|
|
126
142
|
plain-text numbered list prompts — no configuration required.
|
|
127
143
|
|
|
128
144
|
**Prompts using AskUserQuestion in this skill:**
|