@warnyin/agents 0.5.2 → 0.7.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 (71) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +10 -10
  3. package/package.json +17 -9
  4. package/{.claude → src/.claude}/agents/warnyin-infra.md +1 -1
  5. package/{.claude → src/.claude}/agents/warnyin-qa.md +1 -1
  6. package/{.claude → src/.claude}/agents/warnyin-sa.md +1 -1
  7. package/{.claude → src/.claude}/agents/warnyin-security.md +1 -1
  8. package/{.claude → src/.claude}/agents/warnyin-tech-lead.md +1 -1
  9. package/{.claude → src/.claude}/commands/warnyin/build.md +9 -9
  10. package/{.claude → src/.claude}/commands/warnyin/design.md +4 -4
  11. package/{.claude → src/.claude}/commands/warnyin/discovery.md +3 -3
  12. package/{.claude → src/.claude}/commands/warnyin/explore.md +1 -1
  13. package/{.claude → src/.claude}/commands/warnyin/init.md +2 -2
  14. package/{.claude → src/.claude}/commands/warnyin/install-skill.md +2 -2
  15. package/{.claude → src/.claude}/commands/warnyin/next.md +3 -3
  16. package/{.claude → src/.claude}/commands/warnyin/ship.md +5 -5
  17. package/{.claude → src/.claude}/commands/warnyin/update-codemaps.md +1 -1
  18. package/{.claude → src/.claude}/commands/warnyin/verify.md +5 -5
  19. package/{warnyin → src/.warnyin}/installer/templates/CLAUDE.md +15 -15
  20. package/{warnyin → src/.warnyin}/template/docs/codemap/index.md +1 -1
  21. package/{warnyin → src/.warnyin}/template/docs/troubleshooting.md +1 -1
  22. package/{warnyin → src/.warnyin}/template/stages/[topic]/build.md +2 -2
  23. package/{warnyin → src/.warnyin}/template/stages/[topic]/business.md +1 -1
  24. package/{warnyin → src/.warnyin}/template/stages/[topic]/design.md +1 -1
  25. package/{warnyin → src/.warnyin}/template/stages/[topic]/discovery.md +2 -2
  26. package/{warnyin → src/.warnyin}/template/stages/[topic]/proposal.md +1 -1
  27. package/{warnyin → src/.warnyin}/template/stages/[topic]/research.md +1 -1
  28. package/{warnyin → src/.warnyin}/template/stages/[topic]/ship.md +3 -3
  29. package/{warnyin → src/.warnyin}/template/stages/[topic]/tasks/[task-name]/issue.md +1 -1
  30. package/{warnyin → src/.warnyin}/template/stages/[topic]/tasks/[task-name]/rule.md +1 -1
  31. package/{warnyin → src/.warnyin}/template/stages/[topic]/tasks/[task-name]/spec.md +1 -1
  32. package/{warnyin → src/.warnyin}/template/stages/[topic]/tasks/[task-name]/standard.md +1 -1
  33. package/{warnyin → src/.warnyin}/template/stages/[topic]/tasks/[task-name]/task.md +1 -1
  34. package/{warnyin → src/.warnyin}/template/stages/[topic]/test.md +1 -1
  35. package/{warnyin → src/.warnyin}/template/stages/[topic]/verify.md +2 -2
  36. package/{warnyin → src/.warnyin}/workflow/README.md +13 -13
  37. package/{warnyin → src/.warnyin}/workflow/explore.md +2 -2
  38. package/{warnyin → src/.warnyin}/workflow/init.md +11 -11
  39. package/{warnyin → src/.warnyin}/workflow/next.md +3 -3
  40. package/{warnyin → src/.warnyin}/workflow/roles/developer.md +1 -1
  41. package/{warnyin → src/.warnyin}/workflow/scripts/build-wave.mjs +10 -8
  42. package/{warnyin → src/.warnyin}/workflow/stages/build.md +10 -10
  43. package/{warnyin → src/.warnyin}/workflow/stages/design.md +17 -17
  44. package/{warnyin → src/.warnyin}/workflow/stages/discovery.md +7 -7
  45. package/{warnyin → src/.warnyin}/workflow/stages/ship.md +8 -8
  46. package/{warnyin → src/.warnyin}/workflow/stages/verify.md +5 -5
  47. package/{AGENTS.md → src/AGENTS.md} +15 -15
  48. package/{bin → src/bin}/cli.mjs +52 -19
  49. package/CLAUDE.md +0 -40
  50. package/warnyin/stages/achieved/.gitkeep +0 -0
  51. package/warnyin/stages/context.md +0 -0
  52. /package/{warnyin → src/.warnyin}/template/docs/features/[feature-name]/business.md +0 -0
  53. /package/{warnyin → src/.warnyin}/template/docs/features/[feature-name]/feature.md +0 -0
  54. /package/{warnyin → src/.warnyin}/template/docs/infra.md +0 -0
  55. /package/{warnyin → src/.warnyin}/template/docs/project.md +0 -0
  56. /package/{warnyin → src/.warnyin}/template/docs/rule.md +0 -0
  57. /package/{warnyin → src/.warnyin}/template/docs/techstack/[component]/about.md +0 -0
  58. /package/{warnyin → src/.warnyin}/template/docs/techstack/[component]/rule.md +0 -0
  59. /package/{warnyin → src/.warnyin}/template/docs/techstack/[component]/standard.md +0 -0
  60. /package/{warnyin → src/.warnyin}/template/docs/techstack/[component]/structure.md +0 -0
  61. /package/{warnyin → src/.warnyin}/template/docs/techstack/[component]/test.md +0 -0
  62. /package/{warnyin → src/.warnyin}/template/stages/[topic]/troubleshooting.md +0 -0
  63. /package/{warnyin → src/.warnyin}/workflow/codemap.md +0 -0
  64. /package/{warnyin → src/.warnyin}/workflow/roles/README.md +0 -0
  65. /package/{warnyin → src/.warnyin}/workflow/roles/ba.md +0 -0
  66. /package/{warnyin → src/.warnyin}/workflow/roles/infra.md +0 -0
  67. /package/{warnyin → src/.warnyin}/workflow/roles/po.md +0 -0
  68. /package/{warnyin → src/.warnyin}/workflow/roles/qa.md +0 -0
  69. /package/{warnyin → src/.warnyin}/workflow/roles/sa.md +0 -0
  70. /package/{warnyin → src/.warnyin}/workflow/roles/security.md +0 -0
  71. /package/{warnyin → src/.warnyin}/workflow/roles/tech-lead.md +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+
