the-frame-ai 0.11.2 → 0.11.4

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/README.de.md CHANGED
@@ -37,7 +37,7 @@ Führe `/frame:research <Thema>` aus — Claude erkundet die Codebasis, externe
37
37
  `/frame:plan <Feature>` verwandelt Recherche in eine konkrete Aufgabenliste mit Schätzungen.
38
38
 
39
39
  **Build** — implementieren
40
- `/frame:build` führt Aufgaben sequenziell aus (1–3 auf einmal) mit TDD. Für viele unabhängige Aufgaben — `/frame:wave` führt sie in parallelen Batches aus. Feststeckend — `/frame:unstuck`. Bug gefunden — `/frame:debug`.
40
+ `/frame:build` führt Aufgaben sequenziell aus (1–3 auf einmal) mit TDD. Für viele unabhängige Aufgaben — `/frame:wave` führt sie in parallelen Batches aus. Wenn Qualität wichtiger als Geschwindigkeit ist — `/frame:wave-team` fügt ein Review-Team (Security, Performance, Tests, Conventions) nach jeder Aufgabe hinzu. Feststeckend — `/frame:unstuck`. Bug gefunden — `/frame:debug`.
41
41
 
42
42
  **Review** — vor dem Deployment prüfen
43
43
  `/frame:review` führt automatisierte Prüfungen durch und gibt eine Checkliste: Tests, Typen, Sicherheit, Performance.
@@ -262,6 +262,7 @@ Diese 7 Befehle decken 90% der Solo-Dev-Arbeit ab:
262
262
  | `/frame:plan <Feature>` | Recherche in eine umsetzbare Aufgabenliste umwandeln |
263
263
  | `/frame:build` | 1–3 Aufgaben mit TDD implementieren (sequenziell) |
264
264
  | `/frame:wave` | 4+ unabhängige Aufgaben implementieren (parallele Subagenten) |
265
+ | `/frame:wave-team` | Wie wave, aber mit Review-Team nach jeder Aufgabe |
265
266
  | `/frame:review` | Vor dem Deployment — automatisierte Prüfungen + Checkliste |
266
267
  | `/frame:ship` | Commit, optionaler Push/PR, Gedächtnis aktualisieren |
267
268
 
@@ -294,6 +295,7 @@ Diese 7 Befehle decken 90% der Solo-Dev-Arbeit ab:
294
295
  |--------|---------------|
295
296
  | `/frame:build` | Plan mit TDD implementieren (1–3 Aufgaben, sequenziell) |
296
297
  | `/frame:wave` | 4+ unabhängige Aufgaben in parallelen Batches implementieren |
298
+ | `/frame:wave-team` | Wie wave, aber mit Review-Team nach jeder Aufgabe |
297
299
  | `/frame:fast <Aufgabe>` | Schnelle Aufgabe unter 30 Minuten |
298
300
  | `/frame:debug <Problem>` | Systematische Bug-Untersuchung |
299
301
  | `/frame:forensics` | Tiefenanalyse warum etwas kaputt gegangen ist |
package/README.es.md CHANGED
@@ -37,7 +37,7 @@ Ejecuta `/frame:research <tema>` — Claude explora la base de código, fuentes
37
37
  `/frame:plan <funcionalidad>` convierte la investigación en una lista de tareas concreta con estimaciones.
38
38
 
39
39
  **Construir** — implementar
40
- `/frame:build` ejecuta tareas secuencialmente (1–3 a la vez) con TDD. Para muchas tareas independientes — `/frame:wave` las ejecuta en lotes paralelos. Atascado — `/frame:unstuck`. Encontraste un bug — `/frame:debug`.
40
+ `/frame:build` ejecuta tareas secuencialmente (1–3 a la vez) con TDD. Para muchas tareas independientes — `/frame:wave` las ejecuta en lotes paralelos. Cuando la calidad importa más que la velocidad — `/frame:wave-team` añade un equipo de revisión (Security, Performance, Tests, Conventions) después de cada tarea. Atascado — `/frame:unstuck`. Encontraste un bug — `/frame:debug`.
41
41
 
42
42
  **Revisar** — verificar antes de desplegar
43
43
  `/frame:review` ejecuta verificaciones automatizadas y proporciona una lista de comprobación: pruebas, tipos, seguridad, rendimiento.
