@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.
- package/CHANGELOG.md +110 -105
- package/README.md +148 -148
- package/package.json +38 -38
- package/src/.claude/agents/warnyin-infra.md +13 -13
- package/src/.claude/agents/warnyin-qa.md +13 -13
- package/src/.claude/agents/warnyin-sa.md +13 -13
- package/src/.claude/agents/warnyin-security.md +13 -13
- package/src/.claude/agents/warnyin-tech-lead.md +13 -13
- package/src/.claude/commands/warnyin/build.md +30 -30
- package/src/.claude/commands/warnyin/design.md +26 -26
- package/src/.claude/commands/warnyin/discovery.md +17 -17
- package/src/.claude/commands/warnyin/explore.md +14 -14
- package/src/.claude/commands/warnyin/init.md +12 -12
- package/src/.claude/commands/warnyin/install-skill.md +14 -14
- package/src/.claude/commands/warnyin/next.md +17 -17
- package/src/.claude/commands/warnyin/ship.md +28 -28
- package/src/.claude/commands/warnyin/update-codemaps.md +12 -12
- package/src/.claude/commands/warnyin/verify.md +20 -20
- package/src/.claude/skills/explore/SKILL.md +8 -8
- package/src/.claude/skills/next/SKILL.md +8 -8
- package/src/.claude/skills/update-codemaps/SKILL.md +8 -8
- package/src/.warnyin/installer/templates/CLAUDE.md +29 -29
- package/src/.warnyin/template/docs/codemap/index.md +18 -18
- package/src/.warnyin/template/docs/features/[feature-name]/business.md +5 -5
- package/src/.warnyin/template/docs/features/[feature-name]/feature.md +5 -5
- package/src/.warnyin/template/docs/features/[feature-name]/spec.md +16 -16
- package/src/.warnyin/template/docs/infra.md +16 -16
- package/src/.warnyin/template/docs/project.md +18 -18
- package/src/.warnyin/template/docs/rule.md +7 -7
- package/src/.warnyin/template/docs/techstack/[component]/about.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/rule.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/standard.md +6 -6
- package/src/.warnyin/template/docs/techstack/[component]/structure.md +7 -7
- package/src/.warnyin/template/docs/techstack/[component]/test.md +7 -7
- package/src/.warnyin/template/docs/troubleshooting.md +32 -32
- package/src/.warnyin/template/stages/[topic]/build.md +58 -58
- package/src/.warnyin/template/stages/[topic]/business.md +21 -21
- package/src/.warnyin/template/stages/[topic]/design.md +57 -57
- package/src/.warnyin/template/stages/[topic]/discovery.md +69 -69
- package/src/.warnyin/template/stages/[topic]/proposal.md +43 -43
- package/src/.warnyin/template/stages/[topic]/research.md +49 -49
- package/src/.warnyin/template/stages/[topic]/ship.md +32 -32
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/issue.md +19 -19
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/rule.md +13 -13
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/spec.md +36 -36
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/standard.md +21 -21
- package/src/.warnyin/template/stages/[topic]/tasks/[task-name]/task.md +39 -39
- package/src/.warnyin/template/stages/[topic]/test.md +46 -46
- package/src/.warnyin/template/stages/[topic]/troubleshooting.md +34 -34
- package/src/.warnyin/template/stages/[topic]/verify.md +44 -44
- package/src/.warnyin/workflow/README.md +101 -100
- package/src/.warnyin/workflow/api-doc.md +93 -0
- package/src/.warnyin/workflow/codemap.md +91 -91
- package/src/.warnyin/workflow/contexts/README.md +49 -49
- package/src/.warnyin/workflow/contexts/build.md +25 -25
- package/src/.warnyin/workflow/contexts/research.md +25 -25
- package/src/.warnyin/workflow/contexts/review.md +25 -25
- package/src/.warnyin/workflow/explore.md +32 -32
- package/src/.warnyin/workflow/init.md +125 -125
- package/src/.warnyin/workflow/next.md +48 -48
- package/src/.warnyin/workflow/roles/README.md +47 -46
- package/src/.warnyin/workflow/roles/ba.md +25 -25
- package/src/.warnyin/workflow/roles/developer.md +30 -30
- package/src/.warnyin/workflow/roles/infra.md +24 -24
- package/src/.warnyin/workflow/roles/po.md +28 -28
- package/src/.warnyin/workflow/roles/qa.md +35 -35
- package/src/.warnyin/workflow/roles/sa.md +28 -28
- package/src/.warnyin/workflow/roles/security.md +39 -39
- package/src/.warnyin/workflow/roles/tech-lead.md +28 -28
- package/src/.warnyin/workflow/scripts/build-wave.mjs +125 -125
- package/src/.warnyin/workflow/scripts/validate-topic.mjs +378 -378
- package/src/.warnyin/workflow/stages/build.md +98 -98
- package/src/.warnyin/workflow/stages/design.md +122 -119
- package/src/.warnyin/workflow/stages/discovery.md +78 -78
- package/src/.warnyin/workflow/stages/ship.md +92 -90
- package/src/.warnyin/workflow/stages/verify.md +80 -77
- package/src/AGENTS.md +48 -48
- package/src/bin/cli.mjs +193 -193
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
# Verify Report — <ชื่อ change>
|
|
2
|
-
|
|
3
|
-
> Output ของ VERIFY stage · playbook: `.warnyin/workflow/stages/verify.md`
|
|
4
|
-
> สรุปผลการ verify ตามจุดประสงค์ของ topic + การแก้ไขที่เกิดขึ้น
|
|
5
|
-
|
|
6
|
-
| | |
|
|
7
|
-
|---|---|
|
|
8
|
-
| **Slug** | `<kebab-case>` |
|
|
9
|
-
| **วันที่** | `YYYY-MM-DD` |
|
|
10
|
-
| **ผลรวม** | ผ่าน / ไม่ผ่าน |
|
|
11
|
-
| **จำนวนรอบการแก้ไข (fix iterations)** | __ รอบ |
|
|
12
|
-
| **จำนวนจุดที่แก้** | __ จุด |
|
|
13
|
-
|
|
14
|
-
## 1. จุดประสงค์ที่ verify (จาก spec/tasks)
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
## 2. ผลการเทส
|
|
18
|
-
| # | Test case / flow | ชนิด | ผล | หมายเหตุ |
|
|
19
|
-
|---|---|---|---|---|
|
|
20
|
-
| 1 | | functional / e2e / uxui | ✅ / ❌→✅ (แก้แล้ว) | |
|
|
21
|
-
|
|
22
|
-
## 3. UX/UI verify (ถ้าเป็น FE)
|
|
23
|
-
- [ ] layout / states / responsive / user-flow — ผล:
|
|
24
|
-
|
|
25
|
-
## 4. รายการแก้ไข (สรุปการแก้ระหว่าง verify)
|
|
26
|
-
> นับรวมเป็น "จำนวนการแก้ไข" ด้านบน
|
|
27
|
-
|
|
28
|
-
| รอบ | ปัญหาที่เจอ | วิธีแก้ | ไฟล์ที่แก้ |
|
|
29
|
-
|---|---|---|---|
|
|
30
|
-
| 1 | | | |
|
|
31
|
-
|
|
32
|
-
## 5. ปัญหายาก/ซ้ำ → troubleshooting
|
|
33
|
-
- บันทึกไว้ที่ `./troubleshooting.md` (SHIP ยกขึ้น `docs/troubleshooting.md`): มี/ไม่มี
|
|
34
|
-
|
|
35
|
-
## 6. หมายเหตุถึง user (ถ้าถามระหว่างทาง)
|
|
36
|
-
> กรณีวนแก้นาน/หลายรอบ แล้วถาม user — สรุปคำถาม/คำตอบ/การตัดสินใจ
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
## ✅ Gate → SHIP (ดู `.warnyin/workflow/stages/verify.md` ข้อ 6)
|
|
40
|
-
- [ ] เทสตามจุดประสงค์ครบ (functional)
|
|
41
|
-
- [ ] FE: UX/UI verify ผ่าน
|
|
42
|
-
- [ ] ทุกข้อที่ไม่ผ่านถูกแก้จนผ่าน
|
|
43
|
-
- [ ] test.md + verify.md เขียนครบ
|
|
44
|
-
- [ ] ปัญหายากบันทึก troubleshooting.md แล้ว
|
|
1
|
+
# Verify Report — <ชื่อ change>
|
|
2
|
+
|
|
3
|
+
> Output ของ VERIFY stage · playbook: `.warnyin/workflow/stages/verify.md`
|
|
4
|
+
> สรุปผลการ verify ตามจุดประสงค์ของ topic + การแก้ไขที่เกิดขึ้น
|
|
5
|
+
|
|
6
|
+
| | |
|
|
7
|
+
|---|---|
|
|
8
|
+
| **Slug** | `<kebab-case>` |
|
|
9
|
+
| **วันที่** | `YYYY-MM-DD` |
|
|
10
|
+
| **ผลรวม** | ผ่าน / ไม่ผ่าน |
|
|
11
|
+
| **จำนวนรอบการแก้ไข (fix iterations)** | __ รอบ |
|
|
12
|
+
| **จำนวนจุดที่แก้** | __ จุด |
|
|
13
|
+
|
|
14
|
+
## 1. จุดประสงค์ที่ verify (จาก spec/tasks)
|
|
15
|
+
-
|
|
16
|
+
|
|
17
|
+
## 2. ผลการเทส
|
|
18
|
+
| # | Test case / flow | ชนิด | ผล | หมายเหตุ |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| 1 | | functional / e2e / uxui | ✅ / ❌→✅ (แก้แล้ว) | |
|
|
21
|
+
|
|
22
|
+
## 3. UX/UI verify (ถ้าเป็น FE)
|
|
23
|
+
- [ ] layout / states / responsive / user-flow — ผล:
|
|
24
|
+
|
|
25
|
+
## 4. รายการแก้ไข (สรุปการแก้ระหว่าง verify)
|
|
26
|
+
> นับรวมเป็น "จำนวนการแก้ไข" ด้านบน
|
|
27
|
+
|
|
28
|
+
| รอบ | ปัญหาที่เจอ | วิธีแก้ | ไฟล์ที่แก้ |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| 1 | | | |
|
|
31
|
+
|
|
32
|
+
## 5. ปัญหายาก/ซ้ำ → troubleshooting
|
|
33
|
+
- บันทึกไว้ที่ `./troubleshooting.md` (SHIP ยกขึ้น `docs/troubleshooting.md`): มี/ไม่มี
|
|
34
|
+
|
|
35
|
+
## 6. หมายเหตุถึง user (ถ้าถามระหว่างทาง)
|
|
36
|
+
> กรณีวนแก้นาน/หลายรอบ แล้วถาม user — สรุปคำถาม/คำตอบ/การตัดสินใจ
|
|
37
|
+
-
|
|
38
|
+
|
|
39
|
+
## ✅ Gate → SHIP (ดู `.warnyin/workflow/stages/verify.md` ข้อ 6)
|
|
40
|
+
- [ ] เทสตามจุดประสงค์ครบ (functional)
|
|
41
|
+
- [ ] FE: UX/UI verify ผ่าน
|
|
42
|
+
- [ ] ทุกข้อที่ไม่ผ่านถูกแก้จนผ่าน
|
|
43
|
+
- [ ] test.md + verify.md เขียนครบ
|
|
44
|
+
- [ ] ปัญหายากบันทึก troubleshooting.md แล้ว
|
|
@@ -1,100 +1,101 @@
|
|
|
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
|
-
> โครงนี้คือสิ่งที่อยู่ใน **โปรเจกต์ที่ติดตั้งแล้ว** (installer วาง `.warnyin/`+`.claude/` ให้)
|
|
34
|
-
> ตัว repo `warnyin-agents` เองเก็บ source ที่จะ publish ไว้ใต้ `src/` (เช่น `src/bin/cli.mjs`, `src/.warnyin/`) — ดู `CONTRIBUTING.md`
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
.warnyin/ # ★ แก่นกลาง workflow (installer วางให้ — อัปเดตได้ด้วย --update)
|
|
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
|
-
explore.md # playbook: EXPLORE — สำรวจ/ตอบคำถามแบบ read-only ไม่สร้าง artifact
|
|
43
|
-
next.md # playbook: NEXT — เช็คงานค้าง + แนะนำขั้นตอนถัดไป (read-only)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
npx @warnyin/agents
|
|
84
|
-
npx @warnyin/agents --
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
+
> โครงนี้คือสิ่งที่อยู่ใน **โปรเจกต์ที่ติดตั้งแล้ว** (installer วาง `.warnyin/`+`.claude/` ให้)
|
|
34
|
+
> ตัว repo `warnyin-agents` เองเก็บ source ที่จะ publish ไว้ใต้ `src/` (เช่น `src/bin/cli.mjs`, `src/.warnyin/`) — ดู `CONTRIBUTING.md`
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
.warnyin/ # ★ แก่นกลาง workflow (installer วางให้ — อัปเดตได้ด้วย --update)
|
|
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
|
+
explore.md # playbook: EXPLORE — สำรวจ/ตอบคำถามแบบ read-only ไม่สร้าง artifact
|
|
43
|
+
next.md # playbook: NEXT — เช็คงานค้าง + แนะนำขั้นตอนถัดไป (read-only)
|
|
44
|
+
api-doc.md # capability: API-DOC — adaptive OpenAPI 3.1 contract (DESIGN/VERIFY/SHIP เรียกเอง)
|
|
45
|
+
stages/ # discovery ✅ · design ✅ · build ✅ · verify ✅ · ship ✅
|
|
46
|
+
roles/ # role card กลาง (task-level lens): ba, po, sa, tech-lead, developer, qa, security, infra
|
|
47
|
+
contexts/ # context profile กลาง (session-level posture): research, build, review + README
|
|
48
|
+
scripts/
|
|
49
|
+
build-wave.mjs # Workflow script: fan-out sub-agent ต่อ task ใน wave (worktree)
|
|
50
|
+
template/ # ★ template ทั้งหมดรวมที่เดียว
|
|
51
|
+
stages/[topic]/ # หนึ่งหน่วยงาน — copy เป็น docs/stages/<slug>
|
|
52
|
+
discovery.md research.md # output ของ Discovery
|
|
53
|
+
business.md proposal.md design.md # output ของ DESIGN
|
|
54
|
+
tasks/[task-name]/... build.md # output ของ DESIGN (tasks) + BUILD
|
|
55
|
+
test.md verify.md # output ของ VERIFY
|
|
56
|
+
troubleshooting.md ship.md # KB ระหว่างงาน + สรุปส่งมอบของ SHIP
|
|
57
|
+
docs/ # โครง docs — installer seed เข้า docs/ ตอนติดตั้ง
|
|
58
|
+
project.md rule.md infra.md troubleshooting.md codemap/index.md
|
|
59
|
+
techstack/[component]/ # copy เป็น docs/techstack/<component> (โดย /warnyin:init)
|
|
60
|
+
features/[feature-name]/ # copy เป็น docs/features/<feature-name> (โดย SHIP) — มี spec.md (living behavior spec)
|
|
61
|
+
installer/templates/ # template CLAUDE.md ของ target (installer ใช้เอง — ไม่ถูก copy ไป target)
|
|
62
|
+
|
|
63
|
+
.claude/ # adapter Claude Code (ชี้กลับ playbook กลาง)
|
|
64
|
+
commands/warnyin/ # slash command /warnyin:*
|
|
65
|
+
agents/ # reviewer subagent warnyin-{sa,tech-lead,qa,security,infra}
|
|
66
|
+
CLAUDE.md AGENTS.md # adapter + pointer ของ Claude / Codex·Antigravity
|
|
67
|
+
|
|
68
|
+
docs/ # ความรู้ถาวรระดับโปรเจกต์ + งานจริง — ของจริงล้วน (seed จาก template/docs)
|
|
69
|
+
project.md # ★ จุดเริ่มของ Discovery — อ่านก่อนเสมอ
|
|
70
|
+
rule.md infra.md
|
|
71
|
+
troubleshooting.md # ★ KB ปัญหา-วิธีแก้ (อ่านก่อนเมื่อ build เจอ error; SHIP ป้อนเข้า)
|
|
72
|
+
codemap/ features/ techstack/
|
|
73
|
+
stages/ # พื้นที่ทำงานจริง ตาม topic (<slug>/) + achieved/<YYYY-MM-DD>-<slug>/ หลัง SHIP
|
|
74
|
+
```
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## การติดตั้งไปโปรเจกต์อื่น
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
cd my-project
|
|
83
|
+
npx @warnyin/agents # ติดตั้ง (ข้ามไฟล์ที่มีอยู่ ไม่เขียนทับ)
|
|
84
|
+
npx @warnyin/agents --update # อัปเดต playbook กลางเป็นเวอร์ชันล่าสุด
|
|
85
|
+
npx @warnyin/agents --dry-run # ดูก่อนว่าจะสร้าง/อัปเดตอะไร
|
|
86
|
+
# ทางสำรอง (ไม่ผ่าน npm): npx github:warnyin/warnyin-agents
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- โปรเจกต์ที่มี `CLAUDE.md`/`AGENTS.md` อยู่แล้ว → installer ต่อท้ายเป็น section ไม่เขียนทับ
|
|
90
|
+
- `--update` เขียนทับเฉพาะ core (`.warnyin/workflow/`, `.claude/commands/warnyin/`, template ใน `.warnyin/template/`) — ไม่แตะ `docs/` และงานจริง
|
|
91
|
+
- หลังติดตั้ง → เปิด Claude Code แล้วรัน `/warnyin:init` ให้ agent วิเคราะห์โปรเจกต์ + เติม `docs/` (playbook: `.warnyin/workflow/init.md`)
|
|
92
|
+
|
|
93
|
+
## วิธีใช้
|
|
94
|
+
|
|
95
|
+
1. เริ่มงานใหม่ → copy `.warnyin/template/stages/[topic]/` เป็น `docs/stages/<ชื่อ-งาน-kebab-case>/`
|
|
96
|
+
2. รัน stage ตามลำดับ (Discovery ข้ามได้ถ้าเข้าใจ scope ชัดแล้ว)
|
|
97
|
+
- Claude Code: `/warnyin:discovery <topic>`, `/warnyin:design <slug> <change>`
|
|
98
|
+
- Codex / Antigravity: บอกให้ทำตาม `.warnyin/workflow/stages/<stage>.md`
|
|
99
|
+
3. ผ่าน "gate" ของแต่ละ stage แล้วจึงไป stage ถัดไป
|
|
100
|
+
4. เมื่อ SHIP (`/warnyin:ship <slug>`) → promote ความรู้ของ topic ขึ้นเอกสารกลางใน `docs/`
|
|
101
|
+
แล้วย้าย topic ไป `docs/stages/achieved/<YYYY-MM-DD>-<topic>/`
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# API-DOC — เอกสาร REST API (OpenAPI 3.1) แบบ adaptive
|
|
2
|
+
|
|
3
|
+
> **Playbook กลาง — AI ทุกเจ้าทำตามไฟล์นี้ชุดเดียวกัน** (Claude Code / Codex / Antigravity / อื่นๆ)
|
|
4
|
+
> เป้าหมาย: ถ้า topic **แตะ backend/REST API จริง** → ผลิต + ยืนยัน + ส่งมอบ **OpenAPI 3.1 contract** ให้อัตโนมัติ ตลอด lifecycle (DESIGN → VERIFY → SHIP)
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. คืออะไร / ใช้เมื่อไหร่
|
|
9
|
+
|
|
10
|
+
API-DOC ไม่ใช่ stage แยก และ **ไม่มี slash command** — เป็น **capability เสริมที่ stage เรียกใช้เอง** เมื่อ auto-detect พบว่า topic เกี่ยวกับ REST API
|
|
11
|
+
|
|
12
|
+
- ทำงานเป็นส่วนหนึ่งของ DESIGN / VERIFY / SHIP — stage playbook ชี้มาที่ไฟล์นี้
|
|
13
|
+
- **adaptive:** ตรวจ signal ทุก topic — ถ้า **ไม่ใช่** backend/REST API → **ข้ามทั้งหมดเงียบๆ** (ไม่ยัดเยียด ไม่สร้างไฟล์เปล่า)
|
|
14
|
+
- tool-agnostic: เป็นมาตรฐาน OpenAPI 3.1 ล้วน ไม่ผูกกับ AI เจ้าใดหรือเฟรมเวิร์กใด
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 2. Auto-detect — topic นี้แตะ REST API ไหม?
|
|
19
|
+
|
|
20
|
+
ดูสัญญาณต่อไปนี้ (เจอ **อย่างน้อยหนึ่ง** ที่ชัดเจน = ใช่):
|
|
21
|
+
|
|
22
|
+
1. **techstack** — `docs/techstack/<component>/about.md` ระบุว่าเป็น backend/HTTP service / REST / web API
|
|
23
|
+
2. **route ในโค้ด** — มี handler/controller ที่ผูก HTTP route เช่น Express/Fastify/NestJS/Koa/Hapi, FastAPI/Flask/Django REST, Spring/Gin/Echo, ASP.NET ฯลฯ
|
|
24
|
+
3. **annotation/decorator** ที่ gen spec ได้อยู่แล้ว — tsoa, springdoc, drf-spectacular, FastAPI (Pydantic)
|
|
25
|
+
4. **task ถูกจัดเป็น "API task"** ตอนแตก spec (design.md §6)
|
|
26
|
+
5. **change เพิ่ม/แก้ HTTP endpoint** — request/response/error/auth/status code เปลี่ยน
|
|
27
|
+
|
|
28
|
+
> สัญญาณคลุมเครือ (เช่น มีแค่ internal function ไม่ใช่ HTTP, RPC/gRPC ที่ไม่ใช่ REST, CLI/library ล้วน) → **ไม่ใช่** → ข้าม
|
|
29
|
+
> ไม่แน่ใจจริง → ถาม user ทีละข้อ + เสนอคำตอบที่แนะนำ (ตามหลัก "ห้ามเดา" ของทุก stage)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 3. เลือกโหมด (เลือกตาม signal + ระยะของงาน)
|
|
34
|
+
|
|
35
|
+
| โหมด | เมื่อไหร่ | วิธี |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| **Design-first** | endpoint **ใหม่** ยังไม่มีโค้ด | เขียน `openapi.yaml` ก่อน (ตอน DESIGN) = contract ที่ BUILD จะ implement ตาม |
|
|
38
|
+
| **Code-first** | API **มีอยู่แล้ว** + เฟรมเวิร์ก gen spec ได้ (FastAPI/tsoa ฯลฯ) | generate spec จากโค้ด แล้วตรวจ/เก็บเป็น artifact |
|
|
39
|
+
| **Hybrid** | โค้ดมี annotation/decorator แต่ยังไม่ครบ | gen จาก annotation + เติม schema/example ที่ขาดด้วยมือ |
|
|
40
|
+
|
|
41
|
+
โปรเจกต์เดียวกันใช้คนละโหมดต่อ topic ได้ — เลือกตามจริง
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 4. บทบาทต่อ stage
|
|
46
|
+
|
|
47
|
+
### DESIGN — ผลิต contract
|
|
48
|
+
- detect (ข้อ 2) → ถ้าใช่: ผลิต/อัปเดต `docs/stages/<slug>/openapi.yaml` (OpenAPI 3.1)
|
|
49
|
+
- endpoint ใหม่ → **design-first** เขียน contract ก่อน; API เดิม → **code-first/hybrid** gen จากโค้ดแล้วเติม
|
|
50
|
+
- `tasks/<api-task>/spec.md` (API SPEC) **ชี้มาที่ `openapi.yaml`** — ไม่เขียน schema ซ้ำสองที่ (single source)
|
|
51
|
+
- ถ้ามีเครื่องมือ lint ในโปรเจกต์ → รัน (ดูข้อ 5); ไม่มีก็ข้าม ไม่บังคับติดตั้ง
|
|
52
|
+
|
|
53
|
+
### VERIFY — ยืนยันว่าโค้ดจริงตรง contract
|
|
54
|
+
- topic มี `openapi.yaml` → **contract validation**: ยืนยันว่า implementation จริง = contract
|
|
55
|
+
- code-first: regen spec จากโค้ด → diff กับ `openapi.yaml` (ต้องไม่ต่าง)
|
|
56
|
+
- หรือยิง request จริงใน local env → ตรวจ response ตรง schema/status/error ที่ระบุ
|
|
57
|
+
- **★ runtime security:** การ regen (boot app จริง — FastAPI/tsoa) หรือยิง request จริง อยู่ใต้ runtime-security ของ `verify.md` §2 (local-only, scoped credential, no prod, no unnecessary egress) — ทบทวนก่อนปล่อย agent แตะของจริง
|
|
58
|
+
- mismatch = **ไม่ผ่าน** → แก้ (โค้ด หรือ contract ตามต้นเหตุจริง) วนจนตรง — นับเป็นส่วนหนึ่งของ fix loop ใน verify.md §4
|
|
59
|
+
|
|
60
|
+
### SHIP — promote contract ขึ้นเอกสารกลาง
|
|
61
|
+
- ยก `openapi.yaml` → **`docs/techstack/<component>/openapi.yaml`** = living API contract ถาวร (เทียบเท่า `spec.md` ที่เป็น living behavior spec)
|
|
62
|
+
- มี contract เดิมอยู่แล้ว → **merge ตาม delta** (เพิ่ม/แก้/ลบ path·schema ที่ topic แตะ) ไม่ทับทั้งไฟล์
|
|
63
|
+
- อ้างถึงจาก `docs/features/<name>/spec.md` ของ feature ที่ใช้ endpoint นั้น
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 5. มาตรฐาน + เครื่องมือ (reference ไม่ vendor)
|
|
68
|
+
|
|
69
|
+
- **มาตรฐาน:** OpenAPI **3.1.0** — `info`/`servers`/`paths`/`components.schemas`/`components.securitySchemes`; ใช้ `$ref` reuse, ใส่ `examples`, ระบุ error + status code + auth scheme ครบ, อย่า hardcode URL (ใช้ server variable)
|
|
70
|
+
- **★ secret hygiene (บังคับ — `openapi.yaml` ถูก commit ถาวร):** ก่อน commit/promote ต้อง **scrub** — `servers.url` ใช้ placeholder/variable (ไม่ใช่ internal/staging host จริง), `examples`/`example`/default ใช้ค่า dummy (`user@example.com`, `<token>`) **ห้าม secret/credential/PII จริง**, `securitySchemes` ระบุแค่รูปแบบ ไม่ใส่ค่า token จริง — โดยเฉพาะตอน code-first gen จากโค้ด ที่ค่าจริงมักหลุดติดมา (สอด `docs/rule.md` §3.2 + spec convention "ค่าสังเคราะห์เท่านั้น")
|
|
71
|
+
- **เครื่องมือ (ติดตั้งเองเมื่ออยากใช้ — ไม่ผูกใน workflow):**
|
|
72
|
+
|
|
73
|
+
| งาน | เครื่องมือ | คำสั่งตัวอย่าง |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| lint spec | Spectral | `spectral lint openapi.yaml` |
|
|
76
|
+
| lint/bundle/preview | Redocly CLI | `redocly lint openapi.yaml` |
|
|
77
|
+
| gen client SDK | OpenAPI Generator | `openapi-generator-cli generate -i openapi.yaml -g typescript-fetch -o ./gen/ts` |
|
|
78
|
+
| gen จากโค้ด | FastAPI (auto), tsoa (`@Route`/`@Get`) | ตามเฟรมเวิร์ก |
|
|
79
|
+
|
|
80
|
+
- **Skill อ้างอิง (optional):** `openapi-spec-generation` — template library เต็ม (full API spec, FastAPI, tsoa, Spectral ruleset, SDK gen)
|
|
81
|
+
ที่มา: `wshobson/agents` → `plugins/documentation-generation/skills/openapi-spec-generation/`
|
|
82
|
+
(`SKILL.md` + `references/details.md` + `references/code-first-and-tooling.md`) — โปรเจกต์ไหนอยากได้ template สำเร็จรูปค่อยติดตั้ง
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 6. ที่อยู่ของ artifact
|
|
87
|
+
|
|
88
|
+
| ระยะ | ที่ | หมายเหตุ |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| ระหว่างงาน | `docs/stages/<slug>/openapi.yaml` | optional — เฉพาะ topic ที่แตะ REST API |
|
|
91
|
+
| ถาวร (หลัง SHIP) | `docs/techstack/<component>/openapi.yaml` | living API contract — SHIP merge ตาม delta |
|
|
92
|
+
|
|
93
|
+
> **`<component>` resolution (ห้ามเดา):** topic แตะ **หลาย component** หรือ component ที่ **ยังไม่มีใน `docs/techstack/`** → ถาม user ว่าจะวาง contract ที่ component ไหน / สร้าง techstack entry ก่อนไหม — ไม่เดาเอง
|
|
@@ -1,91 +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` เขียนแล้ว
|
|
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` เขียนแล้ว
|