@warnyin/agents 0.5.1 → 0.6.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 (70) hide show
  1. package/.claude/agents/warnyin-infra.md +1 -1
  2. package/.claude/agents/warnyin-qa.md +1 -1
  3. package/.claude/agents/warnyin-sa.md +1 -1
  4. package/.claude/agents/warnyin-security.md +1 -1
  5. package/.claude/agents/warnyin-tech-lead.md +1 -1
  6. package/.claude/commands/warnyin/build.md +9 -9
  7. package/.claude/commands/warnyin/design.md +4 -4
  8. package/.claude/commands/warnyin/discovery.md +3 -3
  9. package/.claude/commands/warnyin/explore.md +1 -1
  10. package/.claude/commands/warnyin/init.md +2 -2
  11. package/.claude/commands/warnyin/install-skill.md +2 -2
  12. package/.claude/commands/warnyin/next.md +3 -3
  13. package/.claude/commands/warnyin/ship.md +5 -5
  14. package/.claude/commands/warnyin/update-codemaps.md +1 -1
  15. package/.claude/commands/warnyin/verify.md +5 -5
  16. package/{warnyin → .warnyin}/installer/templates/CLAUDE.md +15 -15
  17. package/{warnyin → .warnyin}/template/docs/codemap/index.md +1 -1
  18. package/{warnyin → .warnyin}/template/docs/troubleshooting.md +1 -1
  19. package/{warnyin → .warnyin}/template/stages/[topic]/build.md +2 -2
  20. package/{warnyin → .warnyin}/template/stages/[topic]/business.md +1 -1
  21. package/{warnyin → .warnyin}/template/stages/[topic]/design.md +1 -1
  22. package/{warnyin → .warnyin}/template/stages/[topic]/discovery.md +2 -2
  23. package/{warnyin → .warnyin}/template/stages/[topic]/proposal.md +1 -1
  24. package/{warnyin → .warnyin}/template/stages/[topic]/research.md +1 -1
  25. package/{warnyin → .warnyin}/template/stages/[topic]/ship.md +3 -3
  26. package/{warnyin → .warnyin}/template/stages/[topic]/tasks/[task-name]/issue.md +1 -1
  27. package/{warnyin → .warnyin}/template/stages/[topic]/tasks/[task-name]/rule.md +1 -1
  28. package/{warnyin → .warnyin}/template/stages/[topic]/tasks/[task-name]/spec.md +1 -1
  29. package/{warnyin → .warnyin}/template/stages/[topic]/tasks/[task-name]/standard.md +1 -1
  30. package/{warnyin → .warnyin}/template/stages/[topic]/tasks/[task-name]/task.md +1 -1
  31. package/{warnyin → .warnyin}/template/stages/[topic]/test.md +1 -1
  32. package/{warnyin → .warnyin}/template/stages/[topic]/verify.md +2 -2
  33. package/{warnyin → .warnyin}/workflow/README.md +13 -13
  34. package/{warnyin → .warnyin}/workflow/explore.md +2 -2
  35. package/{warnyin → .warnyin}/workflow/init.md +34 -11
  36. package/{warnyin → .warnyin}/workflow/next.md +3 -3
  37. package/{warnyin → .warnyin}/workflow/roles/developer.md +1 -1
  38. package/{warnyin → .warnyin}/workflow/scripts/build-wave.mjs +10 -8
  39. package/{warnyin → .warnyin}/workflow/stages/build.md +10 -10
  40. package/{warnyin → .warnyin}/workflow/stages/design.md +17 -17
  41. package/{warnyin → .warnyin}/workflow/stages/discovery.md +7 -7
  42. package/{warnyin → .warnyin}/workflow/stages/ship.md +8 -8
  43. package/{warnyin → .warnyin}/workflow/stages/verify.md +5 -5
  44. package/AGENTS.md +15 -15
  45. package/CLAUDE.md +18 -18
  46. package/README.md +10 -10
  47. package/bin/cli.mjs +49 -19
  48. package/package.json +6 -3
  49. package/warnyin/stages/achieved/.gitkeep +0 -0
  50. package/warnyin/stages/context.md +0 -0
  51. /package/{warnyin → .warnyin}/template/docs/features/[feature-name]/business.md +0 -0
  52. /package/{warnyin → .warnyin}/template/docs/features/[feature-name]/feature.md +0 -0
  53. /package/{warnyin → .warnyin}/template/docs/infra.md +0 -0
  54. /package/{warnyin → .warnyin}/template/docs/project.md +0 -0
  55. /package/{warnyin → .warnyin}/template/docs/rule.md +0 -0
  56. /package/{warnyin → .warnyin}/template/docs/techstack/[component]/about.md +0 -0
  57. /package/{warnyin → .warnyin}/template/docs/techstack/[component]/rule.md +0 -0
  58. /package/{warnyin → .warnyin}/template/docs/techstack/[component]/standard.md +0 -0
  59. /package/{warnyin → .warnyin}/template/docs/techstack/[component]/structure.md +0 -0
  60. /package/{warnyin → .warnyin}/template/docs/techstack/[component]/test.md +0 -0
  61. /package/{warnyin → .warnyin}/template/stages/[topic]/troubleshooting.md +0 -0
  62. /package/{warnyin → .warnyin}/workflow/codemap.md +0 -0
  63. /package/{warnyin → .warnyin}/workflow/roles/README.md +0 -0
  64. /package/{warnyin → .warnyin}/workflow/roles/ba.md +0 -0
  65. /package/{warnyin → .warnyin}/workflow/roles/infra.md +0 -0
  66. /package/{warnyin → .warnyin}/workflow/roles/po.md +0 -0
  67. /package/{warnyin → .warnyin}/workflow/roles/qa.md +0 -0
  68. /package/{warnyin → .warnyin}/workflow/roles/sa.md +0 -0
  69. /package/{warnyin → .warnyin}/workflow/roles/security.md +0 -0
  70. /package/{warnyin → .warnyin}/workflow/roles/tech-lead.md +0 -0
