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