3
+ ทุกการเปลี่ยนแปลงที่สำคัญของโปรเจกต์นี้ถูกบันทึกในไฟล์นี้
4
+
5
+ รูปแบบอ้างอิง [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6
+ และโปรเจกต์ยึด [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.7.0] - 2026-06-07
11
+
12
+ ### Added
13
+ - **Bootstrap / self-hosting (2-layer):** แยก source ของ warnyin ทั้งหมดเข้า `src/` (committed/publish layer); repo install release เสถียรไว้ root เป็น dogfood (`.warnyin/`/`.claude/`/`CLAUDE.md`/`AGENTS.md` — gitignored) เพื่อพัฒนา `src/` โดย workflow ที่ใช้ทำงานยังเสถียร
14
+ - `npm run setup:dogfood` — คืน dogfood env ที่ root จาก release (`npx @latest` + fallback `npm pack`→extract→node สำหรับ Windows), append pointer → `CONTRIBUTING.md` แบบ idempotent
15
+ - `npm run setup:sandbox` — install v-next จาก `src/` ลง temp dir (`os.tmpdir()`) เพื่อทดสอบ version skew โดยไม่แตะ dogfood ที่ root
16
+ - `CONTRIBUTING.md` — dev-instructions ของ repo (แยกจาก root `CLAUDE.md` เดิม)
17
+ - pass-count gate (`src/scripts/check-test-count.mjs`) — anti-false-green: fail ถ้า `fail≠0` / `pass<9` / `pass≠tests`
18
+ - Automated installer test suite (`node:test` black-box — spawn `src/bin/cli.mjs` จริงใน temp dir แล้ว assert side-effect) + unit test `checkFiles` รันด้วย `npm test`
19
+ - GitHub Actions CI (`.github/workflows/ci.yml`) — matrix node 20/22/24 + job `pack-verify`
20
+ - npm-pack verify (`src/scripts/verify-pack.mjs`) — testable `checkFiles(files)→errors[]`: allowlist granular + denylist (tooling/`docs/`/dogfood ที่ root) + tripwire (`settings.local.json`/`*.tgz`/`.env*`); assert `src/.warnyin/workflow/` + `src/.claude/commands/warnyin/` ติด tarball
21
+
22
+ ### Changed
23
+ - **bin path** `bin/cli.mjs` → `src/bin/cli.mjs` (restructure source เข้า `src/`) — `pkgRoot` resolve เป็น `src/` อัตโนมัติ, payload คงเดิม
24
+ - `package.json files` เป็น allowlist granular — nested dotfolder ระบุชัด (`src/.warnyin`, `src/.claude/commands`, `src/.claude/agents`); ตัด `src/tests`/`src/scripts` (dev-only)
25
+ - test/scripts ย้ายไป `src/tests/` + `src/scripts/`; `npm test` = `node --test` bare (auto-discover, portable node 20/22/24)
26
+ - `engines.node` `>=18` → `>=20` (node 18 EOL)
27
+ - `.gitignore` เพิ่ม dogfood layer (root-anchored ทุกบรรทัด — กัน match `src/.claude`/`src/.warnyin`)
28
+
29
+ ### Removed
30
+ - รองรับ node 18 (drop ตาม EOL)
31
+
32
+ [Unreleased]: https://github.com/warnyin/warnyin-agents/compare/v0.7.0...HEAD
33
+ [0.7.0]: https://github.com/warnyin/warnyin-agents/compare/v0.6.0...v0.7.0
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warnyin/agents",
3
- "version": "0.5.2",
3
+ "version": "0.7.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",
@@ -8,18 +8,26 @@
8
8
  "access": "public"
9
9
  },
10
10
  "bin": {
11
- "warnyin-agents": "bin/cli.mjs"
11
+ "warnyin-agents": "src/bin/cli.mjs"
12
+ },
13
+ "scripts": {
14
+ "test": "node --test",
15
+ "verify:pack": "node src/scripts/verify-pack.mjs",
16
+ "setup:dogfood": "node src/scripts/setup-dogfood.mjs",
17
+ "setup:sandbox": "node src/scripts/setup-sandbox.mjs"
12
18
  },
13
19
  "files": [
14
- "bin",
15
- "warnyin",
16
- ".claude/commands",
17
- ".claude/agents",
18
- "CLAUDE.md",
19
- "AGENTS.md"
20
+ "src/bin",
21
+ "src/.warnyin",
22
+ "src/.claude/commands",
23
+ "src/.claude/agents",
24
+ "src/AGENTS.md",
25
+ "README.md",
26
+ "CHANGELOG.md",
27
+ "LICENSE"
20
28
  ],
21
29
  "engines": {
22
- "node": ">=18"
30
+ "node": ">=20"
23
31
  },
24
32
  "repository": {
25
33
  "type": "git",
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
6
6
 
7
7
  คุณคือ reviewer สวม role **Infra** ตาม role card กลางของ Warnyin Standard Workflow
8
8
 
9
- 1. อ่าน `warnyin/workflow/roles/infra.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
9
+ 1. อ่าน `.warnyin/workflow/roles/infra.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
10
10
  2. อ่าน artifact ที่ได้รับมอบ (proposal.md, design.md, tasks ถ้ามี) + `docs/infra.md` + config จริง (docker/compose, env, scripts) — **read-only ห้ามแก้ไฟล์ใดๆ**
11
11
  3. ให้ความเห็นแบ่งสองระดับ: **blocker** / **suggestion** — ทุกข้อมีเหตุผล + จุดอ้างอิง + สิ่งที่ต้องเพิ่มใน `docs/infra.md` (ถ้ามี)
12
12
  4. ไม่มีประเด็น → ตอบว่าผ่านมุม Infra พร้อมสรุปสั้นๆ ว่าตรวจอะไรไปบ้าง
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
6
6
 
7
7
  คุณคือ reviewer สวม role **QA** ตาม role card กลางของ Warnyin Standard Workflow
8
8
 
9
- 1. อ่าน `warnyin/workflow/roles/qa.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้น (รวม checklist เพิ่มสำหรับรีวิว design ใน panel) อย่างเคร่งครัด
9
+ 1. อ่าน `.warnyin/workflow/roles/qa.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้น (รวม checklist เพิ่มสำหรับรีวิว design ใน panel) อย่างเคร่งครัด
10
10
  2. อ่าน artifact ที่ได้รับมอบ (proposal.md, design.md, tasks ถ้ามี) + `docs/techstack/*/test.md` + โค้ด/เทสจริงที่เกี่ยวข้อง — **read-only ห้ามแก้ไฟล์ใดๆ**
11
11
  3. ให้ความเห็นแบ่งสองระดับ: **blocker** (เทสไม่ได้/acceptance วัดไม่ได้) / **suggestion** — ทุกข้อมีเหตุผล + จุดอ้างอิง
12
12
  4. ไม่มีประเด็น → ตอบว่าผ่านมุม QA พร้อมสรุปสั้นๆ ว่าตรวจอะไรไปบ้าง
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
6
6
 
7
7
  คุณคือ reviewer สวม role **SA (Solution Architect)** ตาม role card กลางของ Warnyin Standard Workflow
8
8
 
9
- 1. อ่าน `warnyin/workflow/roles/sa.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
9
+ 1. อ่าน `.warnyin/workflow/roles/sa.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
10
10
  2. อ่าน artifact ที่ได้รับมอบ (proposal.md, design.md, tasks ถ้ามี) + โค้ดจริง/`docs/techstack/`/`docs/codemap/` ที่เกี่ยวข้อง — **read-only ห้ามแก้ไฟล์ใดๆ**
11
11
  3. ให้ความเห็นแบ่งสองระดับ: **blocker** (ต้องแก้ก่อนไปต่อ) / **suggestion** (ควรปรับ) — ทุกข้อมีเหตุผล + จุดอ้างอิง (ไฟล์/section/บรรทัด) ห้ามวิจารณ์ลอยๆ ห้ามเดา
12
12
  4. ไม่มีประเด็น → ตอบว่าผ่านมุม SA พร้อมสรุปสั้นๆ ว่าตรวจอะไรไปบ้าง
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
6
6
 
7
7
  คุณคือ reviewer สวม role **Security (DevSecOps)** ตาม role card กลางของ Warnyin Standard Workflow
8
8
 
9
- 1. อ่าน `warnyin/workflow/roles/security.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
9
+ 1. อ่าน `.warnyin/workflow/roles/security.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
10
10
  2. อ่าน artifact ที่ได้รับมอบ (proposal.md, design.md, tasks ถ้ามี) + โค้ด/config จริงที่เกี่ยวข้อง — **read-only ห้ามแก้ไฟล์ใดๆ**
11
11
  3. ให้ความเห็นแบ่งสองระดับ: **blocker** (ช่องโหว่จริงต้องแก้ก่อน BUILD) / **suggestion** (hardening) — ทุกข้อระบุ จุดที่พบ + ความเสี่ยง + แนวทางแก้ ห้ามรายงานความเสี่ยงลอยๆ ที่ไม่เกี่ยวกับ change นี้
12
12
  4. ไม่มีประเด็น → ตอบว่าผ่านมุม Security พร้อมสรุปสั้นๆ ว่าตรวจอะไรไปบ้าง
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
6
6
 
7
7
  คุณคือ reviewer สวม role **Tech Lead** ตาม role card กลางของ Warnyin Standard Workflow
8
8
 
9
- 1. อ่าน `warnyin/workflow/roles/tech-lead.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
9
+ 1. อ่าน `.warnyin/workflow/roles/tech-lead.md` ให้ครบก่อน แล้วใช้ Lens + Checklist ในนั้นอย่างเคร่งครัด
10
10
  2. อ่าน artifact ที่ได้รับมอบ (proposal.md, design.md, tasks ถ้ามี) + โค้ดจริงที่เกี่ยวข้อง — **read-only ห้ามแก้ไฟล์ใดๆ**
11
11
  3. ให้ความเห็นแบ่งสองระดับ: **blocker** / **suggestion** — ทุกข้อมีเหตุผล + จุดอ้างอิง; dependency/ขนาด task ไม่เหมาะ → เสนอวิธีแตกใหม่ให้ชัด
12
12
  4. ไม่มีประเด็น → ตอบว่าผ่านมุม Tech Lead พร้อมสรุปสั้นๆ ว่าตรวจอะไรไปบ้าง
@@ -5,25 +5,25 @@ argument-hint: "[slug ของ topic]"
5
5
 
6
6
  ทำหน้าที่เป็น BUILD orchestrator ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:build <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/stages/<slug>/` ครบ) — อย่าเริ่ม fan-out ทั้งที่ context ใกล้เต็ม
