@warnyin/agents 0.14.0 → 0.16.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 (83) hide show
  1. package/CHANGELOG.md +145 -133
  2. package/README.md +160 -160
  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 +31 -31
  10. package/src/.claude/commands/warnyin/design.md +27 -27
  11. package/src/.claude/commands/warnyin/discovery.md +22 -17
  12. package/src/.claude/commands/warnyin/explore.md +14 -14
  13. package/src/.claude/commands/warnyin/feedback/issue.md +14 -0
  14. package/src/.claude/commands/warnyin/init.md +12 -12
  15. package/src/.claude/commands/warnyin/install-skill.md +14 -14
  16. package/src/.claude/commands/warnyin/next.md +17 -17
  17. package/src/.claude/commands/warnyin/ship.md +28 -28
  18. package/src/.claude/commands/warnyin/triage.md +14 -14
  19. package/src/.claude/commands/warnyin/update-codemaps.md +12 -12
  20. package/src/.claude/commands/warnyin/verify.md +20 -20
  21. package/src/.claude/skills/explore/SKILL.md +8 -8
  22. package/src/.claude/skills/next/SKILL.md +8 -8
  23. package/src/.claude/skills/update-codemaps/SKILL.md +8 -8
  24. package/src/.warnyin/installer/templates/CLAUDE.global.md +5 -5
  25. package/src/.warnyin/installer/templates/CLAUDE.md +35 -34
  26. package/src/.warnyin/template/docs/codemap/index.md +18 -18
  27. package/src/.warnyin/template/docs/features/[feature-name]/business.md +5 -5
  28. package/src/.warnyin/template/docs/features/[feature-name]/feature.md +5 -5
  29. package/src/.warnyin/template/docs/features/[feature-name]/spec.md +16 -16
  30. package/src/.warnyin/template/docs/infra.md +16 -16
  31. package/src/.warnyin/template/docs/project.md +18 -18
  32. package/src/.warnyin/template/docs/rule.md +7 -7
  33. package/src/.warnyin/template/docs/techstack/[component]/about.md +6 -6
  34. package/src/.warnyin/template/docs/techstack/[component]/rule.md +6 -6
  35. package/src/.warnyin/template/docs/techstack/[component]/standard.md +6 -6
  36. package/src/.warnyin/template/docs/techstack/[component]/structure.md +7 -7
  37. package/src/.warnyin/template/docs/techstack/[component]/test.md +7 -7
  38. package/src/.warnyin/template/docs/troubleshooting.md +32 -32
  39. package/src/.warnyin/template/stages/[topic]/build.md +58 -58
  40. package/src/.warnyin/template/stages/[topic]/business.md +21 -21
  41. package/src/.warnyin/template/stages/[topic]/design.md +63 -63
  42. package/src/.warnyin/template/stages/[topic]/discovery.md +69 -69
  43. package/src/.warnyin/template/stages/[topic]/proposal.md +43 -43
  44. package/src/.warnyin/template/stages/[topic]/research.md +49 -49
  45. package/src/.warnyin/template/stages/[topic]/ship.md +32 -32
  46. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/issue.md +19 -19
  47. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/rule.md +13 -13
  48. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/spec.md +36 -36
  49. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/standard.md +21 -21
  50. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/task.md +40 -40
  51. package/src/.warnyin/template/stages/[topic]/test.md +46 -46
  52. package/src/.warnyin/template/stages/[topic]/troubleshooting.md +34 -34
  53. package/src/.warnyin/template/stages/[topic]/verify.md +44 -44
  54. package/src/.warnyin/workflow/README.md +106 -102
  55. package/src/.warnyin/workflow/api-doc.md +93 -93
  56. package/src/.warnyin/workflow/codemap.md +91 -91
  57. package/src/.warnyin/workflow/contexts/README.md +51 -51
  58. package/src/.warnyin/workflow/contexts/build.md +25 -25
  59. package/src/.warnyin/workflow/contexts/research.md +25 -25
  60. package/src/.warnyin/workflow/contexts/review.md +25 -25
  61. package/src/.warnyin/workflow/explore.md +32 -32
  62. package/src/.warnyin/workflow/feedback.md +212 -0
  63. package/src/.warnyin/workflow/init.md +136 -136
  64. package/src/.warnyin/workflow/next.md +48 -48
  65. package/src/.warnyin/workflow/roles/README.md +47 -47
  66. package/src/.warnyin/workflow/roles/ba.md +25 -25
  67. package/src/.warnyin/workflow/roles/developer.md +31 -31
  68. package/src/.warnyin/workflow/roles/infra.md +24 -24
  69. package/src/.warnyin/workflow/roles/po.md +28 -28
  70. package/src/.warnyin/workflow/roles/qa.md +35 -35
  71. package/src/.warnyin/workflow/roles/sa.md +28 -28
  72. package/src/.warnyin/workflow/roles/security.md +39 -39
  73. package/src/.warnyin/workflow/roles/tech-lead.md +28 -28
  74. package/src/.warnyin/workflow/scripts/build-wave.mjs +145 -143
  75. package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
  76. package/src/.warnyin/workflow/stages/build.md +98 -98
  77. package/src/.warnyin/workflow/stages/design.md +154 -138
  78. package/src/.warnyin/workflow/stages/discovery.md +256 -78
  79. package/src/.warnyin/workflow/stages/ship.md +94 -94
  80. package/src/.warnyin/workflow/stages/verify.md +82 -82
  81. package/src/.warnyin/workflow/triage.md +74 -74
  82. package/src/AGENTS.md +54 -54
  83. package/src/bin/cli.mjs +310 -310
@@ -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,5 +1,5 @@
1
- <!-- warnyin:global-note -->
2
-
3
- ## การ resolve playbook (local-first → global)
4
- - path `.warnyin/workflow/...` / `.warnyin/template/...`: หาในโปรเจกต์ `./.warnyin/` ก่อน ไม่มี → `~/.warnyin/` (global install)
5
- - ถ้ายังไม่มี `docs/stages/` (global mode โปรเจกต์ใหม่) → รัน `/warnyin:init` ก่อน (สร้าง workspace)
1
+ <!-- warnyin:global-note -->
2
+
3
+ ## การ resolve playbook (local-first → global)
4
+ - path `.warnyin/workflow/...` / `.warnyin/template/...`: หาในโปรเจกต์ `./.warnyin/` ก่อน ไม่มี → `~/.warnyin/` (global install)
5
+ - ถ้ายังไม่มี `docs/stages/` (global mode โปรเจกต์ใหม่) → รัน `/warnyin:init` ก่อน (สร้าง workspace)
@@ -1,34 +1,35 @@
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:triage [คำอธิบาย change]` → ประเมินขนาด + แนะนำ path (read-only) (`.warnyin/workflow/triage.md`)
19
- - `/warnyin:discovery [topic]` → Discovery stage (`.warnyin/workflow/stages/discovery.md`)
20
- - `/warnyin:design [slug] [change]` → DESIGN stage (`.warnyin/workflow/stages/design.md`)
21
- - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`.warnyin/workflow/stages/build.md` + `.warnyin/workflow/scripts/build-wave.mjs`)
22
- - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`.warnyin/workflow/stages/verify.md`)
23
- - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`.warnyin/workflow/stages/ship.md`)
24
-
25
- ## รองรับหลาย AI
26
- Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
27
- ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` ดูภาพรวมที่ `.warnyin/workflow/README.md`
28
-
29
- ## อัปเดต workflow
30
- `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template `.warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `docs/stages/`
31
-
32
- ## การ resolve playbook (local-first → global)
33
- - path `.warnyin/workflow/...` / `.warnyin/template/...`: หาในโปรเจกต์ `./.warnyin/` ก่อน ไม่มี `~/.warnyin/` (global install)
34
- - ถ้ายังไม่มี `docs/stages/` (global mode โปรเจกต์ใหม่) รัน `/warnyin:init` ก่อน (สร้าง workspace)
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:triage [คำอธิบาย change]` → ประเมินขนาด + แนะนำ path (read-only) (`.warnyin/workflow/triage.md`)
19
+ - `/warnyin:feedback:issue [ประเภท/ข้อความ]` → เปิด GitHub issue แจ้ง feedback ที่ warnyin/warnyin-agents (`.warnyin/workflow/feedback.md`)
20
+ - `/warnyin:discovery [topic]` → Discovery stage (`.warnyin/workflow/stages/discovery.md`)
21
+ - `/warnyin:design [slug] [change]` → DESIGN stage (`.warnyin/workflow/stages/design.md`)
22
+ - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`.warnyin/workflow/stages/build.md` + `.warnyin/workflow/scripts/build-wave.mjs`)
23
+ - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`.warnyin/workflow/stages/verify.md`)
24
+ - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`.warnyin/workflow/stages/ship.md`)
25
+
26
+ ## รองรับหลาย AI
27
+ Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
28
+ ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` — ดูภาพรวมที่ `.warnyin/workflow/README.md`
29
+
30
+ ## อัปเดต workflow
31
+ `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template `.warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `docs/stages/`
32
+
33
+ ## การ resolve playbook (local-first → global)
34
+ - path `.warnyin/workflow/...` / `.warnyin/template/...`: หาในโปรเจกต์ `./.warnyin/` ก่อน ไม่มี`~/.warnyin/` (global install)
35
+ - ถ้ายังไม่มี `docs/stages/` (global mode โปรเจกต์ใหม่) → รัน `/warnyin:init` ก่อน (สร้าง workspace)
@@ -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:
@@ -1,32 +1,32 @@
1
- # Troubleshooting KB (กลาง)
2
-
3
- > คลังความรู้ปัญหา-วิธีแก้ของทั้งโปรเจกต์ — สะสมจากทุก topic
4
- > **อ่านไฟล์นี้ก่อนเสมอเมื่อเจอ build error / ปัญหาระหว่างทำงาน** เผื่อเคยแก้แล้ว
5
- > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `docs/stages/<topic>/troubleshooting.md` มารวมที่นี่ (ลบของซ้ำ/รวมที่คล้ายกัน)
6
-
7
- ---
8
-
9
- ## วิธีค้น
10
- ค้นด้วย error message, component, หรือ keyword อาการ — entry เรียงตาม component แล้วตามความถี่
11
-
12
- ## สารบัญตาม component
13
- <!-- เพิ่ม section ต่อ component เมื่อมี entry แรก เช่น - [api-service](#api-service) -->
14
- - [ทั่วไป / cross-cutting](#ทั่วไป--cross-cutting)
15
-
16
- ---
17
-
18
- ## ทั่วไป / cross-cutting
19
- <!-- ยังไม่มี entry — เพิ่มตอน SHIP จาก topic troubleshooting.md -->
20
-
21
- ---
22
-
23
- ## รูปแบบ entry (ใช้ตอนเพิ่มจาก SHIP)
24
- ```markdown
25
- ### <ชื่อปัญหา> · เจอ N ครั้ง · อัปเดต YYYY-MM-DD
26
- - **อาการ/error:** ...
27
- - **trigger:** ...
28
- - **root cause:** ...
29
- - **วิธีแก้:** ...
30
- - **ป้องกันซ้ำ:** ...
31
- - **มาจาก topic:** <slug>
32
- ```
1
+ # Troubleshooting KB (กลาง)
2
+
3
+ > คลังความรู้ปัญหา-วิธีแก้ของทั้งโปรเจกต์ — สะสมจากทุก topic
4
+ > **อ่านไฟล์นี้ก่อนเสมอเมื่อเจอ build error / ปัญหาระหว่างทำงาน** เผื่อเคยแก้แล้ว
5
+ > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `docs/stages/<topic>/troubleshooting.md` มารวมที่นี่ (ลบของซ้ำ/รวมที่คล้ายกัน)
6
+
7
+ ---
8
+
9
+ ## วิธีค้น
10
+ ค้นด้วย error message, component, หรือ keyword อาการ — entry เรียงตาม component แล้วตามความถี่
11
+
12
+ ## สารบัญตาม component
13
+ <!-- เพิ่ม section ต่อ component เมื่อมี entry แรก เช่น - [api-service](#api-service) -->
14
+ - [ทั่วไป / cross-cutting](#ทั่วไป--cross-cutting)
15
+
16
+ ---
17
+
18
+ ## ทั่วไป / cross-cutting
19
+ <!-- ยังไม่มี entry — เพิ่มตอน SHIP จาก topic troubleshooting.md -->
20
+
21
+ ---
22
+
23
+ ## รูปแบบ entry (ใช้ตอนเพิ่มจาก SHIP)
24
+ ```markdown
25
+ ### <ชื่อปัญหา> · เจอ N ครั้ง · อัปเดต YYYY-MM-DD
26
+ - **อาการ/error:** ...
27
+ - **trigger:** ...
28
+ - **root cause:** ...
29
+ - **วิธีแก้:** ...
30
+ - **ป้องกันซ้ำ:** ...
31
+ - **มาจาก topic:** <slug>
32
+ ```
@@ -1,58 +1,58 @@
1
- # Build Report — <ชื่อ change>
2
-
3
- > Output ของ BUILD stage · playbook: `.warnyin/workflow/stages/build.md`
4
- > รายงานผลการ implement ต่อ task + การ integrate
5
-
6
- | | |
7
- |---|---|
8
- | **Slug** | `<kebab-case>` |
9
- | **Build branch** | `<branch>` |
10
- | **Isolation** | `worktree` / `shared-tree` |
11
- | **วันที่** | `YYYY-MM-DD` |
12
- | **ผลรวม** | ผ่าน __ / ล้ม __ / ทั้งหมด __ task |
13
-
14
- ## 1. Execution plan (waves ตาม dependency)
15
- ```
16
- wave 1 (parallel): task-a, task-b
17
- wave 2: task-c (ขึ้นกับ task-a)
18
- wave 3: task-d (ขึ้นกับ task-b, task-c)
19
- ```
20
-
21
- ## 2. ผลต่อ task
22
- | Wave | Task | สถานะ | Test/Lint | ไฟล์ที่แก้ | Branch | หมายเหตุ |
23
- |---|---|---|---|---|---|---|
24
- | 1 | task-a | ✅ passed | | | | |
25
- | 1 | task-b | ❌ failed | | | | เหตุผล... |
26
-
27
- ## 3. Integration notes
28
- - การ merge แต่ละ wave / conflict ที่เจอและวิธีแก้:
29
-
30
- ## 3.5 Full build & test gate (หลัง integrate ทุก wave)
31
- > รัน build ทั้งหมด + test suite ทั้งหมด (รวม unit test) บน build branch — ต้องเขียวหมดก่อนปิด BUILD
32
-
33
- | Component | Build | Unit test | Test อื่น | รอบที่แก้ |
34
- |---|---|---|---|---|
35
- | api-service | ✅ / ❌ | ผ่าน __/__ | | |
36
- | admin-console | | | | |
37
-
38
- - error ที่เจอตอนรวม + วิธีแก้:
39
-
40
- ## 4. ปัญหา/ค้าง (ถ้ามี)
41
- - task ที่ล้ม + สาเหตุ + แผนแก้:
42
-
43
- ## 5. Rule/standard ใหม่ที่ note ไว้ (รอ SHIP)
44
- > รวบรวมจาก `tasks/<task>/rule.md` และ `standard.md` — รอ SHIP อัปเดตไฟล์กลางใน `docs/`
45
- -
46
-
47
- ## 6. ปัญหายาก/ซ้ำที่เจอ
48
- > บันทึกละเอียดที่ `./troubleshooting.md` (SHIP ยกขึ้น `docs/troubleshooting.md`)
49
- - ดู `./troubleshooting.md`
50
-
51
- ## ✅ Gate → VERIFY (ดู `.warnyin/workflow/stages/build.md` ข้อ 7)
52
- - [ ] ทุก task implement + merge เข้า build branch แล้ว
53
- - [ ] ทุก task `passed` (test/build เขียว) ไม่มี `failed` ค้าง
54
- - [ ] ไม่มี merge conflict ค้าง
55
- - [ ] Full build ของทุก component ผ่าน (ไม่มี build error)
56
- - [ ] test suite ทั้งหมด (รวม unit test) เขียวหมดบน build branch
57
- - [ ] build.md สรุปครบทุก task + ผล full build/test
58
- - [ ] ไม่แตะ rule/standard กลางใน docs/
1
+ # Build Report — <ชื่อ change>
2
+
3
+ > Output ของ BUILD stage · playbook: `.warnyin/workflow/stages/build.md`
4
+ > รายงานผลการ implement ต่อ task + การ integrate
5
+
6
+ | | |
7
+ |---|---|
8
+ | **Slug** | `<kebab-case>` |
9
+ | **Build branch** | `<branch>` |
10
+ | **Isolation** | `worktree` / `shared-tree` |
11
+ | **วันที่** | `YYYY-MM-DD` |
12
+ | **ผลรวม** | ผ่าน __ / ล้ม __ / ทั้งหมด __ task |
13
+
14
+ ## 1. Execution plan (waves ตาม dependency)
15
+ ```
16
+ wave 1 (parallel): task-a, task-b
17
+ wave 2: task-c (ขึ้นกับ task-a)
18
+ wave 3: task-d (ขึ้นกับ task-b, task-c)
19
+ ```
20
+
21
+ ## 2. ผลต่อ task
22
+ | Wave | Task | สถานะ | Test/Lint | ไฟล์ที่แก้ | Branch | หมายเหตุ |
23
+ |---|---|---|---|---|---|---|
24
+ | 1 | task-a | ✅ passed | | | | |
25
+ | 1 | task-b | ❌ failed | | | | เหตุผล... |
26
+
27
+ ## 3. Integration notes
28
+ - การ merge แต่ละ wave / conflict ที่เจอและวิธีแก้:
29
+
30
+ ## 3.5 Full build & test gate (หลัง integrate ทุก wave)
31
+ > รัน build ทั้งหมด + test suite ทั้งหมด (รวม unit test) บน build branch — ต้องเขียวหมดก่อนปิด BUILD
32
+
33
+ | Component | Build | Unit test | Test อื่น | รอบที่แก้ |
34
+ |---|---|---|---|---|
35
+ | api-service | ✅ / ❌ | ผ่าน __/__ | | |
36
+ | admin-console | | | | |
37
+
38
+ - error ที่เจอตอนรวม + วิธีแก้:
39
+
40
+ ## 4. ปัญหา/ค้าง (ถ้ามี)
41
+ - task ที่ล้ม + สาเหตุ + แผนแก้:
42
+
43
+ ## 5. Rule/standard ใหม่ที่ note ไว้ (รอ SHIP)
44
+ > รวบรวมจาก `tasks/<task>/rule.md` และ `standard.md` — รอ SHIP อัปเดตไฟล์กลางใน `docs/`
45
+ -
46
+
47
+ ## 6. ปัญหายาก/ซ้ำที่เจอ
48
+ > บันทึกละเอียดที่ `./troubleshooting.md` (SHIP ยกขึ้น `docs/troubleshooting.md`)
49
+ - ดู `./troubleshooting.md`
50
+
51
+ ## ✅ Gate → VERIFY (ดู `.warnyin/workflow/stages/build.md` ข้อ 7)
52
+ - [ ] ทุก task implement + merge เข้า build branch แล้ว
53
+ - [ ] ทุก task `passed` (test/build เขียว) ไม่มี `failed` ค้าง
54
+ - [ ] ไม่มี merge conflict ค้าง
55
+ - [ ] Full build ของทุก component ผ่าน (ไม่มี build error)
56
+ - [ ] test suite ทั้งหมด (รวม unit test) เขียวหมดบน build branch
57
+ - [ ] build.md สรุปครบทุก task + ผล full build/test
58
+ - [ ] ไม่แตะ rule/standard กลางใน docs/