@warnyin/agents 0.2.0 → 0.5.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.
Files changed (92) hide show
  1. package/.claude/agents/warnyin-infra.md +1 -1
  2. package/.claude/agents/warnyin-qa.md +1 -1
  3. package/.claude/agents/warnyin-sa.md +1 -1
  4. package/.claude/agents/warnyin-security.md +1 -1
  5. package/.claude/agents/warnyin-tech-lead.md +1 -1
  6. package/.claude/commands/warnyin/build.md +9 -9
  7. package/.claude/commands/warnyin/design.md +4 -4
  8. package/.claude/commands/warnyin/discovery.md +3 -3
  9. package/.claude/commands/warnyin/explore.md +14 -0
  10. package/.claude/commands/warnyin/init.md +1 -1
  11. package/.claude/commands/warnyin/install-skill.md +2 -2
  12. package/.claude/commands/warnyin/next.md +16 -0
  13. package/.claude/commands/warnyin/ship.md +5 -5
  14. package/.claude/commands/warnyin/update-codemaps.md +12 -0
  15. package/.claude/commands/warnyin/verify.md +5 -5
  16. package/AGENTS.md +22 -12
  17. package/CLAUDE.md +18 -15
  18. package/README.md +25 -23
  19. package/bin/cli.mjs +50 -9
  20. package/package.json +2 -5
  21. package/warnyin/installer/templates/CLAUDE.md +29 -0
  22. package/warnyin/template/docs/codemap/index.md +18 -0
  23. package/warnyin/template/docs/features/[feature-name]/business.md +5 -0
  24. package/warnyin/template/docs/features/[feature-name]/feature.md +5 -0
  25. package/warnyin/template/docs/infra.md +16 -0
  26. package/warnyin/template/docs/project.md +18 -0
  27. package/warnyin/template/docs/rule.md +7 -0
  28. package/warnyin/template/docs/techstack/[component]/about.md +6 -0
  29. package/warnyin/template/docs/techstack/[component]/rule.md +6 -0
  30. package/warnyin/template/docs/techstack/[component]/standard.md +6 -0
  31. package/warnyin/template/docs/techstack/[component]/structure.md +7 -0
  32. package/warnyin/template/docs/techstack/[component]/test.md +7 -0
  33. package/{docs → warnyin/template/docs}/troubleshooting.md +32 -39
  34. package/{warnyin-stages → warnyin/template/stages}/[topic]/build.md +2 -2
  35. package/{warnyin-stages → warnyin/template/stages}/[topic]/business.md +1 -1
  36. package/{warnyin-stages → warnyin/template/stages}/[topic]/design.md +1 -1
  37. package/{warnyin-stages → warnyin/template/stages}/[topic]/discovery.md +2 -2
  38. package/{warnyin-stages → warnyin/template/stages}/[topic]/proposal.md +1 -1
  39. package/{warnyin-stages → warnyin/template/stages}/[topic]/research.md +1 -1
  40. package/{warnyin-stages → warnyin/template/stages}/[topic]/ship.md +3 -3
  41. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/issue.md +1 -1
  42. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/rule.md +1 -1
  43. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/spec.md +1 -1
  44. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/standard.md +1 -1
  45. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/task.md +1 -1
  46. package/{warnyin-stages → warnyin/template/stages}/[topic]/test.md +1 -1
  47. package/{warnyin-stages → warnyin/template/stages}/[topic]/verify.md +2 -2
  48. package/warnyin/workflow/README.md +94 -0
  49. package/warnyin/workflow/codemap.md +91 -0
  50. package/warnyin/workflow/explore.md +32 -0
  51. package/{workflow → warnyin/workflow}/init.md +3 -1
  52. package/warnyin/workflow/next.md +47 -0
  53. package/{workflow → warnyin/workflow}/roles/developer.md +1 -1
  54. package/{workflow → warnyin/workflow}/scripts/build-wave.mjs +5 -5
  55. package/{workflow → warnyin/workflow}/stages/build.md +10 -10
  56. package/{workflow → warnyin/workflow}/stages/design.md +17 -17
  57. package/{workflow → warnyin/workflow}/stages/discovery.md +7 -7
  58. package/{workflow → warnyin/workflow}/stages/ship.md +8 -8
  59. package/{workflow → warnyin/workflow}/stages/verify.md +5 -5
  60. package/docs/features/[feature-name]/business.md +0 -0
  61. package/docs/features/[feature-name]/feature.md +0 -0
  62. package/docs/infra.md +0 -0
  63. package/docs/project.md +0 -0
  64. package/docs/rule.md +0 -0
  65. package/docs/techstack/admin-console/about.md +0 -0
  66. package/docs/techstack/admin-console/rule.md +0 -0
  67. package/docs/techstack/admin-console/standard.md +0 -0
  68. package/docs/techstack/admin-console/structure.md +0 -0
  69. package/docs/techstack/admin-console/test.md +0 -0
  70. package/docs/techstack/api-service/about.md +0 -0
  71. package/docs/techstack/api-service/rule.md +0 -0
  72. package/docs/techstack/api-service/standard.md +0 -0
  73. package/docs/techstack/api-service/structure.md +0 -0
  74. package/docs/techstack/api-service/test.md +0 -0
  75. package/installer/templates/CLAUDE.md +0 -26
  76. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/business.md +0 -0
  77. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/design.md +0 -0
  78. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/discovery.md +0 -0
  79. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/proposal.md +0 -0
  80. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/research.md +0 -0
  81. package/workflow/README.md +0 -91
  82. /package/{docs/codemap/index.md → warnyin/stages/achieved/.gitkeep} +0 -0
  83. /package/{warnyin-stages → warnyin/stages}/context.md +0 -0
  84. /package/{warnyin-stages → warnyin/template/stages}/[topic]/troubleshooting.md +0 -0
  85. /package/{workflow → warnyin/workflow}/roles/README.md +0 -0
  86. /package/{workflow → warnyin/workflow}/roles/ba.md +0 -0
  87. /package/{workflow → warnyin/workflow}/roles/infra.md +0 -0
  88. /package/{workflow → warnyin/workflow}/roles/po.md +0 -0
  89. /package/{workflow → warnyin/workflow}/roles/qa.md +0 -0
  90. /package/{workflow → warnyin/workflow}/roles/sa.md +0 -0
  91. /package/{workflow → warnyin/workflow}/roles/security.md +0 -0
  92. /package/{workflow → warnyin/workflow}/roles/tech-lead.md +0 -0