@@ -14,7 +14,7 @@
14
14
 
15
15
  ## 2. ก่อนเทส — อ่านให้เข้าใจก่อนเสมอ
16
16
 
17
- 1. **spec + tasks ทั้งหมด** — `warnyin/stages/<slug>/tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md`
17
+ 1. **spec + tasks ทั้งหมด** — `docs/stages/<slug>/tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md`
18
18
  → เข้าใจ **จุดประสงค์ของ topic** และสิ่งที่ต้องยืนยัน (อย่าเทสผ่านๆ โดยไม่เข้าใจ)
19
19
  2. **`docs/techstack/<component>/test.md`** — guideline ว่าเทสยังไง (เช่น frontend: e2e smoke ผ่าน **playwright-cli**)
20
20
  → ถ้า **ไม่มี** guideline → แนะนำว่าควรเทสแบบไหน/วิธีใดได้บ้าง แล้วเขียนแผนลง `test.md`
@@ -30,16 +30,16 @@
30
30
  3. **ใช้ guideline จาก `test.md`** ของ techstack; ถ้าไม่มีให้เสนอวิธีเทสที่เหมาะแล้วเขียนแผนเอง
31
31
  4. **Frontend → verify UX/UI ด้วย** (ไม่ใช่แค่ functional — ดู layout, state, flow, ความถูกต้องของหน้าจอ)
32
32
  5. **ข้อไหน verify ไม่ผ่าน → แก้จนผ่าน (loop)** และ **นับจำนวนการแก้ไข/จำนวนรอบ**
33
- 6. **ปัญหายาก/ซ้ำในขั้นนี้ → บันทึก `warnyin/stages/<slug>/troubleshooting.md`** (เหมือน BUILD); เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน
33
+ 6. **ปัญหายาก/ซ้ำในขั้นนี้ → บันทึก `docs/stages/<slug>/troubleshooting.md`** (เหมือน BUILD); เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน
34
34
  7. **นาน/หลายรอบเกินไป → พิจารณาถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนแก้เงียบๆ ไม่จบ)
35
35
  8. **ห้ามแตะไฟล์กลางใน `docs/`** — แผนเทสเขียนระดับ topic ที่ `test.md` ก่อน รอ SHIP merge เข้า `docs/techstack/<component>/test.md`
36
- 9. **สวม role QA** — ทำตาม role card `warnyin/workflow/roles/qa.md` (lens: คิดแบบผู้ใช้จริง + คนหาเรื่อง, edge case, regression; checklist ครบทุกข้อ)
36
+ 9. **สวม role QA** — ทำตาม role card `.warnyin/workflow/roles/qa.md` (lens: คิดแบบผู้ใช้จริง + คนหาเรื่อง, edge case, regression; checklist ครบทุกข้อ)
37
37
 
38
38
  ---
39
39
 
40
40
  ## 4. ลำดับขั้นการทำงาน (process)
41
41
 
