@warnyin/agents 0.9.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +110 -105
  2. package/README.md +148 -148
  3. package/package.json +38 -38
  4. package/src/.claude/agents/warnyin-infra.md +13 -13
  5. package/src/.claude/agents/warnyin-qa.md +13 -13
  6. package/src/.claude/agents/warnyin-sa.md +13 -13
  7. package/src/.claude/agents/warnyin-security.md +13 -13
  8. package/src/.claude/agents/warnyin-tech-lead.md +13 -13
  9. package/src/.claude/commands/warnyin/build.md +30 -30
  10. package/src/.claude/commands/warnyin/design.md +26 -26
  11. package/src/.claude/commands/warnyin/discovery.md +17 -17
  12. package/src/.claude/commands/warnyin/explore.md +14 -14
  13. package/src/.claude/commands/warnyin/init.md +12 -12
  14. package/src/.claude/commands/warnyin/install-skill.md +14 -14
  15. package/src/.claude/commands/warnyin/next.md +17 -17
  16. package/src/.claude/commands/warnyin/ship.md +28 -28
  17. package/src/.claude/commands/warnyin/update-codemaps.md +12 -12
  18. package/src/.claude/commands/warnyin/verify.md +20 -20
  19. package/src/.claude/skills/explore/SKILL.md +8 -8
  20. package/src/.claude/skills/next/SKILL.md +8 -8
  21. package/src/.claude/skills/update-codemaps/SKILL.md +8 -8
  22. package/src/.warnyin/installer/templates/CLAUDE.md +29 -29
  23. package/src/.warnyin/template/docs/codemap/index.md +18 -18
  24. package/src/.warnyin/template/docs/features/[feature-name]/business.md +5 -5
  25. package/src/.warnyin/template/docs/features/[feature-name]/feature.md +5 -5
  26. package/src/.warnyin/template/docs/features/[feature-name]/spec.md +16 -16
  27. package/src/.warnyin/template/docs/infra.md +16 -16
  28. package/src/.warnyin/template/docs/project.md +18 -18
  29. package/src/.warnyin/template/docs/rule.md +7 -7
  30. package/src/.warnyin/template/docs/techstack/[component]/about.md +6 -6
  31. package/src/.warnyin/template/docs/techstack/[component]/rule.md +6 -6
  32. package/src/.warnyin/template/docs/techstack/[component]/standard.md +6 -6
  33. package/src/.warnyin/template/docs/techstack/[component]/structure.md +7 -7
  34. package/src/.warnyin/template/docs/techstack/[component]/test.md +7 -7
  35. package/src/.warnyin/template/docs/troubleshooting.md +32 -32
  36. package/src/.warnyin/template/stages/[topic]/build.md +58 -58
  37. package/src/.warnyin/template/stages/[topic]/business.md +21 -21
  38. package/src/.warnyin/template/stages/[topic]/design.md +57 -57
  39. package/src/.warnyin/template/stages/[topic]/discovery.md +69 -69
  40. package/src/.warnyin/template/stages/[topic]/proposal.md +43 -43
  41. package/src/.warnyin/template/stages/[topic]/research.md +49 -49
  42. package/src/.warnyin/template/stages/[topic]/ship.md +32 -32
  43. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/issue.md +19 -19
  44. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/rule.md +13 -13
  45. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/spec.md +36 -36
  46. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/standard.md +21 -21
  47. package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/task.md +39 -39
  48. package/src/.warnyin/template/stages/[topic]/test.md +46 -46
  49. package/src/.warnyin/template/stages/[topic]/troubleshooting.md +34 -34
  50. package/src/.warnyin/template/stages/[topic]/verify.md +44 -44
  51. package/src/.warnyin/workflow/README.md +101 -100
  52. package/src/.warnyin/workflow/api-doc.md +93 -0
  53. package/src/.warnyin/workflow/codemap.md +91 -91
  54. package/src/.warnyin/workflow/contexts/README.md +49 -49
  55. package/src/.warnyin/workflow/contexts/build.md +25 -25
  56. package/src/.warnyin/workflow/contexts/research.md +25 -25
  57. package/src/.warnyin/workflow/contexts/review.md +25 -25
  58. package/src/.warnyin/workflow/explore.md +32 -32
  59. package/src/.warnyin/workflow/init.md +125 -125
  60. package/src/.warnyin/workflow/next.md +48 -48
  61. package/src/.warnyin/workflow/roles/README.md +47 -46
  62. package/src/.warnyin/workflow/roles/ba.md +25 -25
  63. package/src/.warnyin/workflow/roles/developer.md +30 -30
  64. package/src/.warnyin/workflow/roles/infra.md +24 -24
  65. package/src/.warnyin/workflow/roles/po.md +28 -28
  66. package/src/.warnyin/workflow/roles/qa.md +35 -35
  67. package/src/.warnyin/workflow/roles/sa.md +28 -28
  68. package/src/.warnyin/workflow/roles/security.md +39 -39
  69. package/src/.warnyin/workflow/roles/tech-lead.md +28 -28
  70. package/src/.warnyin/workflow/scripts/build-wave.mjs +125 -125
  71. package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
  72. package/src/.warnyin/workflow/stages/build.md +98 -98
  73. package/src/.warnyin/workflow/stages/design.md +122 -119
  74. package/src/.warnyin/workflow/stages/discovery.md +78 -78
  75. package/src/.warnyin/workflow/stages/ship.md +92 -90
  76. package/src/.warnyin/workflow/stages/verify.md +80 -77
  77. package/src/AGENTS.md +48 -48
  78. package/src/bin/cli.mjs +193 -193