9
- 1. อ่าน `warnyin/workflow/stages/build.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
10
- 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ build topic ไหน (ดูโฟลเดอร์ใน `warnyin/stages/`)
11
- 3. **อ่าน task ทั้งหมด** ใน `warnyin/stages/<slug>/tasks/*/task.md` + `design.md` → ดึง dependency → สร้าง DAG → จัด **wave** ด้วย topological order
8
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:build <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `docs/stages/<slug>/` ครบ) — อย่าเริ่ม fan-out ทั้งที่ context ใกล้เต็ม
9
+ 1. อ่าน `.warnyin/workflow/stages/build.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
10
+ 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ build topic ไหน (ดูโฟลเดอร์ใน `docs/stages/`)
11
+ 3. **อ่าน task ทั้งหมด** ใน `docs/stages/<slug>/tasks/*/task.md` + `design.md` → ดึง dependency → สร้าง DAG → จัด **wave** ด้วย topological order
12
12
  4. **Pre-check:** target เป็น git repo ไหม (จำเป็นสำหรับ worktree isolation) — ถ้าไม่ใช่ → fallback sequential shared-tree (`isolate:false`) และแจ้ง user. สร้าง build branch ใหม่ก่อนเริ่ม
13
13
  5. **ขออนุมัติครั้งเดียว** — ใช้ AskUserQuestion แสดง execution plan: แต่ละ wave มี task อะไร, อันไหน parallel, isolation mode, build branch → รอ go/no-go (อย่าเริ่มก่อนได้ไฟเขียว)
14
14
  6. **เดินทีละ wave** (หลังอนุมัติ):
15
- - เรียก **Workflow** ด้วย `{ scriptPath: "warnyin/workflow/scripts/build-wave.mjs", args: { slug, tasks: [<task ใน wave นี้>], isolate } }`
15
+ - เรียก **Workflow** ด้วย `{ scriptPath: ".warnyin/workflow/scripts/build-wave.mjs", args: { slug, tasks: [<task ใน wave นี้>], isolate } }`
16
16
  - เมื่อ workflow คืนผล: ถ้า `isolate` → **merge** branch ที่แต่ละ agent รายงาน (`result.branch`) เข้า build branch ทีละอัน, แก้ conflict ถ้ามี; ถ้า shared-tree → review + commit ให้
17
17
  - ถ้ามี task `failed` หรือ `skipped` → **หยุด** รายงาน user ก่อนไป wave ถัดไป
18
- - **รวม troubleshooting:** ดึงฟิลด์ `troubleshooting` จากผลของทุก agent ในรอบนี้ → เขียนรวมลง `warnyin/stages/<slug>/troubleshooting.md` (main loop เขียนเอง กันไฟล์ชนกันใน worktree)
18
+ - **รวม troubleshooting:** ดึงฟิลด์ `troubleshooting` จากผลของทุก agent ในรอบนี้ → เขียนรวมลง `docs/stages/<slug>/troubleshooting.md` (main loop เขียนเอง กันไฟล์ชนกันใน worktree)
19
19
  7. **★ Full build & test gate (หลัง merge ทุก wave):** บน build branch ที่ integrate แล้ว รัน build ทั้งหมด + test suite ทั้งหมด (รวม unit test) ของทุก component ที่กระทบ
20
20
  - **เจอ error → อ่าน `docs/troubleshooting.md` ก่อน** เผื่อเคยแก้แล้ว
21
21
  - มี build error / test แดง → **แก้จนเขียวหมด (loop)**: วิเคราะห์ error, แก้ (จะ delegate fix ให้ sub-agent ทีละจุดก็ได้), rerun build/test ใหม่ ทำซ้ำจนผ่าน
22
- - ปัญหา **ยาก/เจอซ้ำ** ที่แก้สำเร็จในรอบนี้ → บันทึกลง `warnyin/stages/<slug>/troubleshooting.md`
22
+ - ปัญหา **ยาก/เจอซ้ำ** ที่แก้สำเร็จในรอบนี้ → บันทึกลง `docs/stages/<slug>/troubleshooting.md`
23
23
  - ห้ามปิด BUILD ถ้ายังแดง; ถ้าวนหลายรอบยังไม่ผ่าน → หยุด รายงาน user พร้อม error log
24
- 8. **ปิดงาน:** เขียน `warnyin/stages/<slug>/build.md` (ผลต่อ task + ผล full build/test + integration notes), อัปเดตสถานะใน `task.md` แต่ละใบ → เสนอเข้า VERIFY ด้วย `/warnyin:verify`
24
+ 8. **ปิดงาน:** เขียน `docs/stages/<slug>/build.md` (ผลต่อ task + ผล full build/test + integration notes), อัปเดตสถานะใน `task.md` แต่ละใบ → เสนอเข้า VERIFY ด้วย `/warnyin:verify`
25
25
 
26
26
  หมายเหตุ:
27
27
  - ห้ามแก้ rule/standard กลางใน `docs/` (rule ใหม่ที่เสนอถูก note ไว้ใน `tasks/<task>/rule.md` รอ SHIP)
28
- - ปัญหายาก/ซ้ำที่แก้ได้ → `warnyin/stages/<slug>/troubleshooting.md` (SHIP จะยกขึ้น `docs/troubleshooting.md`)
28
+ - ปัญหายาก/ซ้ำที่แก้ได้ → `docs/stages/<slug>/troubleshooting.md` (SHIP จะยกขึ้น `docs/troubleshooting.md`)
29
29
  - เกณฑ์ปิด BUILD ดู Gate ข้อ 7 ของ playbook
@@ -5,20 +5,20 @@ argument-hint: "[slug ของ topic] [อธิบาย change สั้น
5
5
 
6
6
  ทำหน้าที่เป็น DESIGN architect ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 1. อ่าน `warnyin/workflow/stages/design.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
8
+ 1. อ่าน `.warnyin/workflow/stages/design.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
9
9
  - **ห้ามเดาเอง** — ไม่ชัดให้ถามทีละข้อ + เสนอคำตอบที่แนะนำทุกข้อ
10
10
  - ออกแบบแบบ **vertical slice architecture**
11
11
  - **Gate ก่อนเขียนไฟล์ task** แล้วค่อยโยนให้ sub-agent
12
12
  2. อ่าน Input ตามข้อ 2 ของ playbook — โดยเฉพาะ `docs/techstack/<component>/rule.md` และ `standard.md`
13
13
  3. งาน: $ARGUMENTS
14
- - ระบุ slug → ใช้/สร้าง `warnyin/stages/<slug>/` (ถ้ามาจาก Discovery ใช้โฟลเดอร์เดิม)
14
+ - ระบุ slug → ใช้/สร้าง `docs/stages/<slug>/` (ถ้ามาจาก Discovery ใช้โฟลเดอร์เดิม)
15
15
  - ถ้าเป็นคำถาม/ยังไม่มั่นใจเรื่อง design → แนะนำ `/warnyin:discovery` ก่อน
16
- 4. ผลิต artifact โดยใช้ template ใน `warnyin/template/stages/[topic]/` เป็นโครง: `business.md` (ข้ามได้ถ้า change เล็ก), `proposal.md`, `design.md` (lens `warnyin/workflow/roles/sa.md`), แล้วแตก `tasks/<task-name>/` (lens `warnyin/workflow/roles/tech-lead.md`) แต่ละใบมี `spec.md` `standard.md` `rule.md` `task.md`
16
+ 4. ผลิต artifact โดยใช้ template ใน `.warnyin/template/stages/[topic]/` เป็นโครง: `business.md` (ข้ามได้ถ้า change เล็ก), `proposal.md`, `design.md` (lens `.warnyin/workflow/roles/sa.md`), แล้วแตก `tasks/<task-name>/` (lens `.warnyin/workflow/roles/tech-lead.md`) แต่ละใบมี `spec.md` `standard.md` `rule.md` `task.md`
17
17
  - **Review panel (ถาม user ก่อน):** หลัง `design.md` เสร็จ ก่อนแตก task — ใช้ AskUserQuestion ถามว่าจะให้ panel รีวิวไหม ถ้า ok → fan-out subagent `warnyin-sa`, `warnyin-tech-lead`, `warnyin-qa`, `warnyin-security`, `warnyin-infra` (Agent tool, ขนาน, read-only) รีวิว proposal+design → รวมความเห็น สรุปให้ user → แก้ blocker ให้ครบ (ห้ามเดา) → บันทึก section "Design review" ท้าย `design.md`
18
18
  5. ตอน generate ไฟล์ task หลายใบ สามารถใช้ sub-agent (Task/Agent tool) fan-out หนึ่ง agent ต่อหนึ่ง task ได้ — **แต่ต้องผ่าน Gate (ข้อ 8 ของ playbook) ก่อน**
19
19
  6. **Dry-run (ถาม user ก่อนเสมอ):** หลังเขียนไฟล์ task ครบ ใช้ AskUserQuestion ถามว่าต้องการ dry-run ทั้งหมดเพื่อหาจุดบกพร่องก่อนเข้า BUILD ไหม — ถ้า ok ทำตามข้อ 4.9 ของ playbook:
20
20
  - fan-out agent (Agent tool) **หนึ่งตัวต่อหนึ่ง task แบบขนาน, read-only** — อ่าน task ทั้ง 4 ไฟล์ + design/proposal + โค้ดจริงที่เกี่ยว เดิน implement ในหัว หา **blocker** (implement ตาม spec ไม่ได้ — ต้องแก้ก่อน BUILD) และ **defer** (ทำ/ตัดสินใจทีหลังได้ แต่ต้อง track)
21
- - task ที่พบ issue → เขียน `warnyin/stages/<slug>/tasks/<task>/issue.md` (ตาม template); รันครบทุก task → **สรุปผลรวม** ให้ user
21
+ - task ที่พบ issue → เขียน `docs/stages/<slug>/tasks/<task>/issue.md` (ตาม template); รันครบทุก task → **สรุปผลรวม** ให้ user
22
22
  - **หาวิธีแก้ DESIGN ตาม issue โดยห้ามเดา ห้ามคิดขึ้นเอง** — ติดจริงๆ → สัมภาษณ์ user ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง; คำถามที่โค้ดตอบได้ → ไปอ่านโค้ดเอง
23
23
  - แก้แล้ว rerun dry-run เฉพาะ task ที่กระทบ วนจน **ไม่มี blocker ค้าง**
24
24
  7. เมื่อพร้อม implement → บอกให้รัน `/warnyin:build`
@@ -5,13 +5,13 @@ argument-hint: "[ชื่อหัวข้องาน / slug]"
5
5
 
6
6
  ทำหน้าที่เป็น Discovery facilitator ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 1. อ่าน `warnyin/workflow/stages/discovery.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
8
+ 1. อ่าน `.warnyin/workflow/stages/discovery.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
9
9
  (กว้าง→แคบ, ถามทีละข้อ + เสนอคำตอบที่แนะนำ, โค้ดตอบได้ให้ไปอ่านเอง, เดินทีละกิ่ง decision tree)
10
10
  2. อ่าน Input ตามข้อ 2 ของ playbook — เริ่มที่ `docs/project.md` เสมอ
11
11
  3. หัวข้องาน: $ARGUMENTS
12
- - ถ้าระบุมา → ใช้เป็น slug ของ topic (kebab-case) สร้าง/ใช้โฟลเดอร์ `warnyin/stages/<slug>/`
12
+ - ถ้าระบุมา → ใช้เป็น slug ของ topic (kebab-case) สร้าง/ใช้โฟลเดอร์ `docs/stages/<slug>/`
13
13
  - ถ้าไม่ระบุ → ถาม user ก่อนว่าหัวข้องานคืออะไร
14
- 4. เขียน output ลง `warnyin/stages/<slug>/discovery.md` และ `research.md` โดยใช้ template ในโฟลเดอร์ `warnyin/template/stages/[topic]/` เป็นโครง
14
+ 4. เขียน output ลง `docs/stages/<slug>/discovery.md` และ `research.md` โดยใช้ template ในโฟลเดอร์ `.warnyin/template/stages/[topic]/` เป็นโครง
15
15
  5. ปิดงานเมื่อผ่าน Gate (ข้อ 6 ของ playbook) แล้วเสนอว่าพร้อมเข้า DESIGN ด้วย `/warnyin:design`
16
16
 
17
17
  หมายเหตุ: ถ้า user พิมพ์ "ซักถามฉันหน่อย" / "grill me" → เข้าโหมด grill ตาม playbook
@@ -5,7 +5,7 @@ argument-hint: "[คำถาม / สิ่งที่อยากสำรว
5
5
 
6
6
  ทำหน้าที่เป็น explorer ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 1. อ่าน `warnyin/workflow/explore.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
8
+ 1. อ่าน `.warnyin/workflow/explore.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
9
9
  (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, โค้ดตอบได้ให้ไปอ่านโค้ด, อ้าง `path:line`)
10
10
  2. Ground ตัวเองด้วย Input ตามข้อ 2 ของ playbook — อ่านเฉพาะส่วนที่เกี่ยวกับคำถาม
11
11
  3. คำถาม/หัวข้อ: $ARGUMENTS
@@ -4,9 +4,9 @@ description: รัน INIT — วิเคราะห์โปรเจกต
4
4
 
5
5
  ทำหน้าที่เป็นผู้วิเคราะห์โปรเจกต์ตาม **playbook กลาง** ของ workflow มาตรฐาน
6
6
 
7
- 1. อ่าน `warnyin/workflow/init.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
7
+ 1. อ่าน `.warnyin/workflow/init.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
8
8
  2. **สแกนภาพรวม repo:** โครงสร้าง, manifest, ภาษา/framework → ระบุว่าแบ่งเป็น component อะไรบ้าง
9
9
  3. **วิเคราะห์ลึกต่อ component แบบขนาน:** fan-out sub-agent (Agent tool, read-only) หนึ่งตัวต่อหนึ่ง component — โครงสร้าง, pattern/convention ที่ใช้จริง, วิธี build/test; วิเคราะห์ infra จาก config จริง (docker/compose, env, scripts)
10
- 4. **ข้อมูลธุรกิจที่โค้ดตอบไม่ได้** (เป้าหมาย, ลูกค้า, ขอบเขต) → สัมภาษณ์ user โดย**สวม BA + PO lens** (`warnyin/workflow/roles/ba.md` + `po.md`) ใช้ checklist ของทั้งสองเป็นชุดคำถาม — **ถามทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (ใช้ README/โค้ดเป็น recommended, ถามเฉพาะที่ยังขาดหาย); เป็น lens ของ AI หลัก **ห้าม fan-out sub-agent มาสัมภาษณ์**; กฎใน `rule.md` → ถาม user ห้ามเดา
10
+ 4. **ข้อมูลธุรกิจที่โค้ดตอบไม่ได้** (เป้าหมาย, ลูกค้า, ขอบเขต) → สัมภาษณ์ user โดย**สวม BA + PO lens** (`.warnyin/workflow/roles/ba.md` + `po.md`) ใช้ checklist ของทั้งสองเป็นชุดคำถาม — **ถามทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (ใช้ README/โค้ดเป็น recommended, ถามเฉพาะที่ยังขาดหาย); เป็น lens ของ AI หลัก **ห้าม fan-out sub-agent มาสัมภาษณ์**; กฎใน `rule.md` → ถาม user ห้ามเดา
11
11
  5. **เสนอ summary** (สิ่งที่วิเคราะห์ได้ + รายการไฟล์ docs/ ที่จะเขียน) → ขอ user ยืนยัน**ครั้งเดียว** → เขียน/เติมไฟล์ตามตาราง Output ข้อ 4 ของ playbook — **ไฟล์ที่มีเนื้อหาอยู่แล้วให้เติม ไม่เขียนทับทิ้ง**
12
12
  6. **รายงานปิดท้าย:** ส่วนที่ยังว่าง/ไม่แน่ใจ (ระบุ "ยังว่าง รอเติม" ในไฟล์ ห้ามแต่งขึ้นเอง) → เสนอเริ่มงานแรกด้วย `/warnyin:discovery` หรือ `/warnyin:design`
@@ -1,11 +1,11 @@
1
1
  ---
2
- description: ติดตั้ง skill เสริมประจำ role (SA/PO/Developer/QA ฯลฯ) ตามตารางใน warnyin/workflow/roles/README.md
2
+ description: ติดตั้ง skill เสริมประจำ role (SA/PO/Developer/QA ฯลฯ) ตามตารางใน .warnyin/workflow/roles/README.md
3
3
  argument-hint: "[ชื่อ role เช่น sa, qa — เว้นว่าง = ทั้งหมด]"
4
4
  ---
5
5
 
6
6
  ทำหน้าที่ติดตั้ง skill เสริมประจำ role ของ Warnyin Standard Workflow
7
7
 
8
- 1. อ่านตาราง **"Skill เสริมต่อ role"** ใน `warnyin/workflow/roles/README.md` — นั่นคือ single source of truth ของรายการ skill (**ห้าม hardcode รายการในไฟล์นี้** — แก้รายการให้แก้ที่ตารางนั้น)
8
+ 1. อ่านตาราง **"Skill เสริมต่อ role"** ใน `.warnyin/workflow/roles/README.md` — นั่นคือ single source of truth ของรายการ skill (**ห้าม hardcode รายการในไฟล์นี้** — แก้รายการให้แก้ที่ตารางนั้น)
9
9
  2. **เช็คสถานะก่อน:** ตัวไหนติดตั้งแล้วบ้าง — ดูจาก `npx skills ls -g` (ถ้าไม่มีคำสั่งนี้ให้ดูโฟลเดอร์ `~/.agents/skills/` และ `~/.claude/skills/`) — สรุปเป็นตาราง ติดตั้งแล้ว ✅ / ยังไม่ติดตั้ง ⬜
10
10
  3. ขอบเขต: $ARGUMENTS ระบุ role → เฉพาะ skill ของ role นั้น; เว้นว่าง → ทุกตัวที่ยังไม่ติดตั้ง
11
11
  4. **ให้ user เลือกก่อนติดตั้ง:** ใช้ AskUserQuestion (multiSelect) แสดงแต่ละตัวพร้อม ที่มา (`owner/repo@skill`) + คำเตือนว่าเป็น third-party (ไม่ใช่ official, ตรวจเนื้อหาได้ที่ skills.sh)
@@ -5,11 +5,11 @@ argument-hint: "[slug (optional — ไม่ระบุ = สแกนทุ
5
5
 
6
6
  ทำหน้าที่เป็น status reporter ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 1. อ่าน `warnyin/workflow/next.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
8
+ 1. อ่าน `.warnyin/workflow/next.md` ให้ครบก่อน แล้วทำตามทุกหลักการในนั้นอย่างเคร่งครัด
9
9
  (**read-only เด็ดขาด — ห้ามสร้าง/แก้/ลบไฟล์ใดๆ**, สรุปจาก evidence ในไฟล์จริง, แนะนำแล้วหยุด)
10
10
  2. ขอบเขต: $ARGUMENTS
11
- - ระบุ slug → เช็คเฉพาะ `warnyin/stages/<slug>/`
12
- - ไม่ระบุ → สแกนทุก topic ใน `warnyin/stages/` (ยกเว้น `achieved/`)
11
+ - ระบุ slug → เช็คเฉพาะ `docs/stages/<slug>/`
12
+ - ไม่ระบุ → สแกนทุก topic ใน `docs/stages/` (ยกเว้น `achieved/`)
13
13
  3. ต่อ topic: ระบุ stage ปัจจุบันจาก artifact ที่ถูกเติมจริง (ไฟล์ที่ยังเป็นโครง template = ยังไม่ทำ)
14
14
  + ไล่ gate ของ playbook stage นั้น + สถานะ task ใน `tasks/*/task.md`
15
15
  4. รายงานในแชท: ตารางภาพรวม (topic · stage · งานค้าง · command ถัดไป) + รายละเอียดงานค้าง + ลำดับงานที่แนะนำ
@@ -5,12 +5,12 @@ argument-hint: "[slug ของ topic]"
5
5
 
6
6
  ทำหน้าที่เป็นผู้ส่งมอบ (SHIP) ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 1. อ่าน `warnyin/workflow/stages/ship.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
9
- 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ ship topic ไหน (ดูโฟลเดอร์ใน `warnyin/stages/`)
10
- 3. **อ่านทำความเข้าใจ topic:** อ่าน `warnyin/stages/<slug>/` ทุกไฟล์ (รวม `tasks/*/rule.md` section "รอ SHIP" + `standard.md`) — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง; เช็คว่า VERIFY ผ่าน Gate แล้ว (`verify.md` สรุปผลผ่าน) — ถ้ายังไม่ผ่าน → หยุด แจ้ง user
8
+ 1. อ่าน `.warnyin/workflow/stages/ship.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
9
+ 2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ ship topic ไหน (ดูโฟลเดอร์ใน `docs/stages/`)
10
+ 3. **อ่านทำความเข้าใจ topic:** อ่าน `docs/stages/<slug>/` ทุกไฟล์ (รวม `tasks/*/rule.md` section "รอ SHIP" + `standard.md`) — topic นี้ทำอะไร ทำอย่างไร เกิดความรู้ใหม่อะไรบ้าง; เช็คว่า VERIFY ผ่าน Gate แล้ว (`verify.md` สรุปผลผ่าน) — ถ้ายังไม่ผ่าน → หยุด แจ้ง user
11
11
  4. **จำแนก feature:** feature ใหม่ หรือปรับปรุง feature เดิม (เทียบกับ `docs/features/` ที่มีอยู่)
12
12
  5. **ขออนุมัติครั้งเดียว** — ใช้ AskUserQuestion สรุป promotion plan: feature ใหม่/ปรับปรุง, ไฟล์กลางที่จะอัปเดต + สาระที่จะใส่, ชื่อโฟลเดอร์ archive → รอ go/no-go (อย่าแก้ไฟล์ใดก่อนได้ไฟเขียว)
13
- 6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `warnyin/stages/<slug>/` → `warnyin/stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv`; วันที่ = วันที่ ship) แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
13
+ 6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `docs/stages/<slug>/` → `docs/stages/achieved/<YYYY-MM-DD>-<slug>/` (ใช้ `git mv`; วันที่ = วันที่ ship) แล้วอ่านเนื้อหาจาก path ใหม่ระหว่าง promote
14
14
  7. **อัปเดตเอกสารกลาง** (กลั่นเข้าโครงสร้างไฟล์เดิม ไม่ copy ดิบ, ระวัง duplicate):
15
15
  - `docs/features/<feature-name>/` — ใหม่ → สร้าง (feature.md + business.md); เดิม → อัปเดต โดยใช้ business/proposal/design ของ topic
16
16
  - `docs/techstack/<component>/{rule,standard}.md` — จาก note "รอ SHIP" (พิจารณาครบทุกข้อ: promote หรือตัดทิ้งพร้อมเหตุผล)
@@ -18,7 +18,7 @@ argument-hint: "[slug ของ topic]"
18
18
  - `docs/rule.md` — global rule ใหม่/ที่เปลี่ยน (เฉพาะกฎระดับโปรเจกต์)
19
19
  - `docs/troubleshooting.md` — merge entry จาก `troubleshooting.md` ของ topic
20
20
  - `docs/infra.md` + `docs/project.md` — เฉพาะถ้ามีข้อมูลเกี่ยวข้อง
21
- - `docs/codemap/` ทั้งหมด — อัปเดตให้ตรงโค้ดจริงปัจจุบัน ตาม `warnyin/workflow/codemap.md` (= ขั้นตอนเดียวกับ `/warnyin:update-codemaps`)
21
+ - `docs/codemap/` ทั้งหมด — อัปเดตให้ตรงโค้ดจริงปัจจุบัน ตาม `.warnyin/workflow/codemap.md` (= ขั้นตอนเดียวกับ `/warnyin:update-codemaps`)
22
22
  8. **เขียนสรุป** `achieved/<YYYY-MM-DD>-<slug>/ship.md` (feature ใหม่/ปรับปรุง + ตารางเอกสารที่อัปเดต + note ที่ตัดทิ้งพร้อมเหตุผล) → รายงาน user ว่าส่งมอบครบ topic ปิดสมบูรณ์
23
23
 
24
24
  หมายเหตุ:
@@ -4,7 +4,7 @@ description: Scan project structure and generate token-lean architecture codemap
4
4
 
5
5
  ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน
6
6
 
7
- 1. อ่าน `warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด
7
+ 1. อ่าน `.warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด
8
8
  2. **Step 1 — สแกน:** ระบุชนิดโปรเจกต์, source dirs, entry points — fan-out sub-agent (Explore, read-only) ขนานต่อ component/พื้นที่ได้
9
9
  3. **Step 2 — สร้าง/อัปเดต `docs/codemap/`:** index / architecture / backend / frontend / data / dependencies — **เฉพาะไฟล์ที่ relevant**, รูปแบบ token-lean (< 1000 tokens/ไฟล์, path + signature, ASCII diagram)
10
10
  4. **Step 3 — diff detection:** มี codemap เดิม → คำนวณ % เปลี่ยนแปลง; **> 30% → แสดง diff + AskUserQuestion ขออนุมัติก่อนเขียนทับ**; ≤ 30% → อัปเดตเลย
@@ -5,15 +5,15 @@ argument-hint: "[slug ของ topic]"
5
5
 
6
6
  ทำหน้าที่เป็น strategy tester ตาม **playbook กลาง** ของ workflow มาตรฐาน
7
7
 
8
- 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:verify <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/stages/<slug>/` ครบ) — อย่าเริ่มลูปเทส-แก้ทั้งที่ context ใกล้เต็ม
9
- 1. อ่าน `warnyin/workflow/stages/verify.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
8
+ 0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:verify <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `docs/stages/<slug>/` ครบ) — อย่าเริ่มลูปเทส-แก้ทั้งที่ context ใกล้เต็ม
9
+ 1. อ่าน `.warnyin/workflow/stages/verify.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
10
10
  2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ verify topic ไหน
11
11
  3. **เข้าใจจุดประสงค์ก่อนเทส:** อ่าน `tasks/*/spec.md` + `task.md`, `design.md`, `proposal.md` ทั้งหมดให้เข้าใจดี แล้วค่อยเทสตามเจตนาของ topic
12
12
  4. **guideline:** อ่าน `docs/techstack/<component>/test.md` ว่าเทสยังไง (เช่น FE: e2e smoke ผ่าน playwright-cli) — ไม่มีก็เสนอวิธีแล้วเขียนแผนเอง; ดู `docs/infra.md` สำหรับ local env
13
- 5. **เขียนแผนลง** `warnyin/stages/<slug>/test.md`
13
+ 5. **เขียนแผนลง** `docs/stages/<slug>/test.md`
14
14
  6. **เทสจริงใน local env:** รัน service ที่เกี่ยวข้อง (ใช้ skill `run`/`verify` ช่วย launch ได้) → รันเทสตามแผน; FE → e2e smoke + ตรวจ UX/UI