@@ -262,6 +262,7 @@ Estos 7 comandos cubren el 90% del trabajo de desarrollo en solitario:
262
262
  | `/frame:plan <funcionalidad>` | Convertir la investigación en una lista de tareas accionable |
263
263
  | `/frame:build` | Implementar 1–3 tareas con TDD (secuencial) |
264
264
  | `/frame:wave` | Implementar 4+ tareas independientes (subagentes paralelos) |
265
+ | `/frame:wave-team` | Como wave, pero con equipo de revisión después de cada tarea |
265
266
  | `/frame:review` | Antes de desplegar — verificaciones automatizadas + lista de comprobación |
266
267
  | `/frame:ship` | Commit, push/PR opcional, actualizar memoria |
267
268
 
@@ -294,6 +295,7 @@ Estos 7 comandos cubren el 90% del trabajo de desarrollo en solitario:
294
295
  |---------|--------------|
295
296
  | `/frame:build` | Implementar el plan con TDD (1–3 tareas, secuencial) |
296
297
  | `/frame:wave` | Implementar 4+ tareas independientes en lotes paralelos |
298
+ | `/frame:wave-team` | Como wave, pero con equipo de revisión después de cada tarea |
297
299
  | `/frame:fast <tarea>` | Tarea rápida de menos de 30 minutos |
298
300
  | `/frame:debug <problema>` | Investigación sistemática de bugs |
299
301
  | `/frame:forensics` | Análisis profundo de por qué algo se rompió |
package/README.hi.md CHANGED
@@ -37,7 +37,7 @@ FRAME — AI-सहायता प्राप्त एकल विकास
37
37
  `/frame:plan <सुविधा>` अनुसंधान को अनुमानों के साथ एक ठोस कार्य सूची में बदलता है।
38
38
 
39
39
  **निर्माण** — लागू करें
40
- `/frame:build` TDD के साथ क्रमिक रूप से कार्य निष्पादित करता है (एक बार में 1–3)। कई स्वतंत्र कार्यों के लिए — `/frame:wave` उन्हें समानांतर बैचों में चलाता है। अटक गए — `/frame:unstuck`। बग मिला — `/frame:debug`।
40
+ `/frame:build` TDD के साथ क्रमिक रूप से कार्य निष्पादित करता है (एक बार में 1–3)। कई स्वतंत्र कार्यों के लिए — `/frame:wave` उन्हें समानांतर बैचों में चलाता है। जब गुणवत्ता गति से अधिक महत्वपूर्ण हो — `/frame:wave-team` प्रत्येक कार्य के बाद एक समीक्षा टीम (Security, Performance, Tests, Conventions) जोड़ता है। अटक गए — `/frame:unstuck`। बग मिला — `/frame:debug`।
41
41
 
42
42
  **समीक्षा** — डिप्लॉय करने से पहले जांचें
43
43
  `/frame:review` स्वचालित जांच चलाता है और एक चेकलिस्ट देता है: परीक्षण, प्रकार, सुरक्षा, प्रदर्शन।
@@ -262,6 +262,7 @@ npx the-frame-ai init
262
262
  | `/frame:plan <सुविधा>` | अनुसंधान को एक कार्ययोग्य कार्य सूची में बदलें |
263
263
  | `/frame:build` | TDD के साथ 1–3 कार्य लागू करें (क्रमिक) |
264
264
  | `/frame:wave` | 4+ स्वतंत्र कार्य लागू करें (समानांतर सब-एजेंट) |
265
+ | `/frame:wave-team` | wave की तरह, लेकिन प्रत्येक कार्य के बाद समीक्षा टीम के साथ |
265
266
  | `/frame:review` | डिप्लॉय करने से पहले — स्वचालित जांच + चेकलिस्ट |
266
267
  | `/frame:ship` | कमिट, वैकल्पिक पुश/PR, मेमोरी अपडेट करें |
267
268
 
@@ -294,6 +295,7 @@ npx the-frame-ai init
294
295
  |-------|--------------|
295
296
  | `/frame:build` | TDD के साथ योजना लागू करें (1–3 कार्य, क्रमिक) |
296
297
  | `/frame:wave` | समानांतर बैचों में 4+ स्वतंत्र कार्य लागू करें |