package/CHANGELOG.md CHANGED
@@ -1,105 +1,110 @@
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
- ## Migration guide
9
-
10
- อัปเกรดจากรุ่นเก่าที่ layout ต่างไป (installer จะ **เตือนให้ย้ายเอง ไม่แตะงานจริงของคุณ**):
11
-
12
- > **ลำดับที่แนะนำ: ย้ายงานจริงก่อน แล้วค่อยรัน `npx @warnyin/agents`**
13
- > คำสั่งย้ายด้านล่างใช้รูปแบบ `git mv <เก่า>/* docs/stages/` (ย้าย *เนื้อหา* ไม่ใช่ทั้งโฟลเดอร์) จึงปลอดภัยทั้งกรณีที่ยังไม่มี `docs/stages/` และกรณีที่เผลอรัน installer ไปก่อน (installer สร้าง `docs/stages/` เปล่าให้แล้ว) — กันงานจริงไปซ้อนเป็น `docs/stages/stages/`
14
-
15
- | จากรุ่น | layout เดิม | ต้องทำเอง (งานจริงปลอดภัย ไม่ถูกแตะ) |
16
- |---|---|---|
17
- | **≤0.2.x** | core `workflow/` + งานจริง `warnyin-stages/` ที่ root | `mkdir -p docs/stages && git mv warnyin-stages/* docs/stages/` แล้วลบ core เก่า `rm -rf workflow warnyin-stages` |
18
- | **0.3–0.5.x** | ทุกอย่างใต้ `warnyin/{workflow,template,installer,stages}` | `mkdir -p docs/stages && git mv warnyin/stages/* docs/stages/` แล้วลบ core เก่า `rm -rf warnyin` |
19
-
20
- จากนั้นรัน installer อีกครั้ง — installer จะวาง `.warnyin/` (core) ชุดใหม่ + แยกงานจริงไว้ที่ `docs/stages/` ให้
21
-
22
- > **0.6.0 → 0.7.0:** ผู้ใช้ปลายทาง (`npx @warnyin/agents`) **ไม่ต้องทำอะไร** — payload ที่ติดตั้งคงเดิม การเปลี่ยนแปลงทั้งหมด (bin path → `src/`, dogfood 2-layer) เป็นเรื่องภายใน repo เท่านั้น; ผู้พัฒนา repo เอง (contributor) ดู [`CONTRIBUTING.md`](CONTRIBUTING.md)
23
-
24
- ## [Unreleased]
25
-
26
- ## [0.9.1] - 2026-06-08
27
-
28
- ### Fixed
29
- - **BUILD worktree เห็น dependency ครบทุก wave (build-wave sync build branch)** — harness fork worktree จาก **main** (คุมไม่ได้) ทำให้ build sub-agent ไม่เห็น `docs/stages/<slug>/` (topic docs) + output ของ wave ก่อนหน้า แล้ว improvise (KB#14). แก้ที่ payload แบบ **unify-in-place**: `src/.warnyin/workflow/scripts/build-wave.mjs` รับ arg `baseRef?` (ชื่อ build branch) + แทรก prompt **step `0.`** ให้ agent `git merge <baseRef> --no-edit` เป็นงานแรกก่อนอ่าน task **เฉพาะ `isolate && baseRef`** (`!baseRef` ไม่แทรก = backward compat ไม่ renumber step 1-9) มี **abort-on-conflict** (`|| git merge --abort` กันค้าง MERGE state) + retry transient lock + **hard-stop** (merge สำเร็จแต่ `task.md` ไม่ปรากฏ STOP failed ห้าม improvise) + บันทึกผล merge ใน `notes`; command `src/.claude/commands/warnyin/build.md` step 6 ส่ง `baseRef` + integrate ด้วย `git checkout <branch> -- <scoped src files>` (เลี่ยง topic-docs copy + ปลอด KB#11 tracked-deletion); playbook `src/.warnyin/workflow/stages/build.md` §3 principle 3 + §4 step 5 อธิบายกลไก. **backward compatible** (caller ไม่ส่ง `baseRef`/`isolate:false` → พฤติกรรมเดิม); payload ติดมากับ `--update` รอบถัดไป
30
-
31
- ## [0.9.0] - 2026-06-08
32
-
33
- ### Added
34
- - **Structural validator + status script (`validate-topic.mjs`) wired เข้า workflow 3 จุด** script เดียวใน payload (`src/.warnyin/workflow/scripts/validate-topic.mjs`, zero-dep ตาม pattern `lint-md.mjs`) 2 โหมด: **status** (ไม่ใส่ arg ตารางทุก active topic, exit 0 เสมอ) · **validate** (`<slug>``✖`/`⚠` structural ละเอียด มี code C1–C5 กำกับ, exit 1 เมื่อมี · 0 เมื่อสะอาด/มีแค่ · 2 slug ไม่ถูกต้อง/path traversal). wire เข้า playbook **3 จุดแบบ unify-in-place + node-guard ทุกจุด**: `next.md` (§2 step pre-scan โหมด status ก่อนอ่าน semantic ตาราง heuristic เดิมคง fallback) · `stages/design.md` (§8 gate item "ทุก task มี 4 ไฟล์ครบ" validate `<slug>` ควรไม่มี ✖, guidance ไม่ใช่ hard gate) · `stages/ship.md` (§4 step 1 → validate `<slug>` ก่อน promote, มี ✖ ควรแก้ก่อน) + command mirror `next/design/ship` (ชี้ playbook ไม่ duplicate รายการเช็ค). **structural เท่านั้น** — semantic ยังเป็นหน้าที่ model/ผู้ ship; **backward compatible** (เครื่องไม่มี nodeplaybook คง fallback เดิม); payload ติดมากับ `--update` รอบถัดไป
35
- - **วงจร Feature spec delta ครบ 3 stage (DESIGN/VERIFY/SHIP)** — wiring discipline ของ behavior spec แบบ unify-in-place ลง playbook กลาง + template + command adapter: `src/.warnyin/workflow/stages/design.md` (§2 input อ่าน `docs/features/<name>/spec.md` · §4 step 5 + §5 + §8 gate ครอบ "Spec delta") · `verify.md` (feature spec = regression baseline — scenario เดิม = regression case, delta = test case ใหม่; §2/§3/§4/§6) · `ship.md` (§4 step 5.1 merge `spec.md` ตาม delta — ADDED ต่อท้าย/MODIFIED แทนที่/REMOVED ลบ + **read-modify-verify key ไม่เจอ → STOP** + rename `[เดิมชื่อ:]` + stale delta re-check; §3/§5/§6 gate) · template `stages/[topic]/design.md` (+section "9. Spec delta") + `ship.md` (+แถว `spec.md`) · `src/.warnyin/workflow/README.md` note `spec.md` (living behavior spec) · command mirror `design/verify/ship` (ชี้ playbook ไม่ duplicate logic). **backward compatible** (feature ไม่มี spec → วิธีเดิม; topic ไม่มี §9 delta → SHIP ทำแบบเดิม); payload `.md` ล้วน ติดมากับ `--update` รอบถัดไป
36
-
37
- ## [0.8.5] - 2026-06-07
38
-
39
- ### Added
40
- - **Model-tier guidance ใน context profile** — `src/.warnyin/workflow/contexts/{research,build,review}.md` เพิ่มบรรทัด "Model tier" ใน section Tool preference (generic: `research`→`deepest reasoning` · `build`→`balanced`/fan-out worker เชิงกลไก→`cheap` · `review`→`balanced+`) + ตาราง legend ใน `contexts/README.md` แนะนำ model tier ตาม posture เพื่อคุม token/cost; **tool-agnostic** ไม่ผูกชื่อรุ่น (harness map เอง) · global `docs/rule.md` §1 payload-guidance-generic `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
41
- - **Worked-example pointer ใน README** — section "ตัวอย่างจริง (worked example)" ชี้ `docs/example-walkthrough.md` (เดิน topic จริง `cli-legacy-warning-fix` ครบ 5 stage บน repo) ให้ผู้ใช้ใหม่เห็น artifact จริง
42
-
43
- ## [0.8.4] - 2026-06-07
44
-
45
- ### Added
46
- - **Utility skills (Claude adapter, auto-invocable)** — 3 safe utility skill ใหม่ `src/.claude/skills/{update-codemaps,explore,next}/SKILL.md` (`/update-codemaps`, `/explore`, `/next`): Claude project skill ที่ model **auto-invoke ได้เอง (description-driven)** body ชี้ playbook กลางเดิม (`.warnyin/workflow/{codemap,explore,next}.md`) ไม่ duplicate — auto-invoke เฉพาะ utility **read-only safe**; ผู้ใช้ปลายทางรับ skills อัตโนมัติตอน `npx @warnyin/agents` / `--update`. command `/warnyin:*` เดิม **ไม่เปลี่ยน** (non-breaking); build/ship คงเป็น command user-only (irreversible). global `docs/rule.md` §1 skill-adapter convention
47
-
48
- ### Changed
49
- - **installer/packaging รองรับ skills** — `cli.mjs` CORE +`.claude/skills`; `package.json files` +`src/.claude/skills` (nested dotfolder ระบุชัด); `verify-pack` ALLOWED_PREFIX +`src/.claude/skills/` + R1 assert `hasSkills` (skills เป็น required payload กันหล่นเงียบ); test suite 18→19 (verify-pack 9→10)
50
-
51
- ## [0.8.3] - 2026-06-07
52
-
53
- ### Added
54
- - **Learned-rule capture ใน SHIP** — `ship.md` playbook (§3 principle 7 ขยาย + §4 step 1/3/5 + §6 gate) + command + template `[topic]/ship.md` (section "Learned rules"): จับ rule ที่ได้จากการทำจริง (planned + emergent จาก build/verify/troubleshooting) ด้วย `rule + evidence(บังคับ) + scope` แล้ว user ยืนยัน per-rule ก่อน promote — unify กับกลไก "รอ SHIP" เดิม; global `docs/rule.md` §1 + continuous-learning discipline + unify-in-place `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
55
-
56
- ## [0.8.2] - 2026-06-07
57
-
58
- ### Added
59
- - **Security checklist (agent-runtime + supply-chain)** — `roles/security.md` เพิ่ม section "Runtime / operational security" (secret isolation · no-egress · identity separation + Claude adapter note) + checklist item supply-chain/MCP (prompt-injection surface); `verify.md` §2 อ้าง runtime security ตอนรัน local env; `install-skill.md` step 4 เสริม warning prompt-injection; global `docs/rule.md` §3 ขยายเป็น Security baseline 2 มิติ (CI + agent-runtime) — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
60
-
61
- ## [0.8.1] - 2026-06-07
62
-
63
- ### Added
64
- - **Defensive rules** ใน BUILD/VERIFY playbook (§3) + developer.md/qa.md checklist + global `docs/rule.md` §1 เวอร์ชัน enforce ของ "ห้ามเดา": (1) **investigate-before-edit** ก่อนแก้ไฟล์ที่มีอยู่ต้องเข้าใจ (ใครใช้/contract/เจตนา), (2) **config-protection** ห้ามแก้ config/test "เพื่อให้ผ่าน" แทนแก้โค้ดจริง — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
65
-
66
- ## [0.8.0] - 2026-06-07
67
-
68
- ### Added
69
- - **Context profiles** (`.warnyin/workflow/contexts/{research,build,review,README}.md`)session-level posture 3 โหมด (สำรวจ/สร้าง/ตรวจ) คู่ขนานกับ role card (task-level lens); playbook แต่ละ stage มี callout ชี้ context ที่เข้าคู่ (Discovery→research · DESIGN→research+build · BUILD→build · VERIFY→review · SHIP→review) — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป ไม่ต้องตั้งค่าเพิ่ม
70
-
71
- ### Fixed
72
- - โครงสร้าง repo ใน `.warnyin/workflow/README.md` ให้ตรง layout จริงหลัง restructure 0.7.0 (`src/` layer + `.warnyin/`) — เดิมยังเป็น layout เก่า (`warnyin/`, `bin/cli.mjs`)
73
-
74
- ## [0.7.0] - 2026-06-07
75
-
76
- ### Added
77
- - **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 ที่ใช้ทำงานยังเสถียร
78
- - `npm run setup:dogfood` — คืน dogfood env ที่ root จาก release (`npx @latest` + fallback `npm pack`→extract→node สำหรับ Windows), append pointer → `CONTRIBUTING.md` แบบ idempotent
79
- - `npm run setup:sandbox` — install v-next จาก `src/` ลง temp dir (`os.tmpdir()`) เพื่อทดสอบ version skew โดยไม่แตะ dogfood ที่ root
80
- - `CONTRIBUTING.md` — dev-instructions ของ repo (แยกจาก root `CLAUDE.md` เดิม)
81
- - pass-count gate (`src/scripts/check-test-count.mjs`) — anti-false-green: fail ถ้า `fail≠0` / `pass<9` / `pass≠tests`
82
- - Automated installer test suite (`node:test` black-box spawn `src/bin/cli.mjs` จริงใน temp dir แล้ว assert side-effect) + unit test `checkFiles` รันด้วย `npm test`
83
- - GitHub Actions CI (`.github/workflows/ci.yml`)matrix node 20/22/24 + job `pack-verify`
84
- - 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
85
-
86
- ### Changed
87
- - **bin path** `bin/cli.mjs` `src/bin/cli.mjs` (restructure source เข้า `src/`) `pkgRoot` resolve เป็น `src/` อัตโนมัติ, payload คงเดิม
88
- - `package.json files` เป็น allowlist granular nested dotfolder ระบุชัด (`src/.warnyin`, `src/.claude/commands`, `src/.claude/agents`); ตัด `src/tests`/`src/scripts` (dev-only)
89
- - test/scripts ย้ายไป `src/tests/` + `src/scripts/`; `npm test` = `node --test` bare (auto-discover, portable node 20/22/24)
90
- - `engines.node` `>=18` → `>=20` (node 18 EOL)
91
- - `.gitignore` เพิ่ม dogfood layer (root-anchored ทุกบรรทัด — กัน match `src/.claude`/`src/.warnyin`)
92
-
93
- ### Removed
94
- - รองรับ node 18 (drop ตาม EOL)
95
-
96
- [Unreleased]: https://github.com/warnyin/warnyin-agents/compare/v0.9.1...HEAD
97
- [0.9.1]: https://github.com/warnyin/warnyin-agents/compare/v0.9.0...v0.9.1
98
- [0.9.0]: https://github.com/warnyin/warnyin-agents/compare/v0.8.5...v0.9.0
99
- [0.8.5]: https://github.com/warnyin/warnyin-agents/compare/v0.8.4...v0.8.5
100
- [0.8.4]: https://github.com/warnyin/warnyin-agents/compare/v0.8.3...v0.8.4
101
- [0.8.3]: https://github.com/warnyin/warnyin-agents/compare/v0.8.2...v0.8.3
102
- [0.8.2]: https://github.com/warnyin/warnyin-agents/compare/v0.8.1...v0.8.2
103
- [0.8.1]: https://github.com/warnyin/warnyin-agents/compare/v0.8.0...v0.8.1
104
- [0.8.0]: https://github.com/warnyin/warnyin-agents/compare/v0.7.0...v0.8.0
105
- [0.7.0]: https://github.com/warnyin/warnyin-agents/compare/v0.6.0...v0.7.0
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
+ ## Migration guide
9
+
10
+ อัปเกรดจากรุ่นเก่าที่ layout ต่างไป (installer จะ **เตือนให้ย้ายเอง ไม่แตะงานจริงของคุณ**):
11
+
12
+ > **ลำดับที่แนะนำ: ย้ายงานจริงก่อน แล้วค่อยรัน `npx @warnyin/agents`**
13
+ > คำสั่งย้ายด้านล่างใช้รูปแบบ `git mv <เก่า>/* docs/stages/` (ย้าย *เนื้อหา* ไม่ใช่ทั้งโฟลเดอร์) จึงปลอดภัยทั้งกรณีที่ยังไม่มี `docs/stages/` และกรณีที่เผลอรัน installer ไปก่อน (installer สร้าง `docs/stages/` เปล่าให้แล้ว) — กันงานจริงไปซ้อนเป็น `docs/stages/stages/`
14
+
15
+ | จากรุ่น | layout เดิม | ต้องทำเอง (งานจริงปลอดภัย ไม่ถูกแตะ) |
16
+ |---|---|---|
17
+ | **≤0.2.x** | core `workflow/` + งานจริง `warnyin-stages/` ที่ root | `mkdir -p docs/stages && git mv warnyin-stages/* docs/stages/` แล้วลบ core เก่า `rm -rf workflow warnyin-stages` |
18
+ | **0.3–0.5.x** | ทุกอย่างใต้ `warnyin/{workflow,template,installer,stages}` | `mkdir -p docs/stages && git mv warnyin/stages/* docs/stages/` แล้วลบ core เก่า `rm -rf warnyin` |
19
+
20
+ จากนั้นรัน installer อีกครั้ง — installer จะวาง `.warnyin/` (core) ชุดใหม่ + แยกงานจริงไว้ที่ `docs/stages/` ให้
21
+
22
+ > **0.6.0 → 0.7.0:** ผู้ใช้ปลายทาง (`npx @warnyin/agents`) **ไม่ต้องทำอะไร** — payload ที่ติดตั้งคงเดิม การเปลี่ยนแปลงทั้งหมด (bin path → `src/`, dogfood 2-layer) เป็นเรื่องภายใน repo เท่านั้น; ผู้พัฒนา repo เอง (contributor) ดู [`CONTRIBUTING.md`](CONTRIBUTING.md)
23
+
24
+ ## [Unreleased]
25
+
26
+ ## [0.10.0] - 2026-06-09
27
+
28
+ ### Added
29
+ - **Adaptive API documentation (OpenAPI 3.1) ตลอด lifecycle** — capability กลางใหม่ `.warnyin/workflow/api-doc.md`: stage **auto-detect** ว่า topic แตะ backend/REST API ไหม (techstack/route/annotation/API task/endpoint change) ถ้าใช่ ผลิต+ยืนยัน+ส่งมอบ **OpenAPI 3.1 contract** ให้อัตโนมัติ (ไม่ใช่ REST API ข้ามเงียบ ไม่ยัดเยียด). เสียบ hook บางๆ เข้า 3 stage โดย **ไม่ duplicate logic**: **DESIGN** ผลิต `docs/stages/<slug>/openapi.yaml` (design-first/code-first/hybrid) + `spec.md` ของ API task ชี้มาที่ contract; **VERIFY** ยืนยัน implementation จริงตรง contract (regen+diff หรือยิง request จริง mismatch = ไม่ผ่าน เข้า fix loop); **SHIP** promote/merge `docs/techstack/<component>/openapi.yaml` (living API contract). เพิ่มเกณฑ์ Gate ทั้ง 3 stage (N/A ถ้าไม่ใช่ REST API). ยึดหลัก **reference ไม่ vendor**: ชี้ skill `openapi-spec-generation` (`wshobson/agents`) เป็น template library + เครื่องมือ (Spectral/Redocly/OpenAPI Generator) แบบติดตั้งเอง เพิ่มแถว SA/Developer ใน `roles/README.md` §"Skill เสริม". tool-agnostic (Codex/Antigravity ใช้ playbook ชุดเดียวกัน); payload ติดมากับ `--update` รอบถัดไป
30
+
31
+ ## [0.9.1] - 2026-06-08
32
+
33
+ ### Fixed
34
+ - **BUILD worktree เห็น dependency ครบทุก wave (build-wave sync build branch)** — harness fork worktree จาก **main** (คุมไม่ได้) ทำให้ build sub-agent ไม่เห็น `docs/stages/<slug>/` (topic docs) + output ของ wave ก่อนหน้า แล้ว improvise (KB#14). แก้ที่ payload แบบ **unify-in-place**: `src/.warnyin/workflow/scripts/build-wave.mjs` รับ arg `baseRef?` (ชื่อ build branch) + แทรก prompt **step `0.`** ให้ agent `git merge <baseRef> --no-edit` เป็นงานแรกก่อนอ่าน task **เฉพาะ `isolate && baseRef`** (`!baseRef`ไม่แทรก = backward compat ไม่ renumber step 1-9) มี **abort-on-conflict** (`|| git merge --abort` กันค้าง MERGE state) + retry transient lock + **hard-stop** (merge สำเร็จแต่ `task.md` ไม่ปรากฏ STOP failed ห้าม improvise) + บันทึกผล merge ใน `notes`; command `src/.claude/commands/warnyin/build.md` step 6 ส่ง `baseRef` + integrate ด้วย `git checkout <branch> -- <scoped src files>` (เลี่ยง topic-docs copy + ปลอด KB#11 tracked-deletion); playbook `src/.warnyin/workflow/stages/build.md` §3 principle 3 + §4 step 5 อธิบายกลไก. **backward compatible** (caller ไม่ส่ง `baseRef`/`isolate:false` พฤติกรรมเดิม); payload ติดมากับ `--update` รอบถัดไป
35
+
36
+ ## [0.9.0] - 2026-06-08
37
+
38
+ ### Added
39
+ - **Structural validator + status script (`validate-topic.mjs`) wired เข้า workflow 3 จุด** — script เดียวใน payload (`src/.warnyin/workflow/scripts/validate-topic.mjs`, zero-dep ตาม pattern `lint-md.mjs`) 2 โหมด: **status** (ไม่ใส่ arg → ตารางทุก active topic, exit 0 เสมอ) · **validate** (`<slug>` → `✖`/`⚠` structural ละเอียด มี code C1–C5 กำกับ, exit 1 เมื่อมี ✖ · 0 เมื่อสะอาด/มีแค่ ⚠ · 2 slug ไม่ถูกต้อง/path traversal). wire เข้า playbook **3 จุดแบบ unify-in-place + node-guard ทุกจุด**: `next.md` (§2 step pre-scan โหมด status ก่อนอ่าน semantic — ตาราง heuristic เดิมคง fallback) · `stages/design.md` (§8 gate item "ทุก task มี 4 ไฟล์ครบ" → validate `<slug>` ควรไม่มี ✖, guidance ไม่ใช่ hard gate) · `stages/ship.md` (§4 step 1 → validate `<slug>` ก่อน promote, มี ✖ ควรแก้ก่อน) + command mirror `next/design/ship` (ชี้ playbook ไม่ duplicate รายการเช็ค). **structural เท่านั้น** — semantic ยังเป็นหน้าที่ model/ผู้ ship; **backward compatible** (เครื่องไม่มี node → playbook คง fallback เดิม); payload ติดมากับ `--update` รอบถัดไป
40
+ - **วงจร Feature spec delta ครบ 3 stage (DESIGN/VERIFY/SHIP)** — wiring discipline ของ behavior spec แบบ unify-in-place ลง playbook กลาง + template + command adapter: `src/.warnyin/workflow/stages/design.md` (§2 input อ่าน `docs/features/<name>/spec.md` · §4 step 5 + §5 + §8 gate ครอบ "Spec delta") · `verify.md` (feature spec = regression baseline — scenario เดิม = regression case, delta = test case ใหม่; §2/§3/§4/§6) · `ship.md` (§4 step 5.1 merge `spec.md` ตาม delta — ADDED ต่อท้าย/MODIFIED แทนที่/REMOVED ลบ + **read-modify-verify key ไม่เจอ → STOP** + rename `[เดิมชื่อ:]` + stale delta re-check; §3/§5/§6 gate) · template `stages/[topic]/design.md` (+section "9. Spec delta") + `ship.md` (+แถว `spec.md`) · `src/.warnyin/workflow/README.md` note `spec.md` (living behavior spec) · command mirror `design/verify/ship` (ชี้ playbook ไม่ duplicate logic). **backward compatible** (feature ไม่มี spec → วิธีเดิม; topic ไม่มี §9 delta → SHIP ทำแบบเดิม); payload `.md` ล้วน ติดมากับ `--update` รอบถัดไป
41
+
42
+ ## [0.8.5] - 2026-06-07
43
+
44
+ ### Added
45
+ - **Model-tier guidance ใน context profile** — `src/.warnyin/workflow/contexts/{research,build,review}.md` เพิ่มบรรทัด "Model tier" ใน section Tool preference (generic: `research`→`deepest reasoning` · `build`→`balanced`/fan-out worker เชิงกลไก→`cheap` · `review`→`balanced+`) + ตาราง legend ใน `contexts/README.md` — แนะนำ model tier ตาม posture เพื่อคุม token/cost; **tool-agnostic** ไม่ผูกชื่อรุ่น (harness map เอง) · global `docs/rule.md` §1 payload-guidance-generic — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
46
+ - **Worked-example pointer ใน README** — section "ตัวอย่างจริง (worked example)" ชี้ `docs/example-walkthrough.md` (เดิน topic จริง `cli-legacy-warning-fix` ครบ 5 stage บน repo) ให้ผู้ใช้ใหม่เห็น artifact จริง
47
+
48
+ ## [0.8.4] - 2026-06-07
49
+
50
+ ### Added
51
+ - **Utility skills (Claude adapter, auto-invocable)** — 3 safe utility skill ใหม่ `src/.claude/skills/{update-codemaps,explore,next}/SKILL.md` (`/update-codemaps`, `/explore`, `/next`): Claude project skill ที่ model **auto-invoke ได้เอง (description-driven)** body ชี้ playbook กลางเดิม (`.warnyin/workflow/{codemap,explore,next}.md`) ไม่ duplicate — auto-invoke เฉพาะ utility **read-only safe**; ผู้ใช้ปลายทางรับ skills อัตโนมัติตอน `npx @warnyin/agents` / `--update`. command `/warnyin:*` เดิม **ไม่เปลี่ยน** (non-breaking); build/ship คงเป็น command user-only (irreversible). global `docs/rule.md` §1 skill-adapter convention
52
+
53
+ ### Changed
54
+ - **installer/packaging รองรับ skills** — `cli.mjs` CORE +`.claude/skills`; `package.json files` +`src/.claude/skills` (nested dotfolder ระบุชัด); `verify-pack` ALLOWED_PREFIX +`src/.claude/skills/` + R1 assert `hasSkills` (skills เป็น required payload กันหล่นเงียบ); test suite 18→19 (verify-pack 9→10)
55
+
56
+ ## [0.8.3] - 2026-06-07
57
+
58
+ ### Added
59
+ - **Learned-rule capture ใน SHIP** — `ship.md` playbook (§3 principle 7 ขยาย + §4 step 1/3/5 + §6 gate) + command + template `[topic]/ship.md` (section "Learned rules"): จับ rule ที่ได้จากการทำจริง (planned + emergent จาก build/verify/troubleshooting) ด้วย `rule + evidence(บังคับ) + scope` แล้ว user ยืนยัน per-rule ก่อน promote unify กับกลไก "รอ SHIP" เดิม; global `docs/rule.md` §1 + continuous-learning discipline + unify-in-place — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
60
+
61
+ ## [0.8.2] - 2026-06-07
62
+
63
+ ### Added
64
+ - **Security checklist (agent-runtime + supply-chain)** `roles/security.md` เพิ่ม section "Runtime / operational security" (secret isolation · no-egress · identity separation + Claude adapter note) + checklist item supply-chain/MCP (prompt-injection surface); `verify.md` §2 อ้าง runtime security ตอนรัน local env; `install-skill.md` step 4 เสริม warning prompt-injection; global `docs/rule.md` §3 ขยายเป็น Security baseline 2 มิติ (CI + agent-runtime) — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
65
+
66
+ ## [0.8.1] - 2026-06-07
67
+
68
+ ### Added
69
+ - **Defensive rules** ใน BUILD/VERIFY playbook (§3) + developer.md/qa.md checklist + global `docs/rule.md` §1 เวอร์ชัน enforce ของ "ห้ามเดา": (1) **investigate-before-edit** ก่อนแก้ไฟล์ที่มีอยู่ต้องเข้าใจ (ใครใช้/contract/เจตนา), (2) **config-protection** ห้ามแก้ config/test "เพื่อให้ผ่าน" แทนแก้โค้ดจริง — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป
70
+
71
+ ## [0.8.0] - 2026-06-07
72
+
73
+ ### Added
74
+ - **Context profiles** (`.warnyin/workflow/contexts/{research,build,review,README}.md`) — session-level posture 3 โหมด (สำรวจ/สร้าง/ตรวจ) คู่ขนานกับ role card (task-level lens); playbook แต่ละ stage มี callout ชี้ context ที่เข้าคู่ (Discovery→research · DESIGN→research+build · BUILD→build · VERIFY→review · SHIP→review) — `.md` ล้วน, ติดมากับ `--update` รอบถัดไป ไม่ต้องตั้งค่าเพิ่ม
75
+
76
+ ### Fixed
77
+ - โครงสร้าง repo ใน `.warnyin/workflow/README.md` ให้ตรง layout จริงหลัง restructure 0.7.0 (`src/` layer + `.warnyin/`) เดิมยังเป็น layout เก่า (`warnyin/`, `bin/cli.mjs`)
78
+
79
+ ## [0.7.0] - 2026-06-07
80
+
81
+ ### Added
82
+ - **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 ที่ใช้ทำงานยังเสถียร
83
+ - `npm run setup:dogfood` — คืน dogfood env ที่ root จาก release (`npx @latest` + fallback `npm pack`→extract→node สำหรับ Windows), append pointer → `CONTRIBUTING.md` แบบ idempotent
84
+ - `npm run setup:sandbox` — install v-next จาก `src/` ลง temp dir (`os.tmpdir()`) เพื่อทดสอบ version skew โดยไม่แตะ dogfood ที่ root
85
+ - `CONTRIBUTING.md` — dev-instructions ของ repo (แยกจาก root `CLAUDE.md` เดิม)
86
+ - pass-count gate (`src/scripts/check-test-count.mjs`) — anti-false-green: fail ถ้า `fail≠0` / `pass<9` / `pass≠tests`
87
+ - Automated installer test suite (`node:test` black-box — spawn `src/bin/cli.mjs` จริงใน temp dir แล้ว assert side-effect) + unit test `checkFiles` รันด้วย `npm test`
88
+ - GitHub Actions CI (`.github/workflows/ci.yml`)matrix node 20/22/24 + job `pack-verify`
89
+ - 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
90
+
91
+ ### Changed
92
+ - **bin path** `bin/cli.mjs` → `src/bin/cli.mjs` (restructure source เข้า `src/`) — `pkgRoot` resolve เป็น `src/` อัตโนมัติ, payload คงเดิม
93
+ - `package.json files` เป็น allowlist granular — nested dotfolder ระบุชัด (`src/.warnyin`, `src/.claude/commands`, `src/.claude/agents`); ตัด `src/tests`/`src/scripts` (dev-only)
94
+ - test/scripts ย้ายไป `src/tests/` + `src/scripts/`; `npm test` = `node --test` bare (auto-discover, portable node 20/22/24)
95
+ - `engines.node` `>=18` → `>=20` (node 18 EOL)
96
+ - `.gitignore` เพิ่ม dogfood layer (root-anchored ทุกบรรทัด — กัน match `src/.claude`/`src/.warnyin`)
97
+
98
+ ### Removed
99
+ - รองรับ node 18 (drop ตาม EOL)
100
+
101
+ [Unreleased]: https://github.com/warnyin/warnyin-agents/compare/v0.9.1...HEAD
102
+ [0.9.1]: https://github.com/warnyin/warnyin-agents/compare/v0.9.0...v0.9.1
103
+ [0.9.0]: https://github.com/warnyin/warnyin-agents/compare/v0.8.5...v0.9.0
104
+ [0.8.5]: https://github.com/warnyin/warnyin-agents/compare/v0.8.4...v0.8.5
105
+ [0.8.4]: https://github.com/warnyin/warnyin-agents/compare/v0.8.3...v0.8.4
106
+ [0.8.3]: https://github.com/warnyin/warnyin-agents/compare/v0.8.2...v0.8.3
107
+ [0.8.2]: https://github.com/warnyin/warnyin-agents/compare/v0.8.1...v0.8.2
108
+ [0.8.1]: https://github.com/warnyin/warnyin-agents/compare/v0.8.0...v0.8.1
109
+ [0.8.0]: https://github.com/warnyin/warnyin-agents/compare/v0.7.0...v0.8.0
110
+ [0.7.0]: https://github.com/warnyin/warnyin-agents/compare/v0.6.0...v0.7.0
package/README.md CHANGED
@@ -1,148 +1,148 @@
1
- # warnyin-agents
2
-
3
- [![npm](https://img.shields.io/npm/v/%40warnyin%2Fagents)](https://www.npmjs.com/package/@warnyin/agents)
4
-
5
- **Warnyin Standard Workflow** — มาตรฐานกลางของ "วิธีทำงาน" (ways of work) สำหรับทุกโปรเจกต์
6
- ให้ AI agent (Claude Code / Codex / Antigravity / อื่นๆ) เดินงานผ่าน 5 stage ด้วย playbook กลางชุดเดียวกัน:
7
-
8
- ```
9
- Discovery (optional) ──▶ DESIGN ──▶ BUILD ──▶ VERIFY ──▶ SHIP
10
- ตี scope ออกแบบ + fan-out เทสจริง ส่งมอบ +
11
- จนเข้าใจตรงกัน แตก task sub-agent แก้จนผ่าน promote ความรู้
12
- ```
13
-
14
- ทุก stage มี **Gate** — ผ่านเกณฑ์ครบจึงไปต่อได้ และความรู้ที่เกิดระหว่างงานจะถูก SHIP
15
- กลั่นกลับเข้า `docs/` เสมอ → งานถัดไปเริ่มจากความรู้ล่าสุดทุกครั้ง
16
-
17
- ## ติดตั้ง
18
-
19
- ```bash
20
- cd my-project
21
- npx @warnyin/agents # ติดตั้ง (ข้ามไฟล์ที่มีอยู่ ไม่เขียนทับ)
22
- npx @warnyin/agents --dry-run # ดูก่อนว่าจะสร้างอะไร
23
- npx @warnyin/agents --update # อัปเดต playbook กลางเป็นเวอร์ชันล่าสุด
24
- # ทางสำรอง (ดึงตรงจาก main): npx github:warnyin/warnyin-agents
25
- ```
26
-
27
- - โปรเจกต์ที่มี `CLAUDE.md` / `AGENTS.md` อยู่แล้ว → installer **ต่อท้ายเป็น section** ไม่เขียนทับ
28
- - `--update` เขียนทับเฉพาะ core (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `.warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
29
-
30
- > **อัปเกรดจากรุ่นเก่า?** (`workflow/` หรือ `warnyin/` layout) ดู [Migration guide](CHANGELOG.md#migration-guide) ก่อนรัน installer รอบใหม่
31
-
32
- ## เริ่มใช้งาน
33
-
34
- ```bash
35
- # 1. ติดตั้งแล้วเปิด Claude Code ในโปรเจกต์ → รัน
36
- /warnyin:init # agent วิเคราะห์โปรเจกต์ + เติม docs/ ให้
37
- /warnyin:install-skill # (optional) ติดตั้ง skill เสริมประจำ role
38
- /warnyin:update-codemaps # (รันซ้ำได้เสมอ) สแกน + อัปเดต codemap หลัง refactor/feature ใหญ่
39
-
40
- # 2. เริ่มงานแรก
41
- /warnyin:discovery <topic> # โจทย์กว้าง/กำกวม → ตี scope ก่อน
42
- /warnyin:design <slug> <change> # scope ชัดแล้ว → ออกแบบ + แตก task เลย
43
-
44
- # 3. ไล่ตาม stage จนจบ
45
- /warnyin:build <slug> # fan-out sub-agent implement ตาม dependency
46
- /warnyin:verify <slug> # strategy tester เทสจริงใน local env แก้จนผ่าน
47
- /warnyin:ship <slug> # promote ความรู้ขึ้น docs/ + archive topic
48
- ```
49
-
50
- ## ตัวอย่างจริง (worked example)
51
-
52
- อยากเห็นว่า "output ที่ทำดีแล้ว" หน้าตาเป็นยังไงก่อนเริ่ม topic ของตัวเอง?
53
- [`docs/example-walkthrough.md`](docs/example-walkthrough.md) ไล่ topic จริง (`cli-legacy-warning-fix`)
54
- ครบทั้ง 5 stage — เน้น **เหตุผลการตัดสินใจ** ของแต่ละ stage พร้อมลิงก์ไป artifact จริงใน `docs/stages/achieved/`
55
- (เปิดดูบน GitHub repo)
56
-
57
- ## แนวคิดหลัก: Tool-agnostic, single source of truth
58
-
59
- แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `.warnyin/workflow/stages/`
60
- AI แต่ละเครื่องมีแค่ adapter บางๆ ชี้กลับมาที่ playbook กลางชุดเดียวกัน
61
-
62
- | AI tool | Adapter | อ่าน playbook จาก |
63
- |---|---|---|
64
- | **Claude Code** | `.claude/commands/warnyin/*` + `CLAUDE.md` | `.warnyin/workflow/stages/*.md` |
65
- | **Codex / Antigravity** | `AGENTS.md` | `.warnyin/workflow/stages/*.md` |
66
- | เครื่องอื่นๆ | ชี้มาที่ `.warnyin/workflow/stages/` ได้ทันที | `.warnyin/workflow/stages/*.md` |
67
-
68
- > แก้กฎที่ `.warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
69
-
70
- ## โครงสร้างที่ติดตั้งลงโปรเจกต์
71
-
72
- ```
73
- .warnyin/ # ★ ทุกอย่างของ workflow รวมใต้โฟลเดอร์เดียว
74
- workflow/ # playbook กลาง — single source of truth
75
- init.md # INIT: วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
76
- roles/ # role card: BA · PO · SA · Tech Lead · Developer · QA · Security · Infra
77
- stages/ # discovery / design / build / verify / ship
78
- scripts/ # build-wave.mjs — fan-out sub-agent ต่อ wave (worktree isolation)
79
- template/ # template ทั้งหมด: stages/[topic]/ · docs/ (project/rule/infra/troubleshooting/codemap
80
- # + techstack/[component]/ · features/[feature-name]/)
81
- stages/ # พื้นที่ทำงานจริงราย topic (copy [topic] เป็น <slug>)
82
- achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>)
83
-
84
- docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก .warnyin/template/docs ตอนติดตั้ง)
85
- project.md # ★ จุดเริ่มของ Discovery
86
- rule.md infra.md troubleshooting.md
87
- codemap/ features/ techstack/<component>/{about,rule,standard,structure,test}.md
88
-
89
- .claude/commands/warnyin/ # adapter สำหรับ Claude Code (slash commands)
90
- .claude/agents/ # reviewer subagent: warnyin-{sa,tech-lead,qa,security,infra}
91
- AGENTS.md # adapter สำหรับ Codex / Antigravity
92
- CLAUDE.md # adapter สำหรับ Claude Code
93
- ```
94
-
95
- รายละเอียดเต็ม: [`.warnyin/workflow/README.md`](.warnyin/workflow/README.md)
96
-
97
- ## จุดเด่นของแต่ละ stage
98
-
99
- - **Discovery** — สัมภาษณ์ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง; คำถามที่โค้ดตอบได้ → ไปอ่านโค้ดเอง
100
- - **DESIGN** — vertical slice architecture, task self-contained พร้อมโยน sub-agent, มี **review panel** (optional — SA/Tech Lead/QA/Security/Infra รีวิวขนานก่อนแตก task) และ **dry-run** (optional) สแกนหา blocker/defer ก่อนเข้า BUILD
101
- - **BUILD** — จัด task เป็น wave ตาม dependency (DAG), รัน parallel ใน git worktree แยกกัน, ปิดท้ายด้วย full build + full test gate แก้จนเขียวหมด
102
- - **VERIFY** — เทสตาม "จุดประสงค์ของ topic" ในสภาพแวดล้อมจริง ไม่ใช่แค่ unit test เขียว; FE ตรวจ UX/UI ด้วย
103
- - **SHIP** — จำแนก feature ใหม่/ปรับปรุง, promote rule/standard/test/troubleshooting ขึ้นไฟล์กลาง, อัปเดต code map, archive topic
104
-
105
- ## Role system
106
-
107
- role card กลางที่ `.warnyin/workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
108
-
109
- | Role | ใช้ใน | รูปแบบ |
110
- |---|---|---|
111
- | BA + PO | Discovery | lens ของ AI หลักตอนสัมภาษณ์/จัด priority |
112
- | SA + Tech Lead | DESIGN | lens ตอนออกแบบ/แตก task + reviewer ใน panel |
113
- | Developer | BUILD | system prompt ของ build agent ทุกตัว |
114
- | QA | VERIFY + panel | lens ของ strategy tester |
115
- | Security + Infra | DESIGN panel | reviewer (read-only) |
116
-
117
- - Tech Lead/Security ผูกกับ built-in `/code-review` และ `/security-review` ของ Claude Code
118
- - skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `.warnyin/workflow/roles/README.md`)
119
-
120
- ## พัฒนา repo นี้ (contributor)
121
-
122
- repo นี้ใช้ **bootstrap / self-hosting**: source ของ workflow v-next อยู่ใน `src/` (committed/publish) ส่วน root ติดตั้ง release เสถียรไว้ dogfood (gitignored) — **clone แล้วต้อง bootstrap ก่อนใช้**:
123
-
124
- ```bash
125
- git clone https://github.com/warnyin/warnyin-agents.git
126
- cd warnyin-agents
127
- npm run setup:dogfood # ติดตั้ง release เสถียรลง root (.warnyin/.claude/CLAUDE.md/AGENTS.md — gitignored)
128
- npm test # black-box test installer (node --test, discover src/tests/)
129
- npm run setup:sandbox # ทดสอบ v-next จาก src/ ลง temp dir (version skew — dogfood ที่ root ไม่โดนแตะ)
130
- ```
131
-
132
- - พัฒนา workflow v-next ที่ `src/` · dogfood ที่ root = release เสถียร (แก้ `src/` ไม่กระทบ session ที่กำลังทำงาน)
133
- - รายละเอียดเต็ม: [`CONTRIBUTING.md`](CONTRIBUTING.md)
134
-
135
- ## Release เวอร์ชันใหม่ (สำหรับผู้ดูแล repo นี้)
136
-
137
- > publish payload มาจาก `src/` (allowlist `package.json files`) — `npm run verify:pack` เป็น gate ก่อน publish (CI ตรวจทุก PR): payload ต้องติด `src/.warnyin/`+`src/.claude/` ครบ ไม่มี tooling/docs รั่ว
138
-
139
- ```bash
140
- npm run verify:pack # ตรวจ payload ก่อน (Windows: npm pack --dry-run --json → checkFiles)
141
- npm version patch # bump เวอร์ชัน + git tag
142
- npm publish # ขึ้น npm registry (มี OTP)
143
- git push --follow-tags
144
- ```
145
-
146
- ## License
147
-
148
- MIT
1
+ # warnyin-agents
2
+
3
+ [![npm](https://img.shields.io/npm/v/%40warnyin%2Fagents)](https://www.npmjs.com/package/@warnyin/agents)
4
+
5
+ **Warnyin Standard Workflow** — มาตรฐานกลางของ "วิธีทำงาน" (ways of work) สำหรับทุกโปรเจกต์
6
+ ให้ AI agent (Claude Code / Codex / Antigravity / อื่นๆ) เดินงานผ่าน 5 stage ด้วย playbook กลางชุดเดียวกัน:
7
+
8
+ ```
9
+ Discovery (optional) ──▶ DESIGN ──▶ BUILD ──▶ VERIFY ──▶ SHIP
10
+ ตี scope ออกแบบ + fan-out เทสจริง ส่งมอบ +
11
+ จนเข้าใจตรงกัน แตก task sub-agent แก้จนผ่าน promote ความรู้
12
+ ```
13
+
14
+ ทุก stage มี **Gate** — ผ่านเกณฑ์ครบจึงไปต่อได้ และความรู้ที่เกิดระหว่างงานจะถูก SHIP
15
+ กลั่นกลับเข้า `docs/` เสมอ → งานถัดไปเริ่มจากความรู้ล่าสุดทุกครั้ง
16
+
17
+ ## ติดตั้ง
18
+
19
+ ```bash
20
+ cd my-project
21
+ npx @warnyin/agents # ติดตั้ง (ข้ามไฟล์ที่มีอยู่ ไม่เขียนทับ)
22
+ npx @warnyin/agents --dry-run # ดูก่อนว่าจะสร้างอะไร
23
+ npx @warnyin/agents --update # อัปเดต playbook กลางเป็นเวอร์ชันล่าสุด
24
+ # ทางสำรอง (ดึงตรงจาก main): npx github:warnyin/warnyin-agents
25
+ ```
26
+
27
+ - โปรเจกต์ที่มี `CLAUDE.md` / `AGENTS.md` อยู่แล้ว → installer **ต่อท้ายเป็น section** ไม่เขียนทับ
28
+ - `--update` เขียนทับเฉพาะ core (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `.warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
29
+
30
+ > **อัปเกรดจากรุ่นเก่า?** (`workflow/` หรือ `warnyin/` layout) ดู [Migration guide](CHANGELOG.md#migration-guide) ก่อนรัน installer รอบใหม่
31
+
32
+ ## เริ่มใช้งาน
33
+
34
+ ```bash
35
+ # 1. ติดตั้งแล้วเปิด Claude Code ในโปรเจกต์ → รัน
36
+ /warnyin:init # agent วิเคราะห์โปรเจกต์ + เติม docs/ ให้
37
+ /warnyin:install-skill # (optional) ติดตั้ง skill เสริมประจำ role
38
+ /warnyin:update-codemaps # (รันซ้ำได้เสมอ) สแกน + อัปเดต codemap หลัง refactor/feature ใหญ่
39
+
40
+ # 2. เริ่มงานแรก
41
+ /warnyin:discovery <topic> # โจทย์กว้าง/กำกวม → ตี scope ก่อน
42
+ /warnyin:design <slug> <change> # scope ชัดแล้ว → ออกแบบ + แตก task เลย
43
+
44
+ # 3. ไล่ตาม stage จนจบ
45
+ /warnyin:build <slug> # fan-out sub-agent implement ตาม dependency
46
+ /warnyin:verify <slug> # strategy tester เทสจริงใน local env แก้จนผ่าน
47
+ /warnyin:ship <slug> # promote ความรู้ขึ้น docs/ + archive topic
48
+ ```
49
+
50
+ ## ตัวอย่างจริง (worked example)
51
+
52
+ อยากเห็นว่า "output ที่ทำดีแล้ว" หน้าตาเป็นยังไงก่อนเริ่ม topic ของตัวเอง?
53
+ [`docs/example-walkthrough.md`](docs/example-walkthrough.md) ไล่ topic จริง (`cli-legacy-warning-fix`)
54
+ ครบทั้ง 5 stage — เน้น **เหตุผลการตัดสินใจ** ของแต่ละ stage พร้อมลิงก์ไป artifact จริงใน `docs/stages/achieved/`
55
+ (เปิดดูบน GitHub repo)
56
+
57
+ ## แนวคิดหลัก: Tool-agnostic, single source of truth
58
+
59
+ แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `.warnyin/workflow/stages/`
60
+ AI แต่ละเครื่องมีแค่ adapter บางๆ ชี้กลับมาที่ playbook กลางชุดเดียวกัน
61
+
62
+ | AI tool | Adapter | อ่าน playbook จาก |
63
+ |---|---|---|
64
+ | **Claude Code** | `.claude/commands/warnyin/*` + `CLAUDE.md` | `.warnyin/workflow/stages/*.md` |
65
+ | **Codex / Antigravity** | `AGENTS.md` | `.warnyin/workflow/stages/*.md` |
66
+ | เครื่องอื่นๆ | ชี้มาที่ `.warnyin/workflow/stages/` ได้ทันที | `.warnyin/workflow/stages/*.md` |
67
+
68
+ > แก้กฎที่ `.warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
69
+
70
+ ## โครงสร้างที่ติดตั้งลงโปรเจกต์
71
+
72
+ ```
73
+ .warnyin/ # ★ ทุกอย่างของ workflow รวมใต้โฟลเดอร์เดียว
74
+ workflow/ # playbook กลาง — single source of truth
75
+ init.md # INIT: วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
76
+ roles/ # role card: BA · PO · SA · Tech Lead · Developer · QA · Security · Infra
77
+ stages/ # discovery / design / build / verify / ship
78
+ scripts/ # build-wave.mjs — fan-out sub-agent ต่อ wave (worktree isolation)
79
+ template/ # template ทั้งหมด: stages/[topic]/ · docs/ (project/rule/infra/troubleshooting/codemap
80
+ # + techstack/[component]/ · features/[feature-name]/)
81
+ stages/ # พื้นที่ทำงานจริงราย topic (copy [topic] เป็น <slug>)
82
+ achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>)
83
+
84
+ docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก .warnyin/template/docs ตอนติดตั้ง)
85
+ project.md # ★ จุดเริ่มของ Discovery
86
+ rule.md infra.md troubleshooting.md
87
+ codemap/ features/ techstack/<component>/{about,rule,standard,structure,test}.md
88
+
89
+ .claude/commands/warnyin/ # adapter สำหรับ Claude Code (slash commands)
90
+ .claude/agents/ # reviewer subagent: warnyin-{sa,tech-lead,qa,security,infra}
91
+ AGENTS.md # adapter สำหรับ Codex / Antigravity
92
+ CLAUDE.md # adapter สำหรับ Claude Code
93
+ ```
94
+
95
+ รายละเอียดเต็ม: [`.warnyin/workflow/README.md`](.warnyin/workflow/README.md)
96
+
97
+ ## จุดเด่นของแต่ละ stage
98
+
99
+ - **Discovery** — สัมภาษณ์ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง; คำถามที่โค้ดตอบได้ → ไปอ่านโค้ดเอง
100
+ - **DESIGN** — vertical slice architecture, task self-contained พร้อมโยน sub-agent, มี **review panel** (optional — SA/Tech Lead/QA/Security/Infra รีวิวขนานก่อนแตก task) และ **dry-run** (optional) สแกนหา blocker/defer ก่อนเข้า BUILD
101
+ - **BUILD** — จัด task เป็น wave ตาม dependency (DAG), รัน parallel ใน git worktree แยกกัน, ปิดท้ายด้วย full build + full test gate แก้จนเขียวหมด
102
+ - **VERIFY** — เทสตาม "จุดประสงค์ของ topic" ในสภาพแวดล้อมจริง ไม่ใช่แค่ unit test เขียว; FE ตรวจ UX/UI ด้วย
103
+ - **SHIP** — จำแนก feature ใหม่/ปรับปรุง, promote rule/standard/test/troubleshooting ขึ้นไฟล์กลาง, อัปเดต code map, archive topic
104
+
105
+ ## Role system
106
+
107
+ role card กลางที่ `.warnyin/workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
108
+
109
+ | Role | ใช้ใน | รูปแบบ |
110
+ |---|---|---|
111
+ | BA + PO | Discovery | lens ของ AI หลักตอนสัมภาษณ์/จัด priority |
112
+ | SA + Tech Lead | DESIGN | lens ตอนออกแบบ/แตก task + reviewer ใน panel |
113
+ | Developer | BUILD | system prompt ของ build agent ทุกตัว |
114
+ | QA | VERIFY + panel | lens ของ strategy tester |
115
+ | Security + Infra | DESIGN panel | reviewer (read-only) |
116
+
117
+ - Tech Lead/Security ผูกกับ built-in `/code-review` และ `/security-review` ของ Claude Code
118
+ - skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `.warnyin/workflow/roles/README.md`)
119
+
120
+ ## พัฒนา repo นี้ (contributor)
121
+
122
+ repo นี้ใช้ **bootstrap / self-hosting**: source ของ workflow v-next อยู่ใน `src/` (committed/publish) ส่วน root ติดตั้ง release เสถียรไว้ dogfood (gitignored) — **clone แล้วต้อง bootstrap ก่อนใช้**:
123
+
124
+ ```bash
125
+ git clone https://github.com/warnyin/warnyin-agents.git
126
+ cd warnyin-agents
127
+ npm run setup:dogfood # ติดตั้ง release เสถียรลง root (.warnyin/.claude/CLAUDE.md/AGENTS.md — gitignored)
128
+ npm test # black-box test installer (node --test, discover src/tests/)
129
+ npm run setup:sandbox # ทดสอบ v-next จาก src/ ลง temp dir (version skew — dogfood ที่ root ไม่โดนแตะ)
130
+ ```
131
+
132
+ - พัฒนา workflow v-next ที่ `src/` · dogfood ที่ root = release เสถียร (แก้ `src/` ไม่กระทบ session ที่กำลังทำงาน)
133
+ - รายละเอียดเต็ม: [`CONTRIBUTING.md`](CONTRIBUTING.md)
134
+
135
+ ## Release เวอร์ชันใหม่ (สำหรับผู้ดูแล repo นี้)
136
+
137
+ > publish payload มาจาก `src/` (allowlist `package.json files`) — `npm run verify:pack` เป็น gate ก่อน publish (CI ตรวจทุก PR): payload ต้องติด `src/.warnyin/`+`src/.claude/` ครบ ไม่มี tooling/docs รั่ว
138
+
139
+ ```bash
140
+ npm run verify:pack # ตรวจ payload ก่อน (Windows: npm pack --dry-run --json → checkFiles)
141
+ npm version patch # bump เวอร์ชัน + git tag
142
+ npm publish # ขึ้น npm registry (มี OTP)
143
+ git push --follow-tags
144
+ ```
145
+
146
+ ## License
147
+
148
+ MIT