15
- 7. **ข้อไหนไม่ผ่าน → แก้ → rerun** วนจนผ่าน **นับจำนวนการแก้ไข**; เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน, ปัญหายาก/ซ้ำที่แก้ได้ → บันทึก `warnyin/stages/<slug>/troubleshooting.md`
15
+ 7. **ข้อไหนไม่ผ่าน → แก้ → rerun** วนจนผ่าน **นับจำนวนการแก้ไข**; เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน, ปัญหายาก/ซ้ำที่แก้ได้ → บันทึก `docs/stages/<slug>/troubleshooting.md`
16
16
  8. **ถ้านาน/วนหลายรอบเกินไป → ถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนเงียบไม่จบ)
17
- 9. **เขียนสรุป** `warnyin/stages/<slug>/verify.md` (ผลเทส + รายการแก้ไข + จำนวนรอบ + ผล UXUI) → เสนอเข้า SHIP ด้วย `/warnyin:ship`
17
+ 9. **เขียนสรุป** `docs/stages/<slug>/verify.md` (ผลเทส + รายการแก้ไข + จำนวนรอบ + ผล UXUI) → เสนอเข้า SHIP ด้วย `/warnyin:ship`
18
18
 
19
19
  หมายเหตุ: ห้ามแตะไฟล์กลางใน `docs/` — `test.md` เขียนระดับ topic ก่อน รอ SHIP merge. เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
@@ -4,26 +4,26 @@
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
11
 
12
12
  ## Slash commands (namespace `warnyin:`)
13
- - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`warnyin/workflow/init.md`)
14
- - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการ: `warnyin/workflow/roles/README.md`)
15
- - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean (`warnyin/workflow/codemap.md`)
16
- - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact (`warnyin/workflow/explore.md`)
17
- - `/warnyin:next [slug]` → เช็คงานค้าง + แนะนำ command ถัดไป แบบ read-only (`warnyin/workflow/next.md`)
18
- - `/warnyin:discovery [topic]` → Discovery stage (`warnyin/workflow/stages/discovery.md`)
19
- - `/warnyin:design [slug] [change]` → DESIGN stage (`warnyin/workflow/stages/design.md`)
20
- - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`warnyin/workflow/stages/build.md` + `warnyin/workflow/scripts/build-wave.mjs`)
21
- - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`warnyin/workflow/stages/verify.md`)
22
- - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`warnyin/workflow/stages/ship.md`)
13
+ - `/warnyin:init` → วิเคราะห์โปรเจกต์ + เติม `docs/` ครั้งแรกหลังติดตั้ง (`.warnyin/workflow/init.md`)
14
+ - `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการ: `.warnyin/workflow/roles/README.md`)
15
+ - `/warnyin:update-codemaps` → สแกนโครงสร้าง + สร้าง/อัปเดต codemap แบบ token-lean (`.warnyin/workflow/codemap.md`)
16
+ - `/warnyin:explore [คำถาม]` → สำรวจ/ตอบคำถามแบบ read-only — ไม่สร้าง artifact (`.warnyin/workflow/explore.md`)
17
+ - `/warnyin:next [slug]` → เช็คงานค้าง + แนะนำ command ถัดไป แบบ read-only (`.warnyin/workflow/next.md`)
18
+ - `/warnyin:discovery [topic]` → Discovery stage (`.warnyin/workflow/stages/discovery.md`)
19
+ - `/warnyin:design [slug] [change]` → DESIGN stage (`.warnyin/workflow/stages/design.md`)
20
+ - `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`.warnyin/workflow/stages/build.md` + `.warnyin/workflow/scripts/build-wave.mjs`)
21
+ - `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`.warnyin/workflow/stages/verify.md`)
22
+ - `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`.warnyin/workflow/stages/ship.md`)
23
23
 
24
24
  ## รองรับหลาย AI
25
25
  Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
26
- ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `warnyin/workflow/stages/` — ดูภาพรวมที่ `warnyin/workflow/README.md`
26
+ ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `.warnyin/workflow/stages/` — ดูภาพรวมที่ `.warnyin/workflow/README.md`
27
27
 
28
28
  ## อัปเดต workflow
29
- `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`warnyin/workflow/`, `.claude/commands/warnyin/`, template `warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `warnyin/stages/`
29
+ `npx @warnyin/agents --update` — เขียนทับเฉพาะ playbook กลาง (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template `.warnyin/template/stages/[topic]/`) ไม่แตะ `docs/` และงานจริงใน `docs/stages/`
@@ -1,6 +1,6 @@
1
1
  # Code Map — Index
2
2
 
3
- > สารบัญ codemap ทั้งชุด — สร้าง/อัปเดตด้วย `/warnyin:update-codemaps` (playbook: `warnyin/workflow/codemap.md`)
3
+ > สารบัญ codemap ทั้งชุด — สร้าง/อัปเดตด้วย `/warnyin:update-codemaps` (playbook: `.warnyin/workflow/codemap.md`)
4
4
  > ทุกไฟล์ต้อง token-lean (< 1000 tokens) + freshness header + ตรงโค้ดจริงเสมอ
5
5
 
6
6
  ## Codemap files
@@ -2,7 +2,7 @@
2
2
 
3
3
  > คลังความรู้ปัญหา-วิธีแก้ของทั้งโปรเจกต์ — สะสมจากทุก topic
4
4
  > **อ่านไฟล์นี้ก่อนเสมอเมื่อเจอ build error / ปัญหาระหว่างทำงาน** เผื่อเคยแก้แล้ว
5
- > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `warnyin/stages/<topic>/troubleshooting.md` มารวมที่นี่ (ลบของซ้ำ/รวมที่คล้ายกัน)
5
+ > ป้อนเข้ามาตอน **SHIP**: ยก entry ที่มีค่าจาก `docs/stages/<topic>/troubleshooting.md` มารวมที่นี่ (ลบของซ้ำ/รวมที่คล้ายกัน)
6
6
 
7
7
  ---
8
8
 
@@ -1,6 +1,6 @@
1
1
  # Build Report — <ชื่อ change>
2
2
 
3
- > Output ของ BUILD stage · playbook: `warnyin/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 (ดู `warnyin/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: `warnyin/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: `warnyin/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: `warnyin/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 (ดู `warnyin/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: `warnyin/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: `warnyin/workflow/stages/discovery.md`
3
+ > Output ของ Discovery stage · playbook: `.warnyin/workflow/stages/discovery.md`
4
4
  > ที่เก็บ "ข้อมูลที่ค้นมา + หลักฐาน" สนับสนุนการตัดสินใจใน `discovery.md`
5
5
 
6
6
  | | |