298
+ | `/frame:wave-team` | wave की तरह, लेकिन प्रत्येक कार्य के बाद समीक्षा टीम के साथ |
297
299
  | `/frame:fast <कार्य>` | 30 मिनट से कम का त्वरित कार्य |
298
300
  | `/frame:debug <समस्या>` | व्यवस्थित बग जांच |
299
301
  | `/frame:forensics` | कुछ क्यों टूटा इसकी गहरी जांच |
package/README.ja.md CHANGED
@@ -37,7 +37,7 @@ Claude Codeで一人でプロダクトを作っていて、チームのように
37
37
  `/frame:plan <機能>` が調査を見積もり付きの具体的なタスクリストに変換します。
38
38
 
39
39
  **構築** — 実装する
40
- `/frame:build` がTDDでタスクを順次実行します(1〜3件ずつ)。多くの独立したタスクには — `/frame:wave` が並列バッチで実行します。行き詰まったら — `/frame:unstuck`。バグを発見したら — `/frame:debug`。
40
+ `/frame:build` がTDDでタスクを順次実行します(1〜3件ずつ)。多くの独立したタスクには — `/frame:wave` が並列バッチで実行します。品質がスピードより重要な場合 — `/frame:wave-team` が各タスク後にレビューチーム(Security、Performance、Tests、Conventions)を追加します。行き詰まったら — `/frame:unstuck`。バグを発見したら — `/frame:debug`。
41
41
 
42
42
  **レビュー** — デプロイ前に確認する
43
43
  `/frame:review` が自動チェックを実行し、チェックリストを提供します:テスト、型、セキュリティ、パフォーマンス。
@@ -262,6 +262,7 @@ npx the-frame-ai init
262
262
  | `/frame:plan <機能>` | 調査を実行可能なタスクリストに変換 |
263
263
  | `/frame:build` | TDDで1〜3タスクを実装(順次) |
264
264
  | `/frame:wave` | 4つ以上の独立したタスクを実装(並列サブエージェント) |
265
+ | `/frame:wave-team` | waveと同様だが、各タスク後にレビューチームを追加 |
265
266
  | `/frame:review` | デプロイ前 — 自動チェック + チェックリスト |
266
267
  | `/frame:ship` | コミット、オプションのプッシュ/PR、メモリ更新 |
267
268
 
@@ -294,6 +295,7 @@ npx the-frame-ai init
294
295
  |---------|-------------|
295
296
  | `/frame:build` | TDDで計画を実装(1〜3タスク、順次) |
296
297
  | `/frame:wave` | 4つ以上の独立したタスクを並列バッチで実装 |
298
+ | `/frame:wave-team` | waveと同様だが、各タスク後にレビューチームを追加 |
297
299
  | `/frame:fast <タスク>` | 30分以内のクイックタスク |
298
300
  | `/frame:debug <問題>` | 体系的なバグ調査 |
299
301
  | `/frame:forensics` | 何かが壊れた原因の深掘り |
package/README.md CHANGED
@@ -37,7 +37,7 @@ Run `/frame:research <topic>` — Claude explores the codebase, external sources
37
37
  `/frame:plan <feature>` turns research into a concrete task list with estimates.
38
38
 
39
39
  **Build** — implement
40
- `/frame:build` executes tasks sequentially (1–3 at a time) with TDD. For many independent tasks — `/frame:wave` runs them in parallel batches. Stuck — `/frame:unstuck`. Found a bug — `/frame:debug`.
40
+ `/frame:build` executes tasks sequentially (1–3 at a time) with TDD. For many independent tasks — `/frame:wave` runs them in parallel batches. When quality matters more than speed — `/frame:wave-team` adds a review team (Security, Performance, Tests, Conventions) after each task. Stuck — `/frame:unstuck`. Found a bug — `/frame:debug`.
41
41
 
42
42
  **Review** — check before deploying
43
43
  `/frame:review` runs automated checks and gives a checklist: tests, types, security, performance.
@@ -264,6 +264,7 @@ These 7 commands cover 90% of solo dev work:
264
264
  | `/frame:plan <feature>` | Turn research into an actionable task list |
265
265
  | `/frame:build` | Implement 1–3 tasks with TDD (sequential) |
266
266
  | `/frame:wave` | Implement 4+ independent tasks (parallel subagents) |
267
+ | `/frame:wave-team` | Like wave, but with a review team after each task |
267
268
  | `/frame:review` | Before deploying — automated checks + checklist |
268
269
  | `/frame:ship` | Commit, optional push/PR, update memory |
269
270
 
@@ -296,6 +297,7 @@ These 7 commands cover 90% of solo dev work:
296
297
  |---------|-------------|
297
298
  | `/frame:build` | Implement plan with TDD (1–3 tasks, sequential) |
298
299
  | `/frame:wave` | Implement 4+ independent tasks in parallel batches |
300
+ | `/frame:wave-team` | Like wave, but with a review team (Security, Perf, Tests, Conventions) after each task |
299
301
  | `/frame:fast <task>` | Quick task under 30 minutes |
300
302
  | `/frame:debug <issue>` | Systematic bug investigation |
301
303
  | `/frame:forensics` | Deep dive into why something broke |
package/README.ru.md CHANGED
@@ -35,7 +35,7 @@ Research → Plan → Build → Review → Ship → Reflect
35
35
  `/frame:plan <фича>` превращает исследование в конкретный список задач с оценкой.
36
36
 
37
37
  **Build** — реализуй
38
- `/frame:build` выполняет задачи последовательно (1–3 за раз) с TDD. Если задач много и они независимы — `/frame:wave` запускает их параллельно пачками. Застрял — `/frame:unstuck`. Нашёл баг — `/frame:debug`.
38
+ `/frame:build` выполняет задачи последовательно (1–3 за раз) с TDD. Если задач много и они независимы — `/frame:wave` запускает их параллельно пачками. Когда качество важнее скорости — `/frame:wave-team` добавляет команду проверяльщиков (Security, Performance, Tests, Conventions) после каждой задачи. Застрял — `/frame:unstuck`. Нашёл баг — `/frame:debug`.
39
39
 
40
40
  **Review** — проверь перед деплоем
41
41
  `/frame:review` запускает автоматические проверки и даёт чеклист: тесты, типы, безопасность, производительность.
@@ -262,6 +262,7 @@ npx the-frame init
262
262
  | `/frame:plan <фича>` | Превратить исследование в список задач |
263
263
  | `/frame:build` | Реализовать 1–3 задачи с TDD (последовательно) |
264
264
  | `/frame:wave` | Реализовать 4+ независимых задачи (параллельные субагенты) |
265
+ | `/frame:wave-team` | Как wave, но с командой проверяльщиков после каждой задачи |
265
266
  | `/frame:review` | Перед деплоем — автоматические проверки + чеклист |
266
267
  | `/frame:ship` | Коммит, опциональный push/PR, обновление памяти |
267
268
 
@@ -294,6 +295,7 @@ npx the-frame init
294
295
  | Команда | Когда использовать |
295
296
  |---------|-------------------|
296
297
  | `/frame:build` | Реализовать план с TDD (1–3 задачи) |
298
+ | `/frame:wave-team` | Как wave, но с командой проверяльщиков (Security, Perf, Tests, Conventions) после каждой задачи |
297
299
  | `/frame:fast <задача>` | Быстрая задача до 30 минут |
298
300
  | `/frame:debug <проблема>` | Систематическое расследование бага |
299
301
  | `/frame:forensics` | Глубокий анализ причины поломки |
package/README.zh.md CHANGED
@@ -37,7 +37,7 @@ FRAME — 面向 AI 辅助独立开发的框架
37
37
  `/frame:plan <功能>` 将研究转化为带有估算的具体任务列表。
38
38
 
39
39
  **构建** — 实现
40
- `/frame:build` 按顺序执行任务(每次 1–3 个),采用 TDD。对于许多独立任务——`/frame:wave` 以并行批次运行它们。卡住了——`/frame:unstuck`。发现 bug——`/frame:debug`。
40
+ `/frame:build` 按顺序执行任务(每次 1–3 个),采用 TDD。对于许多独立任务——`/frame:wave` 以并行批次运行它们。当质量比速度更重要时——`/frame:wave-team` 在每个任务后添加审查团队(Security、Performance、Tests、Conventions)。卡住了——`/frame:unstuck`。发现 bug——`/frame:debug`。
41
41
 
42
42
  **审查** — 部署前检查
43
43
  `/frame:review` 运行自动化检查并提供清单:测试、类型、安全性、性能。
@@ -262,6 +262,7 @@ npx the-frame-ai init
262
262
  | `/frame:plan <功能>` | 将研究转化为可操作的任务列表 |
