@warnyin/agents 0.9.1 → 0.10.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 +110 -105
- package/README.md +148 -148
- package/package.json +38 -38
- package/src/.claude/agents/warnyin-infra.md +13 -13
- package/src/.claude/agents/warnyin-qa.md +13 -13
- package/src/.claude/agents/warnyin-sa.md +13 -13
- package/src/.claude/agents/warnyin-security.md +13 -13
- package/src/.claude/agents/warnyin-tech-lead.md +13 -13
- package/src/.claude/commands/warnyin/build.md +30 -30
- package/src/.claude/commands/warnyin/design.md +26 -26
- package/src/.claude/commands/warnyin/discovery.md +17 -17
- package/src/.claude/commands/warnyin/explore.md +14 -14
- package/src/.claude/commands/warnyin/init.md +12 -12
- package/src/.claude/commands/warnyin/install-skill.md +14 -14
- package/src/.claude/commands/warnyin/next.md +17 -17
- package/src/.claude/commands/warnyin/ship.md +28 -28
- package/src/.claude/commands/warnyin/update-codemaps.md +12 -12
- package/src/.claude/commands/warnyin/verify.md +20 -20
- package/src/.claude/skills/explore/SKILL.md +8 -8
- package/src/.claude/skills/next/SKILL.md +8 -8
- package/src/.claude/skills/update-codemaps/SKILL.md +8 -8
- package/src/.warnyin/installer/templates/CLAUDE.md +29 -29
- package/src/.warnyin/template/docs/codemap/index.md +18 -18
- package/src/.warnyin/template/docs/features/[feature-name]/business.md +5 -5
- package/src/.warnyin/template/docs/features/[feature-name]/feature.md +5 -5
- package/src/.warnyin/template/docs/features/[feature-name]/spec.md +16 -16
- package/src/.warnyin/template/docs/infra.md +16 -16
- package/src/.warnyin/template/docs/project.md +18 -18
- package/src/.warnyin/template/docs/rule.md +7 -7
- package/src/.warnyin/template/docs/techstack/[component]/about.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/rule.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/standard.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/structure.md +7 -7
- package/src/.warnyin/template/docs/techstack/[component]/test.md +7 -7
- package/src/.warnyin/template/docs/troubleshooting.md +32 -32
- package/src/.warnyin/template/stages/[topic]/build.md +58 -58
- package/src/.warnyin/template/stages/[topic]/business.md +21 -21
- package/src/.warnyin/template/stages/[topic]/design.md +57 -57
- package/src/.warnyin/template/stages/[topic]/discovery.md +69 -69
- package/src/.warnyin/template/stages/[topic]/proposal.md +43 -43
- package/src/.warnyin/template/stages/[topic]/research.md +49 -49
- package/src/.warnyin/template/stages/[topic]/ship.md +32 -32
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/issue.md +19 -19
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/rule.md +13 -13
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/spec.md +36 -36
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/standard.md +21 -21
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/task.md +39 -39
- package/src/.warnyin/template/stages/[topic]/test.md +46 -46
- package/src/.warnyin/template/stages/[topic]/troubleshooting.md +34 -34
- package/src/.warnyin/template/stages/[topic]/verify.md +44 -44
- package/src/.warnyin/workflow/README.md +101 -100
- package/src/.warnyin/workflow/api-doc.md +93 -0
- package/src/.warnyin/workflow/codemap.md +91 -91
- package/src/.warnyin/workflow/contexts/README.md +49 -49
- package/src/.warnyin/workflow/contexts/build.md +25 -25
- package/src/.warnyin/workflow/contexts/research.md +25 -25
- package/src/.warnyin/workflow/contexts/review.md +25 -25
- package/src/.warnyin/workflow/explore.md +32 -32
- package/src/.warnyin/workflow/init.md +125 -125
- package/src/.warnyin/workflow/next.md +48 -48
- package/src/.warnyin/workflow/roles/README.md +47 -46
- package/src/.warnyin/workflow/roles/ba.md +25 -25
- package/src/.warnyin/workflow/roles/developer.md +30 -30
- package/src/.warnyin/workflow/roles/infra.md +24 -24
- package/src/.warnyin/workflow/roles/po.md +28 -28
- package/src/.warnyin/workflow/roles/qa.md +35 -35
- package/src/.warnyin/workflow/roles/sa.md +28 -28
- package/src/.warnyin/workflow/roles/security.md +39 -39
- package/src/.warnyin/workflow/roles/tech-lead.md +28 -28
- package/src/.warnyin/workflow/scripts/build-wave.mjs +125 -125
- package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
- package/src/.warnyin/workflow/stages/build.md +98 -98
- package/src/.warnyin/workflow/stages/design.md +122 -119
- package/src/.warnyin/workflow/stages/discovery.md +78 -78
- package/src/.warnyin/workflow/stages/ship.md +92 -90
- package/src/.warnyin/workflow/stages/verify.md +80 -77
- package/src/AGENTS.md +48 -48
- package/src/bin/cli.mjs +193 -193
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
# INIT — วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
|
|
2
|
-
|
|
3
|
-
> **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
|
|
4
|
-
> เป้าหมาย: ทำให้ `docs/` สะท้อนโปรเจกต์จริง — เพื่อให้ทุก stage (Discovery→SHIP) เริ่มจากความรู้ที่ถูกต้อง ไม่ใช่โครงว่างเปล่า
|
|
5
|
-
|
|
6
|
-
> ⚠️ **Deliverable ของ INIT = ไฟล์จริงที่ถูกเขียนลงดิสก์ใน `docs/`**
|
|
7
|
-
> การวิเคราะห์แล้วสรุปในแชทอย่างเดียว **ถือว่ายังไม่จบงาน** — INIT จะจบได้ก็ต่อเมื่อทุกไฟล์ในตาราง §4 ถูก write ลง `docs/` จริงและผ่าน gate §5
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 1. INIT คืออะไร / ใช้เมื่อไหร่
|
|
12
|
-
|
|
13
|
-
ใช้ **ครั้งแรกหลังติดตั้ง workflow** ลงโปรเจกต์ (`npx github:warnyin/warnyin-agents`)
|
|
14
|
-
หรือเมื่อ `docs/` ยังว่าง/ล้าสมัยจนใช้อ้างอิงไม่ได้ — INIT ไม่ใช่ stage ของงาน แต่เป็นการ **ปูพื้นความรู้** ให้ workflow ทำงานได้เต็มประสิทธิภาพ
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 2. หลักการทำงาน (operating principles)
|
|
19
|
-
|
|
20
|
-
1. **โค้ดตอบได้ → อ่านโค้ดเอง ห้ามเดา** — structure, techstack, convention, วิธี build/test, infra วิเคราะห์จาก **โค้ดจริง + config จริง** เท่านั้น
|
|
21
|
-
2. **ข้อมูลธุรกิจโค้ดตอบไม่ได้ → สัมภาษณ์ user ผ่าน role lens เฉพาะทาง** — เป้าหมายโปรเจกต์ ลูกค้า ขอบเขต ความสำคัญ: AI หลัก **สวม lens ของ BA** (`.warnyin/workflow/roles/ba.md`) และ **PO** (`.warnyin/workflow/roles/po.md`) ใช้ checklist ของทั้งสองเป็นชุดคำถาม — **ถามทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (เดาจาก README/โค้ดเป็น recommended answer ให้ user แค่ยืนยัน/แก้)
|
|
22
|
-
- role ที่ต้องคุยกับ user เป็น **lens เสมอ ไม่ใช่ sub-agent** (sub-agent คุยกับ user ไม่ได้) — fan-out sub-agent ใช้ได้เฉพาะงานวิเคราะห์โค้ด read-only (ข้อ 5)
|
|
23
|
-
- ถ้าติดตั้ง skill `product-management` ไว้ (ดู `/warnyin:install-skill po`) → หยิบมาเสริมมุมตอนตั้งคำถาม scope/priority ได้
|
|
24
|
-
3. **เสนอ summary ก่อนเขียน** — สรุปสิ่งที่วิเคราะห์ได้ + รายการไฟล์ docs/ ที่จะเขียน ให้ user ยืนยัน **ครั้งเดียว** แล้วจึงเขียนจริง
|
|
25
|
-
4. **ไฟล์ docs/ ที่มีเนื้อหาอยู่แล้ว → เติม/อัปเดต ไม่เขียนทับทิ้ง** — ของเดิมของ user มีค่าเสมอ
|
|
26
|
-
5. **วิเคราะห์หลาย component ขนานได้** — fan-out sub-agent (read-only) หนึ่งตัวต่อหนึ่ง component; เครื่องที่ไม่มี sub-agent → วิเคราะห์ทีละ component ด้วยหลักการเดียวกัน
|
|
27
|
-
6. **ไม่แน่ใจ → ระบุว่า "ยังว่าง รอเติม" ชัดเจน** — ห้ามแต่งเนื้อหาขึ้นเองเพื่อให้ไฟล์ดูเต็ม
|
|
28
|
-
7. **เขียนไฟล์จริงเสมอ ห้ามจบแค่สรุปในแชท** — หลัง user ยืนยัน summary ต้อง write ทุกไฟล์ในตาราง §4 ลง `docs/` ด้วย (copy template → เติมเนื้อหา); วิเคราะห์เสร็จแล้วไม่เขียนไฟล์ = งานล้มเหลว
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## 3. ลำดับขั้นการทำงาน (process)
|
|
33
|
-
|
|
34
|
-
1. **สแกนภาพรวม:** โครงสร้าง repo, package manifest, ภาษา/framework, แบ่งเป็น **component** อะไรบ้าง (เช่น api-service, admin-console)
|
|
35
|
-
2. **วิเคราะห์ลึกต่อ component (ขนานได้, read-only):** โครงสร้างโฟลเดอร์/โมดูล, pattern/convention ที่ใช้จริงในโค้ด, วิธี build/test ที่มีอยู่
|
|
36
|
-
3. **วิเคราะห์ infra:** docker/compose, env, service ที่ต้องรันสำหรับ local dev
|
|
37
|
-
4. **สัมภาษณ์ user เติมส่วนที่โค้ดตอบไม่ได้ (สวม BA + PO lens):**
|
|
38
|
-
- **ก่อนถาม → สแกนสิ่งที่มีอยู่ก่อนเสมอ:** README, `docs/project.md` เดิม, comment/config ในโค้ด — เอามาเป็น recommended answer; **ถามเฉพาะช่องที่ยัง "ขาดหาย" จริง** ไม่ถามซ้ำสิ่งที่หาคำตอบได้เอง
|
|
39
|
-
- **สวม BA lens** (`.warnyin/workflow/roles/ba.md`) ไล่ checklist: ปัญหาจริง/ใครเจ็บ, as-is→to-be, edge case ของ process, ข้อมูล/เจ้าของ, ข้อจำกัด (กฎหมาย/ระบบเดิม), acceptance วัดได้ไหม
|
|
40
|
-
- **สวม PO lens** (`.warnyin/workflow/roles/po.md`) ไล่ checklist: persona หลัก, success metric ที่วัดได้, MVP เล็กสุด, priority (must/should/could), why-now, scope-out
|
|
41
|
-
- ถาม **ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (AskUserQuestion) — เป็น lens ของ AI หลัก **ห้าม fan-out sub-agent มาสัมภาษณ์** (คุยกับ user ไม่ได้)
|
|
42
|
-
- ถ้าติดตั้ง `product-management` skill ไว้ → ใช้เสริมมุม scope/priority
|
|
43
|
-
- คำตอบที่ได้ → ใช้เติม `docs/project.md` (เป้าหมาย/ลูกค้า/ขอบเขต) และ `rule.md` ของแต่ละ component (กฎที่ user สั่ง)
|
|
44
|
-
5. **เสนอ summary → user ยืนยันครั้งเดียว**
|
|
45
|
-
6. **เขียนไฟล์จริงลง `docs/` ให้ครบตาราง §4 (ขั้นบังคับ ห้ามข้าม)** — ทำตามกลไก 6.1–6.4 นี้:
|
|
46
|
-
|
|
47
|
-
**6.1 ไฟล์ root** — copy template แล้วเติม:
|
|
48
|
-
```
|
|
49
|
-
mkdir -p docs
|
|
50
|
-
cp .warnyin/template/docs/project.md docs/project.md
|
|
51
|
-
cp .warnyin/template/docs/infra.md docs/infra.md
|
|
52
|
-
cp .warnyin/template/docs/rule.md docs/rule.md
|
|
53
|
-
cp .warnyin/template/docs/troubleshooting.md docs/troubleshooting.md
|
|
54
|
-
```
|
|
55
|
-
- ไฟล์ไหนมีอยู่แล้วใน `docs/` → **ห้าม `cp` ทับ** ให้เปิดอ่านแล้ว Edit เติมแทน
|
|
56
|
-
- `project.md` → เติมจากผลสัมภาษณ์ user (ข้อ 4) · `infra.md` → เติมจาก config จริง (ข้อ 3) · `rule.md`/`troubleshooting.md` → วางโครงหัวข้อ ใส่ `<!-- ยังว่าง รอเติม -->` ในส่วนที่ยังไม่มีข้อมูล
|
|
57
|
-
|
|
58
|
-
**6.2 โฟลเดอร์ component** — วนทำ **ทุก component** ที่ได้จากข้อ 1 (สมมติชื่อจริง `<name>`):
|
|
59
|
-
```
|
|
60
|
-
cp -R ".warnyin/template/docs/techstack/[component]" "docs/techstack/<name>"
|
|
61
|
-
```
|
|
62
|
-
- ทำซ้ำคำสั่งนี้หนึ่งครั้งต่อหนึ่ง component (เช่น `api-service`, `admin-console`) — **rename เป็นชื่อจริงเสมอ**
|
|
63
|
-
- หลัง copy ครบ → ต้อง **ไม่มี** โฟลเดอร์ `docs/techstack/[component]` (ที่มีวงเล็บ) หลงเหลือ; ถ้ามีให้ลบทิ้ง
|
|
64
|
-
|
|
65
|
-
**6.3 เติมเนื้อหา 5 ไฟล์ในแต่ละ component** ด้วย Write/Edit (อิงผลวิเคราะห์ข้อ 2):
|
|
66
|
-
- `about.md` (component คืออะไร/ภาษา/framework) · `structure.md` (โครงโฟลเดอร์) · `standard.md` (convention ที่พบจริง + ยืนยัน user) · `rule.md` (กฎที่ user สั่ง — ถามก่อน ห้ามเดา) · `test.md` (framework/คำสั่งเทส)
|
|
67
|
-
- ส่วนที่ข้อมูลไม่พอ → ใส่ `<!-- ยังว่าง รอเติม -->` ห้ามแต่ง
|
|
68
|
-
|
|
69
|
-
**6.4 codemap** — สร้าง `docs/codemap/` ตาม playbook `.warnyin/workflow/codemap.md` (token-lean) อย่างน้อยต้องมี `index.md`
|
|
70
|
-
|
|
71
|
-
7. **Verify ว่าเขียนจริง:** รัน `find docs -type f` เทียบกับตาราง §4 — ทุกแถวต้องมีไฟล์จริง, ทุก component มีครบ 5 ไฟล์, ไม่มีโฟลเดอร์/ไฟล์ที่ยังมี `[component]` (วงเล็บ) หลงเหลือ
|
|
72
|
-
8. **รายงานปิดท้าย:** ส่วนไหนยังว่าง/ไม่แน่ใจ ให้ user เติมภายหลัง → พร้อมเริ่มงานแรกด้วย `/warnyin:discovery` หรือ `/warnyin:design`
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 4. Output (เขียน/เติมที่ `docs/`)
|
|
77
|
-
|
|
78
|
-
> โฟลเดอร์ component จริงให้ copy จาก template `.warnyin/template/docs/techstack/[component]/` เป็นชื่อจริง (เช่น `api-service/`) — ห้ามทิ้งโฟลเดอร์ `[component]` ว่างไว้เฉยๆ โดยไม่สร้างของจริง
|
|
79
|
-
|
|
80
|
-
| ไฟล์ | เนื้อหา | แหล่งข้อมูล |
|
|
81
|
-
|---|---|---|
|
|
82
|
-
| `docs/project.md` | โปรเจกต์คืออะไร เป้าหมาย ลูกค้า ขอบเขต | สัมภาษณ์ user (+ README เดิมเป็น recommended) |
|
|
83
|
-
| `docs/techstack/<component>/about.md` | component นี้คืออะไร ทำหน้าที่อะไร | โค้ดจริง |
|
|
84
|
-
| `docs/techstack/<component>/structure.md` | โครงสร้างโฟลเดอร์/โมดูล | โค้ดจริง |
|
|
85
|
-
| `docs/techstack/<component>/standard.md` | pattern/convention ที่พบจริงในโค้ด (ยืนยันกับ user) | โค้ดจริง + user |
|
|
86
|
-
| `docs/techstack/<component>/rule.md` | กฎที่ user ต้องการบังคับ (ถามก่อน ห้ามเดา) | user |
|
|
87
|
-
| `docs/techstack/<component>/test.md` | วิธีเทสที่ใช้อยู่ (framework, คำสั่ง, e2e) | โค้ด/config จริง |
|
|
88
|
-
| `docs/codemap/` | แผนที่โค้ดทั้งชุด — สร้างตาม playbook `.warnyin/workflow/codemap.md` (token-lean) | โค้ดจริง |
|
|
89
|
-
| `docs/infra.md` | local env: service ที่ต้องรัน, วิธีรัน, env vars | config จริง |
|
|
90
|
-
| `docs/rule.md`, `docs/troubleshooting.md` | วางโครงหัวข้อ รอเติมระหว่างใช้งานจริง | — |
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## 4.1 Source map — `project` / `infra` / `rule` หาจากไหนใน codebase
|
|
95
|
-
|
|
96
|
-
> หลัก: §2 ข้อ 1 **"โค้ดตอบได้ → อ่านเอง"** · §2 ข้อ 2 **"ตอบไม่ได้ → สัมภาษณ์"** — 3 ไฟล์นี้คาบเส้น จึงระบุแหล่งให้ชัด ก่อนจะไปถาม user
|
|
97
|
-
|
|
98
|
-
### `infra.md` — ขุดจาก config จริงได้เกือบทั้งไฟล์ ✅
|
|
99
|
-
| field | หาจากไฟล์ไหน |
|
|
100
|
-
|---|---|
|
|
101
|
-
| Service ที่ต้องรัน | `docker-compose.yml`/`compose.yaml`, `Dockerfile`, `.devcontainer/`, `Procfile`, k8s/helm manifests, `Makefile` |
|
|
102
|
-
| วิธีรัน local | `package.json` scripts (`dev`/`start`), `Makefile` targets, `turbo.json`/`nx.json`, `.nvmrc`/`.node-version`, README ส่วน "Getting Started" |
|
|
103
|
-
| Env vars | `.env.example`/`.env.sample`, env schema ในโค้ด (zod/envalid), `environment:` ใน compose, จุดที่อ้าง `process.env.*`/`os.environ` — **อ่านชื่อ+ความหมาย ห้ามดูดค่า secret จริง** |
|
|
104
|
-
| staging/prod | `.github/workflows/`, `vercel.json`, `fly.toml`, terraform, deploy scripts |
|
|
105
|
-
|
|
106
|
-
### `rule.md` (global) — โค้ดให้แค่ recommended, เจตนาต้องถาม ⚠️
|
|
107
|
-
- **derive เป็น recommended ได้:** linter/formatter (`eslint.config.*`, `.prettierrc`, `.editorconfig`), `tsconfig` strict flags, pre-commit (`.husky/`, `lefthook`, `.pre-commit-config`), CI gates ใน workflows, `commitlint`, `CONTRIBUTING.md` / `CLAUDE.md` / `AGENTS.md` เดิม
|
|
108
|
-
- **ต้องถาม user:** กฎที่ "อยากบังคับ" แต่ config ยังไม่ enforce — โค้ดบอกได้แค่ "ตอนนี้ enforce อะไร" ไม่ใช่ "อยากให้ enforce อะไร"
|
|
109
|
-
- ตาม template `rule.md`: SHIP เป็นคน promote กฎเข้ามา — ตอน INIT แค่วางโครง + ใส่ recommended ที่ derive ได้ ไม่ต้องเค้นเยอะ
|
|
110
|
-
|
|
111
|
-
### `project.md` — โค้ดตอบไม่ได้ เป็นงานสัมภาษณ์ (BA/PO lens) 🗣️
|
|
112
|
-
- **derive เป็น recommended ได้:** ชื่อ/คำอธิบายสั้นจาก `package.json` `description` + repo name + README บรรทัดแรก · persona/ขอบเขตจาก README/landing/comment
|
|
113
|
-
- **ต้องสัมภาษณ์เท่านั้น:** เป้าหมาย, success metric, scope-out, why-now — โค้ดไม่มีทางรู้
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## 5. Gate → จบ INIT เมื่อ
|
|
118
|
-
|
|
119
|
-
- [ ] **ไฟล์ทุกแถวในตาราง §4 ถูกเขียนลง `docs/` จริง** (ยืนยันด้วย `find docs -type f`) — ไม่มีแถวไหนเหลือแค่ในแชท
|
|
120
|
-
- [ ] ไม่มีโฟลเดอร์ชื่อ `[component]` (มีวงเล็บ) หลงเหลือ — ถูก copy เป็นชื่อ component จริงครบทุกตัว
|
|
121
|
-
- [ ] `docs/project.md` มีเป้าหมาย/ลูกค้า/ขอบเขต ที่ user ยืนยันแล้ว
|
|
122
|
-
- [ ] `docs/techstack/` ครบทุก component ที่พบ (about + structure + standard + test)
|
|
123
|
-
- [ ] `docs/codemap/index.md` + `docs/infra.md` ตรงกับโค้ด/config จริง
|
|
124
|
-
- [ ] ทุกเนื้อหามาจากโค้ดจริงหรือคำยืนยันของ user — **ไม่มีการเดา**; ส่วนที่ไม่แน่ใจระบุ "ยังว่าง รอเติม" ชัดเจน
|
|
125
|
-
- [ ] user รับทราบรายการที่ยังว่าง
|
|
1
|
+
# INIT — วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
|
|
2
|
+
|
|
3
|
+
> **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
|
|
4
|
+
> เป้าหมาย: ทำให้ `docs/` สะท้อนโปรเจกต์จริง — เพื่อให้ทุก stage (Discovery→SHIP) เริ่มจากความรู้ที่ถูกต้อง ไม่ใช่โครงว่างเปล่า
|
|
5
|
+
|
|
6
|
+
> ⚠️ **Deliverable ของ INIT = ไฟล์จริงที่ถูกเขียนลงดิสก์ใน `docs/`**
|
|
7
|
+
> การวิเคราะห์แล้วสรุปในแชทอย่างเดียว **ถือว่ายังไม่จบงาน** — INIT จะจบได้ก็ต่อเมื่อทุกไฟล์ในตาราง §4 ถูก write ลง `docs/` จริงและผ่าน gate §5
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. INIT คืออะไร / ใช้เมื่อไหร่
|
|
12
|
+
|
|
13
|
+
ใช้ **ครั้งแรกหลังติดตั้ง workflow** ลงโปรเจกต์ (`npx github:warnyin/warnyin-agents`)
|
|
14
|
+
หรือเมื่อ `docs/` ยังว่าง/ล้าสมัยจนใช้อ้างอิงไม่ได้ — INIT ไม่ใช่ stage ของงาน แต่เป็นการ **ปูพื้นความรู้** ให้ workflow ทำงานได้เต็มประสิทธิภาพ
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 2. หลักการทำงาน (operating principles)
|
|
19
|
+
|
|
20
|
+
1. **โค้ดตอบได้ → อ่านโค้ดเอง ห้ามเดา** — structure, techstack, convention, วิธี build/test, infra วิเคราะห์จาก **โค้ดจริง + config จริง** เท่านั้น
|
|
21
|
+
2. **ข้อมูลธุรกิจโค้ดตอบไม่ได้ → สัมภาษณ์ user ผ่าน role lens เฉพาะทาง** — เป้าหมายโปรเจกต์ ลูกค้า ขอบเขต ความสำคัญ: AI หลัก **สวม lens ของ BA** (`.warnyin/workflow/roles/ba.md`) และ **PO** (`.warnyin/workflow/roles/po.md`) ใช้ checklist ของทั้งสองเป็นชุดคำถาม — **ถามทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (เดาจาก README/โค้ดเป็น recommended answer ให้ user แค่ยืนยัน/แก้)
|
|
22
|
+
- role ที่ต้องคุยกับ user เป็น **lens เสมอ ไม่ใช่ sub-agent** (sub-agent คุยกับ user ไม่ได้) — fan-out sub-agent ใช้ได้เฉพาะงานวิเคราะห์โค้ด read-only (ข้อ 5)
|
|
23
|
+
- ถ้าติดตั้ง skill `product-management` ไว้ (ดู `/warnyin:install-skill po`) → หยิบมาเสริมมุมตอนตั้งคำถาม scope/priority ได้
|
|
24
|
+
3. **เสนอ summary ก่อนเขียน** — สรุปสิ่งที่วิเคราะห์ได้ + รายการไฟล์ docs/ ที่จะเขียน ให้ user ยืนยัน **ครั้งเดียว** แล้วจึงเขียนจริง
|
|
25
|
+
4. **ไฟล์ docs/ ที่มีเนื้อหาอยู่แล้ว → เติม/อัปเดต ไม่เขียนทับทิ้ง** — ของเดิมของ user มีค่าเสมอ
|
|
26
|
+
5. **วิเคราะห์หลาย component ขนานได้** — fan-out sub-agent (read-only) หนึ่งตัวต่อหนึ่ง component; เครื่องที่ไม่มี sub-agent → วิเคราะห์ทีละ component ด้วยหลักการเดียวกัน
|
|
27
|
+
6. **ไม่แน่ใจ → ระบุว่า "ยังว่าง รอเติม" ชัดเจน** — ห้ามแต่งเนื้อหาขึ้นเองเพื่อให้ไฟล์ดูเต็ม
|
|
28
|
+
7. **เขียนไฟล์จริงเสมอ ห้ามจบแค่สรุปในแชท** — หลัง user ยืนยัน summary ต้อง write ทุกไฟล์ในตาราง §4 ลง `docs/` ด้วย (copy template → เติมเนื้อหา); วิเคราะห์เสร็จแล้วไม่เขียนไฟล์ = งานล้มเหลว
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. ลำดับขั้นการทำงาน (process)
|
|
33
|
+
|
|
34
|
+
1. **สแกนภาพรวม:** โครงสร้าง repo, package manifest, ภาษา/framework, แบ่งเป็น **component** อะไรบ้าง (เช่น api-service, admin-console)
|
|
35
|
+
2. **วิเคราะห์ลึกต่อ component (ขนานได้, read-only):** โครงสร้างโฟลเดอร์/โมดูล, pattern/convention ที่ใช้จริงในโค้ด, วิธี build/test ที่มีอยู่
|
|
36
|
+
3. **วิเคราะห์ infra:** docker/compose, env, service ที่ต้องรันสำหรับ local dev
|
|
37
|
+
4. **สัมภาษณ์ user เติมส่วนที่โค้ดตอบไม่ได้ (สวม BA + PO lens):**
|
|
38
|
+
- **ก่อนถาม → สแกนสิ่งที่มีอยู่ก่อนเสมอ:** README, `docs/project.md` เดิม, comment/config ในโค้ด — เอามาเป็น recommended answer; **ถามเฉพาะช่องที่ยัง "ขาดหาย" จริง** ไม่ถามซ้ำสิ่งที่หาคำตอบได้เอง
|
|
39
|
+
- **สวม BA lens** (`.warnyin/workflow/roles/ba.md`) ไล่ checklist: ปัญหาจริง/ใครเจ็บ, as-is→to-be, edge case ของ process, ข้อมูล/เจ้าของ, ข้อจำกัด (กฎหมาย/ระบบเดิม), acceptance วัดได้ไหม
|
|
40
|
+
- **สวม PO lens** (`.warnyin/workflow/roles/po.md`) ไล่ checklist: persona หลัก, success metric ที่วัดได้, MVP เล็กสุด, priority (must/should/could), why-now, scope-out
|
|
41
|
+
- ถาม **ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (AskUserQuestion) — เป็น lens ของ AI หลัก **ห้าม fan-out sub-agent มาสัมภาษณ์** (คุยกับ user ไม่ได้)
|
|
42
|
+
- ถ้าติดตั้ง `product-management` skill ไว้ → ใช้เสริมมุม scope/priority
|
|
43
|
+
- คำตอบที่ได้ → ใช้เติม `docs/project.md` (เป้าหมาย/ลูกค้า/ขอบเขต) และ `rule.md` ของแต่ละ component (กฎที่ user สั่ง)
|
|
44
|
+
5. **เสนอ summary → user ยืนยันครั้งเดียว**
|
|
45
|
+
6. **เขียนไฟล์จริงลง `docs/` ให้ครบตาราง §4 (ขั้นบังคับ ห้ามข้าม)** — ทำตามกลไก 6.1–6.4 นี้:
|
|
46
|
+
|
|
47
|
+
**6.1 ไฟล์ root** — copy template แล้วเติม:
|
|
48
|
+
```
|
|
49
|
+
mkdir -p docs
|
|
50
|
+
cp .warnyin/template/docs/project.md docs/project.md
|
|
51
|
+
cp .warnyin/template/docs/infra.md docs/infra.md
|
|
52
|
+
cp .warnyin/template/docs/rule.md docs/rule.md
|
|
53
|
+
cp .warnyin/template/docs/troubleshooting.md docs/troubleshooting.md
|
|
54
|
+
```
|
|
55
|
+
- ไฟล์ไหนมีอยู่แล้วใน `docs/` → **ห้าม `cp` ทับ** ให้เปิดอ่านแล้ว Edit เติมแทน
|
|
56
|
+
- `project.md` → เติมจากผลสัมภาษณ์ user (ข้อ 4) · `infra.md` → เติมจาก config จริง (ข้อ 3) · `rule.md`/`troubleshooting.md` → วางโครงหัวข้อ ใส่ `<!-- ยังว่าง รอเติม -->` ในส่วนที่ยังไม่มีข้อมูล
|
|
57
|
+
|
|
58
|
+
**6.2 โฟลเดอร์ component** — วนทำ **ทุก component** ที่ได้จากข้อ 1 (สมมติชื่อจริง `<name>`):
|
|
59
|
+
```
|
|
60
|
+
cp -R ".warnyin/template/docs/techstack/[component]" "docs/techstack/<name>"
|
|
61
|
+
```
|
|
62
|
+
- ทำซ้ำคำสั่งนี้หนึ่งครั้งต่อหนึ่ง component (เช่น `api-service`, `admin-console`) — **rename เป็นชื่อจริงเสมอ**
|
|
63
|
+
- หลัง copy ครบ → ต้อง **ไม่มี** โฟลเดอร์ `docs/techstack/[component]` (ที่มีวงเล็บ) หลงเหลือ; ถ้ามีให้ลบทิ้ง
|
|
64
|
+
|
|
65
|
+
**6.3 เติมเนื้อหา 5 ไฟล์ในแต่ละ component** ด้วย Write/Edit (อิงผลวิเคราะห์ข้อ 2):
|
|
66
|
+
- `about.md` (component คืออะไร/ภาษา/framework) · `structure.md` (โครงโฟลเดอร์) · `standard.md` (convention ที่พบจริง + ยืนยัน user) · `rule.md` (กฎที่ user สั่ง — ถามก่อน ห้ามเดา) · `test.md` (framework/คำสั่งเทส)
|
|
67
|
+
- ส่วนที่ข้อมูลไม่พอ → ใส่ `<!-- ยังว่าง รอเติม -->` ห้ามแต่ง
|
|
68
|
+
|
|
69
|
+
**6.4 codemap** — สร้าง `docs/codemap/` ตาม playbook `.warnyin/workflow/codemap.md` (token-lean) อย่างน้อยต้องมี `index.md`
|
|
70
|
+
|
|
71
|
+
7. **Verify ว่าเขียนจริง:** รัน `find docs -type f` เทียบกับตาราง §4 — ทุกแถวต้องมีไฟล์จริง, ทุก component มีครบ 5 ไฟล์, ไม่มีโฟลเดอร์/ไฟล์ที่ยังมี `[component]` (วงเล็บ) หลงเหลือ
|
|
72
|
+
8. **รายงานปิดท้าย:** ส่วนไหนยังว่าง/ไม่แน่ใจ ให้ user เติมภายหลัง → พร้อมเริ่มงานแรกด้วย `/warnyin:discovery` หรือ `/warnyin:design`
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 4. Output (เขียน/เติมที่ `docs/`)
|
|
77
|
+
|
|
78
|
+
> โฟลเดอร์ component จริงให้ copy จาก template `.warnyin/template/docs/techstack/[component]/` เป็นชื่อจริง (เช่น `api-service/`) — ห้ามทิ้งโฟลเดอร์ `[component]` ว่างไว้เฉยๆ โดยไม่สร้างของจริง
|
|
79
|
+
|
|
80
|
+
| ไฟล์ | เนื้อหา | แหล่งข้อมูล |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `docs/project.md` | โปรเจกต์คืออะไร เป้าหมาย ลูกค้า ขอบเขต | สัมภาษณ์ user (+ README เดิมเป็น recommended) |
|
|
83
|
+
| `docs/techstack/<component>/about.md` | component นี้คืออะไร ทำหน้าที่อะไร | โค้ดจริง |
|
|
84
|
+
| `docs/techstack/<component>/structure.md` | โครงสร้างโฟลเดอร์/โมดูล | โค้ดจริง |
|
|
85
|
+
| `docs/techstack/<component>/standard.md` | pattern/convention ที่พบจริงในโค้ด (ยืนยันกับ user) | โค้ดจริง + user |
|
|
86
|
+
| `docs/techstack/<component>/rule.md` | กฎที่ user ต้องการบังคับ (ถามก่อน ห้ามเดา) | user |
|
|
87
|
+
| `docs/techstack/<component>/test.md` | วิธีเทสที่ใช้อยู่ (framework, คำสั่ง, e2e) | โค้ด/config จริง |
|
|
88
|
+
| `docs/codemap/` | แผนที่โค้ดทั้งชุด — สร้างตาม playbook `.warnyin/workflow/codemap.md` (token-lean) | โค้ดจริง |
|
|
89
|
+
| `docs/infra.md` | local env: service ที่ต้องรัน, วิธีรัน, env vars | config จริง |
|
|
90
|
+
| `docs/rule.md`, `docs/troubleshooting.md` | วางโครงหัวข้อ รอเติมระหว่างใช้งานจริง | — |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 4.1 Source map — `project` / `infra` / `rule` หาจากไหนใน codebase
|
|
95
|
+
|
|
96
|
+
> หลัก: §2 ข้อ 1 **"โค้ดตอบได้ → อ่านเอง"** · §2 ข้อ 2 **"ตอบไม่ได้ → สัมภาษณ์"** — 3 ไฟล์นี้คาบเส้น จึงระบุแหล่งให้ชัด ก่อนจะไปถาม user
|
|
97
|
+
|
|
98
|
+
### `infra.md` — ขุดจาก config จริงได้เกือบทั้งไฟล์ ✅
|
|
99
|
+
| field | หาจากไฟล์ไหน |
|
|
100
|
+
|---|---|
|
|
101
|
+
| Service ที่ต้องรัน | `docker-compose.yml`/`compose.yaml`, `Dockerfile`, `.devcontainer/`, `Procfile`, k8s/helm manifests, `Makefile` |
|
|
102
|
+
| วิธีรัน local | `package.json` scripts (`dev`/`start`), `Makefile` targets, `turbo.json`/`nx.json`, `.nvmrc`/`.node-version`, README ส่วน "Getting Started" |
|
|
103
|
+
| Env vars | `.env.example`/`.env.sample`, env schema ในโค้ด (zod/envalid), `environment:` ใน compose, จุดที่อ้าง `process.env.*`/`os.environ` — **อ่านชื่อ+ความหมาย ห้ามดูดค่า secret จริง** |
|
|
104
|
+
| staging/prod | `.github/workflows/`, `vercel.json`, `fly.toml`, terraform, deploy scripts |
|
|
105
|
+
|
|
106
|
+
### `rule.md` (global) — โค้ดให้แค่ recommended, เจตนาต้องถาม ⚠️
|
|
107
|
+
- **derive เป็น recommended ได้:** linter/formatter (`eslint.config.*`, `.prettierrc`, `.editorconfig`), `tsconfig` strict flags, pre-commit (`.husky/`, `lefthook`, `.pre-commit-config`), CI gates ใน workflows, `commitlint`, `CONTRIBUTING.md` / `CLAUDE.md` / `AGENTS.md` เดิม
|
|
108
|
+
- **ต้องถาม user:** กฎที่ "อยากบังคับ" แต่ config ยังไม่ enforce — โค้ดบอกได้แค่ "ตอนนี้ enforce อะไร" ไม่ใช่ "อยากให้ enforce อะไร"
|
|
109
|
+
- ตาม template `rule.md`: SHIP เป็นคน promote กฎเข้ามา — ตอน INIT แค่วางโครง + ใส่ recommended ที่ derive ได้ ไม่ต้องเค้นเยอะ
|
|
110
|
+
|
|
111
|
+
### `project.md` — โค้ดตอบไม่ได้ เป็นงานสัมภาษณ์ (BA/PO lens) 🗣️
|
|
112
|
+
- **derive เป็น recommended ได้:** ชื่อ/คำอธิบายสั้นจาก `package.json` `description` + repo name + README บรรทัดแรก · persona/ขอบเขตจาก README/landing/comment
|
|
113
|
+
- **ต้องสัมภาษณ์เท่านั้น:** เป้าหมาย, success metric, scope-out, why-now — โค้ดไม่มีทางรู้
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 5. Gate → จบ INIT เมื่อ
|
|
118
|
+
|
|
119
|
+
- [ ] **ไฟล์ทุกแถวในตาราง §4 ถูกเขียนลง `docs/` จริง** (ยืนยันด้วย `find docs -type f`) — ไม่มีแถวไหนเหลือแค่ในแชท
|
|
120
|
+
- [ ] ไม่มีโฟลเดอร์ชื่อ `[component]` (มีวงเล็บ) หลงเหลือ — ถูก copy เป็นชื่อ component จริงครบทุกตัว
|
|
121
|
+
- [ ] `docs/project.md` มีเป้าหมาย/ลูกค้า/ขอบเขต ที่ user ยืนยันแล้ว
|
|
122
|
+
- [ ] `docs/techstack/` ครบทุก component ที่พบ (about + structure + standard + test)
|
|
123
|
+
- [ ] `docs/codemap/index.md` + `docs/infra.md` ตรงกับโค้ด/config จริง
|
|
124
|
+
- [ ] ทุกเนื้อหามาจากโค้ดจริงหรือคำยืนยันของ user — **ไม่มีการเดา**; ส่วนที่ไม่แน่ใจระบุ "ยังว่าง รอเติม" ชัดเจน
|
|
125
|
+
- [ ] user รับทราบรายการที่ยังว่าง
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# NEXT — เช็คงานค้าง + แนะนำขั้นตอนถัดไป (read-only)
|
|
2
|
-
|
|
3
|
-
> **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
|
|
4
|
-
> เป้าหมาย: ตอบคำถาม "ตอนนี้มีงานอะไรค้าง และควรไปต่อยังไง" จากสถานะจริงในไฟล์ — **ไม่สร้างหรือแก้ไฟล์ใดๆ**
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. NEXT คืออะไร / ใช้เมื่อไหร่
|
|
9
|
-
|
|
10
|
-
NEXT คือโหมด **อ่านอย่างเดียว (read-only)** — ไม่ใช่ stage, ไม่มี gate, ไม่มี output ไฟล์
|
|
11
|
-
ใช้เมื่อ: กลับมาทำงานต่อแล้วจำไม่ได้ว่าค้างตรงไหน, อยากเห็นภาพรวมทุก topic, หรืออยากรู้ว่า command ถัดไปคืออะไร
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 2. วิธีหาสถานะ (สแกนจากไฟล์จริง — ไม่ถาม user ก่อน)
|
|
16
|
-
|
|
17
|
-
0. **structural pre-scan (ถ้ารัน node ได้):** ถ้ารัน node ได้ → รัน `node .warnyin/workflow/scripts/validate-topic.mjs` (โหมด status) เป็น structural pre-scan ก่อน แล้วค่อยอ่านเชิง semantic เฉพาะจุดที่ต้องตัดสิน — เครื่องที่รันไม่ได้ ใช้ตาราง heuristic ด้านล่างเหมือนเดิม
|
|
18
|
-
1. **หา topic ที่ active:** โฟลเดอร์ใน `docs/stages/<slug>/` ทั้งหมด ยกเว้น `achieved/` และ `context.md`
|
|
19
|
-
- ไม่มี topic เลย → รายงานว่า "ไม่มีงานค้าง" + แนะนำเริ่มงานใหม่ด้วย `/warnyin:discovery` หรือ `/warnyin:design`
|
|
20
|
-
2. **อ่าน `docs/stages/context.md`** — บริบทงานที่จดไว้ (ถ้ามี)
|
|
21
|
-
3. **ต่อ topic — ระบุ stage ปัจจุบันจาก artifact ที่ "ถูกเติมจริง":**
|
|
22
|
-
ไฟล์ที่ยังเป็นโครง template (มี placeholder `<...>` / ตารางว่าง) = **ยังไม่ทำ** — ดูเนื้อหา ไม่ใช่แค่ว่าไฟล์มีอยู่
|
|
23
|
-
|
|
24
|
-
| artifact ที่เติมแล้วล่าสุด | stage ปัจจุบัน | ขั้นถัดไป |
|
|
25
|
-
|---|---|---|
|
|
26
|
-
| ยังไม่มีอะไรเติม | ยังไม่เริ่ม | `/warnyin:discovery <slug>` หรือ `/warnyin:design <slug> <change>` ถ้า scope ชัด |
|
|
27
|
-
| `discovery.md` / `research.md` | Discovery | เช็ค gate ของ `stages/discovery.md` → ผ่านแล้วไป `/warnyin:design` |
|
|
28
|
-
| `proposal.md` / `design.md` / `tasks/` | DESIGN | เช็ค gate ของ `stages/design.md` → ผ่านแล้วไป `/warnyin:build` |
|
|
29
|
-
| `build.md` / task มีสถานะ `กำลังทำ`-`เสร็จ` | BUILD | task ค้าง → `/warnyin:build` ต่อ; ครบแล้ว → `/warnyin:verify` |
|
|
30
|
-
| `test.md` / `verify.md` | VERIFY | เช็ค gate ของ `stages/verify.md` → ผ่านแล้วไป `/warnyin:ship` |
|
|
31
|
-
| `ship.md` เติมแล้วแต่ topic ยังไม่ถูก archive | SHIP ยังไม่จบ | รัน `/warnyin:ship` ให้จบ (promote ขึ้น `docs/` + ย้ายไป `achieved/`) |
|
|
32
|
-
|
|
33
|
-
4. **งานค้างระดับ task (เฉพาะ topic ที่อยู่ BUILD):** ไล่ `tasks/*/task.md` — ช่อง **สถานะ** (`รอ build` / `กำลังทำ` / `เสร็จ`) + checkbox ของ sub-tasks/acceptance ที่ยังไม่ติ๊ก
|
|
34
|
-
5. **เช็ค gate ของ stage ปัจจุบัน:** เปิด playbook ของ stage นั้นใน `.warnyin/workflow/stages/` แล้วไล่ checklist gate ว่าข้อไหนยังไม่ครบ — ข้อที่ขาดคือ "งานค้าง" ที่แท้จริง
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 3. รูปแบบรายงาน (ตอบในแชทเท่านั้น)
|
|
39
|
-
|
|
40
|
-
1. **ตารางภาพรวม:** topic · stage ปัจจุบัน · งานค้าง/gate ที่ขาด · command ถัดไปที่แนะนำ
|
|
41
|
-
2. **รายละเอียดต่อ topic** (เฉพาะที่มีงานค้าง): ข้อ gate ที่ยังไม่ผ่าน, task ที่ยัง `รอ build`/`กำลังทำ`, open question
|
|
42
|
-
3. **คำแนะนำลำดับงาน:** ถ้ามีหลาย topic ให้เสนอว่าควรทำอันไหนก่อนพร้อมเหตุผลสั้นๆ — ตัดสินใจสุดท้ายเป็นของ user
|
|
43
|
-
|
|
44
|
-
## 4. หลักการ
|
|
45
|
-
|
|
46
|
-
1. **Read-only เด็ดขาด** — ห้ามสร้าง/แก้/ลบไฟล์ รวมถึง `context.md`; ถ้าพบว่าสถานะในไฟล์ล้าสมัย ให้รายงานเป็นข้อเสนอ ไม่แก้เอง
|
|
47
|
-
2. **สรุปจาก evidence:** ทุกข้อสรุปอ้างไฟล์/บรรทัดจริง ไม่เดา
|
|
48
|
-
3. **แนะนำแล้วหยุด:** ไม่รัน stage ถัดไปให้เอง — เสนอ command ให้ user เป็นคนสั่ง
|
|
1
|
+
# NEXT — เช็คงานค้าง + แนะนำขั้นตอนถัดไป (read-only)
|
|
2
|
+
|
|
3
|
+
> **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
|
|
4
|
+
> เป้าหมาย: ตอบคำถาม "ตอนนี้มีงานอะไรค้าง และควรไปต่อยังไง" จากสถานะจริงในไฟล์ — **ไม่สร้างหรือแก้ไฟล์ใดๆ**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. NEXT คืออะไร / ใช้เมื่อไหร่
|
|
9
|
+
|
|
10
|
+
NEXT คือโหมด **อ่านอย่างเดียว (read-only)** — ไม่ใช่ stage, ไม่มี gate, ไม่มี output ไฟล์
|
|
11
|
+
ใช้เมื่อ: กลับมาทำงานต่อแล้วจำไม่ได้ว่าค้างตรงไหน, อยากเห็นภาพรวมทุก topic, หรืออยากรู้ว่า command ถัดไปคืออะไร
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 2. วิธีหาสถานะ (สแกนจากไฟล์จริง — ไม่ถาม user ก่อน)
|
|
16
|
+
|
|
17
|
+
0. **structural pre-scan (ถ้ารัน node ได้):** ถ้ารัน node ได้ → รัน `node .warnyin/workflow/scripts/validate-topic.mjs` (โหมด status) เป็น structural pre-scan ก่อน แล้วค่อยอ่านเชิง semantic เฉพาะจุดที่ต้องตัดสิน — เครื่องที่รันไม่ได้ ใช้ตาราง heuristic ด้านล่างเหมือนเดิม
|
|
18
|
+
1. **หา topic ที่ active:** โฟลเดอร์ใน `docs/stages/<slug>/` ทั้งหมด ยกเว้น `achieved/` และ `context.md`
|
|
19
|
+
- ไม่มี topic เลย → รายงานว่า "ไม่มีงานค้าง" + แนะนำเริ่มงานใหม่ด้วย `/warnyin:discovery` หรือ `/warnyin:design`
|
|
20
|
+
2. **อ่าน `docs/stages/context.md`** — บริบทงานที่จดไว้ (ถ้ามี)
|
|
21
|
+
3. **ต่อ topic — ระบุ stage ปัจจุบันจาก artifact ที่ "ถูกเติมจริง":**
|
|
22
|
+
ไฟล์ที่ยังเป็นโครง template (มี placeholder `<...>` / ตารางว่าง) = **ยังไม่ทำ** — ดูเนื้อหา ไม่ใช่แค่ว่าไฟล์มีอยู่
|
|
23
|
+
|
|
24
|
+
| artifact ที่เติมแล้วล่าสุด | stage ปัจจุบัน | ขั้นถัดไป |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| ยังไม่มีอะไรเติม | ยังไม่เริ่ม | `/warnyin:discovery <slug>` หรือ `/warnyin:design <slug> <change>` ถ้า scope ชัด |
|
|
27
|
+
| `discovery.md` / `research.md` | Discovery | เช็ค gate ของ `stages/discovery.md` → ผ่านแล้วไป `/warnyin:design` |
|
|
28
|
+
| `proposal.md` / `design.md` / `tasks/` | DESIGN | เช็ค gate ของ `stages/design.md` → ผ่านแล้วไป `/warnyin:build` |
|
|
29
|
+
| `build.md` / task มีสถานะ `กำลังทำ`-`เสร็จ` | BUILD | task ค้าง → `/warnyin:build` ต่อ; ครบแล้ว → `/warnyin:verify` |
|
|
30
|
+
| `test.md` / `verify.md` | VERIFY | เช็ค gate ของ `stages/verify.md` → ผ่านแล้วไป `/warnyin:ship` |
|
|
31
|
+
| `ship.md` เติมแล้วแต่ topic ยังไม่ถูก archive | SHIP ยังไม่จบ | รัน `/warnyin:ship` ให้จบ (promote ขึ้น `docs/` + ย้ายไป `achieved/`) |
|
|
32
|
+
|
|
33
|
+
4. **งานค้างระดับ task (เฉพาะ topic ที่อยู่ BUILD):** ไล่ `tasks/*/task.md` — ช่อง **สถานะ** (`รอ build` / `กำลังทำ` / `เสร็จ`) + checkbox ของ sub-tasks/acceptance ที่ยังไม่ติ๊ก
|
|
34
|
+
5. **เช็ค gate ของ stage ปัจจุบัน:** เปิด playbook ของ stage นั้นใน `.warnyin/workflow/stages/` แล้วไล่ checklist gate ว่าข้อไหนยังไม่ครบ — ข้อที่ขาดคือ "งานค้าง" ที่แท้จริง
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. รูปแบบรายงาน (ตอบในแชทเท่านั้น)
|
|
39
|
+
|
|
40
|
+
1. **ตารางภาพรวม:** topic · stage ปัจจุบัน · งานค้าง/gate ที่ขาด · command ถัดไปที่แนะนำ
|
|
41
|
+
2. **รายละเอียดต่อ topic** (เฉพาะที่มีงานค้าง): ข้อ gate ที่ยังไม่ผ่าน, task ที่ยัง `รอ build`/`กำลังทำ`, open question
|
|
42
|
+
3. **คำแนะนำลำดับงาน:** ถ้ามีหลาย topic ให้เสนอว่าควรทำอันไหนก่อนพร้อมเหตุผลสั้นๆ — ตัดสินใจสุดท้ายเป็นของ user
|
|
43
|
+
|
|
44
|
+
## 4. หลักการ
|
|
45
|
+
|
|
46
|
+
1. **Read-only เด็ดขาด** — ห้ามสร้าง/แก้/ลบไฟล์ รวมถึง `context.md`; ถ้าพบว่าสถานะในไฟล์ล้าสมัย ให้รายงานเป็นข้อเสนอ ไม่แก้เอง
|
|
47
|
+
2. **สรุปจาก evidence:** ทุกข้อสรุปอ้างไฟล์/บรรทัดจริง ไม่เดา
|
|
48
|
+
3. **แนะนำแล้วหยุด:** ไม่รัน stage ถัดไปให้เอง — เสนอ command ให้ user เป็นคนสั่ง
|
|
@@ -1,46 +1,47 @@
|
|
|
1
|
-
# Roles — role card กลางของ workflow
|
|
2
|
-
|
|
3
|
-
> **แก่นกลาง tool-agnostic** — role card แต่ละใบคือ "วิธีคิด + checklist" ของหนึ่งบทบาท
|
|
4
|
-
> AI ทุกเจ้าใช้ไฟล์ชุดเดียวกัน: เป็น **lens** ของ AI หลัก หรือเป็น **system prompt** ของ sub-agent
|
|
5
|
-
|
|
6
|
-
## หลักการ
|
|
7
|
-
|
|
8
|
-
- **lens** = AI หลักอ่าน role card แล้วใช้มุมมอง/checklist นั้นทำงานเอง (role ที่ต้องคุยกับ user เป็น lens เสมอ — sub-agent คุยกับ user ไม่ได้)
|
|
9
|
-
- **sub-agent (reviewer)** = fan-out ตัวแทน role ไปวิเคราะห์/รีวิวแบบอิสระขนานกัน (read-only) — ได้หลายมุมพร้อมกันโดยไม่ bias
|
|
10
|
-
- Claude Code มี adapter ที่ `.claude/agents/warnyin-<role>.md`; เครื่องอื่นใช้ role card เป็น prompt ตรงๆ ได้
|
|
11
|
-
|
|
12
|
-
## ตาราง role ↔ stage
|
|
13
|
-
|
|
14
|
-
| Role | ไฟล์ | ใช้ใน stage | รูปแบบ |
|
|
15
|
-
|---|---|---|---|
|
|
16
|
-
| BA (Business Analyst) | `ba.md` | Discovery | lens ตอนสัมภาษณ์/ตี scope |
|
|
17
|
-
| PO (Product Owner) | `po.md` | Discovery | lens ตอนจัด priority/ตัด scope |
|
|
18
|
-
| SA (Solution Architect) | `sa.md` | DESIGN | lens ตอนออกแบบ + reviewer ใน panel |
|
|
19
|
-
| Tech Lead | `tech-lead.md` | DESIGN | lens ตอนแตก task + reviewer ใน panel |
|
|
20
|
-
| Developer | `developer.md` | BUILD | system prompt ของ build agent ทุกตัว |
|
|
21
|
-
| QA | `qa.md` | VERIFY + DESIGN panel | lens ของ strategy tester + reviewer |
|
|
22
|
-
| Security (DevSecOps) | `security.md` | DESIGN panel | reviewer |
|
|
23
|
-
| Infra | `infra.md` | DESIGN panel | reviewer |
|
|
24
|
-
|
|
25
|
-
## โครงของ role card ทุกใบ
|
|
26
|
-
|
|
27
|
-
1. **Mission** — บทบาทนี้มีไว้ทำอะไร
|
|
28
|
-
2. **Lens** — มองงานผ่านมุมไหน
|
|
29
|
-
3. **Checklist** — สิ่งที่ต้องไล่เช็คทุกครั้ง
|
|
30
|
-
4. **Output** — ต้องส่งมอบอะไร รูปแบบไหน
|
|
31
|
-
|
|
32
|
-
> เพิ่ม role ใหม่ = เพิ่มไฟล์ที่นี่ + adapter `.claude/agents/warnyin-<role>.md` (ถ้าใช้เป็น sub-agent) + ระบุจุดใช้ใน playbook
|
|
33
|
-
|
|
34
|
-
## Skill เสริมต่อ role (optional)
|
|
35
|
-
|
|
36
|
-
แต่ละ role card มี section "Skill เสริม" — แนวทางคือ **reference ไม่ vendor**: โปรเจกต์ไหนอยากใช้ค่อยติดตั้งเอง
|
|
37
|
-
|
|
38
|
-
| Role | Skill | ที่มา |
|
|
39
|
-
|---|---|---|
|
|
40
|
-
| SA | `architect-review` | `npx skills add sickn33/antigravity-awesome-skills@architect-review -g` |
|
|
41
|
-
| PO | `product-management` | `npx skills add vasilyu1983/ai-agents-public@product-management -g` |
|
|
42
|
-
| Developer | `tdd-orchestrator` | `npx skills add sickn33/antigravity-awesome-skills@tdd-orchestrator -g` |
|
|
43
|
-
| QA | `browser-test` | `npx skills add ruvnet/ruflo@browser-test -g` |
|
|
44
|
-
| Tech Lead | `/code-review` | Claude Code built-in |
|
|
45
|
-
| Security | `/security-review` | Claude Code built-in |
|
|
46
|
-
|
|
|
1
|
+
# Roles — role card กลางของ workflow
|
|
2
|
+
|
|
3
|
+
> **แก่นกลาง tool-agnostic** — role card แต่ละใบคือ "วิธีคิด + checklist" ของหนึ่งบทบาท
|
|
4
|
+
> AI ทุกเจ้าใช้ไฟล์ชุดเดียวกัน: เป็น **lens** ของ AI หลัก หรือเป็น **system prompt** ของ sub-agent
|
|
5
|
+
|
|
6
|
+
## หลักการ
|
|
7
|
+
|
|
8
|
+
- **lens** = AI หลักอ่าน role card แล้วใช้มุมมอง/checklist นั้นทำงานเอง (role ที่ต้องคุยกับ user เป็น lens เสมอ — sub-agent คุยกับ user ไม่ได้)
|
|
9
|
+
- **sub-agent (reviewer)** = fan-out ตัวแทน role ไปวิเคราะห์/รีวิวแบบอิสระขนานกัน (read-only) — ได้หลายมุมพร้อมกันโดยไม่ bias
|
|
10
|
+
- Claude Code มี adapter ที่ `.claude/agents/warnyin-<role>.md`; เครื่องอื่นใช้ role card เป็น prompt ตรงๆ ได้
|
|
11
|
+
|
|
12
|
+
## ตาราง role ↔ stage
|
|
13
|
+
|
|
14
|
+
| Role | ไฟล์ | ใช้ใน stage | รูปแบบ |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| BA (Business Analyst) | `ba.md` | Discovery | lens ตอนสัมภาษณ์/ตี scope |
|
|
17
|
+
| PO (Product Owner) | `po.md` | Discovery | lens ตอนจัด priority/ตัด scope |
|
|
18
|
+
| SA (Solution Architect) | `sa.md` | DESIGN | lens ตอนออกแบบ + reviewer ใน panel |
|
|
19
|
+
| Tech Lead | `tech-lead.md` | DESIGN | lens ตอนแตก task + reviewer ใน panel |
|
|
20
|
+
| Developer | `developer.md` | BUILD | system prompt ของ build agent ทุกตัว |
|
|
21
|
+
| QA | `qa.md` | VERIFY + DESIGN panel | lens ของ strategy tester + reviewer |
|
|
22
|
+
| Security (DevSecOps) | `security.md` | DESIGN panel | reviewer |
|
|
23
|
+
| Infra | `infra.md` | DESIGN panel | reviewer |
|
|
24
|
+
|
|
25
|
+
## โครงของ role card ทุกใบ
|
|
26
|
+
|
|
27
|
+
1. **Mission** — บทบาทนี้มีไว้ทำอะไร
|
|
28
|
+
2. **Lens** — มองงานผ่านมุมไหน
|
|
29
|
+
3. **Checklist** — สิ่งที่ต้องไล่เช็คทุกครั้ง
|
|
30
|
+
4. **Output** — ต้องส่งมอบอะไร รูปแบบไหน
|
|
31
|
+
|
|
32
|
+
> เพิ่ม role ใหม่ = เพิ่มไฟล์ที่นี่ + adapter `.claude/agents/warnyin-<role>.md` (ถ้าใช้เป็น sub-agent) + ระบุจุดใช้ใน playbook
|
|
33
|
+
|
|
34
|
+
## Skill เสริมต่อ role (optional)
|
|
35
|
+
|
|
36
|
+
แต่ละ role card มี section "Skill เสริม" — แนวทางคือ **reference ไม่ vendor**: โปรเจกต์ไหนอยากใช้ค่อยติดตั้งเอง
|
|
37
|
+
|
|
38
|
+
| Role | Skill | ที่มา |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| SA | `architect-review` | `npx skills add sickn33/antigravity-awesome-skills@architect-review -g` |
|
|
41
|
+
| PO | `product-management` | `npx skills add vasilyu1983/ai-agents-public@product-management -g` |
|
|
42
|
+
| Developer | `tdd-orchestrator` | `npx skills add sickn33/antigravity-awesome-skills@tdd-orchestrator -g` |
|
|
43
|
+
| QA | `browser-test` | `npx skills add ruvnet/ruflo@browser-test -g` |
|
|
44
|
+
| Tech Lead | `/code-review` | Claude Code built-in |
|
|
45
|
+
| Security | `/security-review` | Claude Code built-in |
|
|
46
|
+
| SA, Developer | `openapi-spec-generation` | `wshobson/agents` → `plugins/documentation-generation/skills/openapi-spec-generation/` (template library — ใช้คู่ capability `.warnyin/workflow/api-doc.md`) · ⚠ third-party: ตรวจ `SKILL.md`/`references` ก่อนติดตั้ง + pin ที่ commit/tag (prompt-injection surface — `docs/rule.md` §3.2) |
|
|
47
|
+
| BA, Infra | — | ยังไม่มี skill ภายนอกที่ผ่านเกณฑ์คุณภาพ (ใช้ role card พอ) |
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Role: BA (Business Analyst)
|
|
2
|
-
|
|
3
|
-
> ใช้ใน: **Discovery** — เป็น lens ของ AI หลักตอนสัมภาษณ์/ตี scope (ไม่ใช่ sub-agent เพราะต้องคุยกับ user)
|
|
4
|
-
|
|
5
|
-
## Mission
|
|
6
|
-
เปลี่ยนความต้องการที่คลุมเครือให้เป็น requirement ที่ชัด ตรวจสอบได้ และสะท้อน business process จริง
|
|
7
|
-
|
|
8
|
-
## Lens
|
|
9
|
-
- business process จริง: ผู้ใช้/ระบบทำอะไร ก่อน-หลัง อย่างไร (as-is → to-be)
|
|
10
|
-
- ข้อมูลที่ไหลในกระบวนการ: มาจากไหน ใครแก้ ไปไหนต่อ
|
|
11
|
-
- ข้อยกเว้นและ edge case ของ process — จุดที่ requirement มักพัง
|
|
12
|
-
- ผู้เกี่ยวข้องทุกฝ่าย ไม่ใช่แค่ผู้ใช้หลัก
|
|
13
|
-
|
|
14
|
-
## Checklist (ใช้ตั้งคำถามสัมภาษณ์ — ทีละข้อ + recommended answer)
|
|
15
|
-
- [ ] ปัญหาจริงคืออะไร ใครเจ็บ เจ็บตอนไหน บ่อยแค่ไหน
|
|
16
|
-
- [ ] as-is ทำงานยังไงวันนี้ (ถ้าโค้ด/เอกสารตอบได้ → ไปอ่านเอง)
|
|
17
|
-
- [ ] to-be ต่างจาก as-is ตรงไหนบ้าง
|
|
18
|
-
- [ ] ข้อยกเว้น/edge case ของ process: ข้อมูลผิด, ทำซ้ำ, ยกเลิกกลางทาง, ทำพร้อมกัน
|
|
19
|
-
- [ ] ข้อมูลที่เกี่ยวข้อง: schema, แหล่งที่มา, ใครเป็นเจ้าของ
|
|
20
|
-
- [ ] ข้อจำกัด: กฎหมาย/นโยบาย/ระบบเดิม/ระบบภายนอก
|
|
21
|
-
- [ ] acceptance ของแต่ละ requirement วัดได้จริงไหม
|
|
22
|
-
|
|
23
|
-
## Output
|
|
24
|
-
- คำถามสัมภาษณ์ที่ครบมุมตาม checklist
|
|
25
|
-
- requirement + ข้อยกเว้น + ข้อจำกัด บันทึกลง decision log ใน `discovery.md`
|
|
1
|
+
# Role: BA (Business Analyst)
|
|
2
|
+
|
|
3
|
+
> ใช้ใน: **Discovery** — เป็น lens ของ AI หลักตอนสัมภาษณ์/ตี scope (ไม่ใช่ sub-agent เพราะต้องคุยกับ user)
|
|
4
|
+
|
|
5
|
+
## Mission
|
|
6
|
+
เปลี่ยนความต้องการที่คลุมเครือให้เป็น requirement ที่ชัด ตรวจสอบได้ และสะท้อน business process จริง
|
|
7
|
+
|
|
8
|
+
## Lens
|
|
9
|
+
- business process จริง: ผู้ใช้/ระบบทำอะไร ก่อน-หลัง อย่างไร (as-is → to-be)
|
|
10
|
+
- ข้อมูลที่ไหลในกระบวนการ: มาจากไหน ใครแก้ ไปไหนต่อ
|
|
11
|
+
- ข้อยกเว้นและ edge case ของ process — จุดที่ requirement มักพัง
|
|
12
|
+
- ผู้เกี่ยวข้องทุกฝ่าย ไม่ใช่แค่ผู้ใช้หลัก
|
|
13
|
+
|
|
14
|
+
## Checklist (ใช้ตั้งคำถามสัมภาษณ์ — ทีละข้อ + recommended answer)
|
|
15
|
+
- [ ] ปัญหาจริงคืออะไร ใครเจ็บ เจ็บตอนไหน บ่อยแค่ไหน
|
|
16
|
+
- [ ] as-is ทำงานยังไงวันนี้ (ถ้าโค้ด/เอกสารตอบได้ → ไปอ่านเอง)
|
|
17
|
+
- [ ] to-be ต่างจาก as-is ตรงไหนบ้าง
|
|
18
|
+
- [ ] ข้อยกเว้น/edge case ของ process: ข้อมูลผิด, ทำซ้ำ, ยกเลิกกลางทาง, ทำพร้อมกัน
|
|
19
|
+
- [ ] ข้อมูลที่เกี่ยวข้อง: schema, แหล่งที่มา, ใครเป็นเจ้าของ
|
|
20
|
+
- [ ] ข้อจำกัด: กฎหมาย/นโยบาย/ระบบเดิม/ระบบภายนอก
|
|
21
|
+
- [ ] acceptance ของแต่ละ requirement วัดได้จริงไหม
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
- คำถามสัมภาษณ์ที่ครบมุมตาม checklist
|
|
25
|
+
- requirement + ข้อยกเว้น + ข้อจำกัด บันทึกลง decision log ใน `discovery.md`
|