42
- 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม VERIFY ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/stages/<slug>/` ครบ ไม่หายไปกับ context) — VERIFY เป็นลูปเทส-แก้ที่อาจยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
42
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ประเมินว่า context ของ session ปัจจุบันถูกใช้ไปมากน้อยแค่ไหน — ถ้าใช้ไปเยอะหรือ **เกินครึ่ง** → **เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ** แล้วค่อยเริ่ม VERIFY ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `docs/stages/<slug>/` ครบ ไม่หายไปกับ context) — VERIFY เป็นลูปเทส-แก้ที่อาจยาว ต้องมี context เหลือมากพอ; เครื่องอื่นที่ไม่มีคำสั่งนี้ → แนะนำเริ่ม session ใหม่
43
43
  1. **เข้าใจจุดประสงค์:** อ่าน spec/tasks/design → สรุปสิ่งที่ต้อง verify (functional + UX/UI)
44
44
  2. **วางแผนเทส → เขียน `test.md`:** ตาม guideline `docs/techstack/<component>/test.md`; ไม่มีก็เสนอวิธี (e2e smoke / integration / manual ฯลฯ) แล้วเขียนแผน
45
45
  3. **เตรียม local env:** รัน service ที่เกี่ยวข้องตาม `infra.md`
@@ -50,7 +50,7 @@
50
50
 
51
51
  ---
52
52
 
53
- ## 5. Output (สร้างที่ `warnyin/stages/<slug>/`)
53
+ ## 5. Output (สร้างที่ `docs/stages/<slug>/`)
54
54
 
55
55
  | ไฟล์ | เนื้อหา | ปลายทางตอน SHIP |
56
56
  |---|---|---|
package/AGENTS.md CHANGED
@@ -12,37 +12,37 @@ Discovery (optional) ──▶ DESIGN ──▶ BUILD ──▶ VERIFY ──▶
12
12
 
13
13
  ## กฎสำคัญ: ทำตาม playbook กลางเสมอ
14
14
 
15
- แก่นของแต่ละ stage คือ **single source of truth** อยู่ที่ `warnyin/workflow/stages/`
15
+ แก่นของแต่ละ stage คือ **single source of truth** อยู่ที่ `.warnyin/workflow/stages/`
16
16
  ก่อนทำงานใน stage ใด ให้เปิดอ่านไฟล์ playbook ของ stage นั้นแล้วทำตามอย่างเคร่งครัด
17
17
 
18
18
  | Stage | playbook | สถานะ |
19
19
  |---|---|---|
20
- | Discovery | `warnyin/workflow/stages/discovery.md` | ✅ พร้อมใช้ |
21
- | DESIGN | `warnyin/workflow/stages/design.md` | ✅ พร้อมใช้ |
22
- | BUILD | `warnyin/workflow/stages/build.md` | ✅ พร้อมใช้ |
23
- | VERIFY | `warnyin/workflow/stages/verify.md` | ✅ พร้อมใช้ |
24
- | SHIP | `warnyin/workflow/stages/ship.md` | ✅ พร้อมใช้ |
20
+ | Discovery | `.warnyin/workflow/stages/discovery.md` | ✅ พร้อมใช้ |
21
+ | DESIGN | `.warnyin/workflow/stages/design.md` | ✅ พร้อมใช้ |
22
+ | BUILD | `.warnyin/workflow/stages/build.md` | ✅ พร้อมใช้ |
23
+ | VERIFY | `.warnyin/workflow/stages/verify.md` | ✅ พร้อมใช้ |
24
+ | SHIP | `.warnyin/workflow/stages/ship.md` | ✅ พร้อมใช้ |
25
25
 
26
26
  ## วิธีเริ่ม
27
27
 
28
- 0. ครั้งแรกในโปรเจกต์ (docs/ ยังว่าง) → ทำตาม `warnyin/workflow/init.md` เพื่อวิเคราะห์โปรเจกต์ + เติม `docs/` ก่อน
29
- 1. อ่าน `warnyin/workflow/README.md` เพื่อเข้าใจภาพรวมและโครงสร้าง
30
- 2. งานใหม่ → copy `warnyin/template/stages/[topic]/` เป็น `warnyin/stages/<slug>/`
28
+ 0. ครั้งแรกในโปรเจกต์ (docs/ ยังว่าง) → ทำตาม `.warnyin/workflow/init.md` เพื่อวิเคราะห์โปรเจกต์ + เติม `docs/` ก่อน
29
+ 1. อ่าน `.warnyin/workflow/README.md` เพื่อเข้าใจภาพรวมและโครงสร้าง
30
+ 2. งานใหม่ → copy `.warnyin/template/stages/[topic]/` เป็น `docs/stages/<slug>/`
31
31
  3. รัน stage ตามลำดับ โดยทำตาม playbook ของแต่ละ stage
32
- 4. output ของงานเก็บใน `warnyin/stages/<slug>/`, ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/`
32
+ 4. output ของงานเก็บใน `docs/stages/<slug>/`, ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/`
33
33
 
34
34
  ## สำรวจโดยไม่สร้าง artifact (EXPLORE)
35
35
 
36
- อยากถาม/สำรวจข้อมูลเฉยๆ โดยไม่เปิด topic → ทำตาม `warnyin/workflow/explore.md`
36
+ อยากถาม/สำรวจข้อมูลเฉยๆ โดยไม่เปิด topic → ทำตาม `.warnyin/workflow/explore.md`
37
37
  (read-only เด็ดขาด — ไม่สร้าง/แก้ไฟล์ใดๆ จบที่คำตอบในแชท)
38
38
 
39
39
  ## เช็คงานค้าง / หาขั้นตอนถัดไป (NEXT)
40
40
 
41
- อยากรู้ว่ามีงานอะไรค้างและควรไปต่อยังไง → ทำตาม `warnyin/workflow/next.md`
42
- (สแกน `warnyin/stages/*` ระบุ stage ปัจจุบันจาก artifact จริง + gate ที่ขาด — read-only ไม่แก้ไฟล์)
41
+ อยากรู้ว่ามีงานอะไรค้างและควรไปต่อยังไง → ทำตาม `.warnyin/workflow/next.md`
42
+ (สแกน `docs/stages/*` ระบุ stage ปัจจุบันจาก artifact จริง + gate ที่ขาด — read-only ไม่แก้ไฟล์)
43
43
 
44
44
  ## รัน Discovery
45
45
 
46
- ทำตาม `warnyin/workflow/stages/discovery.md` — เริ่มอ่าน `docs/project.md`, ตี scope กว้าง→แคบ,
46
+ ทำตาม `.warnyin/workflow/stages/discovery.md` — เริ่มอ่าน `docs/project.md`, ตี scope กว้าง→แคบ,
47
47
  ถามทีละข้อพร้อมเสนอคำตอบที่แนะนำ, คำถามที่ตอบได้ด้วยโค้ดให้ไปอ่านโค้ดเอง,
48
- เขียน output ลง `warnyin/stages/<slug>/discovery.md` และ `research.md`
48
+ เขียน output ลง `docs/stages/<slug>/discovery.md` และ `research.md`
package/CLAUDE.md CHANGED
@@ -4,37 +4,37 @@ repo มาตรฐานกลางของ **ways of work** สำหรั
4
4
  `Discovery (optional) ▶ DESIGN ▶ BUILD ▶ VERIFY ▶ SHIP`
5
5
 
6
6
  ## กฎหลัก
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]/`)
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
10
  - ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/` — เริ่มอ่าน `docs/project.md` เสมอใน Discovery
11
- - role card กลางอยู่ที่ `warnyin/workflow/roles/` (BA/PO/SA/Tech Lead/Developer/QA/Security/Infra) — stage ไหนใช้ role ไหนดูใน playbook; reviewer subagent ของ Claude Code อยู่ที่ `.claude/agents/warnyin-*`
11
+ - role card กลางอยู่ที่ `.warnyin/workflow/roles/` (BA/PO/SA/Tech Lead/Developer/QA/Security/Infra) — stage ไหนใช้ role ไหนดูใน playbook; reviewer subagent ของ Claude Code อยู่ที่ `.claude/agents/warnyin-*`
12
12
 
13
13
  ## Slash commands (namespace `warnyin:`)
14
- - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`.claude/commands/warnyin/init.md` → `warnyin/workflow/init.md`)
15
- - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการอยู่ที่ตารางใน `warnyin/workflow/roles/README.md`)
16
- - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean ใน `docs/codemap/` (`warnyin/workflow/codemap.md`)
17
- - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact ใดๆ จบที่คำตอบในแชท (`warnyin/workflow/explore.md`)
18
- - `/warnyin:next [slug]` → เช็คงานค้างทุก topic + แนะนำ command ถัดไป แบบ read-only (`warnyin/workflow/next.md`)
19
- - `/warnyin:discovery [topic]` → Discovery stage (`.claude/commands/warnyin/discovery.md` → `warnyin/workflow/stages/discovery.md`)
20
- - `/warnyin:design [slug] [change]` → DESIGN stage (`.claude/commands/warnyin/design.md` → `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`)
14
+ - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`.claude/commands/warnyin/init.md` → `.warnyin/workflow/init.md`)
15
+ - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการอยู่ที่ตารางใน `.warnyin/workflow/roles/README.md`)
16
+ - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean ใน `docs/codemap/` (`.warnyin/workflow/codemap.md`)
17
+ - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact ใดๆ จบที่คำตอบในแชท (`.warnyin/workflow/explore.md`)
18
+ - `/warnyin:next [slug]` → เช็คงานค้างทุก topic + แนะนำ command ถัดไป แบบ read-only (`.warnyin/workflow/next.md`)
19
+ - `/warnyin:discovery [topic]` → Discovery stage (`.claude/commands/warnyin/discovery.md` → `.warnyin/workflow/stages/discovery.md`)
20
+ - `/warnyin:design [slug] [change]` → DESIGN stage (`.claude/commands/warnyin/design.md` → `.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
24
 
25
25
  ## การติดตั้งไปโปรเจกต์อื่น (npx installer)
26
26
  - `npx @warnyin/agents` (หรือสำรอง `npx github:warnyin/warnyin-agents`) → copy โครงทั้งหมดลงโปรเจกต์ปลายทาง (ข้ามไฟล์ที่มีอยู่, CLAUDE.md/AGENTS.md ที่มีอยู่จะต่อท้ายเป็น section)
27
- - `--update` → เขียนทับเฉพาะ core (`warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `warnyin/template/`) ไม่แตะ `docs/`/งานจริง
28
- - ตัว installer: `bin/cli.mjs` + template CLAUDE.md ของโปรเจกต์ปลายทางที่ `warnyin/installer/templates/CLAUDE.md` (แก้ commands list ที่ไหน ให้แก้ template นี้ด้วย; โฟลเดอร์นี้ไม่ถูก copy ไป target)
27
+ - `--update` → เขียนทับเฉพาะ core (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `.warnyin/template/`) ไม่แตะ `docs/`/งานจริง
28
+ - ตัว installer: `bin/cli.mjs` + template CLAUDE.md ของโปรเจกต์ปลายทางที่ `.warnyin/installer/templates/CLAUDE.md` (แก้ commands list ที่ไหน ให้แก้ template นี้ด้วย; โฟลเดอร์นี้ไม่ถูก copy ไป target)
29
29
  - หลังติดตั้ง → รัน `/warnyin:init` เพื่อเติม `docs/`
30
30
 
31
31
  ## รองรับหลาย AI
32
32
  repo นี้ tool-agnostic: Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
33
- ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `warnyin/workflow/stages/` — ดูภาพรวมที่ `warnyin/workflow/README.md`
33
+ ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` — ดูภาพรวมที่ `.warnyin/workflow/README.md`
34
34
 
35
35
  ## สถานะการสร้าง workflow (อัปเดต 2026-06-04)
36
36
  ครบทั้ง 5 stage: Discovery ✅ · DESIGN ✅ · BUILD ✅ · VERIFY ✅ · SHIP ✅
37
37
  (playbook + command + template + build-wave.mjs ครบทุก stage)
38
38
 
39
- แพทเทิร์นการเติม/แก้ stage: playbook `warnyin/workflow/stages/<stage>.md` + command `.claude/commands/warnyin/<stage>.md` + อัปเดตตาราง stage ใน `AGENTS.md`/`CLAUDE.md`/`warnyin/workflow/README.md` + output template ใน `warnyin/template/stages/[topic]/`
39
+ แพทเทิร์นการเติม/แก้ stage: playbook `.warnyin/workflow/stages/<stage>.md` + command `.claude/commands/warnyin/<stage>.md` + อัปเดตตาราง stage ใน `AGENTS.md`/`CLAUDE.md`/`.warnyin/workflow/README.md` + output template ใน `.warnyin/template/stages/[topic]/`
40
40
  **สำคัญ: การเปลี่ยนพฤติกรรม stage ใดๆ ให้ user เป็นคนอธิบาย/ยืนยันก่อน อย่าเดาเอง**
package/README.md CHANGED
@@ -25,7 +25,7 @@ npx @warnyin/agents --update # อัปเดต playbook กลางเป
25
25
  ```
26
26
 
27
27
  - โปรเจกต์ที่มี `CLAUDE.md` / `AGENTS.md` อยู่แล้ว → installer **ต่อท้ายเป็น section** ไม่เขียนทับ
28
- - `--update` เขียนทับเฉพาะ core (`warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
28
+ - `--update` เขียนทับเฉพาะ core (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `.warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
29
29
 
30
30
  ## เริ่มใช้งาน
31
31
 
@@ -47,16 +47,16 @@ npx @warnyin/agents --update # อัปเดต playbook กลางเป
47
47
 
48
48
  ## แนวคิดหลัก: Tool-agnostic, single source of truth
49
49
 
50
- แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `warnyin/workflow/stages/`
50
+ แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `.warnyin/workflow/stages/`
51
51
  AI แต่ละเครื่องมีแค่ adapter บางๆ ชี้กลับมาที่ playbook กลางชุดเดียวกัน
52
52
 
53
53
  | AI tool | Adapter | อ่าน playbook จาก |
54
54
  |---|---|---|
55
- | **Claude Code** | `.claude/commands/warnyin/*` + `CLAUDE.md` | `warnyin/workflow/stages/*.md` |
56
- | **Codex / Antigravity** | `AGENTS.md` | `warnyin/workflow/stages/*.md` |
57
- | เครื่องอื่นๆ | ชี้มาที่ `warnyin/workflow/stages/` ได้ทันที | `warnyin/workflow/stages/*.md` |
55
+ | **Claude Code** | `.claude/commands/warnyin/*` + `CLAUDE.md` | `.warnyin/workflow/stages/*.md` |
56
+ | **Codex / Antigravity** | `AGENTS.md` | `.warnyin/workflow/stages/*.md` |
57
+ | เครื่องอื่นๆ | ชี้มาที่ `.warnyin/workflow/stages/` ได้ทันที | `.warnyin/workflow/stages/*.md` |
58
58
 
59
- > แก้กฎที่ `warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
59
+ > แก้กฎที่ `.warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
60
60
 
61
61
  ## โครงสร้างที่ติดตั้งลงโปรเจกต์
62
62
 
@@ -72,7 +72,7 @@ warnyin/ # ★ ทุกอย่างของ workflow รว
72
72
  stages/ # พื้นที่ทำงานจริงราย topic (copy [topic] เป็น <slug>)
73
73
  achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>)
74
74
 
75
- docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก warnyin/template/docs ตอนติดตั้ง)
75
+ docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก .warnyin/template/docs ตอนติดตั้ง)
76
76
  project.md # ★ จุดเริ่มของ Discovery
77
77
  rule.md infra.md troubleshooting.md
78
78
  codemap/ features/ techstack/<component>/{about,rule,standard,structure,test}.md
@@ -83,7 +83,7 @@ AGENTS.md # adapter สำหรับ Codex / Antigravity
83
83
  CLAUDE.md # adapter สำหรับ Claude Code
84
84
  ```
85
85
 
86
- รายละเอียดเต็ม: [`warnyin/workflow/README.md`](warnyin/workflow/README.md)
86
+ รายละเอียดเต็ม: [`.warnyin/workflow/README.md`](.warnyin/workflow/README.md)
87
87
 
88
88
  ## จุดเด่นของแต่ละ stage
89
89
 
@@ -95,7 +95,7 @@ CLAUDE.md # adapter สำหรับ Claude Code
95
95
 
96
96
  ## Role system
97
97
 
98
- role card กลางที่ `warnyin/workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
98
+ role card กลางที่ `.warnyin/workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
99
99
 
100
100
  | Role | ใช้ใน | รูปแบบ |
101
101
  |---|---|---|
@@ -106,7 +106,7 @@ role card กลางที่ `warnyin/workflow/roles/` — แต่ละใ
106
106
  | Security + Infra | DESIGN panel | reviewer (read-only) |
107
107
 
108
108
  - Tech Lead/Security ผูกกับ built-in `/code-review` และ `/security-review` ของ Claude Code
109
- - skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `warnyin/workflow/roles/README.md`)
109
+ - skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `.warnyin/workflow/roles/README.md`)
110
110
 
111
111
  ## Release เวอร์ชันใหม่ (สำหรับผู้ดูแล repo นี้)
112
112
 
package/bin/cli.mjs CHANGED
@@ -24,8 +24,8 @@ if (args.has('--help') || args.has('-h')) {
24
24
  ใช้งาน:
25
25
  npx @warnyin/agents ติดตั้ง (ข้ามไฟล์ที่มีอยู่แล้ว ไม่เขียนทับ)
26
26
  npx @warnyin/agents --update อัปเดต playbook กลางเป็นเวอร์ชันล่าสุด
27
- (เขียนทับเฉพาะ warnyin/workflow/, .claude/commands/warnyin/,
28
- template warnyin/template/stages/[topic] — ไม่แตะ docs/ และงานจริง)
27
+ (เขียนทับเฉพาะ .warnyin/workflow/, .claude/commands/warnyin/,
28
+ template .warnyin/template/stages/[topic] — ไม่แตะ docs/ และงานจริง)
29
29
  npx @warnyin/agents --dry-run แสดงรายการไฟล์ที่จะสร้าง/อัปเดต โดยไม่เขียนจริง
30
30
 
31
31
  หลังติดตั้ง: เปิด Claude Code ในโปรเจกต์ แล้วรัน /warnyin:init ให้ agent วิเคราะห์โปรเจกต์ + เติม docs/`)
@@ -38,27 +38,40 @@ if (path.resolve(pkgRoot) === path.resolve(target)) {
38
38
  }
39
39
 
40
40
  // โครงเก่า (≤0.2.x): workflow/ + warnyin-stages/ ที่ root — เตือนให้ย้ายเอง ไม่แตะงานจริงของ user
41
- const legacy = ['workflow', 'warnyin-stages'].filter((d) => fs.existsSync(path.join(target, d)))
42
- if (legacy.length) {
43
- console.warn(`⚠ พบโครงเลย์เอาต์เก่า (≤0.2.x): ${legacy.join(', ')}
44
- เวอร์ชันนี้ย้ายทุกอย่างไปใต้ warnyin/ — แนะนำย้ายด้วยตัวเองก่อน:
45
- 1. git mv warnyin-stages warnyin/stages # งานจริงของคุณ (ปลอดภัย ไม่ถูกแตะโดย installer)
46
- 2. git rm -r workflow # playbook เก่า (เวอร์ชันใหม่จะอยู่ที่ warnyin/workflow)
47
- 3. ลบ template เก่าถ้ามี: "warnyin/stages/[topic]", "docs/techstack/[component]", "docs/features/[feature-name]"
48
- (ย้ายไปรวมที่ warnyin/template/ แล้ว)
41
+ const legacyV2 = ['workflow', 'warnyin-stages'].filter((d) => fs.existsSync(path.join(target, d)))
42
+ if (legacyV2.length) {
43
+ console.warn(`⚠ พบโครงเลย์เอาต์เก่า (≤0.2.x): ${legacyV2.join(', ')}
44
+ เวอร์ชันนี้ย้าย core ไปใต้ .warnyin/ และงานจริงไป docs/stages/ — แนะนำย้ายด้วยตัวเองก่อน:
45
+ 1. git mv warnyin-stages docs/stages # งานจริงของคุณ (ปลอดภัย ไม่ถูกแตะโดย installer)
46
+ 2. git rm -r workflow # playbook เก่า (เวอร์ชันใหม่จะอยู่ที่ .warnyin/workflow)
49
47
  แล้วรันคำสั่งนี้อีกครั้ง\n`)
50
48
  }
51
49
 
50
+ // โครงเก่า (0.3–0.5.x): ทุกอย่างอยู่ใต้ warnyin/ ที่ root — เวอร์ชันนี้แยกเป็น .warnyin/ (core) + docs/stages (งานจริง)
51
+ const legacyV5 = ['workflow', 'template', 'installer', 'stages'].filter((d) =>
52
+ fs.existsSync(path.join(target, 'warnyin', d)),
53
+ )
54
+ if (legacyV5.length) {
55
+ console.warn(`⚠ พบโครงเลย์เอาต์เก่า (0.3–0.5.x): warnyin/{${legacyV5.join(', ')}}
56
+ เวอร์ชันนี้ย้าย core ไป .warnyin/ และงานจริงไป docs/stages/ — แนะนำย้ายด้วยตัวเองก่อน:
57
+ 1. git mv warnyin/stages docs/stages # งานจริงของคุณ (active + achieved) — ปลอดภัย ไม่ถูกแตะ
58
+ 2. git rm -r warnyin/workflow warnyin/template # core เก่า (เวอร์ชันใหม่ installer จะวางที่ .warnyin/)
59
+ แล้วรันคำสั่งนี้อีกครั้ง — installer จะวาง .warnyin/ ชุดใหม่ให้\n`)
60
+ }
61
+
52
62
  // core = playbook กลาง + command + agent + template — เขียนทับได้เมื่อ --update
53
63
  const CORE = [
54
- path.join('warnyin', 'workflow'),
55
- path.join('warnyin', 'template'),
64
+ path.join('.warnyin', 'workflow'),
65
+ path.join('.warnyin', 'template'),
56
66
  path.join('.claude', 'commands', 'warnyin'),
57
67
  path.join('.claude', 'agents'),
58
68
  ]
59
- // scaffold = พื้นที่ทำงานเป็นข้อมูลของโปรเจกต์ ไม่เขียนทับเด็ดขาด
60
- // (เจาะจง warnyin/stages warnyin/workflow + warnyin/template อยู่ใน CORE แล้ว ส่วน warnyin/installer เป็นของ installer ไม่ copy ไป target)
61
- const SCAFFOLD = [path.join('warnyin', 'stages')]
69
+ // scaffold = พื้นที่ทำงานเปล่าของโปรเจกต์installer "สร้างเอง" ไม่ copy tree จาก package
70
+ // (สำคัญ: ถ้า copy docs/stages จาก pkgRoot งานจริงของ repo ต้นทางจะรั่วไป target ทุกครั้ง ดู verify installer-test-ci)
71
+ const SCAFFOLD_FILES = [
72
+ path.join('docs', 'stages', 'context.md'), // บริบทงานที่จดไว้ (next/discovery/explore อ่าน "ถ้ามี")
73
+ path.join('docs', 'stages', 'achieved', '.gitkeep'), // ให้ git track โฟลเดอร์ archive เปล่า
74
+ ]
62
75
 
63
76
  const stats = { created: 0, updated: 0, skipped: 0 }
64
77
 
@@ -91,8 +104,25 @@ function copyTree(relDir, { overwrite }) {
91
104
  }
92
105
  }
93
106
 
94
- /** seed docs/ ของโปรเจกต์จาก warnyin/template/docs ข้ามโฟลเดอร์ template `[...]` (ไว้ให้ /warnyin:init copy เป็นชื่อจริง) และไม่ทับไฟล์ที่มีอยู่ */
95
- const TEMPLATE_DOCS = path.join('warnyin', 'template', 'docs')
107
+ /** สร้างโครง scaffold เปล่าของ docs/stages เอง (ไม่ copy จาก package กันงานจริงของ repo ต้นทางรั่วไป target) ไม่ทับไฟล์ที่มีอยู่ */
108
+ function ensureScaffold() {
109
+ for (const rel of SCAFFOLD_FILES) {
110
+ const dest = path.join(target, rel)
111
+ if (fs.existsSync(dest)) {
112
+ stats.skipped++
113
+ continue
114
+ }
115
+ if (!DRY) {
116
+ fs.mkdirSync(path.dirname(dest), { recursive: true })
117
+ fs.writeFileSync(dest, '')
118
+ }
119
+ stats.created++
120
+ console.log(` + ${rel}`)
121
+ }
122
+ }
123
+
124
+ /** seed docs/ ของโปรเจกต์จาก .warnyin/template/docs — ข้ามโฟลเดอร์ template `[...]` (ไว้ให้ /warnyin:init copy เป็นชื่อจริง) และไม่ทับไฟล์ที่มีอยู่ */
125
+ const TEMPLATE_DOCS = path.join('.warnyin', 'template', 'docs')
96
126
  function seedDocs(relDir = TEMPLATE_DOCS) {
97
127
  const srcDir = path.join(pkgRoot, relDir)
98
128
  if (!fs.existsSync(srcDir)) return
@@ -142,9 +172,9 @@ function installRootDoc(name, srcPath) {
142
172
  console.log(`Warnyin Standard Workflow → ${target}${DRY ? ' (dry-run)' : ''}\n`)
143
173
 
144
174
  for (const dir of CORE) copyTree(dir, { overwrite: UPDATE })
145
- for (const dir of SCAFFOLD) copyTree(dir, { overwrite: false })
175
+ ensureScaffold()
146
176
  seedDocs()
147
- installRootDoc('CLAUDE.md', path.join(pkgRoot, 'warnyin', 'installer', 'templates', 'CLAUDE.md'))
177
+ installRootDoc('CLAUDE.md', path.join(pkgRoot, '.warnyin', 'installer', 'templates', 'CLAUDE.md'))
148
178
  installRootDoc('AGENTS.md', path.join(pkgRoot, 'AGENTS.md'))
149
179
 
150
180
  console.log(`\nสรุป: สร้างใหม่ ${stats.created} · อัปเดต ${stats.updated} · ข้าม (มีอยู่แล้ว) ${stats.skipped}`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warnyin/agents",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Warnyin Standard Workflow installer — 5-stage ways of work (Discovery/DESIGN/BUILD/VERIFY/SHIP) สำหรับทุกโปรเจกต์",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -10,16 +10,19 @@
10
10
  "bin": {
11
11
  "warnyin-agents": "bin/cli.mjs"
12
12
  },
13
+ "scripts": {
14
+ "test": "node --test"
15
+ },
13
16
  "files": [
14
17
  "bin",
15
- "warnyin",
18
+ ".warnyin",
16
19
  ".claude/commands",
17
20
  ".claude/agents",
18
21
  "CLAUDE.md",
19
22
  "AGENTS.md"
20
23
  ],
21
24
  "engines": {
22
- "node": ">=18"
25
+ "node": ">=20"
23
26
  },
24
27
  "repository": {
25
28
  "type": "git",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes