@warnyin/agents 0.2.0 → 0.4.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 (87) hide show
  1. package/.claude/agents/warnyin-infra.md +1 -1
  2. package/.claude/agents/warnyin-qa.md +1 -1
  3. package/.claude/agents/warnyin-sa.md +1 -1
  4. package/.claude/agents/warnyin-security.md +1 -1
  5. package/.claude/agents/warnyin-tech-lead.md +1 -1
  6. package/.claude/commands/warnyin/build.md +9 -9
  7. package/.claude/commands/warnyin/design.md +4 -4
  8. package/.claude/commands/warnyin/discovery.md +3 -3
  9. package/.claude/commands/warnyin/init.md +1 -1
  10. package/.claude/commands/warnyin/install-skill.md +2 -2
  11. package/.claude/commands/warnyin/ship.md +5 -5
  12. package/.claude/commands/warnyin/update-codemaps.md +12 -0
  13. package/.claude/commands/warnyin/verify.md +5 -5
  14. package/AGENTS.md +12 -12
  15. package/CLAUDE.md +16 -15
  16. package/README.md +25 -23
  17. package/bin/cli.mjs +50 -9
  18. package/package.json +2 -5
  19. package/{installer → warnyin/installer}/templates/CLAUDE.md +13 -12
  20. package/warnyin/template/docs/codemap/index.md +18 -0
  21. package/warnyin/template/docs/features/[feature-name]/business.md +5 -0
  22. package/warnyin/template/docs/features/[feature-name]/feature.md +5 -0
  23. package/warnyin/template/docs/infra.md +16 -0
  24. package/warnyin/template/docs/project.md +18 -0
  25. package/warnyin/template/docs/rule.md +7 -0
  26. package/warnyin/template/docs/techstack/[component]/about.md +6 -0
  27. package/warnyin/template/docs/techstack/[component]/rule.md +6 -0
  28. package/warnyin/template/docs/techstack/[component]/standard.md +6 -0
  29. package/warnyin/template/docs/techstack/[component]/structure.md +7 -0
  30. package/warnyin/template/docs/techstack/[component]/test.md +7 -0
  31. package/{docs → warnyin/template/docs}/troubleshooting.md +32 -39
  32. package/{warnyin-stages → warnyin/template/stages}/[topic]/build.md +2 -2
  33. package/{warnyin-stages → warnyin/template/stages}/[topic]/business.md +1 -1
  34. package/{warnyin-stages → warnyin/template/stages}/[topic]/design.md +1 -1
  35. package/{warnyin-stages → warnyin/template/stages}/[topic]/discovery.md +2 -2
  36. package/{warnyin-stages → warnyin/template/stages}/[topic]/proposal.md +1 -1
  37. package/{warnyin-stages → warnyin/template/stages}/[topic]/research.md +1 -1
  38. package/{warnyin-stages → warnyin/template/stages}/[topic]/ship.md +3 -3
  39. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/issue.md +1 -1
  40. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/rule.md +1 -1
  41. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/spec.md +1 -1
  42. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/standard.md +1 -1
  43. package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/task.md +1 -1
  44. package/{warnyin-stages → warnyin/template/stages}/[topic]/test.md +1 -1
  45. package/{warnyin-stages → warnyin/template/stages}/[topic]/verify.md +2 -2
  46. package/warnyin/workflow/README.md +92 -0
  47. package/warnyin/workflow/codemap.md +91 -0
  48. package/{workflow → warnyin/workflow}/init.md +3 -1
  49. package/{workflow → warnyin/workflow}/roles/developer.md +1 -1
  50. package/{workflow → warnyin/workflow}/scripts/build-wave.mjs +5 -5
  51. package/{workflow → warnyin/workflow}/stages/build.md +10 -10
  52. package/{workflow → warnyin/workflow}/stages/design.md +17 -17
  53. package/{workflow → warnyin/workflow}/stages/discovery.md +7 -7
  54. package/{workflow → warnyin/workflow}/stages/ship.md +8 -8
  55. package/{workflow → warnyin/workflow}/stages/verify.md +5 -5
  56. package/docs/features/[feature-name]/business.md +0 -0
  57. package/docs/features/[feature-name]/feature.md +0 -0
  58. package/docs/infra.md +0 -0
  59. package/docs/project.md +0 -0
  60. package/docs/rule.md +0 -0
  61. package/docs/techstack/admin-console/about.md +0 -0
  62. package/docs/techstack/admin-console/rule.md +0 -0
  63. package/docs/techstack/admin-console/standard.md +0 -0
  64. package/docs/techstack/admin-console/structure.md +0 -0
  65. package/docs/techstack/admin-console/test.md +0 -0
  66. package/docs/techstack/api-service/about.md +0 -0
  67. package/docs/techstack/api-service/rule.md +0 -0
  68. package/docs/techstack/api-service/standard.md +0 -0
  69. package/docs/techstack/api-service/structure.md +0 -0
  70. package/docs/techstack/api-service/test.md +0 -0
  71. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/business.md +0 -0
  72. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/design.md +0 -0
  73. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/discovery.md +0 -0
  74. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/proposal.md +0 -0
  75. package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/research.md +0 -0
  76. package/workflow/README.md +0 -91
  77. /package/{docs/codemap/index.md → warnyin/stages/achieved/.gitkeep} +0 -0
  78. /package/{warnyin-stages → warnyin/stages}/context.md +0 -0
  79. /package/{warnyin-stages → warnyin/template/stages}/[topic]/troubleshooting.md +0 -0
  80. /package/{workflow → warnyin/workflow}/roles/README.md +0 -0
  81. /package/{workflow → warnyin/workflow}/roles/ba.md +0 -0
  82. /package/{workflow → warnyin/workflow}/roles/infra.md +0 -0
  83. /package/{workflow → warnyin/workflow}/roles/po.md +0 -0
  84. /package/{workflow → warnyin/workflow}/roles/qa.md +0 -0
  85. /package/{workflow → warnyin/workflow}/roles/sa.md +0 -0
  86. /package/{workflow → warnyin/workflow}/roles/security.md +0 -0
  87. /package/{workflow → warnyin/workflow}/roles/tech-lead.md +0 -0