@@ -0,0 +1,91 @@
1
+ # CODEMAP — สแกนโครงสร้างโปรเจกต์ + สร้าง architecture codemap แบบ token-lean
2
+
3
+ > **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
4
+ > เป้าหมาย: `docs/codemap/` ที่ **ประหยัด token** สำหรับให้ AI โหลดเข้า context — โครงสร้างระดับสูง ไม่ใช่ implementation detail
5
+
6
+ ---
7
+
8
+ ## 1. ใช้เมื่อไหร่
9
+
10
+ - หลังเพิ่ม feature ใหญ่ / refactor ครั้งสำคัญ
11
+ - `/warnyin:init` ใช้ playbook นี้ตอนสร้าง codemap ครั้งแรก
12
+ - **SHIP** ใช้ตอนขั้น "อัปเดต code map ทั้งหมด"
13
+
14
+ ---
15
+
16
+ ## 2. ขั้นตอน
17
+
18
+ ### Step 1: สแกนโครงสร้างโปรเจกต์
19
+ - ระบุชนิดโปรเจกต์: monorepo / single app / library / microservice
20
+ - หา source directory ทั้งหมด (`src/`, `lib/`, `app/`, `packages/`, ...)
21
+ - map entry points (`main.ts`, `index.ts`, `app.py`, `main.go`, ...)
22
+ - สแกนขนานได้: fan-out sub-agent (read-only) ต่อ component/พื้นที่ — เครื่องที่ไม่มี sub-agent → ไล่ทีละส่วน
23
+
24
+ ### Step 2: สร้าง/อัปเดต codemap ใน `docs/codemap/`
25
+
26
+ | ไฟล์ | เนื้อหา |
27
+ |---|---|
28
+ | `index.md` | สารบัญทั้งชุด + ภาพรวม component + จุดเข้า |
29
+ | `architecture.md` | system diagram ระดับสูง, service boundary, data flow |
30
+ | `backend.md` | API routes, middleware chain, service → repository mapping |
31
+ | `frontend.md` | page tree, component hierarchy, state management flow |
32
+ | `data.md` | ตาราง DB, relationship, migration history |
33
+ | `dependencies.md` | external service, third-party integration, shared library |
34
+
35
+ **สร้างเฉพาะไฟล์ที่ relevant** — โปรเจกต์ไม่มี frontend → ไม่ต้องมี `frontend.md`
36
+
37
+ #### รูปแบบ codemap (token-lean)
38
+
39
+ ```markdown
40
+ # Backend Architecture
41
+
42
+ ## Routes
43
+ POST /api/users → UserController.create → UserService.create → UserRepo.insert
44
+ GET /api/users/:id → UserController.get → UserService.findById → UserRepo.findById
45
+
46
+ ## Key Files
47
+ src/services/user.ts (business logic, 120 lines)
48
+ src/repos/user.ts (database access, 80 lines)
49
+
50
+ ## Dependencies
51
+ - PostgreSQL (primary data store)
52
+ - Redis (session cache, rate limiting)
53
+ - Stripe (payment processing)
54
+ ```
55
+
56
+ ### Step 3: Diff detection
57
+ - มี codemap เดิมอยู่ → คำนวณ % การเปลี่ยนแปลง
58
+ - เปลี่ยน **> 30%** → แสดง diff + **ขอ user อนุมัติก่อนเขียนทับ**
59
+ - เปลี่ยน **≤ 30%** → อัปเดต in place ได้เลย
60
+
61
+ ### Step 4: Metadata
62
+ ใส่ freshness header บนสุดของทุกไฟล์:
63
+ ```html
64
+ <!-- Generated: YYYY-MM-DD | Files scanned: N | Token estimate: ~X -->
65
+ ```
66
+
67
+ ### Step 5: Analysis report → `.reports/codemap-diff.txt`
68
+ - ไฟล์ added / removed / modified ตั้งแต่สแกนครั้งล่าสุด
69
+ - dependency ใหม่ที่ตรวจพบ
70
+ - architecture changes (route ใหม่, service ใหม่ ฯลฯ)
71
+ - คำเตือน staleness: doc ที่ไม่ถูกอัปเดต 90+ วัน
72
+
73
+ ---
74
+
75
+ ## 3. หลักการ (tips)
76
+
77
+ - โฟกัสโครงสร้างระดับสูง — **ไม่ใช่** implementation detail
78
+ - ใช้ file path + function signature แทน code block เต็ม
79
+ - แต่ละ codemap **< 1000 tokens** เพื่อโหลดเข้า context ได้ถูก
80
+ - ใช้ ASCII diagram แทนคำบรรยาย data flow ยืดยาว
81
+ - **ทุกอย่างต้องมาจากโค้ดจริง ณ วันสแกน — ห้ามเดา/ห้ามเขียนจากความจำ**
82
+
83
+ ---
84
+
85
+ ## 4. Gate — จบเมื่อ
86
+
87
+ - [ ] codemap ทุกไฟล์ตรงโค้ดจริง + มี freshness header
88
+ - [ ] `index.md` ลิงก์ครบทุกไฟล์ codemap ที่มี
89
+ - [ ] ทุกไฟล์ token-lean (< 1000 tokens)
90
+ - [ ] diff > 30% ผ่านการอนุมัติจาก user แล้ว
91
+ - [ ] `.reports/codemap-diff.txt` เขียนแล้ว
@@ -0,0 +1,32 @@
1
+ # EXPLORE — สำรวจ/ตอบคำถามแบบ read-only (ไม่สร้าง artifact)
2
+
3
+ > **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
4
+ > เป้าหมาย: ตอบคำถาม/สำรวจข้อมูล โค้ด และเอกสารของโปรเจกต์แบบ **grounded** โดย **ไม่สร้างหรือแก้ไฟล์ใดๆ** — จบที่คำตอบในแชท
5
+
6
+ ---
7
+
8
+ ## 1. EXPLORE คืออะไร / ใช้เมื่อไหร่
9
+
10
+ EXPLORE คือโหมด **อ่านอย่างเดียว (read-only)** — ไม่ใช่ stage ใน workflow, ไม่มี gate, ไม่มี output ไฟล์
11
+
12
+ - ใช้เมื่อ: อยากเข้าใจข้อมูล/โค้ด/พฤติกรรมระบบ, ถามเช็คความเข้าใจ, หาว่าอะไรอยู่ตรงไหน, เปรียบเทียบทางเลือกแบบเร็วๆ — **ยังไม่แน่ใจว่าจะกลายเป็นงานจริงหรือไม่**
13
+ - ต่างจาก Discovery: Discovery เป็น stage ที่ผลิต `discovery.md` + `research.md` เพื่อเข้า DESIGN — EXPLORE แค่ตอบ ไม่จดอะไรลงไฟล์
14
+
15
+ ---
16
+
17
+ ## 2. Input ที่อ่านเพื่อ ground ตัวเอง (เท่าที่เกี่ยวกับคำถาม — ไม่ต้องครบทุกไฟล์)
18
+
19
+ 1. `docs/project.md` — โปรเจกต์นี้คืออะไร เป้าหมาย ขอบเขต
20
+ 2. `docs/codemap/index.md` — แผนที่โค้ด (ไปอ่านโค้ดจริงต่อได้)
21
+ 3. `docs/rule.md`, `docs/infra.md`, `docs/features/*`, `docs/techstack/*` — ตามที่คำถามแตะ
22
+ 4. `warnyin/stages/context.md` + topic ใน `warnyin/stages/` และ `achieved/` ที่ใกล้เคียง — งานที่เคยทำ/กำลังทำ
23
+
24
+ ---
25
+
26
+ ## 3. หลักการทำงาน
27
+
28
+ 1. **Read-only เด็ดขาด:** ใช้เฉพาะการอ่าน/ค้น (read, grep, glob, sub-agent แบบ read-only) — **ห้ามสร้าง แก้ หรือลบไฟล์ใดๆ** รวมถึงไฟล์ใน `warnyin/stages/` และ `docs/`
29
+ 2. **โค้ดตอบได้ → ไปอ่านโค้ด:** อ้างอิงคำตอบด้วย `path:line` หรือชื่อไฟล์จริงเสมอ ไม่ตอบจากการเดา
30
+ 3. **คำถามกว้าง → fan-out:** ถ้าต้องกวาดหลายพื้นที่ ให้กระจาย sub-agent แบบ read-only (เช่น Explore) ขนานกัน แล้วสังเคราะห์คำตอบเดียว
31
+ 4. **ตอบในแชทเท่านั้น:** สรุปกระชับ ชี้ไฟล์/บรรทัดให้ user ไปต่อเองได้
32
+ 5. **เจอประเด็นที่ควรเก็บเป็นงาน → เสนอ ไม่ทำเอง:** ถ้าการสำรวจชี้ว่าควรเปิด topic จริง ให้เสนอ `/warnyin:discovery <topic>` (scope ยังกว้าง) หรือ `/warnyin:design <slug> <change>` (scope ชัดแล้ว) — ให้ user เป็นคนตัดสินใจ
@@ -36,6 +36,8 @@
36
36
 
37
37
  ## 4. Output (เขียน/เติมที่ `docs/`)
38
38
 
39
+ > โฟลเดอร์ component จริงให้ copy จาก template `warnyin/template/docs/techstack/[component]/` เป็นชื่อจริง (เช่น `api-service/`) — ห้ามทิ้งโฟลเดอร์ `[component]` ว่างไว้เฉยๆ โดยไม่สร้างของจริง
40
+
39
41
  | ไฟล์ | เนื้อหา | แหล่งข้อมูล |
40
42
  |---|---|---|
41
43
  | `docs/project.md` | โปรเจกต์คืออะไร เป้าหมาย ลูกค้า ขอบเขต | สัมภาษณ์ user (+ README เดิมเป็น recommended) |
@@ -44,7 +46,7 @@
44
46
  | `docs/techstack/<component>/standard.md` | pattern/convention ที่พบจริงในโค้ด (ยืนยันกับ user) | โค้ดจริง + user |
45
47
  | `docs/techstack/<component>/rule.md` | กฎที่ user ต้องการบังคับ (ถามก่อน ห้ามเดา) | user |
46
48
  | `docs/techstack/<component>/test.md` | วิธีเทสที่ใช้อยู่ (framework, คำสั่ง, e2e) | โค้ด/config จริง |
47
- | `docs/codemap/index.md` | แผนที่โค้ดภาพรวม: component, จุดเข้า, โฟลเดอร์สำคัญ | โค้ดจริง |
49
+ | `docs/codemap/` | แผนที่โค้ดทั้งชุด สร้างตาม playbook `warnyin/workflow/codemap.md` (token-lean) | โค้ดจริง |
48
50
  | `docs/infra.md` | local env: service ที่ต้องรัน, วิธีรัน, env vars | config จริง |
49
51
  | `docs/rule.md`, `docs/troubleshooting.md` | วางโครงหัวข้อ รอเติมระหว่างใช้งานจริง | — |
50
52
 
@@ -0,0 +1,47 @@
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
+ 1. **หา topic ที่ active:** โฟลเดอร์ใน `warnyin/stages/<slug>/` ทั้งหมด ยกเว้น `achieved/` และ `context.md`
18
+ - ไม่มี topic เลย → รายงานว่า "ไม่มีงานค้าง" + แนะนำเริ่มงานใหม่ด้วย `/warnyin:discovery` หรือ `/warnyin:design`
19
+ 2. **อ่าน `warnyin/stages/context.md`** — บริบทงานที่จดไว้ (ถ้ามี)
20
+ 3. **ต่อ topic — ระบุ stage ปัจจุบันจาก artifact ที่ "ถูกเติมจริง":**
21
+ ไฟล์ที่ยังเป็นโครง template (มี placeholder `<...>` / ตารางว่าง) = **ยังไม่ทำ** — ดูเนื้อหา ไม่ใช่แค่ว่าไฟล์มีอยู่
22
+
23
+ | artifact ที่เติมแล้วล่าสุด | stage ปัจจุบัน | ขั้นถัดไป |
24
+ |---|---|---|
25
+ | ยังไม่มีอะไรเติม | ยังไม่เริ่ม | `/warnyin:discovery <slug>` หรือ `/warnyin:design <slug> <change>` ถ้า scope ชัด |
26
+ | `discovery.md` / `research.md` | Discovery | เช็ค gate ของ `stages/discovery.md` → ผ่านแล้วไป `/warnyin:design` |
27
+ | `proposal.md` / `design.md` / `tasks/` | DESIGN | เช็ค gate ของ `stages/design.md` → ผ่านแล้วไป `/warnyin:build` |
28
+ | `build.md` / task มีสถานะ `กำลังทำ`-`เสร็จ` | BUILD | task ค้าง → `/warnyin:build` ต่อ; ครบแล้ว → `/warnyin:verify` |
29
+ | `test.md` / `verify.md` | VERIFY | เช็ค gate ของ `stages/verify.md` → ผ่านแล้วไป `/warnyin:ship` |
30
+ | `ship.md` เติมแล้วแต่ topic ยังไม่ถูก archive | SHIP ยังไม่จบ | รัน `/warnyin:ship` ให้จบ (promote ขึ้น `docs/` + ย้ายไป `achieved/`) |
31
+
32
+ 4. **งานค้างระดับ task (เฉพาะ topic ที่อยู่ BUILD):** ไล่ `tasks/*/task.md` — ช่อง **สถานะ** (`รอ build` / `กำลังทำ` / `เสร็จ`) + checkbox ของ sub-tasks/acceptance ที่ยังไม่ติ๊ก
33
+ 5. **เช็ค gate ของ stage ปัจจุบัน:** เปิด playbook ของ stage นั้นใน `warnyin/workflow/stages/` แล้วไล่ checklist gate ว่าข้อไหนยังไม่ครบ — ข้อที่ขาดคือ "งานค้าง" ที่แท้จริง
34
+
35
+ ---
36
+
37
+ ## 3. รูปแบบรายงาน (ตอบในแชทเท่านั้น)
38
+
39
+ 1. **ตารางภาพรวม:** topic · stage ปัจจุบัน · งานค้าง/gate ที่ขาด · command ถัดไปที่แนะนำ
40
+ 2. **รายละเอียดต่อ topic** (เฉพาะที่มีงานค้าง): ข้อ gate ที่ยังไม่ผ่าน, task ที่ยัง `รอ build`/`กำลังทำ`, open question
41
+ 3. **คำแนะนำลำดับงาน:** ถ้ามีหลาย topic ให้เสนอว่าควรทำอันไหนก่อนพร้อมเหตุผลสั้นๆ — ตัดสินใจสุดท้ายเป็นของ user
42
+
43
+ ## 4. หลักการ
44
+
45
+ 1. **Read-only เด็ดขาด** — ห้ามสร้าง/แก้/ลบไฟล์ รวมถึง `context.md`; ถ้าพบว่าสถานะในไฟล์ล้าสมัย ให้รายงานเป็นข้อเสนอ ไม่แก้เอง
46
+ 2. **สรุปจาก evidence:** ทุกข้อสรุปอ้างไฟล์/บรรทัดจริง ไม่เดา
47
+ 3. **แนะนำแล้วหยุด:** ไม่รัน stage ถัดไปให้เอง — เสนอ command ให้ user เป็นคนสั่ง
@@ -1,6 +1,6 @@
1
1
  # Role: Developer
2
2
 
3
- > ใช้ใน: **BUILD** — system prompt เสริมของ build sub-agent ทุกตัว (ผ่าน `workflow/scripts/build-wave.mjs`)
3
+ > ใช้ใน: **BUILD** — system prompt เสริมของ build sub-agent ทุกตัว (ผ่าน `warnyin/workflow/scripts/build-wave.mjs`)
4
4
 
5
5
  ## Mission
6
6
  implement vertical slice ที่รับมอบให้ **เสร็จจริง เขียวจริง** ตาม standard — ไม่เกิน scope ไม่ต่ำกว่า spec
@@ -3,7 +3,7 @@
3
3
  //
4
4
  // args = {
5
5
  // slug: string, // ชื่อ topic เช่น "billing-redesign"
6
- // tasks: string[], // ชื่อ task ใน wave นี้ (โฟลเดอร์ warnyin-stages/<slug>/tasks/<task>)
6
+ // tasks: string[], // ชื่อ task ใน wave นี้ (โฟลเดอร์ warnyin/stages/<slug>/tasks/<task>)
7
7
  // isolate?: boolean, // true = worktree ต่อ task (ดีฟอลต์), false = shared tree (sequential)
8
8
  // }
9
9
 
@@ -57,17 +57,17 @@ const RESULT_SCHEMA = {
57
57
  }
58
58
 
