Các trường hợp sử dụng quy trình AI (AI Workflow Use Cases)
Ngữ cảnh: Bạn đang làm dự án FE viết note, giống như Notion
7 kịch bản: 5 kịch bản dùng bộ skill /morkit:*, cộng 2 kịch bản dựng UI từ Figma (qua Figma MCP hoặc file HTML tự export). Thể hiện rõ từng bước phía dưới, kèm output dự kiến của AI. Mỗi Use Case (UC) được chia thành các bước (step) có Tại sao · Bạn làm
· Bạn thấy, để người mới follow được.
Dùng sidebar bên trái chuyển UC, hoặc click vào từng bước (step) để chuyển hướng nhanh.
Brownfield onboarding — quét codebase có sẵn thành bộ docs tối ưu cho AI
Tình huống thực tế: bạn vừa được giao một repo brownfield (đã có
code, có thể có vài tài liệu rời rạc như README) nhưng chưa có bộ docs/
có cấu trúc cho AI agent. UC này dùng /morkit:init
để quét codebase một lần và dựng taxonomy 00-overview … 90-operations,
rồi duy trì bằng /morkit:docs update. Demo trên repo
Notion-clone (Next.js 15 · TipTap · Drizzle · Supabase).
Hoàn toàn LLM-driven — không Python, không venv, không cài gì thêm. init tự nhận biết đây là brownfield (có manifest + có code) rồi chạy pipeline scout. Người mới nên chú ý Step 3 (cổng duyệt docs-plan) — đây là chỗ chốt phạm vi trước khi sinh tài liệu.
Step 1 Gõ /morkit:init — preflight + chọn scale
— Stage 0: kiểm tra docs/ · tự phát hiện brownfield (có manifest + có code) · hỏi project hay per-module
Step 2 Scout codebase (read-only, song song) — Stage 1 — dispatch agent morkit-native · bỏ qua .git/node_modules/dist · gom tín hiệu → ánh xạ folder điều kiện
Step 3 🚦 Cổng duyệt docs-plan (Stage 2 — gate quan trọng) — xem folders/files sẽ tạo + danh sách feature tạm + scale · chọn Proceed / Adjust / Abort
Step 4 Sinh nội dung → mỏ neo (Stage 3–4: Scout→Content→MAP) — dispatch song song theo nhóm, file ownership tách biệt · viết content TRƯỚC, MAP SAU
Step 5 🚦 Con trỏ CLAUDE.md/AGENTS.md + validate (Stage 4b–5)
— ghi pointer block qua marker + approve gate mỗi file · validate links/front-matter/traceability
Step 6 Bảo trì khi code đổi: /morkit:docs update
— dò drift theo source_files · re-scout vùng đổi · bridge change-spec · giữ phần sửa tay
Greenfield project — từ ý tưởng đến docs lớn dần cùng code
Tình huống thực tế: bạn được giao một dự án greenfield — chưa có
code, chưa có docs, chỉ có idea note / requirement. Khác brownfield, ở đây
/morkit:init KHÔNG quét được gì để suy ra docs:
nó chỉ gieo một khung docs đúng định dạng (no fiction), rồi
/morkit:docs update bồi dần phần suy-từ-code khi bạn
viết code. UC này là quy trình end-to-end cho TaskFlow, mọi bước bám lệnh có thật.
Khác UC1 thế nào? Brownfield có code làm anchor → init quét ra docs đầy
đủ ngay. Greenfield không có anchor → init chỉ gieo SPINE (SCOPE · DOCUMENT-MAP
· FEATURE-LIST rỗng · con trỏ CLAUDE.md). WHAT/WHY nắm qua
/morkit:propose; docs code-derived (SOURCE-MAP, SYS-SPEC,
DATA/API/UI-MAP) do /morkit:docs update tạo dần khi có code.
Step 1 Brainstorm ý tưởng với /morkit:brainstorming
— explore stance · thinking partner free-form, không viết code · auto-save design log cuối phiên
Step 2 /morkit:init — gieo khung docs rỗng (Stage 1G)
— init tự phát hiện greenfield (không manifest + ~0 LOC) · gieo SPINE đúng định dạng · TUYỆT ĐỐI không bịa
Step 3 🚦 Opt-in: gieo STACK + ARCHITECTURE dự kiến?
— một cổng duy nhất · mặc định KHÔNG (--yes cũng = KHÔNG) · đây là intent, không phải code-derived
Step 4 Viết spec cho từng thay đổi: /morkit:propose → /morkit:review
— nắm WHAT/WHY trước khi code · sinh proposal · design · tasks (TDD) · review-checklist
Step 5 Code theo plan — executing-plans / TDD
— bị plan-review-gate chặn tới khi checklist OK · viết test trước, code sau · giờ repo MỚI có code
Step 6 /morkit:docs update — bồi docs khi code lớn dần
— "new components" tạo folder điều kiện · bridge change-spec · dựng SOURCE-MAP/SYS-SPEC/DATA·API·UI-MAP
Step 7 🚦 Chạy /morkit:docs update TRƯỚC /morkit:archive
— archive xong thì change ra khỏi tầm bridge · WHAT/WHY sẽ không kịp vào docs/
Feature mới hoàn toàn — tích hợp TipTap editor để edit note
Step 0 Khám phá repo — hiểu trạng thái 3 nhánh, đề xuất hướng đi
▼ OUTPUT Đang ở explore mode — đọc repo, không implement. // branches discovered origin/brainstorming 4e5c629 // 2 nhánh trỏ cùng commit origin/docs 4e5c629 origin/greenfield 67bae32 ← default, working line // active morkit change bootstrap-mortion-v1 status: in-progress tasks 0/64 ⚠ Tension #1 — code đã ship vượt scope của bootstrap (sidebar, command palette, blocks renderer) nhưng tasks.md = 0 ticked. ⚠ Tension #2 — review-checklist gate vẫn = PENDING dù code đã land. → Đề xuất: tách editor-wire-v1 change để wire TipTap thật trước khi persistence.
Step 1 Sinh morkit artifacts — proposal · design · tasks · checklist · spec
▼ OUTPUT [Context7] Verifying TipTap 3.22 API surface... OK [Context7] Verifying lowlight v3 + extension-code-block-lowlight... OK [Context7] tiptap drag-handle peer deps audit... heavy Đã tạo: morkit/output/spec/editor-wire-v1/ ├── proposal.md (40 dòng) ├── design.md (126 dòng — có ## Tech Stack section) ├── tasks.md (173 dòng — 11 task groups) ├── review-checklist.md (FE-Feature variant, 126 dòng) └── specs/editor/spec.md (123 dòng — 8 Requirements, 17 Scenarios) 🚦 GATE: review-checklist.md có "Overall Decision: PENDING". Hãy đọc + tick các mục, đặt OK trước khi /morkit:executing-plans.
Step 2 🚦 Human review gate — bạn phải review và duyệt, agent SẼ KHÔNG tự động phê duyệt hay sửa file review
Step 3 Thực thi 11 task groups (chạy theo TDD) — mỗi group: read → red → green → verify → commit
▼ OUTPUT (rút gọn — 11 groups) ▶ Group 1/11 — Vitest + RTL setup RED: tests/sanity.test.ts FAIL (no config) GREEN: vitest.config.ts PASS 2/2 ✓ commit af7dae3 chore(test): set up Vitest + Testing Library ▶ Group 2/11 — UUID utility RED: tests/lib/uuid.test.ts FAIL (regex unmet) GREEN: lib/uuid.ts (Web Crypto) PASS 4/4 ✓ commit c814ed4 feat(lib): add uuid() generator ▶ Group 3/11 — BlockUuid extension RED: block-uuid.test.ts FAIL (id null) // debug: appendTransaction không fire ở initial content load // fix: parseHTML default uuid() khi missing data-id GREEN: components/editor/extensions/block-uuid.ts PASS 8/8 ✓ commit 59dab16 feat(editor): add BlockUuid extension ▶ Group 4/11 → 53b15fb feat(editor): replace Blocks with live Editor ▶ Group 5/11 → ee2d59d feat(editor): wire slash menu via @tiptap/suggestion ▶ Group 6/11 → 814eace feat(editor): drag-handle decoration (DnD UX deferred) ▶ Group 7/11 → 7b91250 feat(editor): Mention (@) + PageLink ([[) nodes ▶ Group 8/11 → 1db79dd feat(editor): code block + lowlight ▶ Group 9/11 → bff55f3 test(editor): keyboard passthrough (⌘K, ⌘⇧L…) ▶ Group 10/11 → 1676421 docs(readme): Status v0 → v1 ▶ Group 11/11 — E2E verify $ npm run lint && npm run typecheck && npm test && npm run build ✔ Không có lỗi hoặc cảnh báo ESLint nào ✔ tsc --noEmit sạch sẽ ✔ Số tệp kiểm thử: 9 tệp đạt (9) · Các ca kiểm thử: 34 ca đạt (34) ✔ Bản build ✓ Biên dịch thành công · dung lượng tệp 229 kB · 332 kB FLJ
Step 4 Self-review (deep-review trên local diff) — 5 subagents chạy song song trước khi push code
▼ OUTPUT [deep-review] Building call graph (uvx code-review-graph)... [deep-review] Spawning 5 subagents in parallel... • risk · security · pattern · tests · convention ╭─ Risk ────────────────────────────────────────────╮ │ MAJOR .claude-flow/data/pending-insights.jsonl │ │ tooling telemetry leaked (44 lines) │ ╰─────────────────────────────────────────────────────────╯ ╭─ Security ────────────────────────────────────────╮ │ MAJOR blocks-to-html.ts:38 — data-id raw interp. │ │ MAJOR npm audit: 1 HIGH (6 moderate) │ ╰─────────────────────────────────────────────────────────╯ ╭─ Pattern 3 Minor (naming, render() trap, classNames) ╮ ╭─ Tests 1 Major (no XSS test for Block.text) ╮ ╭─ Convention ✓ clean ╮ Tổng: 0 Critical · 4 Major · 7 Minor
Step 5 Push + mở PR — bạn sẽ review PR này
▼ OUTPUT + [new branch] feature/editor-wire-v1 → feature/editor-wire-v1 https://github.com/mor-nhatlq/Notion-clone/pull/1 # 35 files · +4806/−1104 (incl. lock) # 13 commits, conventional, no Co-Authored-By
Step 6 🚦 Xong task → cập nhật docs: /morkit:docs update → /morkit:archive
— bridge change-spec editor-wire-v1 vào docs/ TRƯỚC khi archive · code = HOW, spec = WHAT/WHY
▼ OUTPUT [drift] doc lệch theo source_files (vùng editor): M 20-design/40-ui/UI-MAP components/editor/** mới M 00-overview/SOURCE-MAP +lib/uuid · extensions/block-uuid [bridge] change active editor-wire-v1 (tasks ✓ 11/11, chưa archive): spec.md 8 Requirement → 10-requirements/FEATURE-LIST (FR mới / cập nhật) spec.md 17 Scenario → 10-requirements/flows/ + 30-test/TEST-MATRIX (1 scenario = 1 row) design.md Decisions → 20-design/ADR/NNN-tiptap-block-uuid.md design.md Risks → 40-ai-coding/RISK-REGISTER + KNOWN-PITFALLS // code = HOW (canonical). spec khẳng định mà code chưa có → status: drift [write] cập nhật content → re-derive MAP · bump `updated` ✓ giữ phần sửa tay ▶ Đóng change SAU khi đã bridge/morkit:archive $ /morkit:archive editor-wire-v1 # → archive/2026-05/ · WHAT/WHY đã nằm trong docs/ # Thứ tự VÀNG: docs update → archive. docs/ giờ phản ánh đúng # feature vừa ship — input chất lượng cho UC4 (fix) / UC5 (review).
Bug fix — Unicode normalize trong CommandPalette
Bug nhỏ (file changes ≤2 files): cmdk mặc định không chuẩn hoá Unicode.
Step 0 systematic-debugging — ép quy trình 5 bước, xác định root cause
▼ OUTPUT (5 bước) 📋 1. Tái dựng lỗi tối giản (Reproduce minimal) ✓ ⌘K → gõ "Phân" (NFD via Unikey) → expected "Phân tích" actual: empty list 📊 2. Quan sát thực tế so với mong đợi - cmdk default filter: chuỗi.toLowerCase().includes(query) - Tiếng Việt 2 form: NFC (U+00E2) vs NFD (U+0061 U+0302) - .includes() so sánh bytes → mismatch khi form khác 🌳 3. Cây giả thuyết (Hypothesis tree) H1 — Không khớp chuẩn hóa Unicode (NFC vs NFD) ✓ rất có khả năng (likely) H2 — components/cmd/command-palette.tsx ghi đè bộ lọc H3 — Dữ liệu LỆNH (COMMANDS) có NBSP / dấu kết hợp 🔬 4. Kiểm chứng giả thuyết (Falsify) >> JSON.stringify("Phân") → "Phân" >> JSON.stringify("Phân") → "Phân" ✓ Xác nhận H1 — bỏ qua H2/H3 📍 5. Nguyên nhân gốc rễ (Root cause) 📄 components/cmd/command-palette.tsx (line ~57) Filter prop chưa normalize Unicode. cmdk dùng raw compare. 💡 Cách sửa: thêm bộ lọc tùy chỉnh (custom filter) dùng String.prototype.normalize('NFC')
Step 1 Branch riêng + fix tay — 2 tệp, không qua lệnh /morkit:propose
▼ SO SÁNH KHÁC BIỆT (DIFF) + /** + * Normalize a string for fuzzy substring matching that's robust to: + * - Unicode form differences (NFC precomposed â vs NFD a + combining ◌̂) + * - Case differences (English ASCII fold). + */ + function normalizeForSearch(value: string): string { + return value.normalize("NFC").toLowerCase() + } <Command onKeyDown={(e) => { if (e.key === "Tab") e.preventDefault() }} + filter={(value, search) => { + const v = normalizeForSearch(value) + const s = normalizeForSearch(search) + return v.includes(s) ? 1 : 0 + }} >
Step 2 Verify — dự án mới (greenfield) chưa có bộ kiểm thử cơ sở (vitest baseline)
Step 3 Push + PR #2 — việc phụ: thêm .claude-flow/ vào .gitignore
Code review — /morkit:deep-review <PR#>
Plugin deep-review kích hoạt 5 subagents
chạy song song để đánh giá: rủi ro · bảo mật · pattern · tests · convention trên diff. Đọc
tệp CLAUDE.md với mức ưu tiên cao nhất. Kết quả đầu ra là bảng phát hiện lỗi chỉ rõ dòng và tệp cụ thể (file:line),
xếp hạng theo độ nghiêm trọng, đưa ra kết luận xem có Approve không, hay yêu cầu thay đổi.
Step 0 Lấy mã nguồn (Checkout) + kích hoạt deep-review — hoặc chạy /morkit:deep-review --diff trên máy cục bộ (local)
▼ KẾT QUẢ (OUTPUT) [deep-review] Đang lấy thông tin PR 1 + phần khác biệt (diff)... [deep-review] Sự khác biệt PR: 35 tệp thay đổi, +4806 dòng / −1104 dòng [deep-review] Đang dựng sơ đồ gọi hàm (call graph) (uvx code-review-graph)... [deep-review] Đang đọc tệp CLAUDE.md làm ngữ cảnh có độ ưu tiên cao nhất... [deep-review] Đang khởi chạy 5 tác nhân phụ (subagents) song song: ▸ rủi ro (risk) (vùng ảnh hưởng blast radius, lỗi đổ vỡ) ▸ bảo mật (security) (XSS, lộ bí mật, kiểm toán) ▸ khuôn mẫu (pattern) (cách đặt tên, quy chuẩn, cấu trúc) ▸ kiểm thử (tests) (độ bao phủ coverage, các trường hợp biên edge cases) ▸ quy chuẩn (convention) (lỗi cú pháp lint, định dạng format, quy tắc dự án)
Step 1 Tạo báo cáo 5 phần (5-section report) — phát hiện lỗi xếp hạng theo độ nghiêm trọng, chỉ rõ file:line
Step 2 Khép kín vòng lặp bằng commit sửa lỗi (fix commit) — ý kiến đánh giá (review feedback) → sửa lỗi (fix) → đánh giá lại (re-review)
▼ KẾT QUẢ (PR #1 đã cập nhật) 1676421..3e694c9 feature/editor-wire-v1 → feature/editor-wire-v1 # 2/4 lỗi Lớn (Major) đã được giải quyết (resolved) ngay trong cùng PR. # 7 lỗi Nhẹ (Minor) + 2 lỗi Lớn (Major) còn lại hoãn (defer) sang editor-polish-v1. Đường ống khép vòng (Pipeline): Trường hợp sử dụng 2 (tính năng) ─▶ PR #1 │ Đánh giá Trường hợp sử dụng 4 ▼ các phát hiện lỗi được đăng tải │ ──────────────────────── ▼ Sửa lỗi kiểu Trường hợp sử dụng 3 trên cùng PR ▼ PR #1 đã cập nhật
Figma → code — 4 bước MCP chuẩn
Có Figma URL (hoặc đang chọn node trên Figma desktop), muốn dựng thành code
khớp 1:1 với design. Figma chỉ để LẤY design: skill
figma-implement-design + Figma MCP chạy 4 lệnh theo thứ tự cố
định, thu hẹp dần (ảnh → cấu trúc node → ngữ cảnh chi tiết → token biến) để
trích xuất design-as-code + token. Phần BUILD bàn giao sang
morkit — plan · TDD · verify theo convention dự án.
PHASE 0 Lấy node-id — parse từ URL hoặc lấy selection trên Figma desktop
▼ PARSE fileKey = kL9xQn2VwM8 # segment sau /design/ nodeId = 42-15 # query param node-id # Hoặc dùng figma-desktop MCP: chọn node trong app → khỏi cần URL
PHASE 1 get_screenshot — ảnh chuẩn thị giác, giữ xuyên suốt để validate cuối
▼ OUTPUT ✓ PNG render của frame → mỏ neo thị giác (source of truth) # Mọi bước sau đối chiếu lại ảnh này, không để code trôi khỏi design
PHASE 2 get_metadata — bản đồ node cấp cao, chọn child cần lấy chi tiết
▼ OUTPUT (cây node) 📦 42-15 Card/Pricing FRAME ├─ 42-16 Header TEXT ├─ 42-20 PriceRow AUTO-LAYOUT └─ 42-31 CTAButton INSTANCE → Button # Payload quá to / bị truncate? → dùng metadata chọn đúng child, # rồi gọi get_design_context riêng cho từng node con (vd 42-31)
PHASE 3 get_design_context — layout / typography / component (trả React + Tailwind)
▼ OUTPUT - Auto Layout: vertical, gap 16, padding 24 - Typography: Inter 14/20, weight 600 - Fills: token surface/card, border border/subtle - Trả mẫu code React + Tailwind — coi như mô tả design, KHÔNG phải code cuối
PHASE 4 get_variable_defs — token màu / spacing / font → map sang design system dự án
▼ OUTPUT (biến Figma → token dự án) surface/card #FFFFFF → --color-surface-card border/subtle #E5E7EB → --color-border-subtle space/4 16px → --space-4 # Ưu tiên token design system dự án thay vì hardcode giá trị từ Figma
PHASE 5 Bàn giao sang morkit — dựng + validate 1:1 — design-as-code của Figma chỉ là nháp; morkit dựng đúng convention rồi verify
▼ CHECKLIST validate (so với ảnh PHASE 1) [✓] Layout: spacing / căn lề / kích thước khớp [✓] Typography: font / size / weight / line-height khớp [✓] Màu: dùng token, không hardcode [✓] Reuse component design system thay vì tạo mới [✓] Asset lấy từ payload Figma (localhost src), không thêm icon package [✓] Trạng thái hover / active / disabled đúng design
Figma export HTML → Claude đọc file → mockup UI
Không qua Figma MCP. Bạn (hoặc designer) tự dùng plugin export ngay trong
Figma — Dev Mode export, html.to.design, "Figma to
HTML"… — để xuất design ra file .html + thư mục
asset. Sau đó đưa file cho Claude đọc và dựng lại UI trong stack đích. Hợp khi
máy chưa nối được Figma MCP, hoặc design do bên thứ ba gửi sang dạng file.
Figma chỉ tạo design-as-HTML; phần dựng lại dùng skill
morkit (plan → build → verify).
PHASE 0 Export trên Figma (thủ công) — thao tác trong Figma, ngoài Claude
PHASE 1 Đưa file cho Claude — Claude đọc thẳng file .html bằng Read
▼ CLAUDE >> Read("design-export/index.html") ✓ nạp ~640 dòng HTML + inline style
PHASE 2 Phân tích cấu trúc từ HTML — bóc layout / style / spacing từ markup export
PHASE 3 Mockup lại trong stack đích — dựng component + token dự án, đối chiếu HTML gốc
Bộ docs generate — cấu trúc & tác dụng từng template (cho AI Agent)
/morkit:init dựng một taxonomy cố định dưới docs/:
6 nhóm core (00-overview … 90-operations) + sub-taxonomy trong 20-design/.
Mỗi file là một "mỏ neo" (anchor) nhỏ (~100 LOC), liên kết chéo, front-matter nhẹ —
để AI agent nạp đúng context tối thiểu cho mỗi task thay vì đọc cả repo.
3 tier: core luôn tạo · conditional chỉ tạo khi scout thấy component khớp (không folder rỗng) · optional chỉ khi được yêu cầu. Thứ tự sinh luôn là Scout → Content → MAP → agent-instructions (MAP/anchor viết sau cùng để link trỏ tới file thật).
00-overview/ — Cửa ngõ điều hướng & bản đồ code
Core. Agent đọc nhóm này TRƯỚC để định hướng và biết code nằm ở đâu.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
SCOPE.md | core | In Scope · Out of Scope · Boundaries (must own / must NOT own) | Chặn agent sửa vượt ranh giới module |
DOCUMENT-MAP.md | core | Directory Roles · Read Paths (theo task) · Canonical Source Rules | Định tuyến: đọc doc nào, thứ tự nào cho từng loại task |
SOURCE-MAP.md | core | Concern→Source · Key Symbols · Code Search Keywords · Source Boundaries | Mỏ neo concern→file→symbol → grep đúng chỗ ngay |
DEPENDENCY-MAP.md | core | Internal · External · Data · Cross-Module dependencies | Thấy tác động phụ thuộc trước khi sửa |
GLOSSARY.md | core | Terms→nghĩa→source ref · Status/Enum values | Giải nghĩa jargon, trỏ định nghĩa canonical trong code |
STACK.md | conditional | Tech stack · repo layout · entry points · LOC (scout: có manifest package.json/pyproject…) | Một chỗ nắm hình dạng dự án + điểm vào (entry point) |
10-requirements/ — WHAT: hệ thống làm gì
Core. Catalog tính năng + luồng người dùng. Cấp ID FR-/NFR- dùng xuyên suốt design & test.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
FEATURE-LIST.md | core | Legend · Actors · bảng FR (FR-ID→feature→module→status→value→spec) · bảng NFR | Nguồn DUY NHẤT cấp FR-/NFR-, chống trôi định nghĩa feature |
USER-FLOWS.md | core | Flow Index (per-feature) hoặc inline flows (happy / error) | Đối chiếu hành vi code khớp UX dự kiến, không chỉ đúng kỹ thuật |
flows/FR-NNN-*.md | core | Happy Path · Alternate/Error Paths · Touchpoints (screen/API/table) | Đảm bảo mọi screen/API trong flow được sửa cùng nhau |
20-design/ — HOW: kiến trúc, spec, bản đồ data/API/UI
Core + conditional. 00-core & 10-features luôn có; data/api/ui/ADR/reference tạo theo tín hiệu scout.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
DESIGN-MAP.md | core | Design Layers (doc→purpose) · System Overview flow · Key Decisions (+ADR links) | Định hướng tầng design + dòng dữ liệu trong 1 lần đọc |
00-core/ARCHITECTURE.md | core | arc42-lite: Goals · Constraints · Context · Strategy · Building Blocks (CMP/LAY id) · Runtime · Crosscutting | Mô hình hệ thống đầy đủ: tầng nào tương tác, component nào sở hữu concern nào |
00-core/INVARIANTS.md | core | INV-### theo nhóm: Access Control · Data Integrity · Async · Integrations · Settings · Legacy | Guard-rail: kiểm trước khi code; mỗi INV gắn TEST-MATRIX |
10-features/*-SYS-SPEC.md | core | Purpose · Source Anchors (layer→file) · Behavior/Flow · Business Rules (BR-###) · Change Impact | Context đầy đủ 1 feature: đọc flow → biết file sửa + cần test gì |
20-data/DATA-MAP.md | conditional | MAP-mode (table roles + key cols + trỏ schema) hoặc FULL-mode (ERD + DDL) (scout: schema/migrations/ORM) | Trỏ schema nguồn, không nhân bản DDL → khỏi lỗi lệch |
30-api/API-MAP.md | conditional | Endpoints (method·path·handler·auth) · params · error conventions (scout: routes/controllers) | Tra endpoint + handler + auth mà không cần mở code |
40-ui/UI-MAP.md | conditional | App structure · routes→components · key components · UI gotchas (scout: frontend/components) | Tra nhanh route→component + ràng buộc UI baked-in |
ADR/NNN-*.md | conditional | MADR: Context · Decision · Consequences · Alternatives (status/date) (scout: có quyết định kiến trúc) | Hiểu WHY trước khi đổi HOW → tránh undo quyết định cũ |
90-reference/*-REFERENCE.md | optional | Pointer doc: schema/route/frontend sources + grep anchors (KHÔNG nhân bản nội dung) | Đích grep canonical; các MAP trỏ vào đây |
30-test/ — Test: chiến lược, cách chạy, truy vết
Core. Cho agent biết test gì, chạy thế nào, và requirement nào đã được phủ.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
TEST-STRATEGY.md | core | Existing Coverage · Priority Areas (theo risk) · Test Levels · Manual Focus | Biết test gì & vì sao — dồn sức vào vùng rủi ro cao |
TEST-RUNBOOK.md | core | Lệnh chạy theo stack · Manual Verification · Minimal checks theo loại đổi · Gaps | Copy-paste lệnh test + mức kiểm tối thiểu trước khi submit |
TEST-MATRIX.md | core | 1 dòng / case: Ref(FR/NFR/INV)→Feature→Case→Expected→Status | Truy vết requirement↔test, thấy ngay gì còn TODO |
40-ai-coding/ — Hướng dẫn tối ưu riêng cho AI agent
Core (trừ CODE-STANDARDS). Nhóm "dành cho agent": đọc gì trước, grep thế nào, tránh lỗi gì.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
AI-CODING-GUIDE.md | core | Before Editing (read order) · Safe Change Workflow 6 bước · Notes for agents | Doc agent mở ĐẦU TIÊN: đọc gì, theo thứ tự nào trước khi sửa |
CODE-SEARCH-GUIDE.md | core | Công thức rg theo task (entry · data-flow · config · auth · schema · routes · tests) | Lệnh grep sẵn, khỏi đoán pattern |
CODE-STANDARDS.md | conditional | Tooling · Formatting (FMT-###) · Naming · Lint · Commit · Branch/PR · hooks (scout: lint/format/commit config) | Format/lint đúng mà không cần chạy thử — facts, không phải prose |
COMMON-CHANGE-PLAYBOOKS.md | core | Các bước cho từng loại đổi (add entity/field · change rule · add module · remove/deprecate) — kết bằng "update docs" | Theo playbook có sẵn, luôn nhắc bước cập nhật docs |
KNOWN-PITFALLS.md | core | Bảng: Pitfall → Why It Happens → How To Avoid | Thấy lỗi thường gặp + cách tránh TRƯỚC khi mắc |
RISK-REGISTER.md | core | Bảng: Risk → Impact → Mitigation (cấp hệ thống/business) | Thấy hậu quả production + cách giảm thiểu |
90-operations/ — Vận hành local & xử lý sự cố
Core. Giúp agent chạy app và chẩn đoán lỗi runtime.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
LOCAL-RUNBOOK.md | core | Start (lệnh / service) · URLs · DB checks · Verify Key Operations | Chạy app local mà không phải đào docs |
TROUBLESHOOTING.md | core | Theo từng triệu chứng → checks xếp từ rẻ/nhanh → tốn | Mô tả triệu chứng → nhảy đúng mục, check theo chi phí |
README — Cửa vào (root + mỗi folder)
Core. Trang landing mỏng cho docs/ và mini-map cho từng folder.
| Template | Tier | Cấu trúc chính | Tác dụng cho AI Agent |
|---|---|---|---|
README (root) | core | 1 câu mô tả · Canonical Docs (chỉ link anchor chính, không path source) | Cửa vào → nhảy ngay sang DOCUMENT-MAP đọc theo thứ tự |
README (mỗi folder) | core | Vai trò folder 1 câu · Docs (file→mô tả) · Related (link folder anh em) | Định hướng nhanh trong folder, khỏi mò file |
Vì sao tách nhỏ & gắn front-matter? Mỗi anchor ~100 LOC để agent đọc nhanh, không nuốt cả file lớn.
source_files trong front-matter là hạt giống cho /morkit:docs update dò drift;
status (draft/stable/planned/drift) đánh dấu intent vs đã-bám-code. Quy ước đầy đủ: xem
references/taxonomy.md + anchor-conventions.md trong skill writing-docs.