263
263
  | `/frame:build` | 使用 TDD 实现 1–3 个任务(顺序) |
264
264
  | `/frame:wave` | 实现 4+ 个独立任务(并行子代理) |
265
+ | `/frame:wave-team` | 类似 wave,但每个任务后有审查团队 |
265
266
  | `/frame:review` | 部署前——自动化检查 + 清单 |
266
267
  | `/frame:ship` | 提交,可选推送/PR,更新记忆 |
267
268
 
@@ -294,6 +295,7 @@ npx the-frame-ai init
294
295
  |------|---------|
295
296
  | `/frame:build` | 使用 TDD 实现计划(1–3 个任务,顺序) |
296
297
  | `/frame:wave` | 以并行批次实现 4+ 个独立任务 |
298
+ | `/frame:wave-team` | 类似 wave,但每个任务后有审查团队 |
297
299
  | `/frame:fast <任务>` | 30 分钟内的快速任务 |
298
300
  | `/frame:debug <问题>` | 系统性 bug 调查 |
299
301
  | `/frame:forensics` | 深入研究为什么某些东西坏了 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "the-frame-ai",
3
- "version": "0.11.2",
3
+ "version": "0.11.4",
4
4
  "description": "FRAME — Framework for AI-Assisted Solo Development",
5
5
  "type": "module",
