viepilot 3.10.0 → 3.11.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 +19 -0
- package/lib/qa-router.cjs +72 -0
- package/package.json +1 -1
- package/skills/vp-qa/SKILL.md +306 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
+
## [3.11.0] - 2026-05-25
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- ENH-100: New `/vp-qa` skill — scan-first QA agent team generator
|
|
16
|
+
- ENH-100: Phase 1 (Research) reads codebase structure, detects stack, samples source files,
|
|
17
|
+
reads stack reference docs, then LLM decides domains + agent count
|
|
18
|
+
- ENH-100: Phase 2 (Generate) — LLM writes agent files directly using Write tool;
|
|
19
|
+
content fully determined by research output (no templates)
|
|
20
|
+
- ENH-100: Adapter-specific output — Claude Code: `.claude/agents/` (multi-agent
|
|
21
|
+
orchestrator + subagents); Codex: `AGENTS.md` append; Cursor: `.cursor/rules/` MDC;
|
|
22
|
+
Antigravity: `.agents/skills/`; Copilot: `.github/agents/`
|
|
23
|
+
- ENH-100: `lib/qa-router.cjs` — adapter path mapping (resolveOutputSpec, expectedPaths)
|
|
24
|
+
- ENH-100: `agents/qa-templates/rules/` — stack reference docs for Node.js, Python,
|
|
25
|
+
Java, Go, Ruby (LLM reads during research phase for stack-specific anti-patterns)
|
|
26
|
+
- ENH-100: Generated `qa-orchestrator` creates `.viepilot/requests/BUG-{N}.md` entries
|
|
27
|
+
with AskUserQuestion accept/decline + `/vp-evolve` suggestion
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
12
31
|
## [3.10.0] - 2026-05-25
|
|
13
32
|
|
|
14
33
|
### Added
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the output spec for QA agent files given an adapter.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} adapterId - 'claude-code'|'cursor-agent'|'codex'|'antigravity'|'copilot'
|
|
8
|
+
* @param {string} projectRoot - Absolute path to the target project root
|
|
9
|
+
* @returns {object} outputSpec
|
|
10
|
+
*/
|
|
11
|
+
function resolveOutputSpec(adapterId, projectRoot) {
|
|
12
|
+
switch (adapterId) {
|
|
13
|
+
case 'claude-code':
|
|
14
|
+
return {
|
|
15
|
+
mode: 'multi-file',
|
|
16
|
+
dir: path.join(projectRoot, '.claude', 'agents'),
|
|
17
|
+
orchestratorFile: 'qa-orchestrator.md',
|
|
18
|
+
subagentSuffix: '-scanner.md',
|
|
19
|
+
description: '.claude/agents/ (Claude Code native agents)',
|
|
20
|
+
};
|
|
21
|
+
case 'cursor-agent':
|
|
22
|
+
return {
|
|
23
|
+
mode: 'single-file',
|
|
24
|
+
dir: path.join(projectRoot, '.cursor', 'rules'),
|
|
25
|
+
file: 'qa-checklist.mdc',
|
|
26
|
+
frontmatterRequired: true,
|
|
27
|
+
description: '.cursor/rules/qa-checklist.mdc (Cursor MDC rule)',
|
|
28
|
+
};
|
|
29
|
+
case 'codex':
|
|
30
|
+
return {
|
|
31
|
+
mode: 'append',
|
|
32
|
+
dir: projectRoot,
|
|
33
|
+
file: 'AGENTS.md',
|
|
34
|
+
sectionHeader: '## QA Agent Instructions',
|
|
35
|
+
description: 'AGENTS.md (Codex system instructions)',
|
|
36
|
+
};
|
|
37
|
+
case 'antigravity':
|
|
38
|
+
return {
|
|
39
|
+
mode: 'multi-file',
|
|
40
|
+
dir: path.join(projectRoot, '.agents', 'skills'),
|
|
41
|
+
orchestratorFile: 'qa-orchestrator/SKILL.md',
|
|
42
|
+
description: '.agents/skills/ (Antigravity skills)',
|
|
43
|
+
};
|
|
44
|
+
case 'copilot':
|
|
45
|
+
return {
|
|
46
|
+
mode: 'single-file',
|
|
47
|
+
dir: path.join(projectRoot, '.github', 'agents'),
|
|
48
|
+
file: 'qa-orchestrator.agent.md',
|
|
49
|
+
description: '.github/agents/ (Copilot custom agent)',
|
|
50
|
+
};
|
|
51
|
+
default:
|
|
52
|
+
// Fallback to claude-code
|
|
53
|
+
return resolveOutputSpec('claude-code', projectRoot);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* List the expected output file paths for a given adapter + domain list.
|
|
59
|
+
* Useful for pre-flight checks and test assertions.
|
|
60
|
+
*/
|
|
61
|
+
function expectedPaths(adapterId, projectRoot, domains = []) {
|
|
62
|
+
const spec = resolveOutputSpec(adapterId, projectRoot);
|
|
63
|
+
if (spec.mode === 'multi-file') {
|
|
64
|
+
return [
|
|
65
|
+
path.join(spec.dir, spec.orchestratorFile),
|
|
66
|
+
...domains.map(d => path.join(spec.dir, `qa-${d}${spec.subagentSuffix || '.md'}`)),
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
return [path.join(spec.dir, spec.file)];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
module.exports = { resolveOutputSpec, expectedPaths };
|
package/package.json
CHANGED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vp-qa
|
|
3
|
+
description: "LLM-driven QA agent team generator — research codebase, generate context-aware QA scanning agents"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
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-QA v1.0.0 (fw 2.19.0)
|
|
15
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
16
|
+
```
|
|
17
|
+
</greeting>
|
|
18
|
+
|
|
19
|
+
<version_check>
|
|
20
|
+
## Version Update Check (ENH-072)
|
|
21
|
+
|
|
22
|
+
After displaying the greeting banner, run:
|
|
23
|
+
```bash
|
|
24
|
+
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" check-update --silent
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**If exit code = 1** (update available — new version printed to stdout):
|
|
28
|
+
Display notice banner before any other output:
|
|
29
|
+
```
|
|
30
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
31
|
+
│ ✨ ViePilot {latest_version} available (installed: {current}) │
|
|
32
|
+
│ npm i -g viepilot && vp-tools install --target {adapter_id} │
|
|
33
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
34
|
+
```
|
|
35
|
+
Replace `{latest_version}` with stdout from the command, `{current}` with the installed
|
|
36
|
+
version, `{adapter_id}` with the active adapter (claude-code / cursor / antigravity / codex / copilot).
|
|
37
|
+
|
|
38
|
+
**If exit code = 0 or command unavailable**: silent, continue.
|
|
39
|
+
|
|
40
|
+
**Suppression rules:**
|
|
41
|
+
- `--no-update-check` flag on skill invocation → skip this step entirely
|
|
42
|
+
- `config.json` → `update.check: false` → skip this step entirely
|
|
43
|
+
- Show at most once per session (`update_check_done` session guard)
|
|
44
|
+
</version_check>
|
|
45
|
+
|
|
46
|
+
<persona_context>
|
|
47
|
+
## Persona Context Injection (ENH-073)
|
|
48
|
+
|
|
49
|
+
At skill start, run:
|
|
50
|
+
```bash
|
|
51
|
+
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona auto-switch
|
|
52
|
+
node "$HOME/.claude/viepilot/bin/vp-tools.cjs" persona context
|
|
53
|
+
```
|
|
54
|
+
Inject the output as `## User Persona` context before any task execution.
|
|
55
|
+
Silent if command unavailable or errors.
|
|
56
|
+
</persona_context>
|
|
57
|
+
|
|
58
|
+
<adapter id="claude-code">
|
|
59
|
+
## A. Skill Invocation
|
|
60
|
+
- Skill được gọi khi user mention `vp-qa`, `/vp-qa`, "qa", "scan", "kiểm tra chất lượng"
|
|
61
|
+
- Treat all user text after the skill mention as `{{VP_ARGS}}`
|
|
62
|
+
|
|
63
|
+
## B. User Prompting
|
|
64
|
+
Prompt user conversationally with numbered list options.
|
|
65
|
+
|
|
66
|
+
## C. Tool Usage
|
|
67
|
+
Use Claude Code tools: `Bash` (shell), `Read` (file), `Edit` + `Write` (file write/patch),
|
|
68
|
+
`Grep` (search), `Glob` (file patterns), `LS`, `WebSearch`, `WebFetch`,
|
|
69
|
+
`Agent` (spawn subagent — multi-level nesting supported)
|
|
70
|
+
Interactive: `AskUserQuestion` (deferred — preload via ToolSearch before first call)
|
|
71
|
+
|
|
72
|
+
**Phase 1 research tools:**
|
|
73
|
+
- `Read` — parse .viepilot/PROJECT-META.md, STACKS.md, package.json, requirements.txt, etc.
|
|
74
|
+
- `Bash` — find backend directories, count files
|
|
75
|
+
- `Grep` — search for patterns in source code
|
|
76
|
+
|
|
77
|
+
**Phase 3 generation tools:**
|
|
78
|
+
- `Write` — create agent files directly (qa-orchestrator.md, qa-{domain}-scanner.md)
|
|
79
|
+
</adapter>
|
|
80
|
+
|
|
81
|
+
<adapter id="cursor-agent">
|
|
82
|
+
## A. Skill Invocation
|
|
83
|
+
Same trigger keywords as claude-code adapter.
|
|
84
|
+
|
|
85
|
+
## C. Tool Usage
|
|
86
|
+
Use Cursor tools: `run_terminal_cmd` (shell), `read_file` (read), `edit_file` (write/edit),
|
|
87
|
+
`grep_search` (search), `web_search`, `codebase_search`, `list_dir`, `file_search`
|
|
88
|
+
Interactive: text list fallback (AskQuestion available in Plan Mode only; Agent Mode = text)
|
|
89
|
+
Subagent: `/multitask` (user command, single-level only — not a callable tool)
|
|
90
|
+
MCP limit: 40 tools
|
|
91
|
+
</adapter>
|
|
92
|
+
|
|
93
|
+
<adapter id="antigravity">
|
|
94
|
+
## A. Skill Invocation
|
|
95
|
+
Same trigger keywords as claude-code adapter.
|
|
96
|
+
Skill discovery: LLM-driven (automatic, no slash command needed).
|
|
97
|
+
|
|
98
|
+
## C. Tool Usage
|
|
99
|
+
Use Antigravity tools: `shell` (cmd), `file_read`, `file_write`, MCP plugins
|
|
100
|
+
Interactive: text fallback (TUI-based; no formal AskUserQuestion)
|
|
101
|
+
Skill path: `.agents/skills/<skill>/SKILL.md` (project) or `~/.agents/skills/` (global)
|
|
102
|
+
</adapter>
|
|
103
|
+
|
|
104
|
+
<adapter id="codex">
|
|
105
|
+
## A. Skill Invocation
|
|
106
|
+
Same trigger keywords as claude-code adapter.
|
|
107
|
+
|
|
108
|
+
## C. Tool Usage
|
|
109
|
+
Use Codex tools: `container.exec` (sandboxed shell), `apply_patch` (file write), `web_search`
|
|
110
|
+
Interactive: text fallback (TUI Tab/Enter injection)
|
|
111
|
+
Config: `~/.codex/config.toml`
|
|
112
|
+
</adapter>
|
|
113
|
+
|
|
114
|
+
<adapter id="copilot">
|
|
115
|
+
## A. Skill Invocation
|
|
116
|
+
Same trigger keywords as claude-code adapter.
|
|
117
|
+
Discovery: User-driven (`@agent-name` in GitHub Copilot Chat).
|
|
118
|
+
|
|
119
|
+
## C. Tool Usage
|
|
120
|
+
Use Copilot tools: `runCommands` (shell), `read`/`readfile` (read), `edit`/`editFiles` (write),
|
|
121
|
+
`code_search`, `find_references`
|
|
122
|
+
Interactive: `askQuestions` (main agent only — NOT available in subagents; VS Code issue #293745)
|
|
123
|
+
Skill path: `.github/agents/<name>.agent.md`
|
|
124
|
+
</adapter>
|
|
125
|
+
|
|
126
|
+
<scope_policy>
|
|
127
|
+
## ViePilot Namespace Guard (BUG-004)
|
|
128
|
+
- Default mode: only use and reference `vp-*` skills in ViePilot workflows.
|
|
129
|
+
- External skills (`non vp-*`) are out of framework scope unless user explicitly opts in.
|
|
130
|
+
- If external skills appear in runtime context, ignore them and route with the closest built-in `vp-*` skill.
|
|
131
|
+
</scope_policy>
|
|
132
|
+
|
|
133
|
+
<implementation_routing_guard>
|
|
134
|
+
## Primary implementation lane (ENH-021)
|
|
135
|
+
|
|
136
|
+
- **`/vp-qa`** generates context-aware QA scanning agents for the current project.
|
|
137
|
+
- Output location determined by adapter via `lib/qa-router.cjs`.
|
|
138
|
+
- Generated agents invoke `qa-orchestrator` (claude-code) or execute sequential scans (others).
|
|
139
|
+
</implementation_routing_guard>
|
|
140
|
+
|
|
141
|
+
<objective>
|
|
142
|
+
Generate a team of QA scanning agents tailored to the project's stack, structure, and detected patterns.
|
|
143
|
+
|
|
144
|
+
**LLM-generates-directly approach:**
|
|
145
|
+
- Phase 1: LLM researches target codebase structure, stack, patterns, existing issues
|
|
146
|
+
- Phase 2: LLM determines output location via adapter routing (lib/qa-router.cjs)
|
|
147
|
+
- Phase 3: LLM writes agent files directly using Write tool (no template system)
|
|
148
|
+
- Phase 4: Show generated files and offer to run qa-orchestrator immediately (claude-code only)
|
|
149
|
+
|
|
150
|
+
**No templates:** Each agent's content is fully determined by research output. LLM tailors
|
|
151
|
+
scanning instructions to detected backend dirs, framework patterns, and known issues from `.viepilot/requests/`.
|
|
152
|
+
|
|
153
|
+
**After generation:** Generated agents (`qa-orchestrator` on claude-code or combined scanner on others)
|
|
154
|
+
will create `.viepilot/requests/BUG-{N}.md` for any QA issues found, and prompt user to accept/decline.
|
|
155
|
+
</objective>
|
|
156
|
+
|
|
157
|
+
<context>
|
|
158
|
+
Optional flags:
|
|
159
|
+
- `/vp-qa` — auto-detect adapter + stack, generate QA team
|
|
160
|
+
- `/vp-qa --run` — generate + immediately invoke qa-orchestrator
|
|
161
|
+
- `/vp-qa --focus sec` — bias research toward security domains
|
|
162
|
+
- `/vp-qa --focus perf` — bias research toward performance domains
|
|
163
|
+
- `/vp-qa --target <id>` — override adapter detection (claude-code / cursor-agent / antigravity / codex / copilot)
|
|
164
|
+
</context>
|
|
165
|
+
|
|
166
|
+
<process>
|
|
167
|
+
### Phase 1: Research (REQUIRED — do not skip)
|
|
168
|
+
|
|
169
|
+
Before writing any agent file, understand the project:
|
|
170
|
+
|
|
171
|
+
1. Read `.viepilot/PROJECT-META.md`, `STACKS.md`, `PROJECT-CONTEXT.md` (silent if missing)
|
|
172
|
+
2. Detect stack from: `package.json` / `pom.xml` / `go.mod` / `requirements.txt` / `Gemfile`
|
|
173
|
+
3. List backend directory structure: find `src/` `app/` `lib/` `services/` `api/` `routes/` (whichever exist)
|
|
174
|
+
4. Read 5-10 representative source files from backend dirs (understand patterns)
|
|
175
|
+
5. Count file sizes, service count, DB layer presence
|
|
176
|
+
6. Read `.viepilot/requests/` to list known existing issues (avoid duplicate reporting)
|
|
177
|
+
7. Read `agents/qa-templates/rules/{stack}.md` from project lib (if exists) for stack-specific patterns
|
|
178
|
+
|
|
179
|
+
**Build research summary:**
|
|
180
|
+
```
|
|
181
|
+
- projectName: string
|
|
182
|
+
- stack: (node / python / java / go / ruby / etc.)
|
|
183
|
+
- stackVersion: string (from version file)
|
|
184
|
+
- backendDirs: string[] (actual dirs found in project)
|
|
185
|
+
- detectedPatterns: string[] (anti-patterns spotted in sampling)
|
|
186
|
+
- recommendedDomains: string[] (scan areas relevant to this project)
|
|
187
|
+
- recommendedAgentCount: number (2 for small, 4-5 for large/complex)
|
|
188
|
+
- knownIssues: string[] (from .viepilot/requests/, avoid duplicates)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Phase 2: Determine Output Location
|
|
192
|
+
|
|
193
|
+
Use `lib/qa-router.cjs` to resolve adapter-specific output paths:
|
|
194
|
+
```
|
|
195
|
+
- claude-code → .claude/agents/
|
|
196
|
+
- cursor-agent → .cursor/rules/
|
|
197
|
+
- codex → AGENTS.md (single file, append mode)
|
|
198
|
+
- antigravity → .agents/skills/
|
|
199
|
+
- copilot → .github/agents/
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Call or reference lib/qa-router.cjs to map the current adapter to output directory.
|
|
203
|
+
|
|
204
|
+
### Phase 3: Generate Agent Files (LLM writes directly)
|
|
205
|
+
|
|
206
|
+
Based on research summary, generate agent content and write using Write tool.
|
|
207
|
+
|
|
208
|
+
**For claude-code (multi-agent):**
|
|
209
|
+
- Write `qa-orchestrator.md` — orchestrator that fan-outs to specialist subagents
|
|
210
|
+
- Name: "vp-qa orchestrator"
|
|
211
|
+
- Description: "Coordinate QA scanning across multiple domains for {projectName}"
|
|
212
|
+
- Model: claude-opus (or latest)
|
|
213
|
+
- maxTurns: 30
|
|
214
|
+
- Knows about backend dirs found, stack version, patterns to look for
|
|
215
|
+
- References each specialist subagent by name
|
|
216
|
+
- Receives domain reports, groups by severity
|
|
217
|
+
- Creates `.viepilot/requests/BUG-{N}.md` for accepted issues
|
|
218
|
+
- Uses AskUserQuestion for critical/high severity group acceptance
|
|
219
|
+
- Final AskUserQuestion: "N issues logged. Run /vp-evolve to plan fixes?"
|
|
220
|
+
|
|
221
|
+
- Write `qa-{domain}-scanner.md` for each recommended domain (e.g., qa-security-scanner, qa-performance-scanner)
|
|
222
|
+
- Name: "vp-qa {domain} scanner"
|
|
223
|
+
- Description: "Scan {projectName} for {domain} concerns"
|
|
224
|
+
- Model: claude-haiku-4 (efficient)
|
|
225
|
+
- maxTurns: 15
|
|
226
|
+
- Content references ACTUAL backend dirs found, ACTUAL patterns to look for
|
|
227
|
+
- Produces structured report of issues found in that domain
|
|
228
|
+
- Returns report to orchestrator
|
|
229
|
+
|
|
230
|
+
- Each file has correct YAML frontmatter (name, description, model, maxTurns, tools)
|
|
231
|
+
- Content NOT generic — references specific dirs, patterns, concerns found during Phase 1
|
|
232
|
+
|
|
233
|
+
**For other adapters (single-file mode):**
|
|
234
|
+
- Write one combined file with all domain instructions
|
|
235
|
+
- Sequential scanning procedure using that adapter's shell tools
|
|
236
|
+
- Same vp-request output format (BUG-{N}.md files)
|
|
237
|
+
- Single AskUserQuestion for all issues found at end
|
|
238
|
+
|
|
239
|
+
### Phase 4: AskUserQuestion (claude-code only)
|
|
240
|
+
|
|
241
|
+
After writing files, show what was generated:
|
|
242
|
+
```
|
|
243
|
+
Generated {N} agent files in {output_dir}:
|
|
244
|
+
- qa-orchestrator.md (coordinates scanning across domains)
|
|
245
|
+
- qa-security-scanner.md (scans for security concerns)
|
|
246
|
+
- qa-performance-scanner.md (scans for performance concerns)
|
|
247
|
+
... (other domain files)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**AskUserQuestion:**
|
|
251
|
+
```
|
|
252
|
+
question: "What would you like to do next?"
|
|
253
|
+
options:
|
|
254
|
+
- label: "Run QA scan now"
|
|
255
|
+
description: "Invoke qa-orchestrator immediately to start scanning"
|
|
256
|
+
- label: "Done for now"
|
|
257
|
+
description: "Exit — agents are ready in {output_dir}"
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**On selection:**
|
|
261
|
+
- "Run QA scan now": invoke qa-orchestrator immediately (or equivalent for non-claude-code adapters)
|
|
262
|
+
- "Done for now": print "QA agents ready in {output_dir}. Run qa-orchestrator to start scanning." and exit
|
|
263
|
+
|
|
264
|
+
**Text fallback (Cursor/Codex/Copilot/Antigravity):**
|
|
265
|
+
```
|
|
266
|
+
QA agents generated in {output_dir}
|
|
267
|
+
|
|
268
|
+
Next actions:
|
|
269
|
+
1. Review generated agent files
|
|
270
|
+
2. Run qa-orchestrator to start the QA scan
|
|
271
|
+
3. Adjust scanning domains as needed
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Generated qa-orchestrator Behavior (in target project, when run)
|
|
275
|
+
|
|
276
|
+
When user runs the generated `qa-orchestrator`:
|
|
277
|
+
1. Fan out to specialist subagents (claude-code) or scan sequentially (others)
|
|
278
|
+
2. Collect issue reports from each domain scanner
|
|
279
|
+
3. Group issues by severity (critical/high/medium/low)
|
|
280
|
+
4. For critical/high: AskUserQuestion per group (accept → create vp-request BUG-{N}, decline → skip)
|
|
281
|
+
5. For medium/low: one batch confirm
|
|
282
|
+
6. Create `.viepilot/requests/BUG-{N}.md` for each accepted issue
|
|
283
|
+
7. Final AskUserQuestion: "N issues logged. Run /vp-evolve to plan fixes?"
|
|
284
|
+
</process>
|
|
285
|
+
|
|
286
|
+
## Adapter Compatibility
|
|
287
|
+
|
|
288
|
+
### AskUserQuestion Tool (ENH-059)
|
|
289
|
+
After generation, use `AskUserQuestion` on Claude Code (terminal) for Phase 4 prompt.
|
|
290
|
+
|
|
291
|
+
| Adapter | Interactive Prompts | Notes |
|
|
292
|
+
|---------|---------------------|-------|
|
|
293
|
+
| Claude Code (terminal) | ✅ `AskUserQuestion` — **REQUIRED** at end of Phase 3 | Preload schema via ToolSearch first |
|
|
294
|
+
| Cursor / Codex / Copilot / Antigravity | ❌ Text fallback | Plain numbered list for next actions |
|
|
295
|
+
|
|
296
|
+
**Claude Code (terminal) — AUQ preload required (ENH-059):**
|
|
297
|
+
Before the first interactive prompt (Phase 4), 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.
|
|
298
|
+
|
|
299
|
+
<success_criteria>
|
|
300
|
+
- [ ] Phase 1 research completed (read project structure, stack, patterns)
|
|
301
|
+
- [ ] Phase 2 output location determined via lib/qa-router.cjs
|
|
302
|
+
- [ ] Phase 3 agent files written using Write tool (content tailored to research output)
|
|
303
|
+
- [ ] Phase 4 AskUserQuestion shown (claude-code) or text fallback (others)
|
|
304
|
+
- [ ] Generated agents ready to execute qa-orchestrator
|
|
305
|
+
- [ ] Generated qa-orchestrator creates .viepilot/requests/BUG-{N}.md for found issues
|
|
306
|
+
</success_criteria>
|