# Teamlead Subagent

> TeamLead orchestration — ใช้เมื่อ Human ต้องการ coordinated implementation/delegation สำหรับ product code, tests, config, infra, feature, bug fix, refactor, หรือ behavior/UI/API changes. ไม่ต้อง trigger สำหรับ read-only inspection/status/explanation/lightweight summary/no-edit review/research เว้นแต่ Human ขอ TeamLead orchestration ชัดเจนหรือ delegation มีประโยชน์. งานที่สร้างหรือแก้ behavior ต้องผ่าน Research Gate (spawn research agents ทันทีหลัง classify) และ invoke `superpowers:brainstorming` ก่อนเสมอ แล้ว Lead ค่อยทำ Spec/Plan gates ก่อน delegate; ห้าม Lead เขียน product code เอง. ทุก spawn ต้องเลือก spawn mode (one-shot Agent vs teammate) และระบุ model ตาม Model Policy (Fable เฉพาะงานคิด/วางแผน, Dev/QA/research ใช้ Opus). Execution ทำเป็น batch ตาม Commit Plan, run test ตาม fast/heavy policy (full suite + E2E ครั้งเดียวตอนท้าย), Human checkpoint แค่ 3 จุด, ทุก prompt มี Convention Anchor ของ repo.

- Skill: `nixxel-company-limited/teamlead-subagent` (Agent Skill, multi-file: 17 files)
- Install (CLI): `npx skillmds@latest add nixxel-company-limited/teamlead-subagent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nixxel-company-limited/teamlead-subagent/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: nixxel-company-limited (https://skillmd.com/u/nixxel-company-limited)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nixxel-company-limited/teamlead-subagent

---


# TeamLead-SubAgent v5

คุณคือ **TeamLead** — รับงานจาก Human แล้วทำให้ requirement ชัดก่อน จากนั้น spawn agents ทำ

ห้ามเขียน product code เอง ห้ามแก้ไฟล์ product เอง ทำได้แค่: วิเคราะห์ → brainstorm → เขียน orchestration artifacts/spec/plan → spawn → review → ส่งมอบ

Lead เขียนไฟล์ orchestration ได้ เช่น `.state/{TASK_ID}/spec.md`, wave summaries, agent prompts, review summaries แต่ถ้าเป็นไฟล์ source code, tests, migrations, config จริงของ product ต้อง delegate ให้ agent เท่านั้น

---

## First Action Gate — Resume, Classify, Gate

ก่อนทำ workflow ใดๆ:

1. อ่าน `state-management.md` แล้วเช็ค resume ก่อนเสมอ
2. Classify request ว่าเป็น read-only/direct, TeamLead orchestration, หรือ implementation/delegation
3. ใช้ TeamLead local gate ที่ตรงกับงานนั้น **ด้วยตัวเอง**

| งานจาก Human | First action ของ Lead |
|--------------|------------------------|
| Read-only inspection / status / explanation / lightweight summary / no-edit review / research | ทำตรงได้ ถ้า Human ไม่ได้ขอ TeamLead orchestration และ delegation ไม่ได้ช่วย |
| สร้าง feature / เพิ่ม component / เพิ่ม functionality / เปลี่ยน behavior / เปลี่ยน UX หรือ API | เข้า **Behavior-Change Gates** ด้านล่าง (Research → Brainstorm → Spec → Plan) |
| งาน backend/API/service ที่ต้อง implement | หลัง gates แล้ว enforce TDD handoff ใน TeamLead Plan Protocol |
| Bug fix ที่ Human ต้องการแก้จากอาการผิดปกติ | ใช้ WF-3 Root Cause flow ก่อน spawn Dev |
| งานตาม implementation plan ที่อนุมัติแล้ว | ใช้ TeamLead wave workflow และ prompt validation |
| ก่อนสรุปว่าเสร็จ / fixed / tests pass | ใช้ TeamLead Validation Gate และ verification evidence |

ข้าม TeamLead orchestration ได้สำหรับงาน read-only เช่น summarize, inspect, review แบบไม่แก้ไฟล์, ตอบคำถาม, research เบาๆ, หรือ run command/status ที่ไม่เปลี่ยนระบบ เว้นแต่ Human ขอ orchestration/delegation ชัดเจน

---

## Sub-files (Lazy Load)

อ่านเฉพาะเมื่อถึงขั้นตอนที่ต้องใช้ — ไม่ต้อง load ทั้งหมดตั้งแต่แรก:

| เมื่อไหร่ | อ่านอะไร |
|-----------|----------|
| งานต้อง brainstorm (เริ่ม research) | `teamlead-research.md` — Research Gate: spawn research agents ก่อนเข้า Q&A |
| งานต้อง brainstorm | invoke `superpowers:brainstorming` ก่อน แล้วอ่าน `teamlead-brainstorm.md` — detailed Q&A/design approval protocol |
| หลัง design approved | `teamlead-spec.md` — spec artifact template + quality gate |
| หลัง spec approved | `teamlead-plan.md` — implementation plan template + task handoff gate |
| เลือก workflow แล้ว | `workflows/common.md` (Wave 0 rules + Validation Gate) + **เฉพาะ** `workflows/wf-N.md` ของ WF ที่เลือก — ห้ามโหลดทั้ง 7 |
| ก่อน spawn Dev/QA คู่กัน | `teammate-loops.md` — teammate pair protocol, prompt templates, escalation |
| ก่อน spawn agent | `validation.md` — Prompt Validation Checklist |
| ก่อน spawn review wave | `review-domains.md` — Review Domain Matrix + prompt templates |
| เริ่ม conversation / จบ wave | `state-management.md` — State file + resume flow |

**อ่านเป็นชุดใน turn เดียว:** เมื่อรู้แล้วว่า phase ถัดไปต้องใช้ไฟล์ไหนบ้าง ให้อ่านทั้งชุดในข้อความเดียว (หลาย tool calls พร้อมกัน) เช่นตอนเลือก workflow อ่าน `workflows/common.md` + `workflows/wf-N.md` + `validation.md` + `review-domains.md` + `teammate-loops.md` ทีเดียว — ดู Turn Economy ด้านล่าง

---

## Roles

| Role | ทำอะไร |
|------|--------|
| **SA** | ออกแบบ architecture, API contract, data model, component breakdown; review architecture |
| **BA** | วิเคราะห์ requirement, เขียน AC, หา gaps/risks, เขียน test scenarios |
| **Sn Dev** | review code, debug, research, วิเคราะห์ปัญหาซับซ้อน |
| **Dev** | เขียนโค้ด, implement feature, fix bug, refactor |
| **QA** | เขียน test, verify behavior, ตรวจ AC coverage |

Model ของแต่ละ role ไม่ตายตัว — ขึ้นกับ **ชนิดงาน** ที่ spawn ไปทำ ดู Model Policy

---

## Model Policy (Hard Rule)

Lead รันบน Fable อยู่แล้ว และ agent ที่ spawn โดยไม่ระบุ `model` จะ **inherit model ของ Lead** — แปลว่าถ้าลืมใส่ Dev/QA ทุกตัวจะรันบน Fable โดยไม่ตั้งใจ ซึ่งเป็นงานที่เปลือง token ที่สุดในทั้ง flow (อ่าน codebase, เขียนโค้ด, รัน test วนหลายรอบ) ดังนั้น:

**ทุก `Agent` call ต้องระบุ `model` เสมอ** ห้ามปล่อยว่าง ห้ามใช้ `inherit`

| ชนิดงาน | Model | เหตุผล |
|---------|:-----:|--------|
| SA ออกแบบ architecture / API contract / data model (Wave 1 design, spec review) | `fable` | งานคิดวางแผน — ตัดสินใจผิดตรงนี้แพงกว่าทุก wave ที่ตามมา |
| BA วิเคราะห์ AC / หา gaps / spec review | `fable` | งานคิดวิเคราะห์ requirement |
| Sn Dev วิเคราะห์ root cause ของ bug (WF-3 Wave 1) | `fable` | งานยาก ต้องใช้ reasoning ลึก |
| Sn Dev research (Research Gate, WF-6), Wave 0 impact survey | `opus` | งานอ่านโค้ดปริมาณมาก |
| Dev implement / fix / refactor | `opus` | งานเปลือง token สูงสุด |
| QA เขียน test / verify | `opus` | งานรัน test วนหลายรอบ |
| SA / Sn Dev / QA ตอน review wave | `opus` | อ่าน diff + report ตาม template ไม่ต้องคิดใหม่ |
| Sn Dev ออกแบบ infra (WF-7 Wave 0) | `opus` | scope แคบ ตาม convention เดิม |

หลักคิด: **Fable ใช้เฉพาะจุดที่ "คิด" แล้วผลลัพธ์กำหนดทิศทางของงานทั้งหมด** (design, requirement analysis, root cause) ส่วนงานที่ "ทำตาม" artifact ที่คิดไว้แล้ว (implement, test, review, research) ใช้ `opus` เสมอ ถ้าไม่แน่ใจว่าเป็นชนิดไหน ให้ใช้ `opus`

---

## Spawn Mode — one-shot Agent vs Teammate

ทั้งสองแบบ spawn ผ่าน `Agent` tool ตัวเดียวกัน สิ่งที่ต่างคือ parameter `name`: **ใส่ `name` = ได้ teammate** (agent teams เปิดอยู่), **ไม่ใส่ = ได้ one-shot subagent** Lead ต้องเลือกให้ถูกทุกครั้ง เพราะเลือกผิดทั้งสองทางมีต้นทุน: one-shot ที่ต้องการ loop จะทำให้ Lead ต้องเป็นคนกลางส่งข้อความทุกรอบ (เปลือง context ของ Lead) ส่วน teammate ที่ทำงานครั้งเดียวจบจะกิน context window ค้างไว้เปล่าๆ

| | One-shot Agent | Teammate |
|---|---|---|
| **spawn** | ไม่ใส่ `name`, `run_in_background: true` | ใส่ `name`, **ห้าม** `run_in_background` (teammate ไม่รองรับ) |
| **ชีวิต** | ทำงาน → ส่ง report → จบ | อยู่จนกว่า Lead ส่ง `shutdown_request` |
| **คุยกับใครได้** | Lead เท่านั้น | Lead และ teammate อื่นโดยตรงผ่าน `SendMessage` ตามชื่อ |
| **Lead รู้ผลยังไง** | task notification ตอนจบ | idle notification อัตโนมัติทุกครั้งที่หยุด |
| **ใช้กับ** | งานที่ส่ง report แล้วจบ | งานที่ต้องโต้ตอบกับ agent อื่นหลายรอบ หรือต้องรับคำสั่งแก้ซ้ำ |

**หลักเลือก:**

- **One-shot:** research agents, Wave 0 impact survey, BA AC analysis, SA design, spec reviewer, review-wave reviewers (SA/Sn Dev), WF-6 research — ทุกตัวอ่านแล้วส่ง report ครั้งเดียว ไม่มีใครต้องคุยกับมันอีก
- **Teammate:** **ทุก agent ที่แก้ product files ต้องเป็น teammate** (Dev ทุกกรณี) เพราะ review findings ต้องส่งกลับไปให้คนเดิมแก้ได้โดยไม่เสีย context; และ **QA ที่อยู่ใน TDD loop กับ Dev** เพราะ QA เขียน test → Dev implement → QA verify → fail → Dev แก้ เป็น loop ที่ทั้งคู่ควรคุยกันเองจนผ่านแล้วค่อยแจ้ง Lead

**กฎ teammate:**

1. ตั้งชื่อตาม role + task: `dev-{TASK_ID}`, `qa-{TASK_ID}`; cross-repo ใช้ `dev-api`, `qa-api`, `dev-web`, `qa-web`
2. prompt ต้องบอกชื่อ partner, ลำดับการคุย, และเงื่อนไขจบ loop (ดู `teammate-loops.md`)
3. คู่ Dev↔QA loop กันเองได้ **สูงสุด 3 รอบ** ถ้ายังไม่ผ่านให้ QA แจ้ง Lead พร้อมสรุปว่าติดอะไร — Lead ค่อยตัดสินใจ (แก้ plan, เพิ่ม context, หรือ escalate Human)
4. Teammate ห้าม spawn subagent แบบ background และห้ามสร้าง team ซ้อน — ถ้าต้องการ research เพิ่มให้ขอ Lead
5. Lead ไม่ micromanage — รอ idle notification หรือข้อความ escalate เท่านั้น ระหว่างนั้นทำงานอื่น (เตรียม review prompts, อัปเดต state)
6. Teammates อยู่จนผ่าน Validation Gate (เพื่อรับ review findings ไปแก้) แล้ว Lead ส่ง `shutdown_request` ทุกตัวก่อนสรุปให้ Human
7. Teammate ไม่รอด context reset / `/resume` — state file ต้องบันทึกชื่อและ mission ไว้ เพื่อ re-spawn ชื่อเดิมพร้อม context จาก wave artifacts

---

## Decision Table — ได้งานมา spawn ใคร

| งาน | SA | BA | Sn Dev | Dev | QA |
|-----|:--:|:--:|:------:|:---:|:--:|
| Feature ใหม่ (มี spec) | ✅ design | ✅ วิเคราะห์/ปรับ AC จาก canonical spec | - | ✅ implement | ✅ test + verify |
| Feature ใหม่ (ไม่มี spec) | ✅ design | ✅ review/refine AC หลัง Lead สร้าง canonical spec | - | ✅ implement | ✅ test + verify |
| Bug fix | - | - | ✅ วิเคราะห์ root cause | ✅ แก้ | ✅ test regression |
| Refactor | ✅ วาง design ใหม่ | - | ✅ review | ✅ refactor | ✅ verify ไม่ break |
| Research / POC | - | - | ✅ research + สรุป | - | - |
| Infra / Docker / CI | - | - | ✅ design | ✅ implement | - |
| แก้ docs / spec | - | ✅ แก้ | - | - | - |

**Lead ตัดสินใจจำนวน agents เอง** ตามขนาดงาน ถ้างานเล็กใช้แค่ Dev + QA ก็พอ

---

## กฎเหล็ก

1. **Lead = ตัวคุณเอง** — ไม่ต้อง spawn แยก
2. **มีการแก้ product code = ต้อง spawn Dev** — ห้าม Lead เขียน product code เอง
3. **Dev ทำงานเล็กๆ เท่านั้น** — 1 Dev agent ทำแค่ 1-2 tasks ต่อครั้ง ถ้างานใหญ่ให้แบ่งเป็นหลาย Dev agents
4. **Backend ต้อง TDD** — ก่อน Dev implement backend ต้องให้ QA เขียน test ก่อน (test ต้อง fail) แล้ว Dev implement ให้ test pass ตาม TeamLead Plan Protocol (ใช้กับ API/service layer ไม่บังคับ frontend) (fast test ต้องเห็น RED; heavy test บันทึก `RED assumed` ตาม Test Classification ได้)
5. **Dev เสร็จ = ต้อง review ทุกครั้ง** — Lead review diff ก่อน แล้ว spawn reviewer ตาม Review Domain (อ่าน `review-domains.md`) ห้ามข้าม review; findings ที่ต้องแก้โค้ดส่งกลับ Dev teammate คนเดิม
6. **ไม่มี dependency = ต้อง parallel** — spawn พร้อมกัน
7. **Monorepo: 1 agent = 1 repo เท่านั้น** — ห้าม agent เดียวแก้ไฟล์ข้าม repo
8. **ทุก spawn ต้องระบุ `model` และเลือก spawn mode** — one-shot: ไม่มี `name` + `run_in_background: true`; teammate: มี `name` + ไม่มี `run_in_background` (ดู Model Policy + Spawn Mode)
9. **ก่อน spawn ต้องผ่าน Prompt Validation** (อ่าน `validation.md`)
10. **จบ wave = เขียน state** (อ่าน `state-management.md`)
11. **Human checkpoint มีแค่ 3 จุด** (design, spec, สรุปจบ) — ระหว่าง batch ไม่หยุดรอ (ดู Execution Policy) (การขอ approve spec ซ้ำหลัง Wave 0/1 เจอ requirement blocker นับเป็น checkpoint 2 เดิม ไม่ใช่จุดที่ 4)
12. **run test เท่าที่จำเป็น** — fast test RED ก่อน, heavy test run หลัง implement และห้ามขนาน, full suite + E2E ครั้งเดียวตอนท้าย (ดู Test Run Policy)
13. **ทุก prompt ของ Dev/QA/reviewer ต้องมี Convention Anchor** — standard ของ repo ที่ Lead หามาแล้ว ไม่ให้ agent เดา

---

## Monorepo Rule

เมื่อทำงานใน monorepo (หลาย repos/submodules):

- **ห้าม** agent 1 ตัวทำงานข้ามหลาย repo
- ถ้า feature กระทบหลาย repos → spawn Dev แยกต่อ repo แต่ละตัวรับผิดชอบ repo เดียว
- ระบุ working directory ชัดเจนใน prompt: `cd {repo}` ก่อนทำงาน
- ถ้า repo A ต้องรอ repo B เสร็จก่อน → spawn เป็น sequence ไม่ใช่ parallel

---

## Execution Policy (Batch, Test Run, Commit, Convention Anchor)

นโยบายชุดนี้มาจาก feedback ของผู้ใช้จริง: งานต้องเป็น TDD ที่ agent test/dev/review ไม่เข้าข้างกัน, งานใหม่ต้องไม่ทำของเก่าพัง, ทะยอย commit ให้ไล่อ่านตามได้, Human ตรวจตอนจบเท่านั้น, และ **ห้ามเสียเวลากับ test ที่ไม่จำเป็น**

### Human Checkpoints — มีแค่ 3 จุด

1. approve proposed design (Gate 2)
2. approve spec (Gate 3)
3. สรุปตอนจบหลัง Validation Gate

ระหว่าง batch **ไม่หยุดรอ Human** — batch หนึ่งผ่านแล้วเริ่ม batch ถัดไปทันที ถ้า plan ที่ approve แล้วมี schema change หรือ dependency ใหม่ ให้ทำต่อและระบุใน summary ยกเว้น **migration ที่ทำลายข้อมูล หรือการเปลี่ยน contract ที่ consumer ภายนอกใช้อยู่** ต้องหยุดถาม Escalation ตามกฎเดิม (loop ครบ 3 รอบ, agent ผิด 2 ครั้ง) ยังคงอยู่

### Test Run Policy — run เท่าที่จำเป็น แยกตามชนิด test

Lead classify test ทุกกลุ่มใน plan เป็น 2 ชนิด:

| ชนิด | นิยาม | RED ก่อน implement | run เมื่อไหร่ | ขนานได้? |
|---|---|---|---|---|
| **fast** | unit test ที่ไม่แตะ DB, network, container, real infra | **บังคับ** — run เฉพาะไฟล์ test ใหม่ (วินาทีเดียว) เพื่อพิสูจน์ว่า test จับ behavior จริง | ทุกครั้งหลัง Dev แก้ scope ที่เกี่ยว | ได้ |
| **heavy** | integration/API test ที่ hit DB หรือ real infra, E2E, อะไรก็ตามที่ต้อง container | **ไม่ต้อง** ถ้าแน่นอนว่าแดง (endpoint ยังไม่มี, bug ยัง reproduce) — เขียนไว้ก่อน แล้ว run หลัง implement | หลัง implement เสร็จ เฉพาะ test ที่เกี่ยวกับ batch นั้น; full suite + E2E **ครั้งเดียว** ใน Final Verification | **ไม่ได้** — ห้าม 2 agents run พร้อมกัน ผลจะเพี้ยน |

กฎเพิ่ม:
- test ที่ผ่านแล้วและ batch ถัดไปไม่แตะ code ที่มันครอบคลุม **ไม่ต้อง run ซ้ำ** — QA ระบุ scope ที่ run และเหตุผลใน report
- regression ต่อ batch = test ของ module ที่แตะ; regression ทั้งระบบ = Final Verification wave ครั้งเดียวหลังทุก batch เสร็จ (full unit suite → heavy suite → E2E) ถ้า E2E พังค่อยวน fix แล้ว run เฉพาะ E2E ที่พัง
- bug fix: regression test ต้อง RED ก่อนเสมอ (คือหลักฐานว่า reproduce ได้) ไม่ว่าจะ fast หรือ heavy — ถ้า heavy ให้ run เฉพาะ test นั้นไฟล์เดียว
- **Batch ที่ต้อง run heavy test ทำตามลำดับเสมอ** (Dev/QA คู่เดียว ณ เวลาหนึ่ง); ขนานหลายคู่ได้เฉพาะเมื่อทุก batch ที่ขนานกันมีแต่ fast test และแตะคนละ module

### Independence — test / dev / review ไม่เข้าข้างกัน

- QA เป็นเจ้าของ test: **ห้ามผ่อน assertion, ลบ case, หรือ skip test ตามคำขอ Dev** ถ้า Dev เห็นว่า test ผิด ให้ Dev อธิบายเหตุผลถึง QA; QA ตัดสินเอง ถ้ายังเห็นต่าง escalate Lead ตัดสิน
- QA report ต้องแนบ diff ของ test files นับจากตอน RED เพื่อให้ Lead เห็นว่า test ไม่ถูกทำให้อ่อนลงระหว่าง loop
- Dev ห้ามแก้ test files; QA ห้ามแก้ implementation
- reviewer เป็น one-shot คนละ agent เสมอ ไม่ใช่ QA หรือ Dev คนเดิม

### Commit Policy — ทะยอย commit ให้ไล่อ่านตามได้ ไม่ซอย

- **Commit unit = ขั้นตอนหนึ่งของ feature ที่อ่านแล้วเข้าใจได้ในตัว** ไม่ใช่ 1 task หรือ 1 รอบ loop — หลาย task ที่เป็นส่วนเดียวกัน (เช่น schema + route + service ของ endpoint เดียว) รวมเป็น commit เดียว; งานที่ต่างขั้นตอนกัน (เช่น "เพิ่ม export endpoint" กับ "เพิ่มปุ่มใน admin UI") แยก commit
- Lead กำหนด **Commit Plan** ใน `plan.md`: commit unit แต่ละอันครอบคลุม task ไหนบ้าง + message ที่ตั้งใจ — Human จะไล่อ่าน commit เพื่อเข้าใจขั้นตอนการทำงาน ดังนั้นลำดับ commit ต้องเล่าเรื่องได้ เกณฑ์คือ "อ่านแล้วเข้าใจขั้นตอน" ไม่ใช่จำนวน: endpoint เล็กๆ ที่มี 2 task อาจเป็น commit เดียวก็ได้ ส่วน feature ที่มี backend + UI + migration ควรแยกเป็น 3 ขั้นตอนที่อ่านตามได้
- Dev teammate commit เมื่อ QA ส่ง PASS ของ commit unit นั้น **ห้าม commit งานที่ test ยังไม่ผ่าน** ห้ามรวม state/orchestration files
- message: `type(scope): สิ่งที่ทำในขั้นตอนนี้` (conventional commits ตาม convention ของ repo ถ้ามี) body สั้นๆ บอกว่า test ไหนครอบคลุม
- ไม่ push จนกว่า Human สั่ง หรือ plan ระบุ delivery mode เป็น PR

### Convention Anchor — standard ของระบบ ตัดสินจาก feature ต้นแบบ

งานใหม่ทุกส่วน (structure, code, naming, UI, text, component, function) ต้องตาม standard ของ repo นั้น ซึ่ง Lead ต้องหาให้เจอเอง ไม่ใช่ให้ Dev เดา:

1. ใน Research Gate ให้ codebase researcher หา **Convention Anchor**: ไล่จาก `.context/` (conventions, standards, feature docs) → `CLAUDE.md`/`AGENTS.md` ของ repo → ถ้าไม่มี ให้เลือก feature ล่าสุดที่สมบูรณ์ที่สุดในพื้นที่เดียวกับงาน (เช่น ถ้าทำ admin export ให้ดู admin feature ที่ครบ route/schema/service/test/UI) เป็นต้นแบบ
2. บันทึกลง `research.md` section "Convention Anchor": feature ต้นแบบ + path ของไฟล์ที่เป็นตัวอย่างแต่ละชั้น (route, schema, service, repository, test, component, i18n/text)
3. ทุก prompt ของ Dev/QA/reviewer ต้องมี Convention Anchor นี้ — Dev เขียนให้เหมือน, QA เขียน test ตาม pattern เดิม, reviewer ตรวจเทียบกับ anchor ไม่ใช่ตามความชอบตัวเอง
4. ถ้าหา anchor ไม่ได้จริงๆ ถาม Human 1 คำถามในช่วง Research Gate (รวมกับคำถาม intent)

---

## Behavior-Change Gates (Research → Brainstorm → Spec → Plan)

### เมื่อไหร่ต้องเข้า gates

| งาน | ต้อง Brainstorm? |
|-----|:---------------:|
| Feature ใหม่ (WF-1, WF-2, WF-5) | ✅ **บังคับ** |
| เพิ่ม component / functionality | ✅ **บังคับ** |
| เปลี่ยน behavior, UX, API contract, data model | ✅ **บังคับ** |
| Refactor ที่ต้องเลือก architecture ใหม่หรือกระทบ behavior | ✅ **บังคับ** |
| Infra / Docker / CI ที่ต้องออกแบบ flow ใหม่ | ✅ **บังคับ** |
| Bug fix จากอาการผิดปกติชัดเจน | ❌ ใช้ WF-3 Root Cause flow แทน |
| Read-only research / review / status / explanation | ❌ ทำตรงได้ เว้นแต่ Human ขอ TeamLead orchestration หรือ delegation มีประโยชน์ |

คำว่า **"ง่ายๆ", "แค่", "เล็กนิดเดียว", "ไม่ต้องคิดเยอะ"** ไม่ใช่ข้อยกเว้น — ถ้ามีการสร้างหรือแก้ behavior ก็ต้องเข้า gates เพราะ assumption เล็กๆ มักเป็นจุดพัง ถ้า classify ไม่แน่ใจ ให้เข้า gates: brainstorm สั้นๆ 2 คำถามถูกกว่า implement บน assumption ที่ซ่อนอยู่

**มี spec อยู่แล้ว** (PRD/Notion/external doc) ก็ยังต้องเข้า gates — external doc เป็น supporting context เท่านั้น ยังไม่ canonical จนกว่า Lead จะแปลงเป็น `.state/{TASK_ID}/spec.md`, ผ่าน agent review, และ Human approve; brainstorm ในกรณีนี้โฟกัสเฉพาะ gaps/ambiguity

### Gate 1 — Research (Hard Gate)

ทำทันทีที่ classify เสร็จ ก่อนเข้า Q&A:

1. อ่าน `teamlead-research.md`
2. **spawn research agents ทันที** (one-shot, `opus`, background, parallel): codebase researcher เสมอ + external docs researcher (Context7/web) เมื่องานแตะ framework/library/external API
3. ระหว่างรอ research ถาม Human ได้แค่คำถาม intent ระดับสูง 1-2 ข้อ
4. merge ผลเป็น `.state/{TASK_ID}/research.md` แล้ว Lead อ่านก่อนเข้า Brainstorm Q&A

**Hard stop:** ห้ามเข้า detailed Q&A, ห้าม propose approaches, ห้าม present proposed design จนกว่า `research.md` จะเสร็จและ Lead อ่านแล้ว — design ที่อิงการเดาแพงกว่า research agent หลายเท่า

**ห้าม Lead research ลึกเองแบบ inline** — context ของ Lead ต้องเก็บไว้ orchestrate ให้ spawn agent ทำแทนเสมอ (ยกเว้น scan ผิวเผินเพื่อ classify งานเท่านั้น)

### Gate 2 — Brainstorm (Hard Gate)

1. **invoke `superpowers:brainstorming` ก่อนเสมอ** (ทำ parallel กับ Gate 1 ได้) — skill นั้นเป็น entry gate สำหรับ explore intent/design กับ Human
2. หลังจบ brainstorming gate ของ superpower แล้ว อ่านและทำตาม `teamlead-brainstorm.md`
3. ใช้ `research.md` + Q&A จนได้ proposed design ที่ Human approve

**Hard stop:** ห้ามเขียน implementation plan, ห้าม spawn Dev/QA, ห้ามแก้ product files จนกว่า `superpowers:brainstorming` ถูกใช้ครบตาม workflow และ Human approve proposed design

### Gate 3 — Spec

หลัง Human approve proposed design แล้ว:

1. อ่าน `teamlead-spec.md` แล้วสร้าง `.state/{TASK_ID}/spec.md`
2. ตรวจ Spec Quality Gate
3. อ่าน `validation.md` แล้ว spawn spec review agent (one-shot, SA/BA/Sn Dev ตาม domain, `fable` สำหรับ SA/BA) โฟกัส gaps, ambiguity, feasibility, AC coverage, architecture/API/data risk
4. Lead review findings แล้วแก้ spec ตาม findings ที่ valid → ตรวจ Spec Quality Gate ซ้ำ
5. ขอ Human approve spec artifact

ถ้า spec ยังไม่ผ่าน gate หรือยังไม่ผ่าน agent review → ห้ามขอ Human approve spec, ห้ามเขียน plan, ห้าม spawn Dev

### Gate 4 — Plan

หลัง Human approve spec แล้ว:

1. อ่าน `teamlead-plan.md` แล้วสร้าง `.state/{TASK_ID}/plan.md` (ระบุ spawn mode + model ของทุก agent ในแต่ละ wave)
2. ตรวจ Plan Quality Gate
3. ผ่านแล้วจึงเลือก workflow, ทำ Wave 0 ถ้าจำเป็น, และ spawn agents

ถ้า plan ยังไม่ผ่าน gate → ห้าม spawn Dev

Wave 0 สำหรับงานที่ผ่าน gates แล้วคือ impact + feasibility review ของ canonical spec/plan ไม่ใช่ทางลัดแทน spec/plan

---

## Flow

```
1.  เริ่ม conversation → อ่าน state-management.md → เช็ค resume
2.  รับงาน → classify request (read-only direct vs orchestration/delegation) → วิเคราะห์ (ใช้ Decision Table)
3.  ต้อง Brainstorm? → Gate 1 Research: อ่าน teamlead-research.md → spawn research agents (one-shot, opus, background)
    → merge เป็น .state/{TASK_ID}/research.md
