@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.
Files changed (78) hide show
  1. package/CHANGELOG.md +110 -105
  2. package/README.md +148 -148
  3. package/package.json +38 -38
  4. package/src/.claude/agents/warnyin-infra.md +13 -13
  5. package/src/.claude/agents/warnyin-qa.md +13 -13
  6. package/src/.claude/agents/warnyin-sa.md +13 -13
  7. package/src/.claude/agents/warnyin-security.md +13 -13
  8. package/src/.claude/agents/warnyin-tech-lead.md +13 -13
  9. package/src/.claude/commands/warnyin/build.md +30 -30
  10. package/src/.claude/commands/warnyin/design.md +26 -26
  11. package/src/.claude/commands/warnyin/discovery.md +17 -17
  12. package/src/.claude/commands/warnyin/explore.md +14 -14
  13. package/src/.claude/commands/warnyin/init.md +12 -12
  14. package/src/.claude/commands/warnyin/install-skill.md +14 -14
  15. package/src/.claude/commands/warnyin/next.md +17 -17
  16. package/src/.claude/commands/warnyin/ship.md +28 -28
  17. package/src/.claude/commands/warnyin/update-codemaps.md +12 -12
  18. package/src/.claude/commands/warnyin/verify.md +20 -20
  19. package/src/.claude/skills/explore/SKILL.md +8 -8
  20. package/src/.claude/skills/next/SKILL.md +8 -8
  21. package/src/.claude/skills/update-codemaps/SKILL.md +8 -8
  22. package/src/.warnyin/installer/templates/CLAUDE.md +29 -29
  23. package/src/.warnyin/template/docs/codemap/index.md +18 -18
  24. package/src/.warnyin/template/docs/features/[feature-name]/business.md +5 -5
  25. package/src/.warnyin/template/docs/features/[feature-name]/feature.md +5 -5
  26. package/src/.warnyin/template/docs/features/[feature-name]/spec.md +16 -16
  27. package/src/.warnyin/template/docs/infra.md +16 -16
  28. package/src/.warnyin/template/docs/project.md +18 -18
  29. package/src/.warnyin/template/docs/rule.md +7 -7
  30. package/src/.warnyin/template/docs/techstack/[component]/about.md +6 -6
  31. package/src/.warnyin/template/docs/techstack/[component]/rule.md +6 -6
  32. package/src/.warnyin/template/docs/techstack/[component]/standard.md +6 -6
  33. package/src/.warnyin/template/docs/techstack/[component]/structure.md +7 -7
  34. package/src/.warnyin/template/docs/techstack/[component]/test.md +7 -7
  35. package/src/.warnyin/template/docs/troubleshooting.md +32 -32
  36. package/src/.warnyin/template/stages/[topic]/build.md +58 -58
  37. package/src/.warnyin/template/stages/[topic]/business.md +21 -21
  38. package/src/.warnyin/template/stages/[topic]/design.md +57 -57
  39. package/src/.warnyin/template/stages/[topic]/discovery.md +69 -69
  40. package/src/.warnyin/template/stages/[topic]/proposal.md +43 -43
  41. package/src/.warnyin/template/stages/[topic]/research.md +49 -49
  42. package/src/.warnyin/template/stages/[topic]/ship.md +32 -32
  43. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/issue.md +19 -19
  44. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/rule.md +13 -13
  45. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/spec.md +36 -36
  46. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/standard.md +21 -21
  47. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/task.md +39 -39
  48. package/src/.warnyin/template/stages/[topic]/test.md +46 -46
  49. package/src/.warnyin/template/stages/[topic]/troubleshooting.md +34 -34
  50. package/src/.warnyin/template/stages/[topic]/verify.md +44 -44
  51. package/src/.warnyin/workflow/README.md +101 -100
  52. package/src/.warnyin/workflow/api-doc.md +93 -0
  53. package/src/.warnyin/workflow/codemap.md +91 -91
  54. package/src/.warnyin/workflow/contexts/README.md +49 -49
  55. package/src/.warnyin/workflow/contexts/build.md +25 -25
  56. package/src/.warnyin/workflow/contexts/research.md +25 -25
  57. package/src/.warnyin/workflow/contexts/review.md +25 -25
  58. package/src/.warnyin/workflow/explore.md +32 -32
  59. package/src/.warnyin/workflow/init.md +125 -125
  60. package/src/.warnyin/workflow/next.md +48 -48
  61. package/src/.warnyin/workflow/roles/README.md +47 -46
  62. package/src/.warnyin/workflow/roles/ba.md +25 -25
  63. package/src/.warnyin/workflow/roles/developer.md +30 -30
  64. package/src/.warnyin/workflow/roles/infra.md +24 -24
  65. package/src/.warnyin/workflow/roles/po.md +28 -28
  66. package/src/.warnyin/workflow/roles/qa.md +35 -35
  67. package/src/.warnyin/workflow/roles/sa.md +28 -28
  68. package/src/.warnyin/workflow/roles/security.md +39 -39
  69. package/src/.warnyin/workflow/roles/tech-lead.md +28 -28
  70. package/src/.warnyin/workflow/scripts/build-wave.mjs +125 -125
  71. package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
  72. package/src/.warnyin/workflow/stages/build.md +98 -98
  73. package/src/.warnyin/workflow/stages/design.md +122 -119
  74. package/src/.warnyin/workflow/stages/discovery.md +78 -78
  75. package/src/.warnyin/workflow/stages/ship.md +92 -90
  76. package/src/.warnyin/workflow/stages/verify.md +80 -77
  77. package/src/AGENTS.md +48 -48
  78. package/src/bin/cli.mjs +193 -193
@@ -1,28 +1,28 @@
1
- ---
2
- description: รัน SHIP stage — ส่งมอบ: promote ความรู้ของ topic ขึ้นเอกสารกลางใน docs/ + archive topic
3
- argument-hint: "[slug ของ topic]"
4
- ---
5
-
6
- ทำหน้าที่เป็นผู้ส่งมอบ (SHIP) ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
-
8
- 1. อ่าน `.warnyin/workflow/stages/ship.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
9
- 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ ship topic ไหน (ดูโฟลเดอร์ใน `docs/stages/`)
10
- 3. **อ่านทำความเข้าใจ topic + รวบรวม learned-rule candidate:** อ่าน `docs/stages/<slug>/` ทุกไฟล์ — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง; เช็คว่า VERIFY ผ่าน Gate แล้ว (`verify.md` สรุปผลผ่าน) — ถ้ายังไม่ผ่าน → หยุด แจ้ง user. ทำตาม playbook §4 step 1 — ถ้ารัน node ได้ validate `<slug>` ก่อน promote (มี ✖ ควรแก้ก่อน — รายการเช็คอยู่ใน script + playbook). รวบรวม learned-rule candidate เป็นตาราง (`rule + evidence + scope + promote?`): **planned** จาก `tasks/*/rule.md` §2 "รอ SHIP" + `standard.md` · **emergent** สแกนบทเรียนใน `build.md`/`verify.md`/`troubleshooting.md`/diff — `rule` ต้อง generalize (ไม่ใช่ incident), `evidence` บังคับ (pointer + ลิงก์ artifact; ไม่มี = ไม่ promote), `scope` = `component:<c>` หรือ `project`
11
- 4. **จำแนก feature:** feature ใหม่ หรือปรับปรุง feature เดิม (เทียบกับ `docs/features/` ที่มีอยู่)
12
- 5. **ขออนุมัติครั้งเดียว** — ใช้ AskUserQuestion สรุป promotion plan: feature ใหม่/ปรับปรุง, ไฟล์กลางที่จะอัปเดต + สาระที่จะใส่, ชื่อโฟลเดอร์ archive — **fold ตาราง learned-rule (rule + evidence + scope) เข้า approval เดียวกัน ให้ user ยืนยัน per-rule** (✅ promote / ✂️ ตัด + เหตุผล) → รอ go/no-go (อย่าแก้ไฟล์ใดก่อนได้ไฟเขียว)
13
- 6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `docs/stages/<slug>/` → `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv`; วันที่ = วันที่ ship) แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
14
- 7. **อัปเดตเอกสารกลาง** (กลั่นเข้าโครงสร้างไฟล์เดิม ไม่ copy ดิบ, ระวัง duplicate):
15
- - `docs/features/<feature-name>/` — ใหม่ → สร้าง (feature.md + business.md); เดิม → อัปเดต โดยใช้ business/proposal/design ของ topic — **และ merge `spec.md` ตาม Spec delta** ใน `design.md` §9 (ADDED ต่อท้าย · MODIFIED แทนที่ · REMOVED ลบ; **key ไม่เจอ → STOP ถาม user ห้าม merge เงียบ** — กติกาเต็มดู playbook §4 step 5)
16
- - `docs/techstack/<component>/{rule,standard}.md` — learned-rule ที่ยืนยันแล้ว scope `component:<c>` + note "รอ SHIP" (พิจารณาครบทุกข้อ: promote หรือตัดทิ้งพร้อมเหตุผล); learned-rule scope `project` → `docs/rule.md`
17
- - `docs/techstack/<component>/structure.md` + `test.md` — โครงสร้างที่เปลี่ยน (ดูโค้ดจริง) + merge แผนเทสจาก `test.md` ของ topic
18
- - `docs/rule.md` — global rule ใหม่/ที่เปลี่ยน (เฉพาะกฎระดับโปรเจกต์)
19
- - `docs/troubleshooting.md` — merge entry จาก `troubleshooting.md` ของ topic
20
- - `docs/infra.md` + `docs/project.md` — เฉพาะถ้ามีข้อมูลเกี่ยวข้อง
21
- - `docs/codemap/` ทั้งหมด — อัปเดตให้ตรงโค้ดจริงปัจจุบัน ตาม `.warnyin/workflow/codemap.md` (= ขั้นตอนเดียวกับ `/warnyin:update-codemaps`)
22
- 8. **เขียนสรุป** `achieved/<YYYY-MM-DD>-<slug>/ship.md` (feature ใหม่/ปรับปรุง + ตารางเอกสารที่อัปเดต + note ที่ตัดทิ้งพร้อมเหตุผล) → รายงาน user ว่าส่งมอบครบ topic ปิดสมบูรณ์
23
-
24
- หมายเหตุ:
25
- - SHIP เป็นเรื่อง **เอกสาร + archive เท่านั้น** — ไม่ merge โค้ด (build branch → main จัดการเองนอก workflow)
26
- - เนื้อหาที่ไม่แน่ใจว่าควร promote/วางไฟล์ไหน → ถามทีละข้อ + เสนอคำตอบที่แนะนำ อย่าเดา
27
- - เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
28
- - คงเป็น command (user-only) โดยตั้งใจ — SHIP เป็น stateful/irreversible (archive ด้วย git mv, promote เอกสารกลาง) ต้องให้ user สั่งชัด ไม่ทำเป็น skill auto-invoke
1
+ ---
2
+ description: รัน SHIP stage — ส่งมอบ: promote ความรู้ของ topic ขึ้นเอกสารกลางใน docs/ + archive topic
3
+ argument-hint: "[slug ของ topic]"
4
+ ---
5
+
6
+ ทำหน้าที่เป็นผู้ส่งมอบ (SHIP) ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
+
8
+ 1. อ่าน `.warnyin/workflow/stages/ship.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
9
+ 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ ship topic ไหน (ดูโฟลเดอร์ใน `docs/stages/`)
10
+ 3. **อ่านทำความเข้าใจ topic + รวบรวม learned-rule candidate:** อ่าน `docs/stages/<slug>/` ทุกไฟล์ — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง; เช็คว่า VERIFY ผ่าน Gate แล้ว (`verify.md` สรุปผลผ่าน) — ถ้ายังไม่ผ่าน → หยุด แจ้ง user. ทำตาม playbook §4 step 1 — ถ้ารัน node ได้ validate `<slug>` ก่อน promote (มี ✖ ควรแก้ก่อน — รายการเช็คอยู่ใน script + playbook). รวบรวม learned-rule candidate เป็นตาราง (`rule + evidence + scope + promote?`): **planned** จาก `tasks/*/rule.md` §2 "รอ SHIP" + `standard.md` · **emergent** สแกนบทเรียนใน `build.md`/`verify.md`/`troubleshooting.md`/diff — `rule` ต้อง generalize (ไม่ใช่ incident), `evidence` บังคับ (pointer + ลิงก์ artifact; ไม่มี = ไม่ promote), `scope` = `component:<c>` หรือ `project`
11
+ 4. **จำแนก feature:** feature ใหม่ หรือปรับปรุง feature เดิม (เทียบกับ `docs/features/` ที่มีอยู่)
12
+ 5. **ขออนุมัติครั้งเดียว** — ใช้ AskUserQuestion สรุป promotion plan: feature ใหม่/ปรับปรุง, ไฟล์กลางที่จะอัปเดต + สาระที่จะใส่, ชื่อโฟลเดอร์ archive — **fold ตาราง learned-rule (rule + evidence + scope) เข้า approval เดียวกัน ให้ user ยืนยัน per-rule** (✅ promote / ✂️ ตัด + เหตุผล) → รอ go/no-go (อย่าแก้ไฟล์ใดก่อนได้ไฟเขียว)
13
+ 6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `docs/stages/<slug>/` → `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv`; วันที่ = วันที่ ship) แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
14
+ 7. **อัปเดตเอกสารกลาง** (กลั่นเข้าโครงสร้างไฟล์เดิม ไม่ copy ดิบ, ระวัง duplicate):
15
+ - `docs/features/<feature-name>/` — ใหม่ → สร้าง (feature.md + business.md); เดิม → อัปเดต โดยใช้ business/proposal/design ของ topic — **และ merge `spec.md` ตาม Spec delta** ใน `design.md` §9 (ADDED ต่อท้าย · MODIFIED แทนที่ · REMOVED ลบ; **key ไม่เจอ → STOP ถาม user ห้าม merge เงียบ** — กติกาเต็มดู playbook §4 step 5)
16
+ - `docs/techstack/<component>/{rule,standard}.md` — learned-rule ที่ยืนยันแล้ว scope `component:<c>` + note "รอ SHIP" (พิจารณาครบทุกข้อ: promote หรือตัดทิ้งพร้อมเหตุผล); learned-rule scope `project` → `docs/rule.md`
17
+ - `docs/techstack/<component>/structure.md` + `test.md` — โครงสร้างที่เปลี่ยน (ดูโค้ดจริง) + merge แผนเทสจาก `test.md` ของ topic
18
+ - `docs/rule.md` — global rule ใหม่/ที่เปลี่ยน (เฉพาะกฎระดับโปรเจกต์)
19
+ - `docs/troubleshooting.md` — merge entry จาก `troubleshooting.md` ของ topic
20
+ - `docs/infra.md` + `docs/project.md` — เฉพาะถ้ามีข้อมูลเกี่ยวข้อง
21
+ - `docs/codemap/` ทั้งหมด — อัปเดตให้ตรงโค้ดจริงปัจจุบัน ตาม `.warnyin/workflow/codemap.md` (= ขั้นตอนเดียวกับ `/warnyin:update-codemaps`)
22
+ 8. **เขียนสรุป** `achieved/<YYYY-MM-DD>-<slug>/ship.md` (feature ใหม่/ปรับปรุง + ตารางเอกสารที่อัปเดต + note ที่ตัดทิ้งพร้อมเหตุผล) → รายงาน user ว่าส่งมอบครบ topic ปิดสมบูรณ์
23
+
24
+ หมายเหตุ:
25
+ - SHIP เป็นเรื่อง **เอกสาร + archive เท่านั้น** — ไม่ merge โค้ด (build branch → main จัดการเองนอก workflow)
26
+ - เนื้อหาที่ไม่แน่ใจว่าควร promote/วางไฟล์ไหน → ถามทีละข้อ + เสนอคำตอบที่แนะนำ อย่าเดา
27
+ - เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
28
+ - คงเป็น command (user-only) โดยตั้งใจ — SHIP เป็น stateful/irreversible (archive ด้วย git mv, promote เอกสารกลาง) ต้องให้ user สั่งชัด ไม่ทำเป็น skill auto-invoke
@@ -1,12 +1,12 @@
1
- ---
2
- description: Scan project structure and generate token-lean architecture codemaps (docs/codemap/)
3
- ---
4
-
5
- ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน
6
-
7
- 1. อ่าน `.warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด
8
- 2. **Step 1 — สแกน:** ระบุชนิดโปรเจกต์, source dirs, entry points — fan-out sub-agent (Explore, read-only) ขนานต่อ component/พื้นที่ได้
9
- 3. **Step 2 — สร้าง/อัปเดต `docs/codemap/`:** index / architecture / backend / frontend / data / dependencies — **เฉพาะไฟล์ที่ relevant**, รูปแบบ token-lean (< 1000 tokens/ไฟล์, path + signature, ASCII diagram)
10
- 4. **Step 3 — diff detection:** มี codemap เดิม → คำนวณ % เปลี่ยนแปลง; **> 30% → แสดง diff + AskUserQuestion ขออนุมัติก่อนเขียนทับ**; ≤ 30% → อัปเดตเลย
11
- 5. **Step 4 — metadata:** ใส่ freshness header `<!-- Generated: YYYY-MM-DD | Files scanned: N | Token estimate: ~X -->` ทุกไฟล์
12
- 6. **Step 5 — report:** เขียน `.reports/codemap-diff.txt` (added/removed/modified, dependency ใหม่, architecture changes, staleness 90+ วัน) → สรุปผลให้ user
1
+ ---
2
+ description: Scan project structure and generate token-lean architecture codemaps (docs/codemap/)
3
+ ---
4
+
5
+ ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน
6
+
7
+ 1. อ่าน `.warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด
8
+ 2. **Step 1 — สแกน:** ระบุชนิดโปรเจกต์, source dirs, entry points — fan-out sub-agent (Explore, read-only) ขนานต่อ component/พื้นที่ได้
9
+ 3. **Step 2 — สร้าง/อัปเดต `docs/codemap/`:** index / architecture / backend / frontend / data / dependencies — **เฉพาะไฟล์ที่ relevant**, รูปแบบ token-lean (< 1000 tokens/ไฟล์, path + signature, ASCII diagram)
10
+ 4. **Step 3 — diff detection:** มี codemap เดิม → คำนวณ % เปลี่ยนแปลง; **> 30% → แสดง diff + AskUserQuestion ขออนุมัติก่อนเขียนทับ**; ≤ 30% → อัปเดตเลย
11
+ 5. **Step 4 — metadata:** ใส่ freshness header `<!-- Generated: YYYY-MM-DD | Files scanned: N | Token estimate: ~X -->` ทุกไฟล์
12
+ 6. **Step 5 — report:** เขียน `.reports/codemap-diff.txt` (added/removed/modified, dependency ใหม่, architecture changes, staleness 90+ วัน) → สรุปผลให้ user
@@ -1,20 +1,20 @@
1
- ---
2
- description: รัน VERIFY stage — strategy tester: เทสตามจุดประสงค์ใน local env (FE: e2e smoke + UXUI) แก้จนผ่าน
3
- argument-hint: "[slug ของ topic]"
4
- ---
5
-
6
- ทำหน้าที่เป็น strategy tester ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
-
8
- 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:verify <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `docs/stages/<slug>/` ครบ) — อย่าเริ่มลูปเทส-แก้ทั้งที่ context ใกล้เต็ม
9
- 1. อ่าน `.warnyin/workflow/stages/verify.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
10
- 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ verify topic ไหน
11
- 3. **เข้าใจจุดประสงค์ก่อนเทส:** อ่าน `tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md` ทั้งหมดให้เข้าใจดี แล้วค่อยเทสตามเจตนาของ topic
12
- - **regression baseline:** อ่าน `docs/features/<name>/spec.md` ของ feature ที่ topic แตะด้วย (ดูจาก Spec delta ใน `design.md`) — scenario เดิม = regression case, scenario ใน delta = test case ใหม่ (รายละเอียดดู playbook §2/§3/§4 — ไม่ทำซ้ำที่นี่)
13
- 4. **guideline:** อ่าน `docs/techstack/<component>/test.md` ว่าเทสยังไง (เช่น FE: e2e smoke ผ่าน playwright-cli) — ไม่มีก็เสนอวิธีแล้วเขียนแผนเอง; ดู `docs/infra.md` สำหรับ local env
14
- 5. **เขียนแผนลง** `docs/stages/<slug>/test.md`
15
- 6. **เทสจริงใน local env:** รัน service ที่เกี่ยวข้อง (ใช้ skill `run`/`verify` ช่วย launch ได้) → รันเทสตามแผน; FE → e2e smoke + ตรวจ UX/UI
16
- 7. **ข้อไหนไม่ผ่าน → แก้ → rerun** วนจนผ่าน **นับจำนวนการแก้ไข**; เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน, ปัญหายาก/ซ้ำที่แก้ได้ → บันทึก `docs/stages/<slug>/troubleshooting.md`
17
- 8. **ถ้านาน/วนหลายรอบเกินไป → ถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนเงียบไม่จบ)
18
- 9. **เขียนสรุป** `docs/stages/<slug>/verify.md` (ผลเทส + รายการแก้ไข + จำนวนรอบ + ผล UXUI) → เสนอเข้า SHIP ด้วย `/warnyin:ship`
19
-
20
- หมายเหตุ: ห้ามแตะไฟล์กลางใน `docs/` — `test.md` เขียนระดับ topic ก่อน รอ SHIP merge. เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
1
+ ---
2
+ description: รัน VERIFY stage — strategy tester: เทสตามจุดประสงค์ใน local env (FE: e2e smoke + UXUI) แก้จนผ่าน
3
+ argument-hint: "[slug ของ topic]"
4
+ ---
5
+
6
+ ทำหน้าที่เป็น strategy tester ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
+
8
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:verify <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `docs/stages/<slug>/` ครบ) — อย่าเริ่มลูปเทส-แก้ทั้งที่ context ใกล้เต็ม
9
+ 1. อ่าน `.warnyin/workflow/stages/verify.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
10
+ 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ verify topic ไหน
11
+ 3. **เข้าใจจุดประสงค์ก่อนเทส:** อ่าน `tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md` ทั้งหมดให้เข้าใจดี แล้วค่อยเทสตามเจตนาของ topic
12
+ - **regression baseline:** อ่าน `docs/features/<name>/spec.md` ของ feature ที่ topic แตะด้วย (ดูจาก Spec delta ใน `design.md`) — scenario เดิม = regression case, scenario ใน delta = test case ใหม่ (รายละเอียดดู playbook §2/§3/§4 — ไม่ทำซ้ำที่นี่)
13
+ 4. **guideline:** อ่าน `docs/techstack/<component>/test.md` ว่าเทสยังไง (เช่น FE: e2e smoke ผ่าน playwright-cli) — ไม่มีก็เสนอวิธีแล้วเขียนแผนเอง; ดู `docs/infra.md` สำหรับ local env
14
+ 5. **เขียนแผนลง** `docs/stages/<slug>/test.md`
15
+ 6. **เทสจริงใน local env:** รัน service ที่เกี่ยวข้อง (ใช้ skill `run`/`verify` ช่วย launch ได้) → รันเทสตามแผน; FE → e2e smoke + ตรวจ UX/UI
16
+ 7. **ข้อไหนไม่ผ่าน → แก้ → rerun** วนจนผ่าน **นับจำนวนการแก้ไข**; เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน, ปัญหายาก/ซ้ำที่แก้ได้ → บันทึก `docs/stages/<slug>/troubleshooting.md`
17
+ 8. **ถ้านาน/วนหลายรอบเกินไป → ถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนเงียบไม่จบ)
18
+ 9. **เขียนสรุป** `docs/stages/<slug>/verify.md` (ผลเทส + รายการแก้ไข + จำนวนรอบ + ผล UXUI) → เสนอเข้า SHIP ด้วย `/warnyin:ship`
19
+
20
+ หมายเหตุ: ห้ามแตะไฟล์กลางใน `docs/` — `test.md` เขียนระดับ topic ก่อน รอ SHIP merge. เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
@@ -1,8 +1,8 @@
1
- ---
2
- name: explore
3
- description: สำรวจ/ตอบคำถามเกี่ยวกับโปรเจกต์แบบ read-only — ไม่สร้าง artifact ใดๆ จบที่คำตอบในแชท
4
- when_to_use: เมื่อต้องการเข้าใจ/ตอบคำถามเกี่ยวกับโครงสร้าง โค้ด หรือ logic ของโปรเจกต์ โดยไม่ต้องสร้างหรือแก้ไฟล์
5
- allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
- ---
7
-
8
- ทำหน้าที่เป็น explorer ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/explore.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, อ้าง `path:line`; ชี้ playbook ไม่ duplicate) — รับหัวข้อ/คำถามจาก request; ถ้าไม่ระบุ → ถาม user ว่าอยากสำรวจเรื่องอะไร
1
+ ---
2
+ name: explore
3
+ description: สำรวจ/ตอบคำถามเกี่ยวกับโปรเจกต์แบบ read-only — ไม่สร้าง artifact ใดๆ จบที่คำตอบในแชท
4
+ when_to_use: เมื่อต้องการเข้าใจ/ตอบคำถามเกี่ยวกับโครงสร้าง โค้ด หรือ logic ของโปรเจกต์ โดยไม่ต้องสร้างหรือแก้ไฟล์
5
+ allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
+ ---
7
+
8
+ ทำหน้าที่เป็น explorer ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/explore.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, อ้าง `path:line`; ชี้ playbook ไม่ duplicate) — รับหัวข้อ/คำถามจาก request; ถ้าไม่ระบุ → ถาม user ว่าอยากสำรวจเรื่องอะไร
@@ -1,8 +1,8 @@
1
- ---
2
- name: next
3
- description: เช็คงานค้างทุก topic + แนะนำขั้นตอน/command ถัดไป แบบ read-only — ไม่สร้าง/แก้ไฟล์ใดๆ
4
- when_to_use: เมื่อต้องการรู้ว่าแต่ละ topic ค้างอยู่ stage ไหน + ควรรัน command อะไรถัดไป
5
- allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
- ---
7
-
8
- ทำหน้าที่เป็น status reporter ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/next.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, สรุปจาก evidence ในไฟล์จริง, แนะนำแล้วหยุด; ชี้ playbook ไม่ duplicate) — รับ slug จาก request (ไม่ระบุ = สแกนทุก topic ใน `docs/stages/` ยกเว้น `achieved/`)
1
+ ---
2
+ name: next
3
+ description: เช็คงานค้างทุก topic + แนะนำขั้นตอน/command ถัดไป แบบ read-only — ไม่สร้าง/แก้ไฟล์ใดๆ
4
+ when_to_use: เมื่อต้องการรู้ว่าแต่ละ topic ค้างอยู่ stage ไหน + ควรรัน command อะไรถัดไป
5
+ allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
+ ---
7
+
8
+ ทำหน้าที่เป็น status reporter ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/next.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, สรุปจาก evidence ในไฟล์จริง, แนะนำแล้วหยุด; ชี้ playbook ไม่ duplicate) — รับ slug จาก request (ไม่ระบุ = สแกนทุก topic ใน `docs/stages/` ยกเว้น `achieved/`)
@@ -1,8 +1,8 @@
1
- ---
2
- name: update-codemaps
3
- description: Scan project structure and generate token-lean architecture codemaps (docs/codemap/)
4
- when_to_use: หลังเพิ่ม/ย้าย/ลบไฟล์ หรือเปลี่ยนโครงสร้างโปรเจกต์ → refresh docs/codemap/ ให้ตรงโครงจริง
5
- allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
- ---
7
-
8
- ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด (ชี้ playbook ไม่ duplicate ขั้นตอน)
1
+ ---
2
+ name: update-codemaps
3
+ description: Scan project structure and generate token-lean architecture codemaps (docs/codemap/)
4
+ when_to_use: หลังเพิ่ม/ย้าย/ลบไฟล์ หรือเปลี่ยนโครงสร้างโปรเจกต์ → refresh docs/codemap/ ให้ตรงโครงจริง
5
+ allowed-tools: Read, Grep, Glob, Bash(find:*), Bash(ls:*), Bash(grep:*)
6
+ ---
7
+
8
+ ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน — อ่าน `.warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด (ชี้ playbook ไม่ duplicate ขั้นตอน)
@@ -1,29 +1,29 @@
1
- # CLAUDE.md
2
-
3
- โปรเจกต์นี้ใช้ **Warnyin Standard Workflow** — มาตรฐานกลางของ ways of work เดินงานผ่าน 5 stage:
4
- `Discovery (optional) ▶ DESIGN ▶ BUILD ▶ VERIFY ▶ SHIP`
5
-
6
- ## กฎหลัก
7
- - แก่นของแต่ละ stage เป็น single source of truth ที่ `.warnyin/workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
8
- - อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `.warnyin/workflow/stages/`
9
- - output ของงานจริงเก็บใน `docs/stages/<slug>/` (copy จาก template `.warnyin/template/stages/[topic]/`)
10
- - ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/` — เริ่มอ่าน `docs/project.md` เสมอใน Discovery
11
-
12
- ## Slash commands (namespace `warnyin:`)
13
- - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`.warnyin/workflow/init.md`)
14
- - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการ: `.warnyin/workflow/roles/README.md`)
15
- - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean (`.warnyin/workflow/codemap.md`)
16
- - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact (`.warnyin/workflow/explore.md`)
17
- - `/warnyin:next [slug]` → เช็คงานค้าง + แนะนำ command ถัดไป แบบ read-only (`.warnyin/workflow/next.md`)
18
- - `/warnyin:discovery [topic]` → Discovery stage (`.warnyin/workflow/stages/discovery.md`)
19
- - `/warnyin:design [slug] [change]` → DESIGN stage (`.warnyin/workflow/stages/design.md`)
20
- - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`.warnyin/workflow/stages/build.md` + `.warnyin/workflow/scripts/build-wave.mjs`)
21
- - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`.warnyin/workflow/stages/verify.md`)
22
- - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`.warnyin/workflow/stages/ship.md`)
23
-
24
- ## รองรับหลาย AI
25
- Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
26
- ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` — ดูภาพรวมที่ `.warnyin/workflow/README.md`
27
-
28
- ## อัปเดต workflow
29
- `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template `.warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `docs/stages/`
1
+ # CLAUDE.md
2
+
3
+ โปรเจกต์นี้ใช้ **Warnyin Standard Workflow** — มาตรฐานกลางของ ways of work เดินงานผ่าน 5 stage:
4
+ `Discovery (optional) ▶ DESIGN ▶ BUILD ▶ VERIFY ▶ SHIP`
5
+
6
+ ## กฎหลัก
7
+ - แก่นของแต่ละ stage เป็น single source of truth ที่ `.warnyin/workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
8
+ - อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `.warnyin/workflow/stages/`
9
+ - output ของงานจริงเก็บใน `docs/stages/<slug>/` (copy จาก template `.warnyin/template/stages/[topic]/`)
10
+ - ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/` — เริ่มอ่าน `docs/project.md` เสมอใน Discovery
11
+
12
+ ## Slash commands (namespace `warnyin:`)
13
+ - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`.warnyin/workflow/init.md`)
14
+ - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการ: `.warnyin/workflow/roles/README.md`)
15
+ - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean (`.warnyin/workflow/codemap.md`)
16
+ - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact (`.warnyin/workflow/explore.md`)
17
+ - `/warnyin:next [slug]` → เช็คงานค้าง + แนะนำ command ถัดไป แบบ read-only (`.warnyin/workflow/next.md`)
18
+ - `/warnyin:discovery [topic]` → Discovery stage (`.warnyin/workflow/stages/discovery.md`)
19
+ - `/warnyin:design [slug] [change]` → DESIGN stage (`.warnyin/workflow/stages/design.md`)
20
+ - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`.warnyin/workflow/stages/build.md` + `.warnyin/workflow/scripts/build-wave.mjs`)
21
+ - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`.warnyin/workflow/stages/verify.md`)
22
+ - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`.warnyin/workflow/stages/ship.md`)
23
+
24
+ ## รองรับหลาย AI
25
+ Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
26
+ ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` — ดูภาพรวมที่ `.warnyin/workflow/README.md`
27
+
28
+ ## อัปเดต workflow
29
+ `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template `.warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `docs/stages/`
@@ -1,18 +1,18 @@
1
- # Code Map — Index
2
-
3
- > สารบัญ codemap ทั้งชุด — สร้าง/อัปเดตด้วย `/warnyin:update-codemaps` (playbook: `.warnyin/workflow/codemap.md`)
4
- > ทุกไฟล์ต้อง token-lean (< 1000 tokens) + freshness header + ตรงโค้ดจริงเสมอ
5
-
6
- ## Codemap files
7
- <!-- ลิงก์เฉพาะไฟล์ที่ relevant กับโปรเจกต์ -->
8
- - [architecture.md](architecture.md) — system diagram, service boundary, data flow
9
- - [backend.md](backend.md) — routes, middleware, service → repo mapping
10
- - [frontend.md](frontend.md) — page tree, component hierarchy, state
11
- - [data.md](data.md) — ตาราง DB, relationship, migrations
12
- - [dependencies.md](dependencies.md) — external service, third-party, shared lib
13
-
14
- ## Component ทั้งหมด
15
- <!-- ชื่อ + หน้าที่ + path — รายละเอียดต่อ component ดู docs/techstack/<component>/structure.md -->
16
-
17
- ## จุดเข้า (entry points)
18
- <!-- main/server/cli/cron — ไฟล์ไหนคือประตูเข้าแต่ละทาง -->
1
+ # Code Map — Index
2
+
3
+ > สารบัญ codemap ทั้งชุด — สร้าง/อัปเดตด้วย `/warnyin:update-codemaps` (playbook: `.warnyin/workflow/codemap.md`)
4
+ > ทุกไฟล์ต้อง token-lean (< 1000 tokens) + freshness header + ตรงโค้ดจริงเสมอ
5
+
6
+ ## Codemap files
7
+ <!-- ลิงก์เฉพาะไฟล์ที่ relevant กับโปรเจกต์ -->
8
+ - [architecture.md](architecture.md) — system diagram, service boundary, data flow
9
+ - [backend.md](backend.md) — routes, middleware, service → repo mapping
10
+ - [frontend.md](frontend.md) — page tree, component hierarchy, state
11
+ - [data.md](data.md) — ตาราง DB, relationship, migrations
12
+ - [dependencies.md](dependencies.md) — external service, third-party, shared lib
13
+
14
+ ## Component ทั้งหมด
15
+ <!-- ชื่อ + หน้าที่ + path — รายละเอียดต่อ component ดู docs/techstack/<component>/structure.md -->
16
+
17
+ ## จุดเข้า (entry points)
18
+ <!-- main/server/cli/cron — ไฟล์ไหนคือประตูเข้าแต่ละทาง -->
@@ -1,5 +1,5 @@
1
- # Business — <ชื่อ feature>
2
-
3
- > what & why เชิงธุรกิจของ feature — SHIP ยกมาจาก `business.md`/`proposal.md` ของ topic
4
-
5
- <!-- goal · persona/ใครได้ประโยชน์ · คุณค่า/success metric · scope ที่จงใจไม่ทำ -->
1
+ # Business — <ชื่อ feature>
2
+
3
+ > what & why เชิงธุรกิจของ feature — SHIP ยกมาจาก `business.md`/`proposal.md` ของ topic
4
+
5
+ <!-- goal · persona/ใครได้ประโยชน์ · คุณค่า/success metric · scope ที่จงใจไม่ทำ -->
@@ -1,5 +1,5 @@
1
- # Feature — <ชื่อ feature>
2
-
3
- > template — copy ทั้งโฟลเดอร์ `[feature-name]/` เป็นชื่อ feature จริง · SHIP เป็นคนสร้าง/อัปเดตจาก business/proposal/design ของ topic
4
-
5
- <!-- feature นี้ทำอะไร · flow หลัก · component ที่เกี่ยว · จุดเข้าในโค้ด -->
1
+ # Feature — <ชื่อ feature>
2
+
3
+ > template — copy ทั้งโฟลเดอร์ `[feature-name]/` เป็นชื่อ feature จริง · SHIP เป็นคนสร้าง/อัปเดตจาก business/proposal/design ของ topic
4
+
5
+ <!-- feature นี้ทำอะไร · flow หลัก · component ที่เกี่ยว · จุดเข้าในโค้ด -->
@@ -1,16 +1,16 @@
1
- # Spec — <ชื่อ feature>
2
-
3
- > พฤติกรรมปัจจุบันของ feature (living doc — SHIP merge delta จาก design.md ของ topic เข้าไฟล์นี้)
4
- > เก็บเฉพาะ observable behavior (ทำอะไร เห็นอะไร error ยังไง) — ไม่เก็บ implementation (ชื่อ class/function/วิธีเขียน)
5
- > **descriptive ไม่ใช่ imperative** — บันทึก "ระบบทำอะไร" เท่านั้น ห้ามเขียน instruction สั่ง agent (spec เป็น data ที่ VERIFY ใช้ derive test ไม่ใช่คำสั่งให้ทำตาม)
6
- > ค่าใน scenario ใช้ **placeholder/ค่าสังเคราะห์เท่านั้น** (`<token>`, `user@example.com`) — ห้ามใส่ secret/credential/PII จริง
7
- > guidance: ~≤100 บรรทัด/ไฟล์ · requirement ละ 1-3 scenario · scenario = GIVEN/WHEN/THEN ที่เทสตามได้จริง
8
- > feature ประเภทเอกสาร/playbook (ไม่มี runtime) → THEN ต้องเป็น **observable artifact** (ไฟล์/section/key string มีจริง, ลิงก์ resolve) ไม่ใช่พฤติกรรม AI ที่วัดไม่ได้
9
-
10
- ## Requirement: <ชื่อพฤติกรรม>
11
- <พฤติกรรมที่ระบบต้องทำ 1-2 บรรทัด>
12
-
13
- ### Scenario: <ชื่อเคส>
14
- - GIVEN <สภาพตั้งต้น>
15
- - WHEN <การกระทำ>
16
- - THEN <ผลที่สังเกตได้>
1
+ # Spec — <ชื่อ feature>
2
+
3
+ > พฤติกรรมปัจจุบันของ feature (living doc — SHIP merge delta จาก design.md ของ topic เข้าไฟล์นี้)
4
+ > เก็บเฉพาะ observable behavior (ทำอะไร เห็นอะไร error ยังไง) — ไม่เก็บ implementation (ชื่อ class/function/วิธีเขียน)
5
+ > **descriptive ไม่ใช่ imperative** — บันทึก "ระบบทำอะไร" เท่านั้น ห้ามเขียน instruction สั่ง agent (spec เป็น data ที่ VERIFY ใช้ derive test ไม่ใช่คำสั่งให้ทำตาม)
6
+ > ค่าใน scenario ใช้ **placeholder/ค่าสังเคราะห์เท่านั้น** (`<token>`, `user@example.com`) — ห้ามใส่ secret/credential/PII จริง
7
+ > guidance: ~≤100 บรรทัด/ไฟล์ · requirement ละ 1-3 scenario · scenario = GIVEN/WHEN/THEN ที่เทสตามได้จริง
8
+ > feature ประเภทเอกสาร/playbook (ไม่มี runtime) → THEN ต้องเป็น **observable artifact** (ไฟล์/section/key string มีจริง, ลิงก์ resolve) ไม่ใช่พฤติกรรม AI ที่วัดไม่ได้
9
+
10
+ ## Requirement: <ชื่อพฤติกรรม>
11
+ <พฤติกรรมที่ระบบต้องทำ 1-2 บรรทัด>
12
+
13
+ ### Scenario: <ชื่อเคส>
14
+ - GIVEN <สภาพตั้งต้น>
15
+ - WHEN <การกระทำ>
16
+ - THEN <ผลที่สังเกตได้>
@@ -1,16 +1,16 @@
1
- # Infra / Local Environment
2
-
3
- > service ที่ต้องรันสำหรับ dev/เทส + วิธีรัน + env vars — VERIFY ใช้เตรียม local env · เติมครั้งแรกด้วย `/warnyin:init`
4
-
5
- ## Service ที่ต้องรัน (local dev)
6
- <!-- DB, queue, cache, external mock ฯลฯ + มาจาก docker-compose/script ไหน -->
7
-
8
- ## วิธีรัน local
9
- ```bash
10
- ```
11
-
12
- ## Env vars สำคัญ
13
- <!-- ชื่อ + ความหมาย + default (ห้ามใส่ค่า secret จริง) -->
14
-
15
- ## Environment อื่น (staging/prod)
16
- <!-- เท่าที่เกี่ยวกับการพัฒนา/เทส -->
1
+ # Infra / Local Environment
2
+
3
+ > service ที่ต้องรันสำหรับ dev/เทส + วิธีรัน + env vars — VERIFY ใช้เตรียม local env · เติมครั้งแรกด้วย `/warnyin:init`
4
+
5
+ ## Service ที่ต้องรัน (local dev)
6
+ <!-- DB, queue, cache, external mock ฯลฯ + มาจาก docker-compose/script ไหน -->
7
+
8
+ ## วิธีรัน local
9
+ ```bash
10
+ ```
11
+
12
+ ## Env vars สำคัญ
13
+ <!-- ชื่อ + ความหมาย + default (ห้ามใส่ค่า secret จริง) -->
14
+
15
+ ## Environment อื่น (staging/prod)
16
+ <!-- เท่าที่เกี่ยวกับการพัฒนา/เทส -->
@@ -1,18 +1,18 @@
1
- # Project — <ชื่อโปรเจกต์>
2
-
3
- > ★ จุดเริ่มของ Discovery — AI อ่านไฟล์นี้ก่อนเสมอ · เติมครั้งแรกด้วย `/warnyin:init` (สัมภาษณ์ user + วิเคราะห์โค้ด)
4
-
5
- ## โปรเจกต์นี้คืออะไร
6
- <!-- ทำอะไร เพื่อใคร แก้ปัญหาอะไร — 2-4 บรรทัด -->
7
-
8
- ## เป้าหมาย / success metric
9
- <!-- วัดผลได้ ไม่ใช่ "น่าจะดี" -->
10
-
11
- ## ลูกค้า / ผู้ใช้หลัก (persona)
12
-
13
- ## ขอบเขต
14
- - **in:**
15
- - **out (จงใจไม่ทำ):**
16
-
17
- ## ข้อจำกัด / บริบทสำคัญ
18
- <!-- กฎหมาย/นโยบาย/ระบบเดิม/ระบบภายนอก -->
1
+ # Project — <ชื่อโปรเจกต์>
2
+
3
+ > ★ จุดเริ่มของ Discovery — AI อ่านไฟล์นี้ก่อนเสมอ · เติมครั้งแรกด้วย `/warnyin:init` (สัมภาษณ์ user + วิเคราะห์โค้ด)
4
+
5
+ ## โปรเจกต์นี้คืออะไร
6
+ <!-- ทำอะไร เพื่อใคร แก้ปัญหาอะไร — 2-4 บรรทัด -->
7
+
8
+ ## เป้าหมาย / success metric
9
+ <!-- วัดผลได้ ไม่ใช่ "น่าจะดี" -->
10
+
11
+ ## ลูกค้า / ผู้ใช้หลัก (persona)
12
+
13
+ ## ขอบเขต
14
+ - **in:**
15
+ - **out (จงใจไม่ทำ):**
16
+
17
+ ## ข้อจำกัด / บริบทสำคัญ
18
+ <!-- กฎหมาย/นโยบาย/ระบบเดิม/ระบบภายนอก -->
@@ -1,7 +1,7 @@
1
- # Global Rules
2
-
3
- > กฎระดับโปรเจกต์ที่ **ทุก component** ต้อง follow — กฎเฉพาะ component อยู่ที่ `docs/techstack/<component>/rule.md`
4
- > SHIP เป็นคน promote กฎใหม่เข้ามา (จาก note "รอ SHIP" ใน tasks) — ระหว่างงานห้ามแก้ไฟล์นี้ตรงๆ
5
-
6
- <!-- ตัวอย่าง: ทุก commit ต้องผ่าน lint, ห้าม hardcode secret, error message ห้าม leak ข้อมูลภายใน -->
7
- -
1
+ # Global Rules
2
+
3
+ > กฎระดับโปรเจกต์ที่ **ทุก component** ต้อง follow — กฎเฉพาะ component อยู่ที่ `docs/techstack/<component>/rule.md`
4
+ > SHIP เป็นคน promote กฎใหม่เข้ามา (จาก note "รอ SHIP" ใน tasks) — ระหว่างงานห้ามแก้ไฟล์นี้ตรงๆ
5
+
6
+ <!-- ตัวอย่าง: ทุก commit ต้องผ่าน lint, ห้าม hardcode secret, error message ห้าม leak ข้อมูลภายใน -->
7
+ -
@@ -1,6 +1,6 @@
1
- # About — <ชื่อ component>
2
-
3
- > template — copy ทั้งโฟลเดอร์ `[component]/` เป็นชื่อ component จริง (เช่น `api-service/`, `web-frontend/`)
4
- > ปกติ `/warnyin:init` สร้างให้อัตโนมัติจากการวิเคราะห์โปรเจกต์
5
-
6
- <!-- component นี้คืออะไร ทำหน้าที่อะไร · ภาษา/framework/runtime · ขอบเขตความรับผิดชอบ -->
1
+ # About — <ชื่อ component>
2
+
3
+ > template — copy ทั้งโฟลเดอร์ `[component]/` เป็นชื่อ component จริง (เช่น `api-service/`, `web-frontend/`)
4
+ > ปกติ `/warnyin:init` สร้างให้อัตโนมัติจากการวิเคราะห์โปรเจกต์
5
+
6
+ <!-- component นี้คืออะไร ทำหน้าที่อะไร · ภาษา/framework/runtime · ขอบเขตความรับผิดชอบ -->
@@ -1,6 +1,6 @@
1
- # Rule — <ชื่อ component>
2
-
3
- > กฎที่ "ต้อง" follow ของ component นี้ — DESIGN ดึงไปใส่ `tasks/<task>/rule.md`, SHIP เป็นคน promote กฎใหม่เข้ามา
4
-
5
- <!-- กฎที่บังคับ เช่น: ห้าม query ตรงจาก controller, ทุก endpoint ต้องมี auth middleware, ... -->
6
- -
1
+ # Rule — <ชื่อ component>
2
+
3
+ > กฎที่ "ต้อง" follow ของ component นี้ — DESIGN ดึงไปใส่ `tasks/<task>/rule.md`, SHIP เป็นคน promote กฎใหม่เข้ามา
4
+
5
+ <!-- กฎที่บังคับ เช่น: ห้าม query ตรงจาก controller, ทุก endpoint ต้องมี auth middleware, ... -->
6
+ -
@@ -1,6 +1,6 @@
1
- # Standard — <ชื่อ component>
2
-
3
- > pattern/convention การเขียนโค้ด + shared component ที่ต้อง reuse — DESIGN ดึงไปใส่ `tasks/<task>/standard.md`
4
-
5
- <!-- เช่น: โครงสร้าง module, naming, error handling pattern, รายการ shared component ที่ห้ามเขียนซ้ำ -->
6
- -
1
+ # Standard — <ชื่อ component>
2
+
3
+ > pattern/convention การเขียนโค้ด + shared component ที่ต้อง reuse — DESIGN ดึงไปใส่ `tasks/<task>/standard.md`
4
+
5
+ <!-- เช่น: โครงสร้าง module, naming, error handling pattern, รายการ shared component ที่ห้ามเขียนซ้ำ -->
6
+ -
@@ -1,7 +1,7 @@
1
- # Structure — <ชื่อ component>
2
-
3
- > โครงสร้างโฟลเดอร์/โมดูลจริงของ component — SHIP อัปเดตเมื่อโครงสร้างเปลี่ยน
4
-
5
- <!-- tree โฟลเดอร์สำคัญ + ไฟล์/โมดูลไหนรับผิดชอบอะไร + จุดเข้า (entry point) -->
6
- ```
7
- ```
1
+ # Structure — <ชื่อ component>
2
+
3
+ > โครงสร้างโฟลเดอร์/โมดูลจริงของ component — SHIP อัปเดตเมื่อโครงสร้างเปลี่ยน
4
+
5
+ <!-- tree โฟลเดอร์สำคัญ + ไฟล์/โมดูลไหนรับผิดชอบอะไร + จุดเข้า (entry point) -->
6
+ ```
7
+ ```
@@ -1,7 +1,7 @@
1
- # Test — <ชื่อ component>
2
-
3
- > guideline ว่า component นี้เทสยังไง — VERIFY ใช้เป็นแผนตั้งต้น, SHIP merge แผนเทสใหม่จาก topic เข้ามา
4
-
5
- <!-- framework + คำสั่งรัน unit/integration · e2e ใช้อะไร (เช่น FE: e2e smoke ผ่าน playwright-cli) · วิธี seed ข้อมูลทดสอบ -->
6
- - unit:
7
- - e2e:
1
+ # Test — <ชื่อ component>
2
+
3
+ > guideline ว่า component นี้เทสยังไง — VERIFY ใช้เป็นแผนตั้งต้น, SHIP merge แผนเทสใหม่จาก topic เข้ามา
4
+
5
+ <!-- framework + คำสั่งรัน unit/integration · e2e ใช้อะไร (เช่น FE: e2e smoke ผ่าน playwright-cli) · วิธี seed ข้อมูลทดสอบ -->
6
+ - unit:
7
+ - e2e: