@warnyin/agents 0.9.0 → 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 -99
  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 -109
  71. package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
  72. package/src/.warnyin/workflow/stages/build.md +98 -97
  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,49 +1,49 @@
1
- # Research — <ชื่อหัวข้องาน>
2
-
3
- > Output ของ Discovery stage · playbook: `.warnyin/workflow/stages/discovery.md`
4
- > ที่เก็บ "ข้อมูลที่ค้นมา + หลักฐาน" สนับสนุนการตัดสินใจใน `discovery.md`
5
-
6
- | | |
7
- |---|---|
8
- | **Slug** | `<kebab-case>` |
9
- | **วันที่** | `YYYY-MM-DD` |
10
-
11
- ---
12
-
13
- ## 1. คำถามวิจัย (research questions)
14
- > สิ่งที่ "ยังไม่รู้" และต้องค้นให้ได้คำตอบก่อนออกแบบ
15
- - [ ] RQ1:
16
- - [ ] RQ2:
17
-
18
- ## 2. วิธี & แหล่งข้อมูล
19
- - [ ] อ่านโค้ด/เอกสารในโปรเจกต์ (code inspection)
20
- - [ ] ค้นเว็บ / เอกสารภายนอก
21
- - [ ] prior art / วิธีที่ทีม/คนอื่นทำ
22
-
23
- ## 3. Findings (ผลการค้นต่อคำถาม)
24
- > ทุก finding ต้องมี evidence/link อ้างอิงได้
25
-
26
- ### RQ1: <คำถาม>
27
- - พบว่า:
28
- - หลักฐาน:
29
- - สรุป/นัยต่อการออกแบบ:
30
-
31
- ### RQ2: <คำถาม>
32
- -
33
-
34
- ## 4. Code inspection (สิ่งที่ตอบได้จากโค้ดเอง โดยไม่ต้องถาม user)
35
- | ไฟล์ / ส่วนของโค้ด | สิ่งที่พบ | นัยต่องาน |
36
- |---|---|---|
37
- | | | |
38
-
39
- ## 5. ทางเลือก & เปรียบเทียบ (ถ้ามี)
40
- | ทางเลือก | ข้อดี | ข้อเสีย | เหมาะกับเคสนี้? |
41
- |---|---|---|---|
42
- | | | | |
43
-
44
- ## 6. ความเสี่ยง / unknown ที่ยังเหลือ
45
- -
46
-
47
- ## 7. ข้อสรุป → ส่งต่อ
48
- - คำแนะนำจาก research:
49
- - การตัดสินใจที่ป้อนกลับเข้า `discovery.md` (Decision Log):
1
+ # Research — <ชื่อหัวข้องาน>
2
+
3
+ > Output ของ Discovery stage · playbook: `.warnyin/workflow/stages/discovery.md`
4
+ > ที่เก็บ "ข้อมูลที่ค้นมา + หลักฐาน" สนับสนุนการตัดสินใจใน `discovery.md`
5
+
6
+ | | |
7
+ |---|---|
8
+ | **Slug** | `<kebab-case>` |
9
+ | **วันที่** | `YYYY-MM-DD` |
10
+
11
+ ---
12
+
13
+ ## 1. คำถามวิจัย (research questions)
14
+ > สิ่งที่ "ยังไม่รู้" และต้องค้นให้ได้คำตอบก่อนออกแบบ
15
+ - [ ] RQ1:
16
+ - [ ] RQ2:
17
+
18
+ ## 2. วิธี & แหล่งข้อมูล
19
+ - [ ] อ่านโค้ด/เอกสารในโปรเจกต์ (code inspection)
20
+ - [ ] ค้นเว็บ / เอกสารภายนอก
21
+ - [ ] prior art / วิธีที่ทีม/คนอื่นทำ
22
+
23
+ ## 3. Findings (ผลการค้นต่อคำถาม)
24
+ > ทุก finding ต้องมี evidence/link อ้างอิงได้
25
+
26
+ ### RQ1: <คำถาม>
27
+ - พบว่า:
28
+ - หลักฐาน:
29
+ - สรุป/นัยต่อการออกแบบ:
30
+
31
+ ### RQ2: <คำถาม>
32
+ -
33
+
34
+ ## 4. Code inspection (สิ่งที่ตอบได้จากโค้ดเอง โดยไม่ต้องถาม user)
35
+ | ไฟล์ / ส่วนของโค้ด | สิ่งที่พบ | นัยต่องาน |
36
+ |---|---|---|
37
+ | | | |
38
+
39
+ ## 5. ทางเลือก & เปรียบเทียบ (ถ้ามี)
40
+ | ทางเลือก | ข้อดี | ข้อเสีย | เหมาะกับเคสนี้? |
41
+ |---|---|---|---|
42
+ | | | | |
43
+
44
+ ## 6. ความเสี่ยง / unknown ที่ยังเหลือ
45
+ -
46
+
47
+ ## 7. ข้อสรุป → ส่งต่อ
48
+ - คำแนะนำจาก research:
49
+ - การตัดสินใจที่ป้อนกลับเข้า `discovery.md` (Decision Log):
@@ -1,32 +1,32 @@
1
- # Ship — <ชื่อ topic>
2
-
3
- > Output ของ SHIP stage · playbook: `.warnyin/workflow/stages/ship.md`
4
- > สรุปการส่งมอบ — เขียนหลังย้าย topic เข้า `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว
5
-
6
- ## 1. สรุป topic
7
- - ทำอะไร: <!-- หนึ่งย่อหน้า: topic นี้ทำอะไร ทำอย่างไร -->
8
- - ประเภท: ☐ feature ใหม่ / ☐ ปรับปรุง feature เดิม → `docs/features/<feature-name>/`
9
-
10
- ## 2. เอกสารกลางที่อัปเดต
11
- | ไฟล์ | สาระที่ promote |
12
- |---|---|
13
- | `docs/features/<feature-name>/` | |
14
- | `docs/features/<feature-name>/spec.md` | <!-- merge Spec delta จาก design.md §9 --> |
15
- | `docs/techstack/<component>/rule.md` | |
16
- | `docs/techstack/<component>/standard.md` | |
17
- | `docs/techstack/<component>/structure.md` | |
18
- | `docs/techstack/<component>/test.md` | |
19
- | `docs/rule.md` | |
20
- | `docs/troubleshooting.md` | |
21
- | `docs/infra.md` / `docs/project.md` | <!-- ถ้าเกี่ยวข้อง --> |
22
- | `docs/codemap/` | |
23
-
24
- ## 3. Learned rules (planned + emergent)
25
- > กฎ generalize ที่จับจาก topic นี้ — planned (`tasks/*/rule.md` §2) + emergent (บทเรียนตอน build/verify/troubleshooting). evidence บังคับ; ไม่มี evidence = ไม่ promote. ครอบทั้งที่ promote และที่ตัด.
26
-
27
- | rule (generalize) | evidence (pointer + artifact) | scope (`component:<c>` / `project`) | promote? (✅ / ✂️ + เหตุผล) |
28
- |---|---|---|---|
29
- | | | | |
30
-
31
- ## 4. Archive
32
- - ย้ายจาก `docs/stages/<slug>/` → `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` เมื่อ <YYYY-MM-DD>
1
+ # Ship — <ชื่อ topic>
2
+
3
+ > Output ของ SHIP stage · playbook: `.warnyin/workflow/stages/ship.md`
4
+ > สรุปการส่งมอบ — เขียนหลังย้าย topic เข้า `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว
5
+
6
+ ## 1. สรุป topic
7
+ - ทำอะไร: <!-- หนึ่งย่อหน้า: topic นี้ทำอะไร ทำอย่างไร -->
8
+ - ประเภท: ☐ feature ใหม่ / ☐ ปรับปรุง feature เดิม → `docs/features/<feature-name>/`
9
+
10
+ ## 2. เอกสารกลางที่อัปเดต
11
+ | ไฟล์ | สาระที่ promote |
12
+ |---|---|
13
+ | `docs/features/<feature-name>/` | |
14
+ | `docs/features/<feature-name>/spec.md` | <!-- merge Spec delta จาก design.md §9 --> |
15
+ | `docs/techstack/<component>/rule.md` | |
16
+ | `docs/techstack/<component>/standard.md` | |
17
+ | `docs/techstack/<component>/structure.md` | |
18
+ | `docs/techstack/<component>/test.md` | |
19
+ | `docs/rule.md` | |
20
+ | `docs/troubleshooting.md` | |
21
+ | `docs/infra.md` / `docs/project.md` | <!-- ถ้าเกี่ยวข้อง --> |
22
+ | `docs/codemap/` | |
23
+
24
+ ## 3. Learned rules (planned + emergent)
25
+ > กฎ generalize ที่จับจาก topic นี้ — planned (`tasks/*/rule.md` §2) + emergent (บทเรียนตอน build/verify/troubleshooting). evidence บังคับ; ไม่มี evidence = ไม่ promote. ครอบทั้งที่ promote และที่ตัด.
26
+
27
+ | rule (generalize) | evidence (pointer + artifact) | scope (`component:<c>` / `project`) | promote? (✅ / ✂️ + เหตุผล) |
28
+ |---|---|---|---|
29
+ | | | | |
30
+
31
+ ## 4. Archive
32
+ - ย้ายจาก `docs/stages/<slug>/` → `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` เมื่อ <YYYY-MM-DD>
@@ -1,19 +1,19 @@
1
- # Issue — <ชื่อ task>
2
-
3
- > Output ของ DESIGN dry-run · playbook: `.warnyin/workflow/stages/design.md` (ข้อ 4.9)
4
- > ผลสแกนหา defer/blocker ของ task นี้ก่อนเข้า BUILD — **สร้างเฉพาะเมื่อพบ issue**
5
-
6
- ## 1. สรุป
7
- - ผลสแกน: blocker __ ข้อ · defer __ ข้อ
8
- - สถานะรวม: ☐ แก้ครบ ไม่มี blocker ค้าง / ☐ มี blocker ค้าง (ห้ามเข้า BUILD)
9
-
10
- ## 2. รายการ issue
11
- | # | ประเภท | จุดที่พบ (ไฟล์/spec/โค้ด) | รายละเอียด | แนวทางแก้ / ข้อสรุป | สถานะ |
12
- |---|---|---|---|---|---|
13
- | 1 | blocker / defer | | | | open / resolved |
14
-
15
- > - **blocker** — ทำให้ implement ตาม spec ไม่ได้ (ขัดแย้งกับโค้ดจริง/task อื่น, ข้อมูลขาด, dependency ผิด) → ต้องแก้ DESIGN ก่อนเข้า BUILD
16
- > - **defer** — ตัดสินใจ/ทำทีหลังได้ ไม่ block การเริ่ม BUILD แต่ต้องบันทึกและให้ user รับทราบ
17
-
18
- ## 3. ผลการแก้ไข
19
- <!-- แก้อะไรใน design.md / task ไหนบ้าง + ผล rerun dry-run; ข้อสรุปจากการสัมภาษณ์ user (ถ้ามี) -->
1
+ # Issue — <ชื่อ task>
2
+
3
+ > Output ของ DESIGN dry-run · playbook: `.warnyin/workflow/stages/design.md` (ข้อ 4.9)
4
+ > ผลสแกนหา defer/blocker ของ task นี้ก่อนเข้า BUILD — **สร้างเฉพาะเมื่อพบ issue**
5
+
6
+ ## 1. สรุป
7
+ - ผลสแกน: blocker __ ข้อ · defer __ ข้อ
8
+ - สถานะรวม: ☐ แก้ครบ ไม่มี blocker ค้าง / ☐ มี blocker ค้าง (ห้ามเข้า BUILD)
9
+
10
+ ## 2. รายการ issue
11
+ | # | ประเภท | จุดที่พบ (ไฟล์/spec/โค้ด) | รายละเอียด | แนวทางแก้ / ข้อสรุป | สถานะ |
12
+ |---|---|---|---|---|---|
13
+ | 1 | blocker / defer | | | | open / resolved |
14
+
15
+ > - **blocker** — ทำให้ implement ตาม spec ไม่ได้ (ขัดแย้งกับโค้ดจริง/task อื่น, ข้อมูลขาด, dependency ผิด) → ต้องแก้ DESIGN ก่อนเข้า BUILD
16
+ > - **defer** — ตัดสินใจ/ทำทีหลังได้ ไม่ block การเริ่ม BUILD แต่ต้องบันทึกและให้ user รับทราบ
17
+
18
+ ## 3. ผลการแก้ไข
19
+ <!-- แก้อะไรใน design.md / task ไหนบ้าง + ผล rerun dry-run; ข้อสรุปจากการสัมภาษณ์ user (ถ้ามี) -->
@@ -1,13 +1,13 @@
1
- # Rule — <ชื่อ task>
2
-
3
- > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
- > rule ที่ task นี้ต้อง **focus/follow** + rule ใหม่ที่อยากเสนอเพิ่ม
5
-
6
- ## 1. Rule ที่ต้อง follow (จาก techstack)
7
- > ดึงจาก `docs/techstack/<component>/rule.md` และ `docs/rule.md` — เฉพาะข้อที่เกี่ยวกับ task นี้
8
- - [ ]
9
- - [ ]
10
-
11
- ## 2. เสนอเพิ่ม rule ใหม่ (⏳ รอ SHIP ค่อยอัปเดต rule กลาง)
12
- > ห้ามแก้ `docs/techstack/.../rule.md` ตอนนี้ — แค่ note ไว้ก่อน ถึง SHIP ค่อยพิจารณาย้ายขึ้นไป
13
- - [ ] rule ที่เสนอ: _____ — เหตุผล: _____
1
+ # Rule — <ชื่อ task>
2
+
3
+ > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
+ > rule ที่ task นี้ต้อง **focus/follow** + rule ใหม่ที่อยากเสนอเพิ่ม
5
+
6
+ ## 1. Rule ที่ต้อง follow (จาก techstack)
7
+ > ดึงจาก `docs/techstack/<component>/rule.md` และ `docs/rule.md` — เฉพาะข้อที่เกี่ยวกับ task นี้
8
+ - [ ]
9
+ - [ ]
10
+
11
+ ## 2. เสนอเพิ่ม rule ใหม่ (⏳ รอ SHIP ค่อยอัปเดต rule กลาง)
12
+ > ห้ามแก้ `docs/techstack/.../rule.md` ตอนนี้ — แค่ note ไว้ก่อน ถึง SHIP ค่อยพิจารณาย้ายขึ้นไป
13
+ - [ ] rule ที่เสนอ: _____ — เหตุผล: _____
@@ -1,36 +1,36 @@
1
- # Spec — <ชื่อ task>
2
-
3
- > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
- > spec เฉพาะของ task นี้ — **ใส่เฉพาะหัวข้อที่เกี่ยวข้องกับชนิดของ task**
5
-
6
- ## 1. ชนิดของ task
7
- `API` / `UX-UI` / `data` / `logic` / `infra` / ...
8
-
9
- ---
10
-
11
- ## 2. API SPEC (ถ้าเป็น API — ตามมาตรฐาน)
12
- | | |
13
- |---|---|
14
- | Endpoint | `METHOD /path` |
15
- | Auth | |
16
- | Request | schema / body / params |
17
- | Response | schema + ตัวอย่าง |
18
- | Status / Error | 200 / 4xx / 5xx + error shape |
19
-
20
- ## 3. UX/UI SPEC (ถ้าเป็นงาน UI)
21
- - Wireframe / Figma ref: `<ลิงก์ ถ้ามี>`
22
- - States: default / loading / empty / error / success
23
- - Responsive / accessibility:
24
-
25
- ## 4. Data-flow
26
- > ข้อมูลไหลจากไหน → ผ่านอะไร → ไปไหน
27
-
28
- ## 5. User-flow
29
- > ผู้ใช้เดินผ่านขั้นตอนไหนบ้าง
30
-
31
- ## 6. Persona
32
- > task นี้ทำเพื่อใคร
33
-
34
- ## 7. Test-flow
35
- > จะทดสอบ/ยืนยันความถูกต้องยังไง (เคสที่ต้องผ่าน, edge case)
36
- - [ ]
1
+ # Spec — <ชื่อ task>
2
+
3
+ > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
+ > spec เฉพาะของ task นี้ — **ใส่เฉพาะหัวข้อที่เกี่ยวข้องกับชนิดของ task**
5
+
6
+ ## 1. ชนิดของ task
7
+ `API` / `UX-UI` / `data` / `logic` / `infra` / ...
8
+
9
+ ---
10
+
11
+ ## 2. API SPEC (ถ้าเป็น API — ตามมาตรฐาน)
12
+ | | |
13
+ |---|---|
14
+ | Endpoint | `METHOD /path` |
15
+ | Auth | |
16
+ | Request | schema / body / params |
17
+ | Response | schema + ตัวอย่าง |
18
+ | Status / Error | 200 / 4xx / 5xx + error shape |
19
+
20
+ ## 3. UX/UI SPEC (ถ้าเป็นงาน UI)
21
+ - Wireframe / Figma ref: `<ลิงก์ ถ้ามี>`
22
+ - States: default / loading / empty / error / success
23
+ - Responsive / accessibility:
24
+
25
+ ## 4. Data-flow
26
+ > ข้อมูลไหลจากไหน → ผ่านอะไร → ไปไหน
27
+
28
+ ## 5. User-flow
29
+ > ผู้ใช้เดินผ่านขั้นตอนไหนบ้าง
30
+
31
+ ## 6. Persona
32
+ > task นี้ทำเพื่อใคร
33
+
34
+ ## 7. Test-flow
35
+ > จะทดสอบ/ยืนยันความถูกต้องยังไง (เคสที่ต้องผ่าน, edge case)
36
+ - [ ]
@@ -1,21 +1,21 @@
1
- # Standard — <ชื่อ task>
2
-
3
- > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
- > pattern การเขียนโค้ด / shared component ที่ task นี้ต้องยึด
5
- > **อิงจาก** `docs/techstack/<component>/standard.md` — เพิ่มเติมเฉพาะ task ได้
6
-
7
- ## 1. Standard กลางที่ยึด (จาก techstack)
8
- > อ้างอิง `docs/techstack/<component>/standard.md` — ข้อไหนเกี่ยวกับ task นี้
9
- -
10
-
11
- ## 2. Pattern การเขียนโค้ดของ task นี้
12
- - โครงสร้าง/naming:
13
- - error handling:
14
- - การจัดการ state/data:
15
-
16
- ## 3. Shared component / utility ที่ต้องใช้ (อย่าเขียนซ้ำ)
17
- - component/hook/helper ที่มีอยู่แล้ว:
18
-
19
- ## 4. เพิ่มเติมเฉพาะ task (ถ้ามี)
20
- > pattern ใหม่ที่ task นี้แนะนำ — ถ้าควรเป็นมาตรฐานกลาง ให้ note ใน `rule.md` (รอ SHIP อัปเดต standard กลาง)
21
- -
1
+ # Standard — <ชื่อ task>
2
+
3
+ > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
+ > pattern การเขียนโค้ด / shared component ที่ task นี้ต้องยึด
5
+ > **อิงจาก** `docs/techstack/<component>/standard.md` — เพิ่มเติมเฉพาะ task ได้
6
+
7
+ ## 1. Standard กลางที่ยึด (จาก techstack)
8
+ > อ้างอิง `docs/techstack/<component>/standard.md` — ข้อไหนเกี่ยวกับ task นี้
9
+ -
10
+
11
+ ## 2. Pattern การเขียนโค้ดของ task นี้
12
+ - โครงสร้าง/naming:
13
+ - error handling:
14
+ - การจัดการ state/data:
15
+
16
+ ## 3. Shared component / utility ที่ต้องใช้ (อย่าเขียนซ้ำ)
17
+ - component/hook/helper ที่มีอยู่แล้ว:
18
+
19
+ ## 4. เพิ่มเติมเฉพาะ task (ถ้ามี)
20
+ > pattern ใหม่ที่ task นี้แนะนำ — ถ้าควรเป็นมาตรฐานกลาง ให้ note ใน `rule.md` (รอ SHIP อัปเดต standard กลาง)
21
+ -
@@ -1,39 +1,39 @@
1
- # Task — <ชื่อ task>
2
-
3
- > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
- > หน่วยที่ **โยนให้ sub-agent ทำใน BUILD ได้** — self-contained แต่เชื่อมกับ task อื่นผ่าน dependency
5
-
6
- | | |
7
- |---|---|
8
- | **Task** | `<kebab-case>` |
9
- | **Slice อ้างอิง** | `design.md` slice #__ |
10
- | **Component** | `admin-console` / `api-service` / ... |
11
- | **สถานะ** | `รอ build` / `กำลังทำ` / `เสร็จ` |
12
-
13
- ## 1. เป้าหมายของ task (vertical slice)
14
- > task นี้ส่งมอบคุณค่า end-to-end อะไร
15
-
16
- ## 2. Dependency (เชื่อมต่อกับ task อื่น)
17
- - ต้องทำหลัง: `tasks/<...>` (เพราะ ...)
18
- - ปลดล็อกให้: `tasks/<...>`
19
- - ส่ง output อะไรต่อให้ task ถัดไป:
20
-
21
- ## 3. Sub-tasks (แตกย่อยถ้าซับซ้อน)
22
- > sub-task ต้องเชื่อมต่อกัน — ระบุลำดับ/สิ่งที่ส่งต่อกัน
23
-
24
- - [ ] 1. <sub-task> — _ผลลัพธ์:_
25
- - [ ] 2. <sub-task> — _ขึ้นกับ 1:_
26
- - [ ] 3. <sub-task>
27
-
28
- ## 4. ขอบเขตไฟล์/โค้ดที่จะแตะ
29
- - ไฟล์/โมดูล:
30
-
31
- ## 5. Acceptance criteria (เกณฑ์ว่า task เสร็จ)
32
- - [ ]
33
- - [ ] ผ่าน test ตาม `spec.md` (test-flow)
34
- - [ ] ทำตาม `rule.md` และ `standard.md`
35
-
36
- ## 6. อ้างอิงในโฟลเดอร์ task นี้
37
- - Spec: `./spec.md`
38
- - Standard (pattern โค้ด): `./standard.md`
39
- - Rule ที่ต้อง follow: `./rule.md`
1
+ # Task — <ชื่อ task>
2
+
3
+ > Output ของ DESIGN stage · playbook: `.warnyin/workflow/stages/design.md`
4
+ > หน่วยที่ **โยนให้ sub-agent ทำใน BUILD ได้** — self-contained แต่เชื่อมกับ task อื่นผ่าน dependency
5
+
6
+ | | |
7
+ |---|---|
8
+ | **Task** | `<kebab-case>` |
9
+ | **Slice อ้างอิง** | `design.md` slice #__ |
10
+ | **Component** | `admin-console` / `api-service` / ... |
11
+ | **สถานะ** | `รอ build` / `กำลังทำ` / `เสร็จ` |
12
+
13
+ ## 1. เป้าหมายของ task (vertical slice)
14
+ > task นี้ส่งมอบคุณค่า end-to-end อะไร
15
+
16
+ ## 2. Dependency (เชื่อมต่อกับ task อื่น)
17
+ - ต้องทำหลัง: `tasks/<...>` (เพราะ ...)
18
+ - ปลดล็อกให้: `tasks/<...>`
19
+ - ส่ง output อะไรต่อให้ task ถัดไป:
20
+
21
+ ## 3. Sub-tasks (แตกย่อยถ้าซับซ้อน)
22
+ > sub-task ต้องเชื่อมต่อกัน — ระบุลำดับ/สิ่งที่ส่งต่อกัน
23
+
24
+ - [ ] 1. <sub-task> — _ผลลัพธ์:_
25
+ - [ ] 2. <sub-task> — _ขึ้นกับ 1:_
26
+ - [ ] 3. <sub-task>
27
+
28
+ ## 4. ขอบเขตไฟล์/โค้ดที่จะแตะ
29
+ - ไฟล์/โมดูล:
30
+
31
+ ## 5. Acceptance criteria (เกณฑ์ว่า task เสร็จ)
32
+ - [ ]
33
+ - [ ] ผ่าน test ตาม `spec.md` (test-flow)
34
+ - [ ] ทำตาม `rule.md` และ `standard.md`
35
+
36
+ ## 6. อ้างอิงในโฟลเดอร์ task นี้
37
+ - Spec: `./spec.md`
38
+ - Standard (pattern โค้ด): `./standard.md`
39
+ - Rule ที่ต้อง follow: `./rule.md`
@@ -1,46 +1,46 @@
1
- # Test Plan — <ชื่อ change>
2
-
3
- > Output ของ VERIFY stage · playbook: `.warnyin/workflow/stages/verify.md`
4
- > แผน/วิธีเทสของ topic นี้ — ตอน **SHIP** จะ merge เข้า `docs/techstack/<component>/test.md`
5
- > อิง guideline จาก `docs/techstack/<component>/test.md` (ถ้าไม่มี = เสนอวิธีใหม่ที่นี่)
6
-
7
- | | |
8
- |---|---|
9
- | **Slug** | `<kebab-case>` |
10
- | **Component** | `api-service` / `admin-console` |
11
- | **จุดประสงค์ที่ต้อง verify** | (สรุปจาก spec/tasks) |
12
-
13
- ## 1. ขอบเขตการเทส (ตามจุดประสงค์ topic)
14
- - สิ่งที่ต้องยืนยันว่าทำงานถูก:
15
-
16
- ## 2. ชนิดการเทส
17
- - [ ] Functional (ตาม test-flow ใน `tasks/*/spec.md`)
18
- - [ ] E2E smoke — เครื่องมือ: `playwright-cli` (ถ้าเป็น FE)
19
- - [ ] Integration / API
20
- - [ ] UX/UI verify (ถ้าเป็น FE)
21
- - [ ] อื่นๆ:
22
-
23
- ## 3. Local env ที่ต้องรัน (จาก `docs/infra.md`)
24
- | Service | คำสั่งรัน | port / หมายเหตุ |
25
- |---|---|---|
26
- | | | |
27
-
28
- ## 4. Test cases
29
- | # | สถานการณ์ (อิงจุดประสงค์) | ขั้นตอน | ผลที่คาดหวัง |
30
- |---|---|---|---|
31
- | 1 | | | |
32
-
33
- ## 5. E2E smoke (FE)
34
- - flow ที่ smoke:
35
- - คำสั่ง playwright-cli:
36
-
37
- ## 6. UX/UI checklist (FE)
38
- - [ ] layout ตรงตาม spec/wireframe
39
- - [ ] states: loading / empty / error / success
40
- - [ ] responsive
41
- - [ ] interaction / user-flow ลื่นไหล
42
-
43
- ## 7. วิธีรันเทส (reproducible)
44
- ```
45
- <คำสั่ง / ขั้นตอน>
46
- ```
1
+ # Test Plan — <ชื่อ change>
2
+
3
+ > Output ของ VERIFY stage · playbook: `.warnyin/workflow/stages/verify.md`
4
+ > แผน/วิธีเทสของ topic นี้ — ตอน **SHIP** จะ merge เข้า `docs/techstack/<component>/test.md`
5
+ > อิง guideline จาก `docs/techstack/<component>/test.md` (ถ้าไม่มี = เสนอวิธีใหม่ที่นี่)
6
+
7
+ | | |
8
+ |---|---|
9
+ | **Slug** | `<kebab-case>` |
10
+ | **Component** | `api-service` / `admin-console` |
11
+ | **จุดประสงค์ที่ต้อง verify** | (สรุปจาก spec/tasks) |
12
+
13
+ ## 1. ขอบเขตการเทส (ตามจุดประสงค์ topic)
14
+ - สิ่งที่ต้องยืนยันว่าทำงานถูก:
15
+
16
+ ## 2. ชนิดการเทส
17
+ - [ ] Functional (ตาม test-flow ใน `tasks/*/spec.md`)
18
+ - [ ] E2E smoke — เครื่องมือ: `playwright-cli` (ถ้าเป็น FE)
19
+ - [ ] Integration / API
20
+ - [ ] UX/UI verify (ถ้าเป็น FE)
21
+ - [ ] อื่นๆ:
22
+
23
+ ## 3. Local env ที่ต้องรัน (จาก `docs/infra.md`)
24
+ | Service | คำสั่งรัน | port / หมายเหตุ |
25
+ |---|---|---|
26
+ | | | |
27
+
28
+ ## 4. Test cases
29
+ | # | สถานการณ์ (อิงจุดประสงค์) | ขั้นตอน | ผลที่คาดหวัง |
30
+ |---|---|---|---|
31
+ | 1 | | | |
32
+
33
+ ## 5. E2E smoke (FE)
34
+ - flow ที่ smoke:
35
+ - คำสั่ง playwright-cli:
36
+
37
+ ## 6. UX/UI checklist (FE)
38
+ - [ ] layout ตรงตาม spec/wireframe
39
+ - [ ] states: loading / empty / error / success
40
+ - [ ] responsive
41
+ - [ ] interaction / user-flow ลื่นไหล
42
+
43
+ ## 7. วิธีรันเทส (reproducible)
44
+ ```
45
+ <คำสั่ง / ขั้นตอน>
46
+ ```
@@ -1,34 +1,34 @@
1
- # Troubleshooting — <ชื่อ change>
2
-
3
- > Log ปัญหา **ยาก/ซ้ำ** ที่เจอระหว่างทำงาน topic นี้ (ส่วนใหญ่ตอน BUILD) แล้วแก้สำเร็จ
4
- > ตอน **SHIP** จะยกรายการที่มีค่าขึ้นไปรวมที่ KB กลาง `docs/troubleshooting.md`
5
- > เจอปัญหาใหม่ → อ่าน `docs/troubleshooting.md` ก่อนเสมอ เผื่อเคยแก้แล้ว
6
-
7
- ---
8
-
9
- ## วิธีบันทึก
10
- บันทึกเฉพาะปัญหาที่ **ยากจะแก้** หรือ **เจอซ้ำ** (ไม่ใช่ทุก error เล็กน้อย) — หนึ่งปัญหา = หนึ่ง entry
11
-
12
- ---
13
-
14
- ### TS-1: <ชื่อปัญหาสั้นๆ>
15
- | | |
16
- |---|---|
17
- | **วันที่** | `YYYY-MM-DD` |
18
- | **Component / Task** | `api-service` / `tasks/<task>` |
19
- | **ความถี่** | เจอครั้งเดียว (ยากมาก) / เจอซ้ำ __ ครั้ง |
20
- | **ยกขึ้น KB กลางตอน SHIP?** | ✅ / ❌ |
21
-
22
- - **อาการ / error message:**
23
- ```
24
- <paste error>
25
- ```
26
- - **บริบทที่ทำให้เกิด (trigger):**
27
- - **สาเหตุที่แท้จริง (root cause):**
28
- - **วิธีแก้ที่ได้ผล (solution):**
29
- - **วิธีสังเกต/ป้องกันไม่ให้เกิดซ้ำ:**
30
-
31
- ---
32
-
33
- ### TS-2: <...>
34
- > (คัดลอกบล็อกด้านบน)
1
+ # Troubleshooting — <ชื่อ change>
2
+
3
+ > Log ปัญหา **ยาก/ซ้ำ** ที่เจอระหว่างทำงาน topic นี้ (ส่วนใหญ่ตอน BUILD) แล้วแก้สำเร็จ
4
+ > ตอน **SHIP** จะยกรายการที่มีค่าขึ้นไปรวมที่ KB กลาง `docs/troubleshooting.md`
5
+ > เจอปัญหาใหม่ → อ่าน `docs/troubleshooting.md` ก่อนเสมอ เผื่อเคยแก้แล้ว
6
+
7
+ ---
8
+
9
+ ## วิธีบันทึก
10
+ บันทึกเฉพาะปัญหาที่ **ยากจะแก้** หรือ **เจอซ้ำ** (ไม่ใช่ทุก error เล็กน้อย) — หนึ่งปัญหา = หนึ่ง entry
11
+
12
+ ---
13
+
14
+ ### TS-1: <ชื่อปัญหาสั้นๆ>
15
+ | | |
16
+ |---|---|
17
+ | **วันที่** | `YYYY-MM-DD` |
18
+ | **Component / Task** | `api-service` / `tasks/<task>` |
19
+ | **ความถี่** | เจอครั้งเดียว (ยากมาก) / เจอซ้ำ __ ครั้ง |
20
+ | **ยกขึ้น KB กลางตอน SHIP?** | ✅ / ❌ |
21
+
22
+ - **อาการ / error message:**
23
+ ```
24
+ <paste error>
25
+ ```
26
+ - **บริบทที่ทำให้เกิด (trigger):**
27
+ - **สาเหตุที่แท้จริง (root cause):**
28
+ - **วิธีแก้ที่ได้ผล (solution):**
29
+ - **วิธีสังเกต/ป้องกันไม่ให้เกิดซ้ำ:**
30
+
31
+ ---
32
+
33
+ ### TS-2: <...>
34
+ > (คัดลอกบล็อกด้านบน)