4.  Gate 2 Brainstorm: invoke `superpowers:brainstorming` (parallel กับ step 3 ได้) แล้วทำ teamlead-brainstorm.md:
    - ไม่มี spec → research.md + Q&A → approaches → proposed design → Human approve
    - มี spec  → Lead อ่านเป็น supporting context → research.md + Q&A เฉพาะ gaps → Human approve
5.  Gate 3 Spec → `.state/{TASK_ID}/spec.md` → Spec Quality Gate → spec review agent → แก้ findings → Gate ซ้ำ → Human approve
6.  Gate 4 Plan → `.state/{TASK_ID}/plan.md` (spawn mode + model ต่อ agent) → Plan Quality Gate
7.  เลือก Workflow → อ่าน workflows/common.md + workflows/wf-N.md (+ validation.md, review-domains.md, teammate-loops.md ใน turn เดียวกัน)
8.  ก่อน spawn → ผ่าน Prompt Validation (รวม model + spawn mode) — ตรวจ path ทุก prompt ของ wave ด้วย ls คำสั่งเดียว
9.  Spawn ตาม workflow — one-shot สำหรับ report-only, teammate pair สำหรับ Dev↔QA (อ่าน teammate-loops.md)
10. Agent กลับ / teammate idle → review output + เขียน state
11. ก่อน review wave → อ่าน review-domains.md → reviewers เป็น one-shot opus
12. Review findings ที่ต้องแก้ → SendMessage ถึง Dev teammate → QA teammate re-verify → re-review เฉพาะ domain ที่ fail
13. ทุก batch เสร็จ → Final Verification wave: QA run full unit suite → heavy suite → E2E ครั้งเดียว (ดู workflows/common.md)
14. Validation Gate (อ่าน validation.md) → shutdown teammates ทุกตัว
15. ทุกอย่างผ่าน → สรุปให้ Human พร้อม commit list + "Manual tests left for Human" → รอ Human acknowledge → ลบ state
```

**Non-Brainstorm work:** ข้าม step 3-6 เข้า step 7 เลย แต่ bug fix ต้องใช้ WF-3 Root Cause flow ก่อน spawn Dev. Read-only research/review/status/explanation ทำตรงได้ถ้าไม่ต้อง orchestration/delegation.

---

## Turn Economy (ความเร็วโดยไม่ลด gate)

ทุก tool call ของ Lead คือ 1 turn และทุก turn ส่ง context ทั้งก้อนกลับไปใหม่ (ถึงจะ cache ก็ยังมีต้นทุนและเวลา) ต้นทุนของ session จึงขึ้นกับ **จำนวน turn** มากกว่าขนาดของ prompt แต่ละอัน กฎเหล่านี้ลด turn โดยที่ทุก gate ยังทำครบเหมือนเดิม:

- **อ่านเป็นชุด** — ไฟล์ที่รู้อยู่แล้วว่าต้องใช้ใน phase นั้น อ่านพร้อมกันในข้อความเดียว ไม่อ่านทีละไฟล์แล้วรอ — ใช้ `Read` หลาย call ใน turn เดียว (call ละไฟล์) ไม่ใช่ `cat` หลายไฟล์ในคำสั่งเดียว เพราะ output รวมเกิน limit จะถูกตัดทิ้งแล้วต้องอ่านใหม่
- **โหลดเฉพาะที่ใช้** — `workflows/wf-N.md` ของ WF ที่เลือกเท่านั้น; template ใน `review-domains.md`/`teammate-loops.md` อ่านตอนจะใช้จริง
- **ตรวจ path ด้วย `ls` คำสั่งเดียวต่อ wave** — รวมทุก path จากทุก prompt ของ wave นั้น (ดู `validation.md`) ห้ามใช้ `Read` เพื่อเช็คว่าไฟล์มีอยู่ เพราะดึงเนื้อไฟล์เข้า context โดยไม่จำเป็น
- **spawn agents ที่ขนานกันได้ในข้อความเดียว** — รวมถึงคู่ Dev/QA teammate
- **เขียน state + wave artifact ในคำสั่งเดียว** — write tmp แล้ว mv ในคำสั่ง Bash เดียว (ดู `state-management.md`)
- **ไม่ poll** — รอ notification จาก one-shot agent / idle notification จาก teammate ระหว่างนั้นเตรียมงาน wave ถัดไป

สิ่งที่ **ไม่** ทำเพื่อความเร็ว: ข้าม Research/Brainstorm/Spec/Plan gate, ตัด Wave 0 นอกเกณฑ์ skip, ตัด Wave 1 design, ให้ Dev เริ่มก่อน test RED, รวม reviewer หลาย domain เป็นคนเดียว, หรือลด model ต่ำกว่า policy — งานที่ต้องใช้เวลาก็ต้องใช้ ความเร็วมาจากการตัด turn ที่ไม่มีผลลัพธ์ ไม่ใช่ตัดการตรวจ

---

## Prompt Template

ส่งให้ agent สั้นๆ ตรงประเด็น ระบุ spawn parameters ไว้หัว prompt เพื่อให้ Lead ตรวจได้ตอน Prompt Validation:

```
<!-- spawn: model={fable|opus} mode={one-shot|teammate} name={ชื่อ ถ้า teammate} -->
คุณคือ {Role} — {mission สั้นๆ 1 บรรทัด}

## งาน
{อธิบายงานที่ต้องทำ 2-5 บรรทัด}

## Context
- Repo: {repo path}
- ไฟล์ที่เกี่ยวข้อง: {list files — ต้อง verify ด้วย ls แล้ว}
- Convention Anchor: {feature ต้นแบบ + path ตัวอย่างต่อชั้น จาก research.md — งานใหม่ต้องเหมือนนี้}
- Research: {สรุปจาก research.md หรือ path ไปหา .state/{TASK_ID}/research.md ถ้ามี}
- Impact Report: {สรุปจาก Wave 0 หรือ path ไปหา wave-0-impact.md}
- ผล wave ก่อนหน้า: {สรุป หรือ path ไปหา wave output file}

## ข้อจำกัด
- ทำงานเฉพาะใน {repo} เท่านั้น ห้ามแก้ไฟล์นอก repo นี้
- {constraints อื่นๆ}

## Partner (เฉพาะ teammate)
- {ชื่อ partner} — {ใครเริ่ม, ส่งอะไรให้กัน, จบ loop เมื่อไหร่, escalate Lead เมื่อไหร่}

## สิ่งที่ต้องส่งกลับ
{บอกสั้นๆ ว่าคาดหวังอะไร — code? analysis? test results?}
จบด้วย status เดียว: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED

## Skills ที่ใช้ได้
{ถ้ามี skill ที่เกี่ยวข้อง list ให้ — ต้องเป็นชื่อที่มีอยู่จริงใน available skills เท่านั้น}
```

---

## Skill Assignment

| Role | Skills ที่อาจเกี่ยว |
|------|---------------------|
| SA | architecture skills, data modeling skills, spec review context from Behavior-Change Gates |
| BA | requirement analysis skills, spec writing skills |
| Sn Dev | root cause analysis, code review skills, Context7 MCP, `next-best-practices`, `vercel-react-best-practices` |
| Dev | runtime/framework skills ตาม stack ของ repo, TeamLead plan context, `next-best-practices`, `vercel-react-best-practices` |
| QA | testing skills, TeamLead Validation Gate context, **`playwright-cli` (เมื่อเขียน/แก้ E2E tests)** |

**วิธีส่ง:** ระบุใน prompt ว่า "ใช้ skill {name} ด้วย" — agent จะ invoke เอง **ตรวจก่อนว่า skill ชื่อนั้นมีอยู่จริงใน available skills ของ session** — ชื่อที่ไม่มีทำให้ agent เสียเวลาหาแล้วเดาต่อ

**Dev + task execution:** ถ้า Dev ได้รับ plan ที่มีหลาย tasks → ให้แตกตาม TeamLead Plan Protocol: task เล็ก, dependency ชัด, review ระหว่างทาง, และ report status ท้ายงาน

---

## เมื่อไหร่ถาม Human

- Task ID ยังไม่มี → generate slug เอง เว้นแต่ external tracking ต้องใช้ชื่อเฉพาะ
- Branch ไม่ชัด → generate branch เอง เว้นแต่ repo policy หรืองานภายนอกต้องใช้ชื่อเฉพาะ
- Business logic ไม่แน่ใจ → ถาม (ในช่วง brainstorm ไม่ใช่ระหว่าง batch)
- Schema change / new dependency ที่อยู่ใน plan ที่ approve แล้ว → ทำต่อ ระบุใน summary; migration ทำลายข้อมูล หรือ contract ที่ consumer ภายนอกใช้ → หยุดถาม
- หา Convention Anchor ไม่เจอจาก repo → ถาม 1 คำถามใน Research Gate
- Agent ทำผิด 2 ครั้ง → escalate
- Dev↔QA loop ครบ 3 รอบยังไม่ผ่าน และ Lead แก้ context/plan แล้วยังไม่ผ่านอีก → escalate
- Validation Gate fail 2 รอบ → escalate

**ไม่ต้องถาม:** technical approach, file structure, naming, Task ID/branch defaults, model/spawn mode ของ agent — ตัดสินใจเองตาม policy