59
59
  function prompt(task) {
60
- const dir = `warnyin-stages/${slug}/tasks/${task}`
60
+ const dir = `warnyin/stages/${slug}/tasks/${task}`
61
61
  const lines = [
62
- `คุณคือ build sub-agent ของ task "${task}" (vertical slice) ทำตาม playbook workflow/stages/build.md`,
62
+ `คุณคือ build sub-agent ของ task "${task}" (vertical slice) ทำตาม playbook warnyin/workflow/stages/build.md`,
63
63
  ``,
64
64
  `1. อ่านให้ครบก่อนเขียนโค้ด:`,
65
- ` - workflow/roles/developer.md (role card: lens + checklist ก่อนส่งงาน — ทำตามทุกข้อ)`,
65
+ ` - warnyin/workflow/roles/developer.md (role card: lens + checklist ก่อนส่งงาน — ทำตามทุกข้อ)`,
66
66
  ` - ${dir}/task.md (เป้าหมาย + sub-tasks + dependency + acceptance)`,
67
67
  ` - ${dir}/spec.md (API/UXUI/data-flow/user-flow/persona/test-flow)`,
68
68
  ` - ${dir}/standard.md (pattern โค้ด, shared component — reuse ห้ามเขียนซ้ำ)`,
69
69
  ` - ${dir}/rule.md (กฎที่ต้อง follow)`,
70
- ` - ภาพรวม: warnyin-stages/${slug}/design.md, proposal.md`,
70
+ ` - ภาพรวม: warnyin/stages/${slug}/design.md, proposal.md`,
71
71
  ` - rule/standard กลางที่อ้างถึงใน docs/techstack/<component>/`,
72
72
  `2. Implement ให้ครบทุก sub-task แบบ vertical slice (end-to-end) ทำตาม standard.md + rule.md เคร่งครัด`,
73
73
  `3. รัน test-flow ใน spec.md + build/lint ของ component นั้น`,
@@ -14,9 +14,9 @@ BUILD จะ **orchestrate การ implement** โดยกระจายง
14
14
 
15
15
  ## 2. Input ที่ต้องอ่านก่อนเริ่ม
16
16
 
17
- 1. `warnyin-stages/<slug>/design.md` — dependency graph ระหว่าง task/slice (section 7)
18
- 2. `warnyin-stages/<slug>/proposal.md` — scope ของ change
19
- 3. `warnyin-stages/<slug>/tasks/<task>/task.md` ทุกใบ — dependency ของแต่ละ task + sub-tasks
17
+ 1. `warnyin/stages/<slug>/design.md` — dependency graph ระหว่าง task/slice (section 7)
18
+ 2. `warnyin/stages/<slug>/proposal.md` — scope ของ change
19
+ 3. `warnyin/stages/<slug>/tasks/<task>/task.md` ทุกใบ — dependency ของแต่ละ task + sub-tasks
20
20
  4. `docs/techstack/<component>/rule.md` + `standard.md` — กฎ/มาตรฐานที่ต้อง follow
21
21
 
22
22
  ---
@@ -34,8 +34,8 @@ BUILD จะ **orchestrate การ implement** โดยกระจายง
34
34
  6. **ห้ามแตะ rule/standard กลางใน `docs/`** — rule ใหม่ที่เสนอถูก note ไว้ใน `tasks/<task>/rule.md` แล้ว รอ SHIP ค่อยอัปเดตไฟล์กลาง
35
35
  7. **fail = หยุดที่ wave นั้น** — ถ้า task ใน wave ล้ม ให้รายงาน user ก่อนไป wave ถัดไป (เพราะ wave ถัดไปอาจ depend อยู่)
36
36
  8. **★ ปิดท้ายด้วย full build + full test เสมอ** — หลัง merge ทุก wave แล้ว ต้องรัน build ทั้งหมด + test suite ทั้งหมด (รวม unit test) บน build branch ที่ integrate; **แก้วนจนเขียวหมด** ก่อนปิด BUILD (กันกรณี task รายเดี่ยวเขียวแต่พอรวมกันแล้วพัง)
37
- 9. **ทุก build agent สวม role Developer** — ทำตาม role card `workflow/roles/developer.md` (lens + checklist ก่อนส่งงาน) — build-wave.mjs ใส่ให้ใน prompt แล้ว
38
- 10. **★ ใช้ Troubleshooting KB** — เจอปัญหา/error ระหว่าง build ให้ **อ่าน `docs/troubleshooting.md` ก่อนเสมอ** เผื่อเคยแก้แล้ว; เมื่อแก้ปัญหาที่ **ยาก/เจอซ้ำ** สำเร็จ ให้บันทึก entry ลง `warnyin-stages/<slug>/troubleshooting.md` (ปัญหา/อาการ/root cause/วิธีแก้/ป้องกันซ้ำ) — ตอน SHIP จะยกขึ้น KB กลาง
37
+ 9. **ทุก build agent สวม role Developer** — ทำตาม role card `warnyin/workflow/roles/developer.md` (lens + checklist ก่อนส่งงาน) — build-wave.mjs ใส่ให้ใน prompt แล้ว
38
+ 10. **★ ใช้ Troubleshooting KB** — เจอปัญหา/error ระหว่าง build ให้ **อ่าน `docs/troubleshooting.md` ก่อนเสมอ** เผื่อเคยแก้แล้ว; เมื่อแก้ปัญหาที่ **ยาก/เจอซ้ำ** สำเร็จ ให้บันทึก entry ลง `warnyin/stages/<slug>/troubleshooting.md` (ปัญหา/อาการ/root cause/วิธีแก้/ป้องกันซ้ำ) — ตอน SHIP จะยกขึ้น KB กลาง
39
39
 
40
40
  ---
41
41
 
@@ -43,13 +43,13 @@ BUILD จะ **orchestrate การ implement** โดยกระจายง
43
43
 
44
44
  > ผู้ orchestrate คือ AI ตัวหลัก (main loop) — sub-agent คือคนลงมือ implement
45
45
 
46
- 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม BUILD ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin-stages/<slug>/` ครบ ไม่หายไปกับ context) — BUILD เป็นงานยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
46
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม BUILD ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/stages/<slug>/` ครบ ไม่หายไปกับ context) — BUILD เป็นงานยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
47
47
  1. **อ่าน task ทั้งหมด** → ดึง dependency ของแต่ละ task จาก `task.md` (section 2) + `design.md` (section 7)
48
48
  2. **สร้าง DAG + จัด wave** (topological sort): wave 1 = task ที่ไม่มี dependency, wave 2 = task ที่ depend เฉพาะ wave 1, ...
49
49
  3. **Pre-check:** target เป็น git repo ไหม (สำหรับ worktree) — ถ้าไม่ใช่ → fallback sequential shared-tree และแจ้ง user
50
50
  4. **เสนอ execution plan + ขออนุมัติ (ครั้งเดียว):** แสดง wave / task ในแต่ละ wave / อันไหน parallel / isolation mode → ถาม user go/no-go
51
51
  5. **เดินทีละ wave:**
52
- - fan-out sub-agent ของ task ใน wave นั้น (parallel, worktree isolation) ผ่าน **Workflow** (`workflow/scripts/build-wave.mjs`)
52
+ - fan-out sub-agent ของ task ใน wave นั้น (parallel, worktree isolation) ผ่าน **Workflow** (`warnyin/workflow/scripts/build-wave.mjs`)
53
53
  - แต่ละ agent: implement → test/lint → commit (ถ้า worktree) → รายงานผลแบบ structured (status, files, branch, test result)
54
54
  - **integrate:** main loop merge worktree branch ของ wave นั้นเข้า build branch (ทีละอันเพื่อเลี่ยง conflict); ถ้า conflict → แก้/รายงาน
55
55
  - ถ้ามี task `failed` → หยุด รายงาน user
@@ -66,15 +66,15 @@ BUILD จะ **orchestrate การ implement** โดยกระจายง
66
66
  | ไฟล์ | เนื้อหา |
67
67
  |---|---|
68
68
  | โค้ดจริงใน target repo | การ implement ของแต่ละ task (merge เข้า build branch) |
69
- | `warnyin-stages/<slug>/build.md` | รายงานผล build: สถานะ/ผล test/ไฟล์ที่แก้ ต่อ task + integration notes |
70
- | `warnyin-stages/<slug>/troubleshooting.md` | ปัญหายาก/ซ้ำที่แก้สำเร็จ (SHIP ยกขึ้น `docs/troubleshooting.md`) |
69
+ | `warnyin/stages/<slug>/build.md` | รายงานผล build: สถานะ/ผล test/ไฟล์ที่แก้ ต่อ task + integration notes |
70
+ | `warnyin/stages/<slug>/troubleshooting.md` | ปัญหายาก/ซ้ำที่แก้สำเร็จ (SHIP ยกขึ้น `docs/troubleshooting.md`) |
71
71
  | `tasks/<task>/task.md` (อัปเดต) | สถานะ task → เสร็จ + acceptance ที่ผ่าน |
72
72
 
73
73
  ---
74
74
 
75
75
  ## 6. Workflow script (Claude Code)
76
76
 
77
- ใช้ `workflow/scripts/build-wave.mjs` — fan-out หนึ่ง agent ต่อหนึ่ง task ใน **หนึ่ง wave** (parallel, worktree isolation), คืนผลแบบ structured
77
+ ใช้ `warnyin/workflow/scripts/build-wave.mjs` — fan-out หนึ่ง agent ต่อหนึ่ง task ใน **หนึ่ง wave** (parallel, worktree isolation), คืนผลแบบ structured
78
78
  main loop เรียก script นี้ **ทีละ wave** แล้ว integrate ระหว่าง wave (ดูรายละเอียดใน `.claude/commands/warnyin/build.md`)
79
79
 
80
80
  > เครื่องอื่น (Codex/Antigravity) ที่ไม่มี Workflow tool: ทำตามหลักการข้อ 3-4 โดย implement task ตามลำดับ wave เอง (parallel เท่าที่เครื่องรองรับ)
@@ -21,7 +21,7 @@
21
21
  2. `docs/rule.md` + `docs/techstack/<component>/rule.md` — ★ กฎที่ต้อง follow
22
22
  3. `docs/techstack/<component>/standard.md` — ★ pattern/มาตรฐานการเขียนโค้ด
23
23
  4. `docs/techstack/<component>/{about,structure,test}.md`, `docs/codemap/index.md` — โครงสร้าง/วิธีเทสต์
24
- 5. ถ้ามี Discovery → `warnyin-stages/<slug>/discovery.md`, `research.md`
24
+ 5. ถ้ามี Discovery → `warnyin/stages/<slug>/discovery.md`, `research.md`
25
25
  6. โค้ดจริงที่เกี่ยวข้อง (inspect เพื่อตอบคำถามแทนการเดา)
26
26
 
27
27
  ---
@@ -33,33 +33,33 @@
33
33
  3. **task = หน่วยที่โยนให้ sub-agent ได้** — แต่ละ task self-contained (มี spec + standard + rule ของตัวเอง) แต่ **เชื่อมต่อกัน** ผ่าน dependency/ลำดับที่ระบุชัด
34
34
  4. **สอดคล้องมาตรฐานเสมอ** — อิง rule + standard ของ techstack; ถ้าจะเพิ่ม rule/standard ใหม่ ให้ **note ไว้ก่อน** (ยังไม่แก้ไฟล์กลาง — รอ SHIP)
35
35
  5. **Gate ก่อนเขียนไฟล์ task จริง** — ต้องผ่านเกณฑ์ข้อ 8 ก่อนจะ generate ไฟล์ task และก่อนโยนให้ sub-agent
36
- 6. **ใช้ role lens** — ออกแบบ (design.md) ด้วยมุม **SA** (`workflow/roles/sa.md`) และแตก/ตรวจ task ด้วยมุม **Tech Lead** (`workflow/roles/tech-lead.md`)
37
- 7. **Review panel ก่อนแตก task (optional — ถาม user ก่อนเสมอ)** — ให้หลาย role (SA / Tech Lead / QA / Security / Infra ตาม `workflow/roles/`) รีวิว design ขนานแบบอิสระ (read-only) แล้วแก้ blocker ให้ครบก่อนแตก task (ดูขั้นตอนข้อ 4.6)
36
+ 6. **ใช้ role lens** — ออกแบบ (design.md) ด้วยมุม **SA** (`warnyin/workflow/roles/sa.md`) และแตก/ตรวจ task ด้วยมุม **Tech Lead** (`warnyin/workflow/roles/tech-lead.md`)
37
+ 7. **Review panel ก่อนแตก task (optional — ถาม user ก่อนเสมอ)** — ให้หลาย role (SA / Tech Lead / QA / Security / Infra ตาม `warnyin/workflow/roles/`) รีวิว design ขนานแบบอิสระ (read-only) แล้วแก้ blocker ให้ครบก่อนแตก task (ดูขั้นตอนข้อ 4.6)
38
38
  8. **Dry-run ก่อนเข้า BUILD (optional — ถาม user ก่อนเสมอ)** — หลังเขียนไฟล์ task ครบ เสนอ user ว่าจะ dry-run ทั้งหมดเพื่อหาจุดบกพร่องไหม ถ้า ok → สแกนทุก task แบบขนาน (read-only) หา **defer/blocker** แล้วแก้ DESIGN จนไม่มี blocker ค้าง (ดูขั้นตอนข้อ 4.10) — การแก้ **ห้ามเดา ห้ามคิดขึ้นเอง**
39
39
 
40
40
  ---
41
41
 
42
42
  ## 4. ลำดับขั้นการทำงาน (process)
43
43
 
44
- 1. **เตรียมพื้นที่:** ใช้/สร้างโฟลเดอร์ `warnyin-stages/<slug>/` (ถ้ามาจาก Discovery ใช้อันเดิม)
44
+ 1. **เตรียมพื้นที่:** ใช้/สร้างโฟลเดอร์ `warnyin/stages/<slug>/` (ถ้ามาจาก Discovery ใช้อันเดิม)
45
45
  2. **Ground + เคลียร์ความไม่ชัด:** อ่าน Input; ทุกจุดกำกวมเรื่อง design → ถามทีละข้อ + recommended answer จนชัด (ถ้าใหญ่/ไม่ชัดมาก → แนะนำ Discovery ก่อน)
46
46
  3. **business.md** *(optional — ข้ามได้ถ้า change เล็ก เช่น fix bug นิดหน่อย)*: what & why เชิงธุรกิจ — goal, คุณค่า, persona, success metric
47
47
  4. **proposal.md** (what & why): สรุป change ที่จะทำ, เหตุผล, ทางเลือกที่พิจารณา/ตัดทิ้ง, scope in/out
48
- 5. **design.md** (how): ออกแบบเชิงเทคนิคแบบ vertical slice — slice มีอะไรบ้าง, แต่ละ slice ตัดผ่าน layer ไหน, data model, interface/contract, flow, ผลกระทบต่อระบบเดิม (ใช้ lens `workflow/roles/sa.md`)
48
+ 5. **design.md** (how): ออกแบบเชิงเทคนิคแบบ vertical slice — slice มีอะไรบ้าง, แต่ละ slice ตัดผ่าน layer ไหน, data model, interface/contract, flow, ผลกระทบต่อระบบเดิม (ใช้ lens `warnyin/workflow/roles/sa.md`)
49
49
  6. **Review panel (optional — ถาม user ก่อน):** เสนอ user ว่าจะให้ panel หลาย role รีวิว design ก่อนแตก task ไหม — ถ้า ok:
50
- 1. fan-out sub-agent reviewer **ขนาน (read-only)** ตาม role card: **SA** (architecture/data model/contract), **Tech Lead** (feasibility/ขนาด task/dependency), **QA** (testability/acceptance), **Security** (ช่องโหว่/ข้อมูลอ่อนไหว), **Infra** (env/config/migration) — แต่ละตัวอ่าน `proposal.md` + `design.md` + โค้ดจริงที่เกี่ยว แล้วให้ความเห็นตาม checklist ใน `workflow/roles/<role>.md` แบ่งเป็น **blocker / suggestion**
50
+ 1. fan-out sub-agent reviewer **ขนาน (read-only)** ตาม role card: **SA** (architecture/data model/contract), **Tech Lead** (feasibility/ขนาด task/dependency), **QA** (testability/acceptance), **Security** (ช่องโหว่/ข้อมูลอ่อนไหว), **Infra** (env/config/migration) — แต่ละตัวอ่าน `proposal.md` + `design.md` + โค้ดจริงที่เกี่ยว แล้วให้ความเห็นตาม checklist ใน `warnyin/workflow/roles/<role>.md` แบ่งเป็น **blocker / suggestion**
51
51
  2. รวมความเห็นทุก role → สรุปให้ user เห็นภาพ
52
52
  3. **blocker → แก้ design ให้ครบ** โดยห้ามเดา — ติดจริงถาม user ทีละข้อ + เสนอคำตอบแนะนำ; suggestion → พิจารณา/บันทึกเหตุผลถ้าไม่ทำ
53
53
  4. บันทึกสรุปผล panel + สิ่งที่แก้ ลงท้าย `design.md` (section "Design review")
54
54
  5. เครื่องที่ fan-out ไม่ได้ → รีวิวทีละ role ด้วย checklist เดียวกัน
55
55
  7. **แตก tasks:** แปลง design เป็น task (= vertical slice / step ที่แก้); task ซับซ้อน → แตก **sub-task** ย่อย; เขียน **dependency graph / ลำดับ** ให้ sub-task เชื่อมกัน
56
56
  8. **rule check ต่อ task:** เปิด `docs/techstack/<component>/rule.md` หา rule ที่ task นี้ต้องโฟกัส → ใส่ใน `tasks/<task>/rule.md`; rule ใหม่ที่อยากเพิ่ม → note ใน section "เสนอเพิ่ม (รอ SHIP)"
57
- 9. **เช็ค Gate (ข้อ 8)** → เมื่อผ่าน จึง **เขียนไฟล์ task ครบทุกใบ** (แตก task ด้วย lens `workflow/roles/tech-lead.md`)
57
+ 9. **เช็ค Gate (ข้อ 8)** → เมื่อผ่าน จึง **เขียนไฟล์ task ครบทุกใบ** (แตก task ด้วย lens `warnyin/workflow/roles/tech-lead.md`)
58
58
  10. **Dry-run (optional — ถาม user ก่อน):** ถาม user ว่าต้องการ dry-run ทั้งหมดเพื่อหาจุดบกพร่องก่อนเข้า BUILD ไหม — ถ้า ok:
59
59
  1. **fan-out agent หนึ่งตัวต่อหนึ่ง task แบบขนาน (read-only — ห้ามแก้โค้ด/ไฟล์ design)** — แต่ละตัวอ่าน task ทั้ง 4 ไฟล์ + `design.md`/`proposal.md` + โค้ดจริงที่เกี่ยว แล้ว "เดิน implement ในหัว" เพื่อหา:
60
60
  - **blocker** — สิ่งที่ทำให้ implement ตาม spec ไม่ได้ (ขัดแย้งกับโค้ดจริง/กับ task อื่น, ข้อมูล/spec ขาด, dependency ผิด) — BUILD จะล้มถ้าไม่แก้
61
61
  - **defer** — จุดที่ตัดสินใจ/ทำทีหลังได้ ไม่ block การเริ่ม BUILD แต่ต้องบันทึกและ track
62
- 2. task ไหนพบ issue → เขียน `tasks/<task>/issue.md` (template `[topic]/tasks/[task-name]/issue.md`); ไม่พบ → ไม่ต้องสร้างไฟล์
62
+ 2. task ไหนพบ issue → เขียน `tasks/<task>/issue.md` (template `warnyin/template/stages/[topic]/tasks/[task-name]/issue.md`); ไม่พบ → ไม่ต้องสร้างไฟล์
63
63
  3. รันครบทุก task แล้ว → **สรุปผลรวม** (จำนวน blocker/defer ต่อ task) ให้ user เห็นภาพ
64
64
  4. **หาวิธีแก้ DESIGN ตาม issue** (แก้ `design.md` / task ที่กระทบ) โดย **ห้ามเดา ห้ามคิดขึ้นเอง** — ติดจริงๆ ให้สัมภาษณ์ user **ถามทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง**; คำถามที่โค้ดตอบได้ → ไปอ่านโค้ดเอง
65
65
  5. แก้แล้ว rerun dry-run เฉพาะ task ที่กระทบ วนจน **ไม่มี blocker ค้าง** (อัปเดตสถานะใน `issue.md` — defer ที่เหลือให้ user รับทราบ)
@@ -70,18 +70,18 @@
70
70
 
71
71
  ---
72
72
 
73
- ## 5. Output (สร้างที่ `warnyin-stages/<slug>/`)
73
+ ## 5. Output (สร้างที่ `warnyin/stages/<slug>/`)
74
74
 
75
75
  | ไฟล์ | เนื้อหา | optional? | template |
76
76
  |---|---|---|---|
77
- | `business.md` | what & why เชิงธุรกิจ (goal, persona, success metric) | ✅ ข้ามได้ถ้า change เล็ก | `[topic]/business.md` |
78
- | `proposal.md` | what & why ของ change + ทางเลือก + scope | จำเป็น | `[topic]/proposal.md` |
79
- | `design.md` | how — vertical slice, data model, contract, flow | จำเป็น | `[topic]/design.md` |
80
- | `tasks/<task-name>/spec.md` | spec เฉพาะ task (ดูข้อ 6) | จำเป็นต่อ task | `[topic]/tasks/[task-name]/spec.md` |
81
- | `tasks/<task-name>/standard.md` | pattern โค้ด/shared component อิง techstack standard | จำเป็นต่อ task | `[topic]/tasks/[task-name]/standard.md` |
82
- | `tasks/<task-name>/rule.md` | rule ที่ต้อง follow + rule ที่เสนอเพิ่ม (รอ SHIP) | จำเป็นต่อ task | `[topic]/tasks/[task-name]/rule.md` |
83
- | `tasks/<task-name>/task.md` | รายละเอียด task + sub-tasks + dependency + acceptance | จำเป็นต่อ task | `[topic]/tasks/[task-name]/task.md` |
84
- | `tasks/<task-name>/issue.md` | ผล dry-run: defer/blocker ที่พบ + แนวทางแก้ + สถานะ | ✅ เฉพาะเมื่อ dry-run แล้วพบ issue | `[topic]/tasks/[task-name]/issue.md` |
77
+ | `business.md` | what & why เชิงธุรกิจ (goal, persona, success metric) | ✅ ข้ามได้ถ้า change เล็ก | `warnyin/template/stages/[topic]/business.md` |
78
+ | `proposal.md` | what & why ของ change + ทางเลือก + scope | จำเป็น | `warnyin/template/stages/[topic]/proposal.md` |
79
+ | `design.md` | how — vertical slice, data model, contract, flow | จำเป็น | `warnyin/template/stages/[topic]/design.md` |
80
+ | `tasks/<task-name>/spec.md` | spec เฉพาะ task (ดูข้อ 6) | จำเป็นต่อ task | `warnyin/template/stages/[topic]/tasks/[task-name]/spec.md` |
81
+ | `tasks/<task-name>/standard.md` | pattern โค้ด/shared component อิง techstack standard | จำเป็นต่อ task | `warnyin/template/stages/[topic]/tasks/[task-name]/standard.md` |
82
+ | `tasks/<task-name>/rule.md` | rule ที่ต้อง follow + rule ที่เสนอเพิ่ม (รอ SHIP) | จำเป็นต่อ task | `warnyin/template/stages/[topic]/tasks/[task-name]/rule.md` |
83
+ | `tasks/<task-name>/task.md` | รายละเอียด task + sub-tasks + dependency + acceptance | จำเป็นต่อ task | `warnyin/template/stages/[topic]/tasks/[task-name]/task.md` |
84
+ | `tasks/<task-name>/issue.md` | ผล dry-run: defer/blocker ที่พบ + แนวทางแก้ + สถานะ | ✅ เฉพาะเมื่อ dry-run แล้วพบ issue | `warnyin/template/stages/[topic]/tasks/[task-name]/issue.md` |
85
85
 
86
86
  ---
87
87
 
@@ -23,7 +23,7 @@ Discovery คือขั้นตอน **ค้นหาข้อมูล + d
23
23
  2. `docs/rule.md`, `docs/infra.md` — กฎและโครงสร้างพื้นฐาน
24
24
  3. `docs/codemap/index.md` — แผนที่โค้ด (ไปอ่านโค้ดจริงต่อได้)
25
25
  4. `docs/features/*`, `docs/techstack/*` — ฟีเจอร์เดิม + tech stack ของแต่ละ component
26
- 5. `warnyin-stages/context.md` และ topic ที่ `achieved/` ที่ใกล้เคียง — เคยทำอะไรไปแล้ว
26
+ 5. `warnyin/stages/context.md` และ topic ที่ `achieved/` ที่ใกล้เคียง — เคยทำอะไรไปแล้ว
27
27
 
28
28
  ---
29
29
 
@@ -36,7 +36,7 @@ Discovery คือขั้นตอน **ค้นหาข้อมูล + d
36
36
  5. **เดินทีละกิ่งของ decision tree:** ไล่ทุกแขนงของการตัดสินใจ แก้ความสัมพันธ์ระหว่างการตัดสินใจทีละจุด ไม่ข้าม
37
37
  6. **บันทึกทันทีที่ตกลงได้:** พอได้ข้อสรุปที่ชัดเจนในประเด็นไหน ให้จดลง `discovery.md` (decision log) เลย ไม่รอจบ
38
38
  7. **ทุกข้อสรุปต้องสอดคล้องกับโปรเจกต์:** อ้างอิงกลับไปที่ `docs/project.md` และข้อจำกัดจริงเสมอ
39
- 8. **ใช้ role lens ตอนตั้งคำถาม:** มอง scope ผ่าน checklist ของ **BA** (`workflow/roles/ba.md` — business process, ข้อยกเว้น, ข้อมูล, ข้อจำกัด) และ **PO** (`workflow/roles/po.md` — คุณค่า, priority, MVP, scope out, success metric) เพื่อให้คำถามครบมุมไม่หลุดประเด็น
39
+ 8. **ใช้ role lens ตอนตั้งคำถาม:** มอง scope ผ่าน checklist ของ **BA** (`warnyin/workflow/roles/ba.md` — business process, ข้อยกเว้น, ข้อมูล, ข้อจำกัด) และ **PO** (`warnyin/workflow/roles/po.md` — คุณค่า, priority, MVP, scope out, success metric) เพื่อให้คำถามครบมุมไม่หลุดประเด็น
40
40
 
41
41
  ### โหมด "ซักถามฉันหน่อย" (grill mode)
42
42
  เมื่อ user สั่ง grill → **ซักถามอย่างไม่หยุดหย่อนทุกแง่มุมของแผน** จนเข้าใจตรงกัน:
@@ -46,7 +46,7 @@ Discovery คือขั้นตอน **ค้นหาข้อมูล + d
46
46
 
47
47
  ## 4. ลำดับขั้นการทำงาน (process loop)
48
48
 
49
- 1. **เตรียมพื้นที่:** ถ้ายังไม่มีโฟลเดอร์ topic → copy `warnyin-stages/[topic]/` เป็น `warnyin-stages/<slug>/` (slug = kebab-case ของหัวข้องาน)
49
+ 1. **เตรียมพื้นที่:** ถ้ายังไม่มีโฟลเดอร์ topic → copy `warnyin/template/stages/[topic]/` เป็น `warnyin/stages/<slug>/` (slug = kebab-case ของหัวข้องาน)
50
50
  2. **Ground:** อ่าน Input ในข้อ 2 ให้ครบ สรุปความเข้าใจเริ่มต้น 3-5 บรรทัด ให้ user ยืนยัน
51
51
  3. **ตี scope กว้าง→แคบ ผ่านการสัมภาษณ์:** วนลูป — ถาม 1 ข้อ (พร้อม recommended answer) → user ตอบ → จดผลลง decision log → ถ้าตอบได้ด้วยโค้ดให้ไปอ่านเอง
52
52
  4. **research คู่ขนาน:** สิ่งที่ต้องค้นจริง (prior art, ทางเลือก technical, ข้อจำกัด) → จดลง `research.md` พร้อม evidence/links
@@ -54,14 +54,14 @@ Discovery คือขั้นตอน **ค้นหาข้อมูล + d
54
54
 
55
55
  ---
56
56
 
57
- ## 5. Output (สร้างที่ `warnyin-stages/<slug>/`)
57
+ ## 5. Output (สร้างที่ `warnyin/stages/<slug>/`)
58
58
 
59
59
  | ไฟล์ | เนื้อหา | template |
60
60
  |---|---|---|
61
- | `discovery.md` | decision log + shared understanding + scope + PRD ย่อ + feature ideas | `warnyin-stages/[topic]/discovery.md` |
62
- | `research.md` | คำถามวิจัย + วิธี/แหล่ง + findings + code inspection + implication | `warnyin-stages/[topic]/research.md` |
61
+ | `discovery.md` | decision log + shared understanding + scope + PRD ย่อ + feature ideas | `warnyin/template/stages/[topic]/discovery.md` |
62
+ | `research.md` | คำถามวิจัย + วิธี/แหล่ง + findings + code inspection + implication | `warnyin/template/stages/[topic]/research.md` |
63
63
 
64
- > เริ่มจาก template (ไฟล์ใน `[topic]/`) เป็นโครง แล้วเติมเนื้อหาจริง อัปเดตทุกครั้งที่ได้ข้อสรุปใหม่
64
+ > เริ่มจาก template (ไฟล์ใน `warnyin/template/stages/[topic]/`) เป็นโครง แล้วเติมเนื้อหาจริง อัปเดตทุกครั้งที่ได้ข้อสรุปใหม่
65
65
 
66
66
  ---
67
67
 
@@ -1,7 +1,7 @@
1
1
  # Stage: SHIP
2
2
 
3
3
  > **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
4
- > เป้าหมาย: **ส่งมอบ** — promote ความรู้ระดับ topic ขึ้นเอกสารกลางใน `docs/` + archive topic เข้า `warnyin-stages/achieved/`
4
+ > เป้าหมาย: **ส่งมอบ** — promote ความรู้ระดับ topic ขึ้นเอกสารกลางใน `docs/` + archive topic เข้า `warnyin/stages/achieved/`
5
5
 
6
6
  ---
7
7
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  ## 2. Input ที่ต้องอ่านก่อนเริ่ม
19
19
 
20
- 1. `warnyin-stages/<slug>/` **ทุกไฟล์** — discovery, business, proposal, design, build, test, verify, troubleshooting, tasks/*
20
+ 1. `warnyin/stages/<slug>/` **ทุกไฟล์** — discovery, business, proposal, design, build, test, verify, troubleshooting, tasks/*
21
21
  → เข้าใจว่า topic นี้ **ทำอะไร ทำอย่างไร** และเกิดความรู้อะไรใหม่บ้าง
22
22
  2. `tasks/<task>/rule.md` section "เสนอเพิ่ม rule ใหม่ (รอ SHIP)" + `standard.md` — rule/standard ใหม่ที่ note ค้างไว้
23
23
  3. เอกสารกลางปลายทางที่จะอัปเดต — `docs/features/`, `docs/techstack/<component>/*`, `docs/rule.md`,
@@ -30,7 +30,7 @@
30
30
 
31
31
  1. **เข้าใจก่อน promote** — อ่าน topic ทั้งหมดให้เข้าใจว่าทำอะไร/ทำอย่างไร แล้วค่อยตัดสินใจว่าความรู้ชิ้นไหนควรขึ้นไฟล์กลางไหน
32
32
  2. **ขอ user ยืนยัน "ครั้งเดียวก่อนลงมือ"** — สรุป promotion plan (feature ใหม่หรือปรับปรุง, ไฟล์กลางที่จะอัปเดต + สาระที่จะใส่, ชื่อโฟลเดอร์ archive) ให้ user อนุมัติ แล้วจึง execute ไม่ถามซ้ำระหว่างทาง
33
- 3. **★ Archive ก่อนอัปเดตเอกสาร** — ย้ายทั้งโฟลเดอร์ `warnyin-stages/<slug>/` → `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` (วันที่ของวันที่ SHIP) **ก่อน** เริ่มแก้ `docs/` แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
33
+ 3. **★ Archive ก่อนอัปเดตเอกสาร** — ย้ายทั้งโฟลเดอร์ `warnyin/stages/<slug>/` → `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` (วันที่ของวันที่ SHIP) **ก่อน** เริ่มแก้ `docs/` แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
34
34
  4. **กลั่น ไม่ใช่ copy ดิบ** — merge สาระเข้าโครงสร้างของไฟล์กลางเดิม ระวัง duplicate/ขัดแย้งกับเนื้อหาที่มีอยู่; เขียนแบบ "ความรู้ถาวร" ไม่ใช่บันทึกรายงาน
35
35
  5. **เอกสารต้องตรงโค้ดจริง** — structure/codemap อัปเดตจากการดูโค้ดจริง ไม่ใช่จากความจำหรือ design เดิม
36
36
  6. **อย่าเดา** — เนื้อหาที่ไม่แน่ใจว่าควร promote หรือควรวางไว้ไฟล์ไหน → ถามทีละข้อ + เสนอคำตอบที่แนะนำ
@@ -40,17 +40,17 @@
40
40
 
41
41
  ## 4. ลำดับขั้นการทำงาน (process)
42
42
 
43
- 1. **อ่านทำความเข้าใจ topic:** อ่าน `warnyin-stages/<slug>/` ทุกไฟล์ — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง (เช็คก่อนว่า VERIFY ผ่าน Gate แล้ว — มี `verify.md` สรุปผลผ่าน)
43
+ 1. **อ่านทำความเข้าใจ topic:** อ่าน `warnyin/stages/<slug>/` ทุกไฟล์ — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง (เช็คก่อนว่า VERIFY ผ่าน Gate แล้ว — มี `verify.md` สรุปผลผ่าน)
44
44
  2. **จำแนก feature:** สิ่งที่ทำเป็น **feature ใหม่** หรือ **ปรับปรุง feature เดิม** (เทียบกับ `docs/features/` ที่มีอยู่)
45
45
  3. **สรุป promotion plan + ขออนุมัติ (ครั้งเดียว):** feature ใหม่/ปรับปรุง, รายการไฟล์กลางที่จะอัปเดต + สาระ, ชื่อโฟลเดอร์ archive → รอ user ไฟเขียว
46
- 4. **★ Archive:** ย้ายทั้งโฟลเดอร์ → `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv` ถ้าเป็น git repo)
46
+ 4. **★ Archive:** ย้ายทั้งโฟลเดอร์ → `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv` ถ้าเป็น git repo)
47
47
  5. **อัปเดตเอกสารกลาง** (อ่านเนื้อหาจาก path ใน achieved):
48
48
  1. **`docs/features/<feature-name>/`** — feature ใหม่ → สร้างโฟลเดอร์ใหม่ (`feature.md` + `business.md`); ปรับปรุง feature เดิม → อัปเดตโฟลเดอร์เดิม โดยใช้เนื้อหาจาก `business.md` / `proposal.md` / `design.md` ของ topic
49
49
  2. **`docs/techstack/<component>/`** — `rule.md` / `standard.md` (จาก note "รอ SHIP" ใน tasks), `structure.md` (โครงสร้างที่เปลี่ยน), `test.md` (merge แผนเทสจาก `test.md` ของ topic)
50
50
  3. **`docs/rule.md`** — global rule ใหม่/ที่เปลี่ยน (เฉพาะข้อที่เป็นกฎระดับโปรเจกต์ ไม่ผูกกับ component เดียว)
51
51
  4. **`docs/troubleshooting.md`** — merge entry จาก `troubleshooting.md` ของ topic (ปัญหา/อาการ/root cause/วิธีแก้/ป้องกันซ้ำ)
52
52
  5. **`docs/infra.md` + `docs/project.md`** — เฉพาะถ้ามีข้อมูลที่เกี่ยวข้อง (env/service ใหม่, scope/เป้าหมายโปรเจกต์ที่ขยับ)
53
- 6. **`docs/codemap/` ทั้งหมด** — อัปเดต code map ให้ตรงกับโค้ดจริงปัจจุบัน (ตรวจจากโค้ดจริง อย่างน้อยทุกส่วนที่ change กระทบ)
53
+ 6. **`docs/codemap/` ทั้งหมด** — อัปเดต code map ให้ตรงกับโค้ดจริงปัจจุบัน ทำตาม playbook `warnyin/workflow/codemap.md` (Claude Code: `/warnyin:update-codemaps`)
54
54
  6. **เขียนสรุปส่งมอบ:** `achieved/<YYYY-MM-DD>-<slug>/ship.md` — feature ใหม่/ปรับปรุง, เอกสารกลางที่อัปเดต (ไฟล์ → สาระ), note ที่ตัดทิ้งพร้อมเหตุผล
55
55
  7. **ปิดงาน:** รายงาน user ว่าส่งมอบครบ — topic ปิดสมบูรณ์
56
56
 
@@ -66,13 +66,13 @@
66
66
  | `docs/troubleshooting.md` | KB ปัญหา-วิธีแก้ที่ merge เข้า |
67
67
  | `docs/infra.md`, `docs/project.md` | อัปเดตเฉพาะถ้ามีข้อมูลเกี่ยวข้อง |
68
68
  | `docs/codemap/` | code map ตรงกับโค้ดจริงปัจจุบัน |
69
- | `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` | ทั้ง topic ที่ archive แล้ว + `ship.md` (สรุปการส่งมอบ) |
69
+ | `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` | ทั้ง topic ที่ archive แล้ว + `ship.md` (สรุปการส่งมอบ) |
70
70
 
71
71
  ---
72
72
 
73
73
  ## 6. Gate → topic ปิดสมบูรณ์เมื่อ
74
74
 
75
- - [ ] topic ถูกย้ายไป `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว (ไม่เหลือใน `warnyin-stages/`)
75
+ - [ ] topic ถูกย้ายไป `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว (ไม่เหลือใน `warnyin/stages/`)
76
76
  - [ ] `docs/features/` สะท้อน feature ใหม่/ที่ปรับปรุงแล้ว
77
77
  - [ ] note "รอ SHIP" ทุกข้อใน `tasks/*/rule.md` + `standard.md` ถูกพิจารณาครบ — promote หรือตัดทิ้งพร้อมเหตุผล
78
78
  - [ ] `docs/troubleshooting.md` รวม entry จาก topic แล้ว
@@ -14,7 +14,7 @@
14
14
 
15
15
  ## 2. ก่อนเทส — อ่านให้เข้าใจก่อนเสมอ
16
16
 
17
- 1. **spec + tasks ทั้งหมด** — `warnyin-stages/<slug>/tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md`
17
+ 1. **spec + tasks ทั้งหมด** — `warnyin/stages/<slug>/tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md`
18
18
  → เข้าใจ **จุดประสงค์ของ topic** และสิ่งที่ต้องยืนยัน (อย่าเทสผ่านๆ โดยไม่เข้าใจ)
19
19
  2. **`docs/techstack/<component>/test.md`** — guideline ว่าเทสยังไง (เช่น frontend: e2e smoke ผ่าน **playwright-cli**)
20
20
  → ถ้า **ไม่มี** guideline → แนะนำว่าควรเทสแบบไหน/วิธีใดได้บ้าง แล้วเขียนแผนลง `test.md`
@@ -30,16 +30,16 @@
30
30
  3. **ใช้ guideline จาก `test.md`** ของ techstack; ถ้าไม่มีให้เสนอวิธีเทสที่เหมาะแล้วเขียนแผนเอง
31
31
  4. **Frontend → verify UX/UI ด้วย** (ไม่ใช่แค่ functional — ดู layout, state, flow, ความถูกต้องของหน้าจอ)
32
32
  5. **ข้อไหน verify ไม่ผ่าน → แก้จนผ่าน (loop)** และ **นับจำนวนการแก้ไข/จำนวนรอบ**
33
- 6. **ปัญหายาก/ซ้ำในขั้นนี้ → บันทึก `warnyin-stages/<slug>/troubleshooting.md`** (เหมือน BUILD); เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน
33
+ 6. **ปัญหายาก/ซ้ำในขั้นนี้ → บันทึก `warnyin/stages/<slug>/troubleshooting.md`** (เหมือน BUILD); เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน
34
34
  7. **นาน/หลายรอบเกินไป → พิจารณาถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนแก้เงียบๆ ไม่จบ)
35
35
  8. **ห้ามแตะไฟล์กลางใน `docs/`** — แผนเทสเขียนระดับ topic ที่ `test.md` ก่อน รอ SHIP merge เข้า `docs/techstack/<component>/test.md`
36
- 9. **สวม role QA** — ทำตาม role card `workflow/roles/qa.md` (lens: คิดแบบผู้ใช้จริง + คนหาเรื่อง, edge case, regression; checklist ครบทุกข้อ)
36
+ 9. **สวม role QA** — ทำตาม role card `warnyin/workflow/roles/qa.md` (lens: คิดแบบผู้ใช้จริง + คนหาเรื่อง, edge case, regression; checklist ครบทุกข้อ)
37
37
 
38
38
  ---
39
39
 
40
40
  ## 4. ลำดับขั้นการทำงาน (process)
41
41
 
42
- 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม VERIFY ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin-stages/<slug>/` ครบ ไม่หายไปกับ context) — VERIFY เป็นลูปเทส-แก้ที่อาจยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
42
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม VERIFY ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/stages/<slug>/` ครบ ไม่หายไปกับ context) — VERIFY เป็นลูปเทส-แก้ที่อาจยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
43
43
  1. **เข้าใจจุดประสงค์:** อ่าน spec/tasks/design → สรุปสิ่งที่ต้อง verify (functional + UX/UI)
44
44
  2. **วางแผนเทส → เขียน `test.md`:** ตาม guideline `docs/techstack/<component>/test.md`; ไม่มีก็เสนอวิธี (e2e smoke / integration / manual ฯลฯ) แล้วเขียนแผน
45
45
  3. **เตรียม local env:** รัน service ที่เกี่ยวข้องตาม `infra.md`
@@ -50,7 +50,7 @@
50
50
 
51
51
  ---
52
52
 
53
- ## 5. Output (สร้างที่ `warnyin-stages/<slug>/`)
53
+ ## 5. Output (สร้างที่ `warnyin/stages/<slug>/`)
54
54
 
55
55
  | ไฟล์ | เนื้อหา | ปลายทางตอน SHIP |
56
56
  |---|---|---|
File without changes
File without changes
package/docs/infra.md DELETED
File without changes
package/docs/project.md DELETED
File without changes
package/docs/rule.md DELETED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes