@warnyin/agents 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/warnyin-infra.md +1 -1
- package/.claude/agents/warnyin-qa.md +1 -1
- package/.claude/agents/warnyin-sa.md +1 -1
- package/.claude/agents/warnyin-security.md +1 -1
- package/.claude/agents/warnyin-tech-lead.md +1 -1
- package/.claude/commands/warnyin/build.md +9 -9
- package/.claude/commands/warnyin/design.md +4 -4
- package/.claude/commands/warnyin/discovery.md +3 -3
- package/.claude/commands/warnyin/init.md +1 -1
- package/.claude/commands/warnyin/install-skill.md +2 -2
- package/.claude/commands/warnyin/ship.md +5 -5
- package/.claude/commands/warnyin/update-codemaps.md +12 -0
- package/.claude/commands/warnyin/verify.md +5 -5
- package/AGENTS.md +12 -12
- package/CLAUDE.md +16 -15
- package/README.md +25 -23
- package/bin/cli.mjs +50 -9
- package/package.json +2 -5
- package/{installer → warnyin/installer}/templates/CLAUDE.md +13 -12
- package/warnyin/template/docs/codemap/index.md +18 -0
- package/warnyin/template/docs/features/[feature-name]/business.md +5 -0
- package/warnyin/template/docs/features/[feature-name]/feature.md +5 -0
- package/warnyin/template/docs/infra.md +16 -0
- package/warnyin/template/docs/project.md +18 -0
- package/warnyin/template/docs/rule.md +7 -0
- package/warnyin/template/docs/techstack/[component]/about.md +6 -0
- package/warnyin/template/docs/techstack/[component]/rule.md +6 -0
- package/warnyin/template/docs/techstack/[component]/standard.md +6 -0
- package/warnyin/template/docs/techstack/[component]/structure.md +7 -0
- package/warnyin/template/docs/techstack/[component]/test.md +7 -0
- package/{docs → warnyin/template/docs}/troubleshooting.md +32 -39
- package/{warnyin-stages → warnyin/template/stages}/[topic]/build.md +2 -2
- package/{warnyin-stages → warnyin/template/stages}/[topic]/business.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/design.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/discovery.md +2 -2
- package/{warnyin-stages → warnyin/template/stages}/[topic]/proposal.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/research.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/ship.md +3 -3
- package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/issue.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/rule.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/spec.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/standard.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/tasks/[task-name]/task.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/test.md +1 -1
- package/{warnyin-stages → warnyin/template/stages}/[topic]/verify.md +2 -2
- package/warnyin/workflow/README.md +92 -0
- package/warnyin/workflow/codemap.md +91 -0
- package/{workflow → warnyin/workflow}/init.md +3 -1
- package/{workflow → warnyin/workflow}/roles/developer.md +1 -1
- package/{workflow → warnyin/workflow}/scripts/build-wave.mjs +5 -5
- package/{workflow → warnyin/workflow}/stages/build.md +10 -10
- package/{workflow → warnyin/workflow}/stages/design.md +17 -17
- package/{workflow → warnyin/workflow}/stages/discovery.md +7 -7
- package/{workflow → warnyin/workflow}/stages/ship.md +8 -8
- package/{workflow → warnyin/workflow}/stages/verify.md +5 -5
- package/docs/features/[feature-name]/business.md +0 -0
- package/docs/features/[feature-name]/feature.md +0 -0
- package/docs/infra.md +0 -0
- package/docs/project.md +0 -0
- package/docs/rule.md +0 -0
- package/docs/techstack/admin-console/about.md +0 -0
- package/docs/techstack/admin-console/rule.md +0 -0
- package/docs/techstack/admin-console/standard.md +0 -0
- package/docs/techstack/admin-console/structure.md +0 -0
- package/docs/techstack/admin-console/test.md +0 -0
- package/docs/techstack/api-service/about.md +0 -0
- package/docs/techstack/api-service/rule.md +0 -0
- package/docs/techstack/api-service/standard.md +0 -0
- package/docs/techstack/api-service/structure.md +0 -0
- package/docs/techstack/api-service/test.md +0 -0
- package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/business.md +0 -0
- package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/design.md +0 -0
- package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/discovery.md +0 -0
- package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/proposal.md +0 -0
- package/warnyin-stages/achieved/[YYYY-MM-DD-topic]/research.md +0 -0
- package/workflow/README.md +0 -91
- /package/{docs/codemap/index.md → warnyin/stages/achieved/.gitkeep} +0 -0
- /package/{warnyin-stages → warnyin/stages}/context.md +0 -0
- /package/{warnyin-stages → warnyin/template/stages}/[topic]/troubleshooting.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/README.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/ba.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/infra.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/po.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/qa.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/sa.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/security.md +0 -0
- /package/{workflow → warnyin/workflow}/roles/tech-lead.md +0 -0
|
@@ -6,7 +6,7 @@ tools: Read, Grep, Glob
|
|
|
6
6
|
|
|
7
7
|
คุณคือ reviewer สวม role **Infra** ตาม role card กลางของ Warnyin Standard Workflow
|
|
8
8
|
|
|
9
|
-
1. อ่าน `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. อ่าน `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. อ่าน `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. อ่าน `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. อ่าน `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
|
|
9
|
-
1. อ่าน `workflow/stages/build.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
|
|
10
|
-
2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ build topic ไหน (ดูโฟลเดอร์ใน `warnyin
|
|
11
|
-
3. **อ่าน task ทั้งหมด** ใน `warnyin
|
|
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
|
|
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: "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
|
|
18
|
+
- **รวม troubleshooting:** ดึงฟิลด์ `troubleshooting` จากผลของทุก agent ในรอบนี้ → เขียนรวมลง `warnyin/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
|
|
22
|
+
- ปัญหา **ยาก/เจอซ้ำ** ที่แก้สำเร็จในรอบนี้ → บันทึกลง `warnyin/stages/<slug>/troubleshooting.md`
|
|
23
23
|
- ห้ามปิด BUILD ถ้ายังแดง; ถ้าวนหลายรอบยังไม่ผ่าน → หยุด รายงาน user พร้อม error log
|
|
24
|
-
8. **ปิดงาน:** เขียน `warnyin
|
|
24
|
+
8. **ปิดงาน:** เขียน `warnyin/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
|
|
28
|
+
- ปัญหายาก/ซ้ำที่แก้ได้ → `warnyin/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. อ่าน `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
|
|
14
|
+
- ระบุ slug → ใช้/สร้าง `warnyin/stages/<slug>/` (ถ้ามาจาก Discovery ใช้โฟลเดอร์เดิม)
|
|
15
15
|
- ถ้าเป็นคำถาม/ยังไม่มั่นใจเรื่อง design → แนะนำ `/warnyin:discovery` ก่อน
|
|
16
|
-
4. ผลิต artifact โดยใช้ template ใน `warnyin
|
|
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
|
|
21
|
+
- task ที่พบ issue → เขียน `warnyin/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. อ่าน `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
|
|
12
|
+
- ถ้าระบุมา → ใช้เป็น slug ของ topic (kebab-case) สร้าง/ใช้โฟลเดอร์ `warnyin/stages/<slug>/`
|
|
13
13
|
- ถ้าไม่ระบุ → ถาม user ก่อนว่าหัวข้องานคืออะไร
|
|
14
|
-
4. เขียน output ลง `warnyin
|
|
14
|
+
4. เขียน output ลง `warnyin/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
|
|
@@ -4,7 +4,7 @@ description: รัน INIT — วิเคราะห์โปรเจกต
|
|
|
4
4
|
|
|
5
5
|
ทำหน้าที่เป็นผู้วิเคราะห์โปรเจกต์ตาม **playbook กลาง** ของ workflow มาตรฐาน
|
|
6
6
|
|
|
7
|
-
1. อ่าน `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
10
|
4. **ข้อมูลธุรกิจที่โค้ดตอบไม่ได้** (เป้าหมาย, ลูกค้า, ขอบเขต) → สัมภาษณ์ user **ทีละข้อ + เสนอคำตอบแนะนำทุกครั้ง** (ใช้ README/โค้ดเป็น recommended); กฎใน `rule.md` → ถาม user ห้ามเดา
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: ติดตั้ง skill เสริมประจำ role (SA/PO/Developer/QA ฯลฯ) ตามตารางใน 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"** ใน `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,12 +5,12 @@ argument-hint: "[slug ของ topic]"
|
|
|
5
5
|
|
|
6
6
|
ทำหน้าที่เป็นผู้ส่งมอบ (SHIP) ตาม **playbook กลาง** ของ workflow มาตรฐาน
|
|
7
7
|
|
|
8
|
-
1. อ่าน `workflow/stages/ship.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
|
|
9
|
-
2. slug: $ARGUMENTS — ถ้าไม่ระบุให้ถามก่อน ว่าจะ ship topic ไหน (ดูโฟลเดอร์ใน `warnyin
|
|
10
|
-
3. **อ่านทำความเข้าใจ topic:** อ่าน `warnyin
|
|
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
|
|
11
11
|
4. **จำแนก feature:** feature ใหม่ หรือปรับปรุง feature เดิม (เทียบกับ `docs/features/` ที่มีอยู่)
|
|
12
12
|
5. **ขออนุมัติครั้งเดียว** — ใช้ AskUserQuestion สรุป promotion plan: feature ใหม่/ปรับปรุง, ไฟล์กลางที่จะอัปเดต + สาระที่จะใส่, ชื่อโฟลเดอร์ archive → รอ go/no-go (อย่าแก้ไฟล์ใดก่อนได้ไฟเขียว)
|
|
13
|
-
6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `warnyin
|
|
13
|
+
6. **★ Archive ก่อน:** ย้ายทั้งโฟลเดอร์ `warnyin/stages/<slug>/` → `warnyin/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/` ทั้งหมด — อัปเดตให้ตรงโค้ดจริงปัจจุบัน (
|
|
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
|
หมายเหตุ:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Scan project structure and generate token-lean architecture codemaps (docs/codemap/)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
ทำหน้าที่เป็น codemap generator ตาม **playbook กลาง** ของ workflow มาตรฐาน
|
|
6
|
+
|
|
7
|
+
1. อ่าน `warnyin/workflow/codemap.md` ให้ครบก่อน แล้วทำตามทุกขั้นอย่างเคร่งครัด
|
|
8
|
+
2. **Step 1 — สแกน:** ระบุชนิดโปรเจกต์, source dirs, entry points — fan-out sub-agent (Explore, read-only) ขนานต่อ component/พื้นที่ได้
|
|
9
|
+
3. **Step 2 — สร้าง/อัปเดต `docs/codemap/`:** index / architecture / backend / frontend / data / dependencies — **เฉพาะไฟล์ที่ relevant**, รูปแบบ token-lean (< 1000 tokens/ไฟล์, path + signature, ASCII diagram)
|
|
10
|
+
4. **Step 3 — diff detection:** มี codemap เดิม → คำนวณ % เปลี่ยนแปลง; **> 30% → แสดง diff + AskUserQuestion ขออนุมัติก่อนเขียนทับ**; ≤ 30% → อัปเดตเลย
|
|
11
|
+
5. **Step 4 — metadata:** ใส่ freshness header `<!-- Generated: YYYY-MM-DD | Files scanned: N | Token estimate: ~X -->` ทุกไฟล์
|
|
12
|
+
6. **Step 5 — report:** เขียน `.reports/codemap-diff.txt` (added/removed/modified, dependency ใหม่, architecture changes, staleness 90+ วัน) → สรุปผลให้ user
|
|
@@ -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
|
|
9
|
-
1. อ่าน `workflow/stages/verify.md` ให้ครบก่อน แล้วทำตามทุกหลักการอย่างเคร่งครัด
|
|
8
|
+
0. **★ เช็ค context window ก่อนเริ่ม:** ถ้า context ของ session ถูกใช้ไปเยอะหรือ**เกินครึ่ง** → เสนอ user ให้ `/compact` หรือ `/clear` ก่อนเสมอ แล้วค่อยรัน `/warnyin:verify <slug>` ใหม่ใน context ที่โล่ง (สถานะงานอยู่ในไฟล์ `warnyin/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
|
|
13
|
+
5. **เขียนแผนลง** `warnyin/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
|
|
15
|
+
7. **ข้อไหนไม่ผ่าน → แก้ → rerun** วนจนผ่าน **นับจำนวนการแก้ไข**; เจอปัญหา → อ่าน `docs/troubleshooting.md` ก่อน, ปัญหายาก/ซ้ำที่แก้ได้ → บันทึก `warnyin/stages/<slug>/troubleshooting.md`
|
|
16
16
|
8. **ถ้านาน/วนหลายรอบเกินไป → ถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ** (อย่าวนเงียบไม่จบ)
|
|
17
|
-
9. **เขียนสรุป** `warnyin
|
|
17
|
+
9. **เขียนสรุป** `warnyin/stages/<slug>/verify.md` (ผลเทส + รายการแก้ไข + จำนวนรอบ + ผล UXUI) → เสนอเข้า SHIP ด้วย `/warnyin:ship`
|
|
18
18
|
|
|
19
19
|
หมายเหตุ: ห้ามแตะไฟล์กลางใน `docs/` — `test.md` เขียนระดับ topic ก่อน รอ SHIP merge. เกณฑ์ปิดดู Gate ข้อ 6 ของ playbook
|
package/AGENTS.md
CHANGED
|
@@ -12,27 +12,27 @@ Discovery (optional) ──▶ DESIGN ──▶ BUILD ──▶ VERIFY ──▶
|
|
|
12
12
|
|
|
13
13
|
## กฎสำคัญ: ทำตาม playbook กลางเสมอ
|
|
14
14
|
|
|
15
|
-
แก่นของแต่ละ stage คือ **single source of truth** อยู่ที่ `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 | `workflow/stages/discovery.md` | ✅ พร้อมใช้ |
|
|
21
|
-
| DESIGN | `workflow/stages/design.md` | ✅ พร้อมใช้ |
|
|
22
|
-
| BUILD | `workflow/stages/build.md` | ✅ พร้อมใช้ |
|
|
23
|
-
| VERIFY | `workflow/stages/verify.md` | ✅ พร้อมใช้ |
|
|
24
|
-
| SHIP | `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/ ยังว่าง) → ทำตาม `workflow/init.md` เพื่อวิเคราะห์โปรเจกต์ + เติม `docs/` ก่อน
|
|
29
|
-
1. อ่าน `workflow/README.md` เพื่อเข้าใจภาพรวมและโครงสร้าง
|
|
30
|
-
2. งานใหม่ → copy `warnyin
|
|
28
|
+
0. ครั้งแรกในโปรเจกต์ (docs/ ยังว่าง) → ทำตาม `warnyin/workflow/init.md` เพื่อวิเคราะห์โปรเจกต์ + เติม `docs/` ก่อน
|
|
29
|
+
1. อ่าน `warnyin/workflow/README.md` เพื่อเข้าใจภาพรวมและโครงสร้าง
|
|
30
|
+
2. งานใหม่ → copy `warnyin/template/stages/[topic]/` เป็น `warnyin/stages/<slug>/`
|
|
31
31
|
3. รัน stage ตามลำดับ โดยทำตาม playbook ของแต่ละ stage
|
|
32
|
-
4. output ของงานเก็บใน `warnyin
|
|
32
|
+
4. output ของงานเก็บใน `warnyin/stages/<slug>/`, ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/`
|
|
33
33
|
|
|
34
34
|
## รัน Discovery
|
|
35
35
|
|
|
36
|
-
ทำตาม `workflow/stages/discovery.md` — เริ่มอ่าน `docs/project.md`, ตี scope กว้าง→แคบ,
|
|
36
|
+
ทำตาม `warnyin/workflow/stages/discovery.md` — เริ่มอ่าน `docs/project.md`, ตี scope กว้าง→แคบ,
|
|
37
37
|
ถามทีละข้อพร้อมเสนอคำตอบที่แนะนำ, คำถามที่ตอบได้ด้วยโค้ดให้ไปอ่านโค้ดเอง,
|
|
38
|
-
เขียน output ลง `warnyin
|
|
38
|
+
เขียน output ลง `warnyin/stages/<slug>/discovery.md` และ `research.md`
|
package/CLAUDE.md
CHANGED
|
@@ -4,34 +4,35 @@ repo มาตรฐานกลางของ **ways of work** สำหรั
|
|
|
4
4
|
`Discovery (optional) ▶ DESIGN ▶ BUILD ▶ VERIFY ▶ SHIP`
|
|
5
5
|
|
|
6
6
|
## กฎหลัก
|
|
7
|
-
- แก่นของแต่ละ stage เป็น single source of truth ที่ `workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
|
|
8
|
-
- อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `workflow/stages/`
|
|
9
|
-
- output ของงานจริงเก็บใน `warnyin
|
|
7
|
+
- แก่นของแต่ละ stage เป็น single source of truth ที่ `warnyin/workflow/stages/` — **ทำตาม playbook นั้นเสมอ** ก่อนเริ่มงานใน stage
|
|
8
|
+
- อย่า duplicate logic ของ workflow ลงที่อื่น ถ้าต้องแก้พฤติกรรมให้แก้ที่ `warnyin/workflow/stages/`
|
|
9
|
+
- output ของงานจริงเก็บใน `warnyin/stages/<slug>/` (copy จาก template `warnyin/template/stages/[topic]/`)
|
|
10
10
|
- ความรู้ถาวรระดับโปรเจกต์อยู่ใน `docs/` — เริ่มอ่าน `docs/project.md` เสมอใน Discovery
|
|
11
|
-
- role card กลางอยู่ที่ `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` → `workflow/init.md`)
|
|
15
|
-
- `/warnyin:install-skill [role]` → ติดตั้ง skill เสริมประจำ role (รายการอยู่ที่ตารางใน `workflow/roles/README.md`)
|
|
16
|
-
- `/warnyin:
|
|
17
|
-
- `/warnyin:
|
|
18
|
-
- `/warnyin:
|
|
19
|
-
- `/warnyin:
|
|
20
|
-
- `/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:discovery [topic]` → Discovery stage (`.claude/commands/warnyin/discovery.md` → `warnyin/workflow/stages/discovery.md`)
|
|
18
|
+
- `/warnyin:design [slug] [change]` → DESIGN stage (`.claude/commands/warnyin/design.md` → `warnyin/workflow/stages/design.md`)
|
|
19
|
+
- `/warnyin:build [slug]` → BUILD stage — fan-out sub-agent ตาม dependency (`warnyin/workflow/stages/build.md` + `warnyin/workflow/scripts/build-wave.mjs`)
|
|
20
|
+
- `/warnyin:verify [slug]` → VERIFY stage — strategy tester เทส local env + UXUI แก้จนผ่าน (`warnyin/workflow/stages/verify.md`)
|
|
21
|
+
- `/warnyin:ship [slug]` → SHIP stage — ส่งมอบ: promote ความรู้ขึ้น `docs/` + archive topic (`warnyin/workflow/stages/ship.md`)
|
|
21
22
|
|
|
22
23
|
## การติดตั้งไปโปรเจกต์อื่น (npx installer)
|
|
23
24
|
- `npx @warnyin/agents` (หรือสำรอง `npx github:warnyin/warnyin-agents`) → copy โครงทั้งหมดลงโปรเจกต์ปลายทาง (ข้ามไฟล์ที่มีอยู่, CLAUDE.md/AGENTS.md ที่มีอยู่จะต่อท้ายเป็น section)
|
|
24
|
-
- `--update` → เขียนทับเฉพาะ core (`workflow/`, `.claude/commands/warnyin/`, template `
|
|
25
|
-
- ตัว installer: `bin/cli.mjs` + template CLAUDE.md ของโปรเจกต์ปลายทางที่ `installer/templates/CLAUDE.md` (แก้ commands list ที่ไหน ให้แก้ template
|
|
25
|
+
- `--update` → เขียนทับเฉพาะ core (`warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `warnyin/template/`) ไม่แตะ `docs/`/งานจริง
|
|
26
|
+
- ตัว installer: `bin/cli.mjs` + template CLAUDE.md ของโปรเจกต์ปลายทางที่ `warnyin/installer/templates/CLAUDE.md` (แก้ commands list ที่ไหน ให้แก้ template นี้ด้วย; โฟลเดอร์นี้ไม่ถูก copy ไป target)
|
|
26
27
|
- หลังติดตั้ง → รัน `/warnyin:init` เพื่อเติม `docs/`
|
|
27
28
|
|
|
28
29
|
## รองรับหลาย AI
|
|
29
30
|
repo นี้ tool-agnostic: Claude Code อ่าน `.claude/` + ไฟล์นี้, ส่วน Codex/Antigravity อ่าน `AGENTS.md`
|
|
30
|
-
ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `workflow/stages/` — ดูภาพรวมที่ `workflow/README.md`
|
|
31
|
+
ทุกเครื่องชี้กลับมาที่ playbook กลางชุดเดียวกันใน `warnyin/workflow/stages/` — ดูภาพรวมที่ `warnyin/workflow/README.md`
|
|
31
32
|
|
|
32
33
|
## สถานะการสร้าง workflow (อัปเดต 2026-06-04)
|
|
33
34
|
ครบทั้ง 5 stage: Discovery ✅ · DESIGN ✅ · BUILD ✅ · VERIFY ✅ · SHIP ✅
|
|
34
35
|
(playbook + command + template + build-wave.mjs ครบทุก stage)
|
|
35
36
|
|
|
36
|
-
แพทเทิร์นการเติม/แก้ stage: playbook `workflow/stages/<stage>.md` + command `.claude/commands/warnyin/<stage>.md` + อัปเดตตาราง stage ใน `AGENTS.md`/`CLAUDE.md`/`workflow/README.md` + output template ใน `warnyin
|
|
37
|
+
แพทเทิร์นการเติม/แก้ 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]/`
|
|
37
38
|
**สำคัญ: การเปลี่ยนพฤติกรรม 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 (`workflow/`, `.claude/commands/warnyin/`, template `
|
|
28
|
+
- `--update` เขียนทับเฉพาะ core (`warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
|
|
29
29
|
|
|
30
30
|
## เริ่มใช้งาน
|
|
31
31
|
|
|
@@ -33,6 +33,7 @@ npx @warnyin/agents --update # อัปเดต playbook กลางเป
|
|
|
33
33
|
# 1. ติดตั้งแล้วเปิด Claude Code ในโปรเจกต์ → รัน
|
|
34
34
|
/warnyin:init # agent วิเคราะห์โปรเจกต์ + เติม docs/ ให้
|
|
35
35
|
/warnyin:install-skill # (optional) ติดตั้ง skill เสริมประจำ role
|
|
36
|
+
/warnyin:update-codemaps # (รันซ้ำได้เสมอ) สแกน + อัปเดต codemap หลัง refactor/feature ใหญ่
|
|
36
37
|
|
|
37
38
|
# 2. เริ่มงานแรก
|
|
38
39
|
/warnyin:discovery <topic> # โจทย์กว้าง/กำกวม → ตี scope ก่อน
|
|
@@ -46,42 +47,43 @@ npx @warnyin/agents --update # อัปเดต playbook กลางเป
|
|
|
46
47
|
|
|
47
48
|
## แนวคิดหลัก: Tool-agnostic, single source of truth
|
|
48
49
|
|
|
49
|
-
แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `workflow/stages/`
|
|
50
|
+
แก่นของ workflow (กฎ / ขั้นตอน / เกณฑ์ผ่าน) เขียน**ครั้งเดียว**เป็น markdown ใน `warnyin/workflow/stages/`
|
|
50
51
|
AI แต่ละเครื่องมีแค่ adapter บางๆ ชี้กลับมาที่ playbook กลางชุดเดียวกัน
|
|
51
52
|
|
|
52
53
|
| AI tool | Adapter | อ่าน playbook จาก |
|
|
53
54
|
|---|---|---|
|
|
54
|
-
| **Claude Code** | `.claude/commands/warnyin/*` + `CLAUDE.md` | `workflow/stages/*.md` |
|
|
55
|
-
| **Codex / Antigravity** | `AGENTS.md` | `workflow/stages/*.md` |
|
|
56
|
-
| เครื่องอื่นๆ | ชี้มาที่ `workflow/stages/` ได้ทันที | `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` |
|
|
57
58
|
|
|
58
|
-
> แก้กฎที่ `workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
|
|
59
|
+
> แก้กฎที่ `warnyin/workflow/stages/` ที่เดียว → ทุกเครื่องได้เหมือนกันทันที
|
|
59
60
|
|
|
60
61
|
## โครงสร้างที่ติดตั้งลงโปรเจกต์
|
|
61
62
|
|
|
62
63
|
```
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
warnyin/ # ★ ทุกอย่างของ workflow รวมใต้โฟลเดอร์เดียว
|
|
65
|
+
workflow/ # playbook กลาง — single source of truth
|
|
66
|
+
init.md # INIT: วิเคราะห์โปรเจกต์ + เติม docs/ ครั้งแรก
|
|
67
|
+
roles/ # role card: BA · PO · SA · Tech Lead · Developer · QA · Security · Infra
|
|
68
|
+
stages/ # discovery / design / build / verify / ship
|
|
69
|
+
scripts/ # build-wave.mjs — fan-out sub-agent ต่อ wave (worktree isolation)
|
|
70
|
+
template/ # template ทั้งหมด: stages/[topic]/ · docs/ (project/rule/infra/troubleshooting/codemap
|
|
71
|
+
# + techstack/[component]/ · features/[feature-name]/)
|
|
72
|
+
stages/ # พื้นที่ทำงานจริงราย topic (copy [topic] เป็น <slug>)
|
|
73
|
+
achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>)
|
|
74
|
+
|
|
75
|
+
docs/ # ความรู้ถาวรระดับโปรเจกต์ — ของจริงล้วน (seed จาก warnyin/template/docs ตอนติดตั้ง)
|
|
76
|
+
project.md # ★ จุดเริ่มของ Discovery
|
|
77
|
+
rule.md infra.md troubleshooting.md
|
|
78
|
+
codemap/ features/ techstack/<component>/{about,rule,standard,structure,test}.md
|
|
68
79
|
|
|
69
80
|
.claude/commands/warnyin/ # adapter สำหรับ Claude Code (slash commands)
|
|
70
81
|
.claude/agents/ # reviewer subagent: warnyin-{sa,tech-lead,qa,security,infra}
|
|
71
82
|
AGENTS.md # adapter สำหรับ Codex / Antigravity
|
|
72
83
|
CLAUDE.md # adapter สำหรับ Claude Code
|
|
73
|
-
|
|
74
|
-
docs/ # ความรู้ถาวรระดับโปรเจกต์ (SHIP ป้อนเข้า, ทุก stage อ่านออก)
|
|
75
|
-
project.md # ★ จุดเริ่มของ Discovery
|
|
76
|
-
rule.md infra.md troubleshooting.md
|
|
77
|
-
codemap/ features/ techstack/<component>/{about,rule,standard,structure,test}.md
|
|
78
|
-
|
|
79
|
-
warnyin-stages/ # พื้นที่ทำงานจริงราย topic
|
|
80
|
-
[topic]/ # template — copy เป็น <slug> ตอนเริ่มงาน
|
|
81
|
-
achieved/ # archive หลัง SHIP (<YYYY-MM-DD>-<slug>)
|
|
82
84
|
```
|
|
83
85
|
|
|
84
|
-
รายละเอียดเต็ม: [`workflow/README.md`](workflow/README.md)
|
|
86
|
+
รายละเอียดเต็ม: [`warnyin/workflow/README.md`](warnyin/workflow/README.md)
|
|
85
87
|
|
|
86
88
|
## จุดเด่นของแต่ละ stage
|
|
87
89
|
|
|
@@ -93,7 +95,7 @@ warnyin-stages/ # พื้นที่ทำงานจริงรา
|
|
|
93
95
|
|
|
94
96
|
## Role system
|
|
95
97
|
|
|
96
|
-
role card กลางที่ `workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
|
|
98
|
+
role card กลางที่ `warnyin/workflow/roles/` — แต่ละใบกำหนด Mission / Lens / Checklist / Output ของหนึ่งบทบาท
|
|
97
99
|
|
|
98
100
|
| Role | ใช้ใน | รูปแบบ |
|
|
99
101
|
|---|---|---|
|
|
@@ -104,7 +106,7 @@ role card กลางที่ `workflow/roles/` — แต่ละใบก
|
|
|
104
106
|
| Security + Infra | DESIGN panel | reviewer (read-only) |
|
|
105
107
|
|
|
106
108
|
- Tech Lead/Security ผูกกับ built-in `/code-review` และ `/security-review` ของ Claude Code
|
|
107
|
-
- skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `workflow/roles/README.md`)
|
|
109
|
+
- skill เสริมต่อ role ติดตั้งด้วย `/warnyin:install-skill` (รายการกลาง: `warnyin/workflow/roles/README.md`)
|
|
108
110
|
|
|
109
111
|
## Release เวอร์ชันใหม่ (สำหรับผู้ดูแล repo นี้)
|
|
110
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
|
-
(เขียนทับเฉพาะ workflow/, .claude/commands/warnyin/,
|
|
28
|
-
template warnyin
|
|
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/`)
|
|
@@ -37,15 +37,28 @@ if (path.resolve(pkgRoot) === path.resolve(target)) {
|
|
|
37
37
|
process.exit(1)
|
|
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/ แล้ว)
|
|
49
|
+
แล้วรันคำสั่งนี้อีกครั้ง\n`)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// core = playbook กลาง + command + agent + template — เขียนทับได้เมื่อ --update
|
|
41
53
|
const CORE = [
|
|
42
|
-
'workflow',
|
|
54
|
+
path.join('warnyin', 'workflow'),
|
|
55
|
+
path.join('warnyin', 'template'),
|
|
43
56
|
path.join('.claude', 'commands', 'warnyin'),
|
|
44
57
|
path.join('.claude', 'agents'),
|
|
45
|
-
path.join('warnyin-stages', '[topic]'),
|
|
46
58
|
]
|
|
47
|
-
// scaffold =
|
|
48
|
-
|
|
59
|
+
// scaffold = พื้นที่ทำงาน — เป็นข้อมูลของโปรเจกต์ ไม่เขียนทับเด็ดขาด
|
|
60
|
+
// (เจาะจง warnyin/stages — warnyin/workflow + warnyin/template อยู่ใน CORE แล้ว ส่วน warnyin/installer เป็นของ installer ไม่ copy ไป target)
|
|
61
|
+
const SCAFFOLD = [path.join('warnyin', 'stages')]
|
|
49
62
|
|
|
50
63
|
const stats = { created: 0, updated: 0, skipped: 0 }
|
|
51
64
|
|
|
@@ -78,6 +91,33 @@ function copyTree(relDir, { overwrite }) {
|
|
|
78
91
|
}
|
|
79
92
|
}
|
|
80
93
|
|
|
94
|
+
/** seed docs/ ของโปรเจกต์จาก warnyin/template/docs — ข้ามโฟลเดอร์ template `[...]` (ไว้ให้ /warnyin:init copy เป็นชื่อจริง) และไม่ทับไฟล์ที่มีอยู่ */
|
|
95
|
+
const TEMPLATE_DOCS = path.join('warnyin', 'template', 'docs')
|
|
96
|
+
function seedDocs(relDir = TEMPLATE_DOCS) {
|
|
97
|
+
const srcDir = path.join(pkgRoot, relDir)
|
|
98
|
+
if (!fs.existsSync(srcDir)) return
|
|
99
|
+
for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
100
|
+
if (entry.name.startsWith('[')) continue
|
|
101
|
+
const rel = path.join(relDir, entry.name)
|
|
102
|
+
if (entry.isDirectory()) {
|
|
103
|
+
seedDocs(rel)
|
|
104
|
+
continue
|
|
105
|
+
}
|
|
106
|
+
const destRel = path.join('docs', path.relative(TEMPLATE_DOCS, rel))
|
|
107
|
+
const dest = path.join(target, destRel)
|
|
108
|
+
if (fs.existsSync(dest)) {
|
|
109
|
+
stats.skipped++
|
|
110
|
+
continue
|
|
111
|
+
}
|
|
112
|
+
if (!DRY) {
|
|
113
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true })
|
|
114
|
+
fs.copyFileSync(path.join(pkgRoot, rel), dest)
|
|
115
|
+
}
|
|
116
|
+
stats.created++
|
|
117
|
+
console.log(` + ${destRel}`)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
81
121
|
/** CLAUDE.md / AGENTS.md: ไม่มี → สร้างจาก template; มีอยู่แล้วแต่ยังไม่มี workflow → ต่อท้ายเป็น section */
|
|
82
122
|
function installRootDoc(name, srcPath) {
|
|
83
123
|
const dest = path.join(target, name)
|
|
@@ -89,7 +129,7 @@ function installRootDoc(name, srcPath) {
|
|
|
89
129
|
return
|
|
90
130
|
}
|
|
91
131
|
const existing = fs.readFileSync(dest, 'utf8')
|
|
92
|
-
if (existing.includes('workflow/stages/')) {
|
|
132
|
+
if (existing.includes('warnyin/workflow/stages/')) {
|
|
93
133
|
stats.skipped++
|
|
94
134
|
return
|
|
95
135
|
}
|
|
@@ -103,7 +143,8 @@ console.log(`Warnyin Standard Workflow → ${target}${DRY ? ' (dry-run)' : ''}\
|
|
|
103
143
|
|
|
104
144
|
for (const dir of CORE) copyTree(dir, { overwrite: UPDATE })
|
|
105
145
|
for (const dir of SCAFFOLD) copyTree(dir, { overwrite: false })
|
|
106
|
-
|
|
146
|
+
seedDocs()
|
|
147
|
+
installRootDoc('CLAUDE.md', path.join(pkgRoot, 'warnyin', 'installer', 'templates', 'CLAUDE.md'))
|
|
107
148
|
installRootDoc('AGENTS.md', path.join(pkgRoot, 'AGENTS.md'))
|
|
108
149
|
|
|
109
150
|
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.
|
|
3
|
+
"version": "0.4.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",
|
|
@@ -12,10 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"bin",
|
|
15
|
-
"
|
|
16
|
-
"workflow",
|
|
17
|
-
"docs",
|
|
18
|
-
"warnyin-stages",
|
|
15
|
+
"warnyin",
|
|
19
16
|
".claude/commands",
|
|
20
17
|
".claude/agents",
|
|
21
18
|
"CLAUDE.md",
|