@@ -4,23 +4,24 @@
4
4
  `Discovery (optional) ▶ DESIGN ▶ BUILD ▶ VERIFY ▶ SHIP`
5
5
 
6
6
  ## กฎหลัก
7
- - แก่นของแต่ละ stage เป็น single source of truth ที่ `workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
8
- - อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `workflow/stages/`
9
- - output ของงานจริงเก็บใน `warnyin-stages/<slug>/` (copy จาก template `warnyin-stages/[topic]/`)
7
+ - แก่นของแต่ละ stage เป็น single source of truth ที่ `warnyin/workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
8
+ - อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `warnyin/workflow/stages/`
9
+ - output ของงานจริงเก็บใน `warnyin/stages/<slug>/` (copy จาก template `warnyin/template/stages/[topic]/`)
10
10
  - ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/` — เริ่มอ่าน `docs/project.md` เสมอใน Discovery
11
11
 
12
12
  ## Slash commands (namespace `warnyin:`)
13
- - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`workflow/init.md`)
14
- - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการ: `workflow/roles/README.md`)
15
- - `/warnyin:discovery [topic]` → Discovery stage (`workflow/stages/discovery.md`)
16
- - `/warnyin:design [slug] [change]` → DESIGN stage (`workflow/stages/design.md`)
17
- - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`workflow/stages/build.md` + `workflow/scripts/build-wave.mjs`)
18
- - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`workflow/stages/verify.md`)
19
- - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`workflow/stages/ship.md`)
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:discovery [topic]` → Discovery stage (`warnyin/workflow/stages/discovery.md`)
17
+ - `/warnyin:design [slug] [change]` → DESIGN stage (`warnyin/workflow/stages/design.md`)
18
+ - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`warnyin/workflow/stages/build.md` + `warnyin/workflow/scripts/build-wave.mjs`)
19
+ - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`warnyin/workflow/stages/verify.md`)
20
+ - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`warnyin/workflow/stages/ship.md`)
20
21
 
21
22
  ## รองรับหลาย AI
22
23
  Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
23
- ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `workflow/stages/` — ดูภาพรวมที่ `workflow/README.md`
24
+ ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `warnyin/workflow/stages/` — ดูภาพรวมที่ `warnyin/workflow/README.md`
24
25
 
25
26
  ## อัปเดต workflow
26
- `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`workflow/`, `.claude/commands/warnyin/`, template `warnyin-stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `warnyin-stages/`
27
+ `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`warnyin/workflow/`, `.claude/commands/warnyin/`, template `warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `warnyin/stages/`
@@ -0,0 +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 — ไฟล์ไหนคือประตูเข้าแต่ละทาง -->
@@ -0,0 +1,5 @@
1
+ # Business — <ชื่อ feature>
2
+
3
+ > what & why เชิงธุรกิจของ feature — SHIP ยกมาจาก `business.md`/`proposal.md` ของ topic
4
+
5
+ <!-- goal · persona/ใครได้ประโยชน์ · คุณค่า/success metric · scope ที่จงใจไม่ทำ -->
@@ -0,0 +1,5 @@
1
+ # Feature — <ชื่อ feature>
2
+
3
+ > template — copy ทั้งโฟลเดอร์ `[feature-name]/` เป็นชื่อ feature จริง · SHIP เป็นคนสร้าง/อัปเดตจาก business/proposal/design ของ topic
4
+
5
+ <!-- feature นี้ทำอะไร · flow หลัก · component ที่เกี่ยว · จุดเข้าในโค้ด -->
@@ -0,0 +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
+ <!-- เท่าที่เกี่ยวกับการพัฒนา/เทส -->
@@ -0,0 +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
+ <!-- กฎหมาย/นโยบาย/ระบบเดิม/ระบบภายนอก -->
@@ -0,0 +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
+ -
@@ -0,0 +1,6 @@
1
+ # About — <ชื่อ component>
2
+
3
+ > template — copy ทั้งโฟลเดอร์ `[component]/` เป็นชื่อ component จริง (เช่น `api-service/`, `web-frontend/`)
4
+ > ปกติ `/warnyin:init` สร้างให้อัตโนมัติจากการวิเคราะห์โปรเจกต์
5
+
6
+ <!-- component นี้คืออะไร ทำหน้าที่อะไร · ภาษา/framework/runtime · ขอบเขตความรับผิดชอบ -->
@@ -0,0 +1,6 @@
1
+ # Rule — <ชื่อ component>
2
+
3
+ > กฎที่ "ต้อง" follow ของ component นี้ — DESIGN ดึงไปใส่ `tasks/<task>/rule.md`, SHIP เป็นคน promote กฎใหม่เข้ามา
4
+
5
+ <!-- กฎที่บังคับ เช่น: ห้าม query ตรงจาก controller, ทุก endpoint ต้องมี auth middleware, ... -->
6
+ -
@@ -0,0 +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
+ -
@@ -0,0 +1,7 @@
1
+ # Structure — <ชื่อ component>
2
+
3
+ > โครงสร้างโฟลเดอร์/โมดูลจริงของ component — SHIP อัปเดตเมื่อโครงสร้างเปลี่ยน
4
+
5
+ <!-- tree โฟลเดอร์สำคัญ + ไฟล์/โมดูลไหนรับผิดชอบอะไร + จุดเข้า (entry point) -->
6
+ ```
7
+ ```
@@ -0,0 +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,39 +1,32 @@
1
- # Troubleshooting KB (กลาง)
2
-
3
- > คลังความรู้ปัญหา-วิธีแก้ของทั้งโปรเจกต์ — สะสมจากทุก topic
4
- > **อ่านไฟล์นี้ก่อนเสมอเมื่อเจอ build error / ปัญหาระหว่างทำงาน** เผื่อเคยแก้แล้ว
5
- > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `warnyin-stages/<topic>/troubleshooting.md` มารวมที่นี่ (ลบของซ้ำ/รวมที่คล้ายกัน)
6
-
7
- ---
8
-
9
- ## วิธีค้น
10
- ค้นด้วย error message, component, หรือ keyword อาการ — entry เรียงตาม component แล้วตามความถี่
11
-
12
- ## สารบัญตาม component
13
- - [api-service](#api-service)
14
- - [admin-console](#admin-console)
15
- - [ทั่วไป / cross-cutting](#ทั่วไป--cross-cutting)
16
-
17
- ---
18
-
19
- ## api-service
20
- <!-- ยังไม่มี entry — เพิ่มตอน SHIP จาก topic troubleshooting.md -->
21
-
22
- ## admin-console
23
- <!-- ยังไม่มี entry -->
24
-
25
- ## ทั่วไป / cross-cutting
26
- <!-- ยังไม่มี entry -->
27
-
28
- ---
29
-
30
- ## รูปแบบ entry (ใช้ตอนเพิ่มจาก SHIP)
31
- ```markdown
32
- ### <ชื่อปัญหา> · เจอ N ครั้ง · อัปเดต YYYY-MM-DD
33
- - **อาการ/error:** ...
34
- - **trigger:** ...
35
- - **root cause:** ...
36
- - **วิธีแก้:** ...
37
- - **ป้องกันซ้ำ:** ...
38
- - **มาจาก topic:** <slug>
39
- ```
1
+ # Troubleshooting KB (กลาง)
2
+
3
+ > คลังความรู้ปัญหา-วิธีแก้ของทั้งโปรเจกต์ — สะสมจากทุก topic
4
+ > **อ่านไฟล์นี้ก่อนเสมอเมื่อเจอ build error / ปัญหาระหว่างทำงาน** เผื่อเคยแก้แล้ว
5
+ > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `warnyin/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,6 +1,6 @@
1
1
  # Build Report — <ชื่อ change>
2
2
 
3
- > Output ของ BUILD stage · playbook: `workflow/stages/build.md`
3
+ > Output ของ BUILD stage · playbook: `warnyin/workflow/stages/build.md`
4
4
  > รายงานผลการ implement ต่อ task + การ integrate
5
5
 
6
6
  | | |
@@ -48,7 +48,7 @@ wave 3: task-d (ขึ้นกับ task-b, task-c)
48
48
  > บันทึกละเอียดที่ `./troubleshooting.md` (SHIP ยกขึ้น `docs/troubleshooting.md`)
49
49
  - ดู `./troubleshooting.md`
50
50
 
51
- ## ✅ Gate → VERIFY (ดู `workflow/stages/build.md` ข้อ 7)
51
+ ## ✅ Gate → VERIFY (ดู `warnyin/workflow/stages/build.md` ข้อ 7)
52
52
  - [ ] ทุก task implement + merge เข้า build branch แล้ว
53
53
  - [ ] ทุก task `passed` (test/build เขียว) ไม่มี `failed` ค้าง
54
54
  - [ ] ไม่มี merge conflict ค้าง
@@ -1,6 +1,6 @@
1
1
  # Business — <ชื่อ change>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > **optional** — ข้ามได้ถ้า change เล็ก (เช่น fix bug นิดหน่อย)
5
5
 
6
6
  ## 1. เป้าหมายเชิงธุรกิจ (what & why)
@@ -1,6 +1,6 @@
1
1
  # Design (How) — <ชื่อ change>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > ออกแบบเชิงเทคนิคแบบ **vertical slice architecture** — แต่ละ slice ตัดผ่านทุก layer ทำงาน end-to-end
5
5
 
6
6
  ## 1. ภาพรวมสถาปัตยกรรม
@@ -1,6 +1,6 @@
1
1
  # Discovery — <ชื่อหัวข้องาน>
2
2
 
3
- > Output ของ Discovery stage · playbook: `workflow/stages/discovery.md`
3
+ > Output ของ Discovery stage · playbook: `warnyin/workflow/stages/discovery.md`
4
4
 
5
5
  | | |
6
6
  |---|---|
@@ -60,7 +60,7 @@
60
60
 
61
61
  ---
62
62
 
63
- ## ✅ Gate → DESIGN (ดู `workflow/stages/discovery.md` ข้อ 6)
63
+ ## ✅ Gate → DESIGN (ดู `warnyin/workflow/stages/discovery.md` ข้อ 6)
64
64
  - [ ] Problem / why-now ชัด ผูกกับ project.md
65
65
  - [ ] Scope in/out ชัด
66
66
  - [ ] Decision log ปิดทุกประเด็นสำคัญ ไม่มี open question ที่ block
@@ -1,6 +1,6 @@
1
1
  # Proposal — <ชื่อ change>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > **what & why** ของ change นี้
5
5
 
6
6
  | | |
@@ -1,6 +1,6 @@
1
1
  # Research — <ชื่อหัวข้องาน>
2
2
 
3
- > Output ของ Discovery stage · playbook: `workflow/stages/discovery.md`
3
+ > Output ของ Discovery stage · playbook: `warnyin/workflow/stages/discovery.md`
4
4
  > ที่เก็บ "ข้อมูลที่ค้นมา + หลักฐาน" สนับสนุนการตัดสินใจใน `discovery.md`
5
5
 
6
6
  | | |
@@ -1,7 +1,7 @@
1
1
  # Ship — <ชื่อ topic>
2
2
 
3
- > Output ของ SHIP stage · playbook: `workflow/stages/ship.md`
4
- > สรุปการส่งมอบ — เขียนหลังย้าย topic เข้า `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว
3
+ > Output ของ SHIP stage · playbook: `warnyin/workflow/stages/ship.md`
4
+ > สรุปการส่งมอบ — เขียนหลังย้าย topic เข้า `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` แล้ว
5
5
 
6
6
  ## 1. สรุป topic
7
7
  - ทำอะไร: <!-- หนึ่งย่อหน้า: topic นี้ทำอะไร ทำอย่างไร -->
@@ -26,4 +26,4 @@
26
26
  | | |
27
27
 
28
28
  ## 4. Archive
29
- - ย้ายจาก `warnyin-stages/<slug>/` → `warnyin-stages/achieved/<YYYY-MM-DD>-<slug>/` เมื่อ <YYYY-MM-DD>
29
+ - ย้ายจาก `warnyin/stages/<slug>/` → `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` เมื่อ <YYYY-MM-DD>
@@ -1,6 +1,6 @@
1
1
  # Issue — <ชื่อ task>
2
2
 
3
- > Output ของ DESIGN dry-run · playbook: `workflow/stages/design.md` (ข้อ 4.9)
3
+ > Output ของ DESIGN dry-run · playbook: `warnyin/workflow/stages/design.md` (ข้อ 4.9)
4
4
  > ผลสแกนหา defer/blocker ของ task นี้ก่อนเข้า BUILD — **สร้างเฉพาะเมื่อพบ issue**
5
5
 
6
6
  ## 1. สรุป
@@ -1,6 +1,6 @@
1
1
  # Rule — <ชื่อ task>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > rule ที่ task นี้ต้อง **focus/follow** + rule ใหม่ที่อยากเสนอเพิ่ม
5
5
 
6
6
  ## 1. Rule ที่ต้อง follow (จาก techstack)
@@ -1,6 +1,6 @@
1
1
  # Spec — <ชื่อ task>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > spec เฉพาะของ task นี้ — **ใส่เฉพาะหัวข้อที่เกี่ยวข้องกับชนิดของ task**
5
5
 
6
6
  ## 1. ชนิดของ task
@@ -1,6 +1,6 @@
1
1
  # Standard — <ชื่อ task>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > pattern การเขียนโค้ด / shared component ที่ task นี้ต้องยึด
5
5
  > **อิงจาก** `docs/techstack/<component>/standard.md` — เพิ่มเติมเฉพาะ task ได้
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Task — <ชื่อ task>
2
2
 
3
- > Output ของ DESIGN stage · playbook: `workflow/stages/design.md`
3
+ > Output ของ DESIGN stage · playbook: `warnyin/workflow/stages/design.md`
4
4
  > หน่วยที่ **โยนให้ sub-agent ทำใน BUILD ได้** — self-contained แต่เชื่อมกับ task อื่นผ่าน dependency
5
5
 
6
6
  | | |
@@ -1,6 +1,6 @@
1
1
  # Test Plan — <ชื่อ change>
2
2
 
3
- > Output ของ VERIFY stage · playbook: `workflow/stages/verify.md`
3
+ > Output ของ VERIFY stage · playbook: `warnyin/workflow/stages/verify.md`
4
4
  > แผน/วิธีเทสของ topic นี้ — ตอน **SHIP** จะ merge เข้า `docs/techstack/<component>/test.md`
5
5
  > อิง guideline จาก `docs/techstack/<component>/test.md` (ถ้าไม่มี = เสนอวิธีใหม่ที่นี่)
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Verify Report — <ชื่อ change>
2
2
 
3
- > Output ของ VERIFY stage · playbook: `workflow/stages/verify.md`
3
+ > Output ของ VERIFY stage · playbook: `warnyin/workflow/stages/verify.md`
4
4
  > สรุปผลการ verify ตามจุดประสงค์ของ topic + การแก้ไขที่เกิดขึ้น
5
5
 
6
6
  | | |
@@ -36,7 +36,7 @@
36
36
  > กรณีวนแก้นาน/หลายรอบ แล้วถาม user — สรุปคำถาม/คำตอบ/การตัดสินใจ
37
37
  -
38
38
 
39
- ## ✅ Gate → SHIP (ดู `workflow/stages/verify.md` ข้อ 6)
39
+ ## ✅ Gate → SHIP (ดู `warnyin/workflow/stages/verify.md` ข้อ 6)
40
40
  - [ ] เทสตามจุดประสงค์ครบ (functional)
41
41
  - [ ] FE: UX/UI verify ผ่าน
42
42
  - [ ] ทุกข้อที่ไม่ผ่านถูกแก้จนผ่าน
@@ -0,0 +1,92 @@
1
+ # Warnyin Standard Workflow
2
+
3
+ มาตรฐานกลางของ "วิธีทำงาน" (ways of work) สำหรับทุกโปรเจกต์ — สร้างทีม ผลิตผลงานคุณภาพ และเร็ว
4
+ โดยเดินผ่าน 5 stage:
5
+
6
+ ```
7
+ Discovery (optional) ──▶ DESIGN ──▶ BUILD ──▶ VERIFY ──▶ SHIP
8
+ ```
9
+
10
+ แต่ละ stage มี **playbook กลางหนึ่งชุด** เป็น single source of truth ที่ AI ทุกเจ้าอ่านเหมือนกัน
11
+
12
+ ---
13
+
14
+ ## หลักการออกแบบ: Tool-agnostic, single source of truth
15
+
16
+ แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน **ครั้งเดียว** เป็น markdown ใน `warnyin/workflow/stages/`
17
+ ส่วน AI แต่ละเครื่องมีแค่ **adapter บางๆ** ที่ "ชี้กลับ" มาที่ playbook กลางชุดเดียวกัน
18
+
19
+ | AI tool | Adapter (จุดเชื่อม) | อ่าน playbook จาก |
20
+ |---|---|---|
21
+ | **Claude Code** | `.claude/commands/*.md` + `CLAUDE.md` | `warnyin/workflow/stages/*.md` |
22
+ | **Codex** | `AGENTS.md` | `warnyin/workflow/stages/*.md` |
23
+ | **Antigravity** | `AGENTS.md` | `warnyin/workflow/stages/*.md` |
24
+ | เครื่องอื่นๆ | ชี้มาที่ `warnyin/workflow/stages/` ได้ทันที | `warnyin/workflow/stages/*.md` |
25
+
26
+ > แก้กฎที่ `warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
27
+ > เพิ่ม AI เจ้าใหม่ = เพิ่ม adapter บางๆ อีกหนึ่งไฟล์ ไม่ต้องแตะ logic
28
+
29
+ ---
30
+
31
+ ## โครงสร้าง repo
32
+
33
+ ```
34
+ bin/cli.mjs # npx installer — ติดตั้ง workflow ลงโปรเจกต์อื่น
35
+
36
+ warnyin/ # ★ ทุกอย่างของ workflow รวมใต้โฟลเดอร์เดียว
37
+ installer/templates/ # template CLAUDE.md สำหรับโปรเจกต์ปลายทาง (installer ใช้เอง — ไม่ถูก copy ไป target)
38
+ workflow/ # playbook กลาง — single source of truth
39
+ README.md # ไฟล์นี้ — ภาพรวม + วิธีรองรับหลาย AI
40
+ init.md # playbook: INIT — วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
41
+ codemap.md # playbook: CODEMAP — สแกน + สร้าง codemap แบบ token-lean
42
+ roles/ # role card กลาง: ba, po, sa, tech-lead, developer, qa, security, infra
43
+ stages/ # discovery ✅ · design ✅ · build ✅ · verify ✅ · ship ✅
44
+ scripts/
45
+ build-wave.mjs # Workflow script: fan-out sub-agent ต่อ task ใน wave (worktree)
46
+ template/ # ★ template ทั้งหมดรวมที่เดียว
47
+ stages/[topic]/ # หนึ่งหน่วยงาน — copy เป็น warnyin/stages/<slug>
48
+ discovery.md research.md # output ของ Discovery
49
+ business.md proposal.md design.md # output ของ DESIGN
50
+ tasks/[task-name]/... build.md # output ของ DESIGN (tasks) + BUILD
51
+ test.md verify.md # output ของ VERIFY
52
+ troubleshooting.md ship.md # KB ระหว่างงาน + สรุปส่งมอบของ SHIP
53
+ docs/ # โครง docs — installer seed เข้า docs/ ตอนติดตั้ง
54
+ project.md rule.md infra.md troubleshooting.md codemap/index.md
55
+ techstack/[component]/ # copy เป็น docs/techstack/<component> (โดย /warnyin:init)
56
+ features/[feature-name]/ # copy เป็น docs/features/<feature-name> (โดย SHIP)
57
+ stages/ # พื้นที่ทำงานจริง ตาม topic
58
+ context.md
59
+ achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>/)
60
+
61
+ docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก warnyin/template/docs)
62
+ project.md # ★ จุดเริ่มของ Discovery — อ่านก่อนเสมอ
63
+ rule.md infra.md
64
+ troubleshooting.md # ★ KB ปัญหา-วิธีแก้ (อ่านก่อนเมื่อ build เจอ error; SHIP ป้อนเข้า)
65
+ codemap/ features/ techstack/
66
+ ```
67
+
68
+ ---
69
+
70
+ ## การติดตั้งไปโปรเจกต์อื่น
71
+
72
+ ```bash
73
+ cd my-project
74
+ npx @warnyin/agents # ติดตั้ง (ข้ามไฟล์ที่มีอยู่ ไม่เขียนทับ)
75
+ npx @warnyin/agents --update # อัปเดต playbook กลางเป็นเวอร์ชันล่าสุด
76
+ npx @warnyin/agents --dry-run # ดูก่อนว่าจะสร้าง/อัปเดตอะไร
77
+ # ทางสำรอง (ไม่ผ่าน npm): npx github:warnyin/warnyin-agents
78
+ ```
79
+
80
+ - โปรเจกต์ที่มี `CLAUDE.md`/`AGENTS.md` อยู่แล้ว → installer ต่อท้ายเป็น section ไม่เขียนทับ
81
+ - `--update` เขียนทับเฉพาะ core (`warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
82
+ - หลังติดตั้ง → เปิด Claude Code แล้วรัน `/warnyin:init` ให้ agent วิเคราะห์โปรเจกต์ + เติม `docs/` (playbook: `warnyin/workflow/init.md`)
83
+
84
+ ## วิธีใช้
85
+
86
+ 1. เริ่มงานใหม่ → copy `warnyin/template/stages/[topic]/` เป็น `warnyin/stages/<ชื่อ-งาน-kebab-case>/`
87
+ 2. รัน stage ตามลำดับ (Discovery ข้ามได้ถ้าเข้าใจ scope ชัดแล้ว)
88
+ - Claude Code: `/warnyin:discovery <topic>`, `/warnyin:design <slug> <change>`
89
+ - Codex / Antigravity: บอกให้ทำตาม `warnyin/workflow/stages/<stage>.md`
90
+ 3. ผ่าน "gate" ของแต่ละ stage แล้วจึงไป stage ถัดไป
91
+ 4. เมื่อ SHIP (`/warnyin:ship <slug>`) → promote ความรู้ของ topic ขึ้นเอกสารกลางใน `docs/`
92
+ แล้วย้าย topic ไป `warnyin/stages/achieved/<YYYY-MM-DD>-<topic>/`
@@ -0,0 +1,91 @@
1
+ # CODEMAP — สแกนโครงสร้างโปรเจกต์ + สร้าง architecture codemap แบบ token-lean
2
+
3
+ > **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
4
+ > เป้าหมาย: `docs/codemap/` ที่ **ประหยัด token** สำหรับให้ AI โหลดเข้า context — โครงสร้างระดับสูง ไม่ใช่ implementation detail
5
+
6
+ ---
7
+
8
+ ## 1. ใช้เมื่อไหร่
9
+
10
+ - หลังเพิ่ม feature ใหญ่ / refactor ครั้งสำคัญ
11
+ - `/warnyin:init` ใช้ playbook นี้ตอนสร้าง codemap ครั้งแรก
12
+ - **SHIP** ใช้ตอนขั้น "อัปเดต code map ทั้งหมด"
13
+
14
+ ---
15
+
16
+ ## 2. ขั้นตอน
17
+
18
+ ### Step 1: สแกนโครงสร้างโปรเจกต์
19
+ - ระบุชนิดโปรเจกต์: monorepo / single app / library / microservice
20
+ - หา source directory ทั้งหมด (`src/`, `lib/`, `app/`, `packages/`, ...)
21
+ - map entry points (`main.ts`, `index.ts`, `app.py`, `main.go`, ...)
22
+ - สแกนขนานได้: fan-out sub-agent (read-only) ต่อ component/พื้นที่ — เครื่องที่ไม่มี sub-agent → ไล่ทีละส่วน
23
+
24
+ ### Step 2: สร้าง/อัปเดต codemap ใน `docs/codemap/`
25
+
26
+ | ไฟล์ | เนื้อหา |
27
+ |---|---|
28
+ | `index.md` | สารบัญทั้งชุด + ภาพรวม component + จุดเข้า |
29
+ | `architecture.md` | system diagram ระดับสูง, service boundary, data flow |
30
+ | `backend.md` | API routes, middleware chain, service → repository mapping |
31
+ | `frontend.md` | page tree, component hierarchy, state management flow |
32
+ | `data.md` | ตาราง DB, relationship, migration history |
33
+ | `dependencies.md` | external service, third-party integration, shared library |
34
+
35
+ **สร้างเฉพาะไฟล์ที่ relevant** — โปรเจกต์ไม่มี frontend → ไม่ต้องมี `frontend.md`
36
+
37
+ #### รูปแบบ codemap (token-lean)
38
+
39
+ ```markdown
40
+ # Backend Architecture
41
+
42
+ ## Routes
43
+ POST /api/users → UserController.create → UserService.create → UserRepo.insert
44
+ GET /api/users/:id → UserController.get → UserService.findById → UserRepo.findById
45
+
46
+ ## Key Files
47
+ src/services/user.ts (business logic, 120 lines)
48
+ src/repos/user.ts (database access, 80 lines)
49
+
50
+ ## Dependencies
51
+ - PostgreSQL (primary data store)
52
+ - Redis (session cache, rate limiting)
53
+ - Stripe (payment processing)
54
+ ```
55
+
56
+ ### Step 3: Diff detection
57
+ - มี codemap เดิมอยู่ → คำนวณ % การเปลี่ยนแปลง
58
+ - เปลี่ยน **> 30%** → แสดง diff + **ขอ user อนุมัติก่อนเขียนทับ**
59
+ - เปลี่ยน **≤ 30%** → อัปเดต in place ได้เลย
60
+
61
+ ### Step 4: Metadata
62
+ ใส่ freshness header บนสุดของทุกไฟล์:
63
+ ```html
64
+ <!-- Generated: YYYY-MM-DD | Files scanned: N | Token estimate: ~X -->
65
+ ```
66
+
67
+ ### Step 5: Analysis report → `.reports/codemap-diff.txt`
68
+ - ไฟล์ added / removed / modified ตั้งแต่สแกนครั้งล่าสุด
69
+ - dependency ใหม่ที่ตรวจพบ
70
+ - architecture changes (route ใหม่, service ใหม่ ฯลฯ)
71
+ - คำเตือน staleness: doc ที่ไม่ถูกอัปเดต 90+ วัน
72
+
73
+ ---
74
+
75
+ ## 3. หลักการ (tips)
76
+
77
+ - โฟกัสโครงสร้างระดับสูง — **ไม่ใช่** implementation detail
78
+ - ใช้ file path + function signature แทน code block เต็ม
79
+ - แต่ละ codemap **< 1000 tokens** เพื่อโหลดเข้า context ได้ถูก
80
+ - ใช้ ASCII diagram แทนคำบรรยาย data flow ยืดยาว
81
+ - **ทุกอย่างต้องมาจากโค้ดจริง ณ วันสแกน — ห้ามเดา/ห้ามเขียนจากความจำ**
82
+
83
+ ---
84
+
85
+ ## 4. Gate — จบเมื่อ
86
+
87
+ - [ ] codemap ทุกไฟล์ตรงโค้ดจริง + มี freshness header
88
+ - [ ] `index.md` ลิงก์ครบทุกไฟล์ codemap ที่มี
89
+ - [ ] ทุกไฟล์ token-lean (< 1000 tokens)
90
+ - [ ] diff > 30% ผ่านการอนุมัติจาก user แล้ว
91
+ - [ ] `.reports/codemap-diff.txt` เขียนแล้ว
@@ -36,6 +36,8 @@
36
36
 
37
37
  ## 4. Output (เขียน/เติมที่ `docs/`)
38
38
 
39
+ > โฟลเดอร์ component จริงให้ copy จาก template `warnyin/template/docs/techstack/[component]/` เป็นชื่อจริง (เช่น `api-service/`) — ห้ามทิ้งโฟลเดอร์ `[component]` ว่างไว้เฉยๆ โดยไม่สร้างของจริง
40
+
39
41
  | ไฟล์ | เนื้อหา | แหล่งข้อมูล |
40
42
  |---|---|---|
41
43
  | `docs/project.md` | โปรเจกต์คืออะไร เป้าหมาย ลูกค้า ขอบเขต | สัมภาษณ์ user (+ README เดิมเป็น recommended) |
@@ -44,7 +46,7 @@
44
46
  | `docs/techstack/<component>/standard.md` | pattern/convention ที่พบจริงในโค้ด (ยืนยันกับ user) | โค้ดจริง + user |
45
47
  | `docs/techstack/<component>/rule.md` | กฎที่ user ต้องการบังคับ (ถามก่อน ห้ามเดา) | user |
46
48
  | `docs/techstack/<component>/test.md` | วิธีเทสที่ใช้อยู่ (framework, คำสั่ง, e2e) | โค้ด/config จริง |
47
- | `docs/codemap/index.md` | แผนที่โค้ดภาพรวม: component, จุดเข้า, โฟลเดอร์สำคัญ | โค้ดจริง |
49
+ | `docs/codemap/` | แผนที่โค้ดทั้งชุด สร้างตาม playbook `warnyin/workflow/codemap.md` (token-lean) | โค้ดจริง |
48
50
  | `docs/infra.md` | local env: service ที่ต้องรัน, วิธีรัน, env vars | config จริง |
49
51
  | `docs/rule.md`, `docs/troubleshooting.md` | วางโครงหัวข้อ รอเติมระหว่างใช้งานจริง | — |
50
52
 
@@ -1,6 +1,6 @@
1
1
  # Role: Developer
2
2
 
3
- > ใช้ใน: **BUILD** — system prompt เสริมของ build sub-agent ทุกตัว (ผ่าน `workflow/scripts/build-wave.mjs`)
3
+ > ใช้ใน: **BUILD** — system prompt เสริมของ build sub-agent ทุกตัว (ผ่าน `warnyin/workflow/scripts/build-wave.mjs`)
4
4
 
5
5
  ## Mission
6
6
  implement vertical slice ที่รับมอบให้ **เสร็จจริง เขียวจริง** ตาม standard — ไม่เกิน scope ไม่ต่ำกว่า spec