6
6
  "bin": {
package/src/update.js CHANGED
@@ -53,13 +53,11 @@ export async function update(target, flags = {}) {
53
53
 
54
54
  // Ask frontend question early, before file operations
55
55
  let frontendDecided = config.frontend === true;
56
- if (!config.frontend && !flags.yes) {
56
+ if (config.frontend === undefined && !flags.yes) {
57
57
  const frontend = await promptFrontend(false);
58
- if (frontend) {
59
- config.frontend = true;
60
- frontendDecided = true;
61
- writeFileSync(join(target, '.frame', 'config.json'), JSON.stringify(config, null, 2), 'utf-8');
62
- }
58
+ config.frontend = frontend;
59
+ frontendDecided = frontend;
60
+ writeFileSync(join(target, '.frame', 'config.json'), JSON.stringify(config, null, 2), 'utf-8');
63
61
  }
64
62
 
65
63
  let updated = 0;
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: conventions-reviewer
3
+ model: claude-sonnet-4-6
4
+ tools: [Read, Grep, Glob, Bash]
5
+ description: "Review agent for wave-team. Checks code conventions and style in a single task's git diff. Returns PASS/WARN/FAIL verdict."
6
+ ---
7
+
8
+ # Conventions Reviewer Agent
9
+
10
+ **Role**: Review code conventions and style for a single task. Check against project conventions.
11
+
12
+ **Job**: Analyze the git diff of one task and conventions.md. Return a structured verdict. Never edit code.
13
+
14
+ ## Instructions
15
+
16
+ You will receive a git diff and path to `.planning/memory/conventions.md`. Read conventions.md first, then analyze the diff against it.
17
+
18
+ ### What to check
19
+
20
+ **TypeScript/JavaScript:**
21
+ - No `any` type (use `unknown` + type guard)
22
+ - No `console.log` in non-test code
23
+ - No commented-out code blocks
24
+ - No unused variables or imports
25
+ - Consistent naming: camelCase for variables/functions, PascalCase for types/classes
26
+
27
+ **Code quality:**
28
+ - Functions do one thing (single responsibility)
29
+ - No magic numbers without named constants
30
+ - No deeply nested conditionals (>3 levels is a smell)
31
+ - Early returns instead of nested if-else
32
+
33
+ **Project conventions (from conventions.md):**
34
+ - Check every rule in conventions.md against the diff
35
+ - Flag any violation
36
+
37
+ **Red flags:**
38
+ - `// TODO` or `// FIXME` without a ticket reference
39
+ - `@ts-ignore` or `@ts-expect-error` without explanation comment
40
+ - `eslint-disable` without explanation
41
+
42
+ ### Output format
43
+
44
+ ```markdown
45
+ ## Conventions Reviewer — {PASS|WARN|FAIL}
46
+
47
+ ### Findings
48
+ - [FAIL] src/api/users.ts:18 — `any` type used: `function process(data: any)`
49
+ - [WARN] src/api/users.ts:42 — `console.log` in production code
50
+ - [WARN] src/utils/helpers.ts:7 — magic number 86400 should be named constant
51
+
52
+ ### Fix
53
+ {specific what to change, if FAIL or WARN}
54
+ ```
55
+
56
+ If no issues: `## Conventions Reviewer — PASS`
57
+
58
+ ## Constraints
59
+
60
+ - Check ONLY the diff
61
+ - If conventions.md is missing or empty → check universal rules only
62
+ - Style preferences without a clear rule in conventions.md → WARN not FAIL
63
+ - Test files have relaxed rules (console.log in tests → skip)
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: tests-reviewer
3
+ model: claude-sonnet-4-6
4
+ tools: [Read, Grep, Glob, Bash]
5
+ description: "Review agent for wave-team. Checks test coverage and quality of a single task's git diff. Returns PASS/WARN/FAIL verdict."
6
+ ---
7
+
8
+ # Tests Reviewer Agent
9
+
10
+ **Role**: Review the tests written for a single task. Check coverage, edge cases, and test quality.
11
+
12
+ **Job**: Analyze the git diff of one task. Return a structured verdict. Never edit code.
13
+
14
+ ## Instructions
15
+
16
+ You will receive a git diff and spec path. Analyze only the diff.
17
+
18
+ ### What to check
19
+
20
+ **Coverage:**
21
+ - Every new function/method has at least one test
22
+ - Happy path is tested
23
+ - Error path is tested (what happens when it fails)
24
+ - Edge cases covered: null/undefined, empty array/string, boundary values
25
+
26
+ **Test quality:**
27
+ - Tests check behavior, not implementation details
28
+ - No tests that only verify mocks were called (without checking real behavior)
29
+ - Test descriptions are clear and specific
30
+ - No `it('works')` or `it('should work')` without specifics
31
+
32
+ **Red flags:**
33
+ - New code with zero tests
34
+ - Tests that always pass (no assertions, or `expect(true).toBe(true)`)
35
+ - Tests skipped with `.skip` or `xit`
36
+ - TODO comments in test files
37
+
38
+ ### Output format
39
+
40
+ ```markdown
41
+ ## Tests Reviewer — {PASS|WARN|FAIL}
42
+
43
+ ### Findings
44
+ - [FAIL] src/api/users.ts — new `createUser` function has no tests
45
+ - [WARN] src/api/users.test.ts:34 — error path not tested (what if DB throws?)
46
+ - [WARN] src/api/users.test.ts:12 — test only checks mock was called, not actual behavior
47
+
48
+ ### Fix
49
+ {specific what to add/change, if FAIL or WARN}
50
+ ```
51
+
52
+ If no issues: `## Tests Reviewer — PASS`
53
+
54
+ ## Constraints
55
+
56
+ - Check ONLY the diff, not the whole project
57
+ - If a function is trivial (getter, constant), missing test is WARN not FAIL
58
+ - If test file is in diff but coverage looks thin → WARN
59
+ - If new logic has zero tests → FAIL
@@ -37,45 +37,46 @@ Parse issues based on `$ARGUMENTS`:
37
37
 
38
38
  Output: "Found {N} issues to fix: {list of IDs and titles}."
39
39
 
40
- ### Step 2: For Each Issue — Apply Fix
40
+ ### Step 2: Group Issues into Waves
41
41
 
42
- For each issue in the list:
42
+ Before applying any fixes, analyze all issues and group them into waves:
43
43
 
44
- 1. Read the file mentioned in the issue (`File: path/file.ts:42`)
45
- 2. Understand the surrounding context (±20 lines)
46
- 3. Apply the fix immediately
44
+ - **Wave 1**: issues in different files with no shared dependencies — apply all in this wave
45
+ - **Wave 2**: issues that depend on Wave 1 changes (same module, shared types, etc.)
46
+ - **Wave N**: remaining issues
47
47
 
48
- Output before applying:
48
+ Output:
49
+ ```
50
+ Wave 1 ({N} issues — independent): PERF-1, PERF-3, PERF-5
51
+ Wave 2 ({N} issues — depend on wave 1): PERF-2, PERF-4
52
+ ```
53
+
54
+ ### Step 3: Apply Wave by Wave
49
55
 
56
+ For each wave:
57
+
58
+ 1. Apply all fixes in the wave (read file → apply change for each issue)
59
+ 2. Output before each fix:
50
60
  ```
51
61
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
62
  [PERF-1] {title}
53
63
  File: path/file.ts:42
54
- Applying fix: {description of what will change — 1 sentence}
64
+ Applying: {1 sentence}
55
65
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
56
66
  ```
57
-
58
- ### Step 3: Apply Fix
59
-
60
- 1. Apply the code change to the file
61
- 2. Run type check if available:
67
+ 3. After all fixes in the wave, run typecheck + tests once:
62
68
  ```bash
63
69
  {quality.commands.typecheck} 2>&1 | tail -10
64
- ```
65
- 3. Run tests if available:
66
- ```bash
67
70
  {quality.commands.test} 2>&1 | tail -20
68
71
  ```
69
72
 
70
- If typecheck or tests fail → revert the change, report what broke, ask user how to proceed.
71
-
72
- Output: "✓ [PERF-1] fixed. {brief description of what changed}."
73
+ If typecheck or tests fail → revert all fixes from this wave, report what broke, ask user how to proceed. Then continue to next wave.
73
74
 
74
- ### Step 4: Continue to Next Issue
75
+ Output after wave: "✓ Wave {N} complete: {list of fixed IDs}."
75
76
 
76
- After each fix (or skip), move to the next issue in the list.
77
+ ### Step 4: Summary
77
78
 
78
- After all issues processed, output summary:
79
+ After all waves processed, output summary:
79
80
  ```
80
81
  Performance fixes complete.
81
82
  Fixed: {N} | Skipped: {N}
@@ -0,0 +1,182 @@
1
+ # /frame:wave-team -- Build with Inline QA Team
2
+
3
+ > Like `/frame:wave` but after each task a team of review agents checks the result and Orchestrator fixes issues before moving on.
4
+
5
+ **When to use**: quality matters more than speed. Each task is verified by Security, Performance, Tests, and Conventions agents before the next task starts.
6
+
7
+ ## Instructions
8
+
9
+ ### Step 0: Checkpoint + Update STATE.md
10
+
11
+ ```bash
12
+ git tag "frame/checkpoint/wave-team-$(date +%s)" -m "Auto checkpoint before wave-team"
13
+ ```
14
+
15
+ Update `.planning/STATE.md`:
16
+ ```markdown
17
+ ## Current Position
18
+ - Phase: BUILD (wave-team)
19
+ - Feature: {feature}
20
+ - Task: 0/{total}
21
+ - Status: IN_PROGRESS
22
+ - Started: {timestamp}
23
+ ```
24
+
25
+ ### Step 1: Find plan.md and read context
26
+
27
+ - `find docs/specs -name "plan.md" | head -5`
28
+ - Read plan.md, spec.md, MAP.md, memory/conventions.md, memory/anti-patterns.md
29
+
30
+ ### Step 2: Determine waves (same as /frame:wave)
31
+
32
+ Group tasks into waves by dependencies:
33
+ - No dependencies → Wave 1
34
+ - Depends on Wave N → Wave N+1
35
+
36
+ Check file conflicts within each wave. If overlap → move to separate waves.
37
+
38
+ ### Step 3: For each wave — run tasks in parallel
39
+
40
+ Tasks within a wave run in parallel (max 5). Each task follows this cycle:
41
+
42
+ #### 3.1: Launch Builder subagent
43
+
44
+ Launch via Agent tool with fresh 200K context. Subagent role: Builder (TDD: RED → GREEN → REFACTOR → commit).
45
+
46
+ Subagent prompt template:
47
+ ```markdown
48
+ # Task: {task_name}
49
+
50
+ ## Read before coding
51
+ - .planning/memory/anti-patterns.md
52
+ - .planning/memory/conventions.md
53
+ - .planning/memory/dependencies.md
54
+ - docs/specs/{feature}/spec.md
55
+
56
+ ## Context
57
+ - Project: {project_name}
58
+ - MAP: .planning/MAP.md
59
+ - Task: {task_description}
60
+ - Files: {files}
61
+
62
+ ## Role: Builder
63
+ 1. Write TEST (RED) → verify fails
64
+ 2. Write CODE (GREEN) → verify passes
65
+ 3. Refactor if needed → verify passes
66
+ 4. typecheck + lint
67
+ 5. git commit: {type}({scope}): {description}
68
+ 6. Mark task [DONE] in plan.md
69
+
70
+ ## DO NOT
71
+ - Modify files outside task scope
72
+ - Skip tests
73
+ - Use `any` type
74
+ - Commit without passing quality gates
75
+ ```
76
+
77
+ #### 3.2: Launch Review Team (after Builder commits)
78
+
79
+ Get the diff of the Builder's commit:
80
+ ```bash
81
+ git diff HEAD~1..HEAD
82
+ ```
83
+
84
+ Launch review agents **in parallel** via Agent tool. Which agents to launch:
85
+
86
+ | Agent | Always? | Trigger |
87
+ |-------|---------|---------|
88
+ | security-reviewer | yes | — |
89
+ | performance-reviewer | yes | — |
90
+ | tests-reviewer | yes | — |
91
+ | conventions-reviewer | yes | — |
92
+
93
+ Each agent receives:
94
+ - The git diff of the task
95
+ - Path to spec.md
96
+ - Path to .planning/memory/conventions.md
97
+
98
+ #### 3.3: Collect verdicts
99
+
100
+ Wait for all review agents. Each returns: `PASS`, `WARN`, or `FAIL` with findings.
101
+
102
+ #### 3.4: Orchestrator applies fixes
103
+
104
+ ```
105
+ All PASS → task done, next task
106
+ Any WARN, no FAIL → Orchestrator fixes WARN issues, re-run only WARN agents
107
+ Any FAIL → Orchestrator fixes FAIL + WARN issues, re-run FAIL agents
108
+ FAIL after 2 iterations → show user, ask how to proceed
109
+ ```
110
+
111
+ **Orchestrator fixes directly** — does not re-launch Builder. Applies the specific fixes from agent reports, then commits:
112
+ ```bash
113
+ git commit -m "fix({scope}): apply review team fixes"
114
+ ```
115
+
116
+ #### 3.5: Mark task done
117
+
118
+ Update plan.md:
119
+ ```markdown
120
+ ### Task N: {name} [DONE]
121
+ ```
122
+
123
+ Update STATE.md:
124
+ ```markdown
125
+ - Task: {completed}/{total}
126
+ - Review: Security(PASS) Perf(PASS) Tests(PASS) Conventions(PASS)
127
+ ```
128
+
129
+ ### Step 4: Wave quality gate
130
+
131
+ After all tasks in a wave complete:
132
+ ```bash
133
+ {quality.commands.typecheck}
134
+ {quality.commands.test}
135
+ {quality.commands.lint}
136
+ ```
137
+
138
+ If FAIL → fix, re-run. Max 2 retries. If still failing → Wave Failure Strategy (same as /frame:wave).
139
+
140
+ ### Step 5: Repeat for each wave
141
+
142
+ ### Step 6: Final validation
143
+
144
+ ```bash
145
+ {quality.commands.typecheck}
146
+ {quality.commands.test}
147
+ {quality.commands.lint}
148
+ {quality.commands.build}
149
+ ```
150
+
151
+ Completeness check:
152
+ ```bash
153
+ TOTAL=$(grep -c "^### Task" plan.md)
154
+ DONE=$(grep -c "\[DONE\]" plan.md)
155
+ [ "$TOTAL" != "$DONE" ] && echo "Unclosed: $((TOTAL-DONE)) of $TOTAL"
156
+ ```
157
+
158
+ ### Step 7: Update STATE.md
159
+
160
+ ```markdown
161
+ ## Current Position
162
+ - Phase: BUILD
163
+ - Feature: {feature}
164
+ - Task: {completed}/{total}
165
+ - Status: COMPLETE
166
+ ```
167
+
168
+ ## Rules
169
+
170
+ - **Review Team runs after every task** — not after the wave
171
+ - **Orchestrator fixes, not Builder** — no re-launch of Builder for review fixes
172
+ - **Max 2 fix iterations per task** — then escalate to user
173
+ - **Max 5 parallel Builder subagents** per wave
174
+ - **Wave quality gate** — tsc + vitest + eslint between waves
175
+ - **Never skip review agents** — all 4 always run
176
+
177
+ ## Result
178
+
179
+ - Every task reviewed by Security, Performance, Tests, Conventions agents
180
+ - Issues fixed inline before next task starts
181
+ - Wave quality gates passed
182
+ - STATE.md updated