@longph2102/v-flow 1.5.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/AGENTS.md +265 -0
- package/CHANGELOG.md +318 -0
- package/LICENSE +21 -0
- package/README.md +326 -0
- package/agents/ba-agent.md +437 -0
- package/agents/ba-critic-agent.md +156 -0
- package/agents/ba-to-ptyc-agent.md +112 -0
- package/agents/bugfix-analyst-agent.md +221 -0
- package/agents/constitute-agent.md +155 -0
- package/agents/help-agent.md +168 -0
- package/agents/implement-agent.md +220 -0
- package/agents/import-ba-docs-agent.md +164 -0
- package/agents/master-check-agent.md +228 -0
- package/agents/metrics-agent.md +180 -0
- package/agents/operations-agent.md +123 -0
- package/agents/plan-agent.md +218 -0
- package/agents/prototype-agent.md +191 -0
- package/agents/retrospective-agent.md +196 -0
- package/agents/review-agent.md +210 -0
- package/agents/sprint-agent.md +191 -0
- package/agents/status-agent.md +186 -0
- package/agents/sync-agent.md +201 -0
- package/agents/test-agent.md +166 -0
- package/agents/understand-agent.md +339 -0
- package/cli/commands/check.js +96 -0
- package/cli/commands/dev-quiz.js +107 -0
- package/cli/commands/doctor.js +348 -0
- package/cli/commands/feature.js +259 -0
- package/cli/commands/hooks.js +163 -0
- package/cli/commands/init.js +189 -0
- package/cli/commands/log.js +199 -0
- package/cli/commands/plugin.js +230 -0
- package/cli/commands/score-card.js +203 -0
- package/cli/commands/status.js +269 -0
- package/cli/commands/sync.js +59 -0
- package/cli/commands/upgrade.js +150 -0
- package/cli/commands/validate.js +1259 -0
- package/cli/commands/watch.js +151 -0
- package/cli/index.js +46 -0
- package/cli/lib/ac-test-gate.js +89 -0
- package/cli/lib/activity-log.js +209 -0
- package/cli/lib/cli-error.js +183 -0
- package/cli/lib/constitution-lint.js +561 -0
- package/cli/lib/dev-quiz-grade.js +127 -0
- package/cli/lib/governance.js +78 -0
- package/cli/lib/hook-targets.js +167 -0
- package/cli/lib/i18n.js +375 -0
- package/cli/lib/knowledge-oracle.js +379 -0
- package/cli/lib/logger.js +203 -0
- package/cli/lib/module-card-lint.js +304 -0
- package/cli/lib/module-card-score.js +223 -0
- package/cli/lib/plugins.js +481 -0
- package/cli/lib/scanner.js +692 -0
- package/cli/lib/sync-core.js +232 -0
- package/cli/lib/sync-targets.js +84 -0
- package/cli/lib/templates.js +268 -0
- package/cli/lib/yaml-parser.js +203 -0
- package/commands/v.ba-critic.md +101 -0
- package/commands/v.ba-to-ptyc.md +71 -0
- package/commands/v.bugfix.md +86 -0
- package/commands/v.check.md +131 -0
- package/commands/v.constitute.md +87 -0
- package/commands/v.constitution.md +84 -0
- package/commands/v.fork.md +127 -0
- package/commands/v.help.md +73 -0
- package/commands/v.hotfix.md +200 -0
- package/commands/v.implement.md +92 -0
- package/commands/v.import-ba-docs.md +222 -0
- package/commands/v.metrics.md +74 -0
- package/commands/v.operations.md +70 -0
- package/commands/v.plan.md +78 -0
- package/commands/v.prototype.md +121 -0
- package/commands/v.quickfix.md +169 -0
- package/commands/v.retrospective.md +80 -0
- package/commands/v.review.md +78 -0
- package/commands/v.rewind.md +127 -0
- package/commands/v.specify.md +118 -0
- package/commands/v.sprint.md +75 -0
- package/commands/v.status.md +62 -0
- package/commands/v.sync.md +81 -0
- package/commands/v.test.md +67 -0
- package/commands/v.understand.md +112 -0
- package/package.json +65 -0
- package/skills/_shared/constitution-reader/SKILL.md +109 -0
- package/skills/_shared/constitution-reader/config.json +52 -0
- package/skills/_shared/constitution-reader/examples/good/b1-phase-output.md +48 -0
- package/skills/_shared/constitution-reader/gotchas.md +46 -0
- package/skills/_shared/context-reader/SKILL.md +111 -0
- package/skills/_shared/context-reader/config.json +54 -0
- package/skills/_shared/context-reader/examples/good/legacy-nodejs-output.md +35 -0
- package/skills/_shared/context-reader/gotchas.md +49 -0
- package/skills/_shared/ears-notation/SKILL.md +63 -0
- package/skills/_shared/ears-notation/config.json +55 -0
- package/skills/_shared/ears-notation/examples/good/plan-test-interpretation.md +29 -0
- package/skills/_shared/ears-notation/gotchas.md +43 -0
- package/skills/check/cross-validator/SKILL.md +206 -0
- package/skills/check/cross-validator/config.json +33 -0
- package/skills/check/cross-validator/examples/good/validation-report-pass-with-concerns.md +105 -0
- package/skills/check/cross-validator/gotchas.md +43 -0
- package/skills/implement/constitution-enforcer/SKILL.md +134 -0
- package/skills/implement/constitution-enforcer/config.json +16 -0
- package/skills/implement/constitution-enforcer/examples/bad/vague-report.md +42 -0
- package/skills/implement/constitution-enforcer/examples/good/compliance-report.md +57 -0
- package/skills/implement/constitution-enforcer/gotchas.md +26 -0
- package/skills/implement/constitution-enforcer/scripts/check-constitution.sh +88 -0
- package/skills/implement/no-go-zone-guard/SKILL.md +173 -0
- package/skills/implement/no-go-zone-guard/config.json +28 -0
- package/skills/implement/no-go-zone-guard/examples/good/adapter-workaround.md +46 -0
- package/skills/implement/no-go-zone-guard/gotchas.md +27 -0
- package/skills/implement/no-go-zone-guard/scripts/check-nogo-zones.sh +148 -0
- package/skills/implement/no-go-zone-guard/scripts/nogo-precommit.sh +96 -0
- package/skills/implement/tdd-driver/SKILL.md +159 -0
- package/skills/implement/tdd-driver/config.json +33 -0
- package/skills/implement/tdd-driver/examples/good/tdd-cycle-product-repo.md +81 -0
- package/skills/implement/tdd-driver/gotchas.md +34 -0
- package/skills/metrics/metrics-collector/SKILL.md +133 -0
- package/skills/metrics/metrics-collector/config.json +16 -0
- package/skills/metrics/metrics-collector/examples/bad/incomplete-report.md +48 -0
- package/skills/metrics/metrics-collector/examples/good/full-metrics-report.md +101 -0
- package/skills/metrics/metrics-collector/gotchas.md +26 -0
- package/skills/operations/incident-runbook/SKILL.md +167 -0
- package/skills/operations/incident-runbook/config.json +21 -0
- package/skills/operations/incident-runbook/examples/bad/vague-incident-report.md +48 -0
- package/skills/operations/incident-runbook/examples/good/p1-hotfix-response.md +119 -0
- package/skills/operations/incident-runbook/gotchas.md +26 -0
- package/skills/plan/architecture-designer/SKILL.md +228 -0
- package/skills/plan/architecture-designer/config.json +32 -0
- package/skills/plan/architecture-designer/examples/bad/vague-plan.md +62 -0
- package/skills/plan/architecture-designer/examples/good/expand-contract-migration.md +56 -0
- package/skills/plan/architecture-designer/examples/good/plan-structure.md +58 -0
- package/skills/plan/architecture-designer/gotchas.md +45 -0
- package/skills/plan/task-breakdown/SKILL.md +208 -0
- package/skills/plan/task-breakdown/config.json +26 -0
- package/skills/plan/task-breakdown/examples/bad/vague-tasks.md +77 -0
- package/skills/plan/task-breakdown/examples/good/spike-clarify-tasks.md +66 -0
- package/skills/plan/task-breakdown/examples/good/tasks-login-feature.md +111 -0
- package/skills/plan/task-breakdown/gotchas.md +39 -0
- package/skills/prototype/LOGIC.md +240 -0
- package/skills/prototype/SKILL.md +185 -0
- package/skills/prototype/UI.md +407 -0
- package/skills/prototype/config.json +104 -0
- package/skills/prototype/examples/bad/prototype-notes.md +68 -0
- package/skills/prototype/examples/good/prototype-notes-ui.md +109 -0
- package/skills/prototype/examples/good/prototype-notes.md +67 -0
- package/skills/prototype/gotchas.md +128 -0
- package/skills/prototype/scripts/check-flow-state.ps1 +112 -0
- package/skills/prototype/scripts/check-flow-state.sh +104 -0
- package/skills/prototype/scripts/check-prototype-cleanup.ps1 +124 -0
- package/skills/prototype/scripts/check-prototype-cleanup.sh +109 -0
- package/skills/prototype/scripts/check-prototype-notes.ps1 +107 -0
- package/skills/prototype/scripts/check-prototype-notes.sh +102 -0
- package/skills/review/adversarial-reviewer/SKILL.md +137 -0
- package/skills/review/adversarial-reviewer/config.json +32 -0
- package/skills/review/adversarial-reviewer/examples/good/review-report-template.md +56 -0
- package/skills/review/adversarial-reviewer/gotchas.md +46 -0
- package/skills/review/adversarial-reviewer/scripts/quick-security-scan.sh +52 -0
- package/skills/specify/ba-bpmn-doc-gen/SKILL.md +108 -0
- package/skills/specify/ba-bpmn-doc-gen/reference/reference-bpmn-generation.md +528 -0
- package/skills/specify/ba-bpmn-doc-gen/reference/reference-drawio-flowchart.md +466 -0
- package/skills/specify/ba-critic/SKILL.md +172 -0
- package/skills/specify/ba-critic/config.json +32 -0
- package/skills/specify/ba-critic/examples/good/critic-report-round1.md +51 -0
- package/skills/specify/ba-critic/gotchas.md +40 -0
- package/skills/specify/ba-critic/scripts/check-spec-quality.sh +72 -0
- package/skills/specify/ba-doc-generator/SKILL.md +102 -0
- package/skills/specify/ba-doc-generator/references/template-clevel.md +84 -0
- package/skills/specify/ba-doc-generator/references/template-compliance.md +83 -0
- package/skills/specify/ba-doc-generator/references/template-dev.md +138 -0
- package/skills/specify/ba-doc-generator/references/template-partner.md +167 -0
- package/skills/specify/ba-doc-generator/references/template-pm.md +92 -0
- package/skills/specify/ba-doc-generator/references/template-review.md +114 -0
- package/skills/specify/ba-doc-generator/references/template-tester.md +108 -0
- package/skills/specify/ba-doc-generator/references/template-user.md +98 -0
- package/skills/specify/bugfix-analyst/SKILL.md +296 -0
- package/skills/specify/bugfix-analyst/config.json +41 -0
- package/skills/specify/bugfix-analyst/examples/bad/common-mistakes.md +71 -0
- package/skills/specify/bugfix-analyst/examples/good/email-validation-bugfix.md +53 -0
- package/skills/specify/bugfix-analyst/gotchas.md +51 -0
- package/skills/specify/ears-writer/SKILL.md +129 -0
- package/skills/specify/ears-writer/config.json +20 -0
- package/skills/specify/ears-writer/examples/bad/common-mistakes.md +17 -0
- package/skills/specify/ears-writer/examples/good/login-requirements.md +41 -0
- package/skills/specify/ears-writer/gotchas.md +43 -0
- package/skills/specify/ears-writer/scripts/check-ears-compliance.sh +51 -0
- package/skills/test/test-case-generator/SKILL.md +161 -0
- package/skills/test/test-case-generator/config.json +33 -0
- package/skills/test/test-case-generator/examples/good/test-cases-login.md +104 -0
- package/skills/test/test-case-generator/gotchas.md +43 -0
- package/skills/understand/ba-docs-scanner/SKILL.md +239 -0
- package/skills/understand/ba-docs-scanner/config.json +47 -0
- package/skills/understand/ba-docs-scanner/examples/good/work-order-br-extract.md +28 -0
- package/skills/understand/ba-docs-scanner/gotchas.md +44 -0
- package/skills/understand/ba-docs-scanner/merge-rules.md +47 -0
- package/skills/understand/codebase-scanner/SKILL.md +260 -0
- package/skills/understand/codebase-scanner/config.json +56 -0
- package/skills/understand/codebase-scanner/examples/good/menu-module-output.md +44 -0
- package/skills/understand/codebase-scanner/gotchas.md +42 -0
- package/skills/understand/codebase-scanner/scripts/scan-project-structure.sh +64 -0
- package/templates/DESIGN.md +456 -0
- package/templates/agent-command-template.yaml +240 -0
- package/templates/agent-config-template.md +170 -0
- package/templates/agent-definition-template.md +145 -0
- package/templates/agent-metrics-template.md +150 -0
- package/templates/api-contract-template.md +72 -0
- package/templates/bugfix-report-template.md +195 -0
- package/templates/bugfix-spec-template.md +134 -0
- package/templates/code-review-report-template.md +119 -0
- package/templates/constitution-template.md +234 -0
- package/templates/context-template.md +94 -0
- package/templates/data-model-template.md +95 -0
- package/templates/decision-log-template.md +92 -0
- package/templates/flow-state-template.yaml +208 -0
- package/templates/github/workflows/v-flow-validate.yml +30 -0
- package/templates/knowledge/adr-template.md +70 -0
- package/templates/knowledge/api-contract-template.md +140 -0
- package/templates/knowledge/domain-glossary.md +29 -0
- package/templates/knowledge/golden-tests-readme.md +115 -0
- package/templates/knowledge/lessons-learned.md +41 -0
- package/templates/knowledge/patterns.md +103 -0
- package/templates/module-card/SKILL.md +85 -0
- package/templates/module-card/api-specs.md +96 -0
- package/templates/module-card/business-quiz.md +119 -0
- package/templates/module-card/cross-service.md +125 -0
- package/templates/module-card/db.md +85 -0
- package/templates/module-card/dev-quiz.md +62 -0
- package/templates/module-card/permissions.md +83 -0
- package/templates/module-card/state-diagram.md +64 -0
- package/templates/module-card/tech-context.md +90 -0
- package/templates/module-card/ui-flows.md +91 -0
- package/templates/module-card/use-cases.md +142 -0
- package/templates/module-template.yaml +161 -0
- package/templates/operations-report-template.md +108 -0
- package/templates/plan-template.md +308 -0
- package/templates/prototype-notes-template.md +116 -0
- package/templates/ptyc/PTYC.template.docx +0 -0
- package/templates/ptyc/ptyc.meta.example.yaml +44 -0
- package/templates/retrospective-report-template.md +136 -0
- package/templates/security-review-template.md +84 -0
- package/templates/session-template.md +167 -0
- package/templates/spec-review-log-template.md +75 -0
- package/templates/spec-template.md +229 -0
- package/templates/sprint-status-template.md +101 -0
- package/templates/tasks-template.md +275 -0
- package/templates/test-cases-template.md +124 -0
- package/templates/ux-checklist-template.md +79 -0
- package/templates/validation-report-template.md +125 -0
- package/templates/vflow-config-template.yaml +22 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Import BA Docs Agent — Trích xuất tài liệu BA từ Google NotebookLM vào Module Cards (Optional — U.0d)"
|
|
3
|
+
phase: "U.0d"
|
|
4
|
+
agent: "import-ba-docs-agent"
|
|
5
|
+
optional: true
|
|
6
|
+
dependency: "notebooklm-py (unofficial — pip install notebooklm-py)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /v.import-ba-docs
|
|
10
|
+
|
|
11
|
+
> Orchestration wrapper cho **Import BA Docs Agent**. Đọc `agents/import-ba-docs-agent.md` để thực hiện core logic.
|
|
12
|
+
|
|
13
|
+
> ⚠️ **OPTIONAL PHASE** — Phase U.0d không bắt buộc.
|
|
14
|
+
> Phụ thuộc vào `notebooklm-py` — thư viện unofficial, có thể break bất cứ lúc nào.
|
|
15
|
+
> Nếu không dùng được, BA export thủ công (PDF/copy-paste) → đặt vào `.v-flow/modules/{module}/raw/`
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
Trước khi chạy, cần đảm bảo:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
1. pip install "notebooklm-py[browser]"
|
|
25
|
+
2. playwright install chromium
|
|
26
|
+
3. notebooklm login ← Mở browser, login Google account
|
|
27
|
+
4. notebooklm list ← Verify thấy notebooks của BA
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Nếu bất kỳ bước nào fail → thông báo user và **hướng dẫn fallback thủ công**.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Modes
|
|
35
|
+
|
|
36
|
+
### Mode B: `--interactive` — User chọn cách nhóm sources (MẶC ĐỊNH)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
/v.import-ba-docs --notebook <id> --interactive
|
|
40
|
+
/v.import-ba-docs --notebook <id> ← mặc định = interactive
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Dành cho: **1 notebook lớn chứa nhiều sources thuộc nhiều domain khác nhau.**
|
|
44
|
+
User sẽ được hỏi cách nhóm sources → tạo nhiều Module Cards.
|
|
45
|
+
|
|
46
|
+
### Mode A: `--module <name>` — 1 Notebook → 1 Module Card
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
/v.import-ba-docs --notebook <id> --module <name>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Dành cho: **BA đã tổ chức 1 notebook/domain.** Tất cả sources trong notebook → 1 module card.
|
|
53
|
+
|
|
54
|
+
### Mode A+: `--module <name> --sources <ids>` — Chọn sources cụ thể
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
/v.import-ba-docs --notebook <id> --module <name> --sources src1,src2,src3
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Dành cho: **Chọn thủ công** một số sources từ notebook lớn → 1 module card.
|
|
61
|
+
|
|
62
|
+
### Mode C: `--auto-split` — AI đề xuất cách nhóm
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/v.import-ba-docs --notebook <id> --auto-split
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Dành cho: **Notebook rất lớn, nhiều sources.** AI phân tích titles + summaries → đề xuất nhóm → user confirm.
|
|
69
|
+
|
|
70
|
+
### Utility: `--raw-only` — Chỉ lấy raw data
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
/v.import-ba-docs --notebook <id> --module <name> --raw-only
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Chỉ download raw materials, không generate AI drafts.
|
|
77
|
+
|
|
78
|
+
### Utility: `--refresh` — Cập nhật module card
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
/v.import-ba-docs --notebook <id> --module <name> --refresh
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Re-download raw materials mới, so sánh diff với bản cũ → output diff report (sources UNCHANGED/MODIFIED/NEW/DELETED + affected drafts). Hỏi user: `"Cập nhật drafts tự động? (Y/n/manual review)"`.
|
|
85
|
+
Sections đã được Human verify (không còn tag `[⚠️ AI-inferred]`) → KHÔNG ghi đè, chỉ ghi warning.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Execution
|
|
90
|
+
|
|
91
|
+
1. Đọc agent definition: `agents/import-ba-docs-agent.md`
|
|
92
|
+
2. Đọc Skill scan strategy: `skills/understand/ba-docs-scanner/SKILL.md`
|
|
93
|
+
3. Thực hiện quy trình trong agent definition theo mode được chọn
|
|
94
|
+
|
|
95
|
+
### Bước 1: Kiểm tra điều kiện
|
|
96
|
+
|
|
97
|
+
1. Kiểm tra `notebooklm` CLI: `notebooklm --version`
|
|
98
|
+
2. Kiểm tra auth: `notebooklm auth check`
|
|
99
|
+
3. Kiểm tra `.v-flow/` đã tồn tại
|
|
100
|
+
|
|
101
|
+
### Bước 2: Kết nối notebook & liệt kê sources
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
notebooklm use <notebook_id>
|
|
105
|
+
notebooklm status
|
|
106
|
+
notebooklm source list --json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Bước 3: Xác định mapping Sources → Module Cards
|
|
110
|
+
|
|
111
|
+
- **Interactive (mặc định)**: Hiển thị sources → user nhóm thủ công
|
|
112
|
+
- **1:1 (--module)**: Tất cả sources → 1 module
|
|
113
|
+
- **Auto-split (--auto-split)**: AI đề xuất nhóm từ titles + summaries → user confirm
|
|
114
|
+
|
|
115
|
+
### Bước 4: Trích xuất raw materials (cho mỗi module)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
mkdir -p .v-flow/modules/{module-name}/raw/sources/
|
|
119
|
+
|
|
120
|
+
# Fulltext từng source
|
|
121
|
+
notebooklm source fulltext $source_id -o raw/sources/{title}.txt
|
|
122
|
+
|
|
123
|
+
# Mind-map, briefing doc, study guide
|
|
124
|
+
notebooklm generate mind-map -s src1 -s src2
|
|
125
|
+
notebooklm download mind-map raw/domain-map.json
|
|
126
|
+
notebooklm generate report --format briefing-doc --wait
|
|
127
|
+
notebooklm download report raw/overview.md
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
> ⚠️ Nếu `generate report` fail (rate limit) → skip, ghi warning. Raw fulltext đủ để tiếp tục.
|
|
131
|
+
> ⚠️ Với `--raw-only` → DỪNG ở đây.
|
|
132
|
+
|
|
133
|
+
### Bước 5: AI generate Module Card drafts
|
|
134
|
+
|
|
135
|
+
> **TRƯỚC KHI GENERATE**: Agent PHẢI đọc 2 files:
|
|
136
|
+
> 1. 📖 `skills/understand/ba-docs-scanner/SKILL.md` — scan strategy chi tiết cho từng loại draft
|
|
137
|
+
> 2. 📖 `skills/understand/ba-docs-scanner/gotchas.md` — anti-patterns và quality gate
|
|
138
|
+
|
|
139
|
+
Thực hiện generate theo hướng dẫn trong Agent + Skill. Kết quả:
|
|
140
|
+
|
|
141
|
+
| File | Khi nào tạo |
|
|
142
|
+
|------|------------|
|
|
143
|
+
| `SKILL.md` | Luôn tạo (entry point + glossary + constraints) |
|
|
144
|
+
| `use-cases.md` | Luôn tạo (E2E flows + business rules trích dẫn) |
|
|
145
|
+
| `cross-service.md` | Nếu BA docs đề cập tích hợp |
|
|
146
|
+
| `state-diagram.md` | Nếu BA docs mô tả trạng thái |
|
|
147
|
+
| `permissions.md` | Nếu BA docs mô tả phân quyền |
|
|
148
|
+
| `db.md` | Nếu BA docs mô tả data model |
|
|
149
|
+
| `ui-flows.md` | Nếu BA docs mô tả giao diện |
|
|
150
|
+
| `api-specs.md` | ⏳ Placeholder (chờ code scan) |
|
|
151
|
+
| `tech-context.md` | ⏳ Placeholder (chờ code scan) |
|
|
152
|
+
|
|
153
|
+
### Bước 6: Output summary
|
|
154
|
+
|
|
155
|
+
Hiển thị: files đã tạo, thống kê (BR count, flows, glossary terms), files cần BA review, bước tiếp theo.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Merge với U.0b (Code Scan)
|
|
160
|
+
|
|
161
|
+
> 📖 Xem chi tiết: `skills/understand/ba-docs-scanner/merge-rules.md`
|
|
162
|
+
|
|
163
|
+
Khi chạy `/v.understand --module {tên}` trên module đã có U.0d data → merge BA content với code scan results.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Fallback khi không có notebooklm-py
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
⚠️ notebooklm-py không khả dụng. Hãy export thủ công:
|
|
171
|
+
|
|
172
|
+
1. Mở NotebookLM web (https://notebooklm.google.com)
|
|
173
|
+
2. Với mỗi domain/module:
|
|
174
|
+
a. Copy nội dung sources → lưu vào .v-flow/modules/{module}/raw/sources/
|
|
175
|
+
b. Generate Study Guide trên web → download → lưu vào raw/
|
|
176
|
+
c. Screenshot Mind Map → lưu vào raw/
|
|
177
|
+
3. Chạy /v.import-ba-docs --module {tên} --raw-only
|
|
178
|
+
(skip NotebookLM, chỉ đọc files trong raw/ để generate drafts)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Ví dụ sử dụng
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
/v.import-ba-docs --notebook abc123
|
|
187
|
+
/v.import-ba-docs --notebook abc123 --module domain-wo
|
|
188
|
+
/v.import-ba-docs --notebook abc123 --auto-split
|
|
189
|
+
/v.import-ba-docs --notebook abc123 --module domain-wo --raw-only
|
|
190
|
+
/v.import-ba-docs --notebook abc123 --module domain-wo --refresh
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Bước tiếp theo sau khi chạy
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
1. BA review: use-cases.md, SKILL.md — xác nhận business rules [BẮT BUỘC]
|
|
199
|
+
2. BA xóa tag [⚠️ AI-inferred] sau khi verify [BẮT BUỘC]
|
|
200
|
+
3. (Song song) Chạy /v.understand --module {tên} [BẮT BUỘC]
|
|
201
|
+
→ AI scan codebase → điền api-specs, tech-context, ui-flows, db, state-diagram, permissions
|
|
202
|
+
→ Merge với U.0d data nếu có
|
|
203
|
+
4. Tech Lead review: SKILL.md — set Last verified date [BẮT BUỘC]
|
|
204
|
+
5. Tiến sang S.0a hoặc S.1 [Khi sẵn sàng]
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Cập nhật State & Session
|
|
210
|
+
|
|
211
|
+
**Không cập nhật `.flow-state.yaml`** — U.0d là optional, project-level.
|
|
212
|
+
|
|
213
|
+
**Append vào `_session.md`** (nếu đang trong feature context):
|
|
214
|
+
```markdown
|
|
215
|
+
### [U.0d] Import BA Docs — [YYYY-MM-DD]
|
|
216
|
+
- **Agent**: Import BA Docs Agent
|
|
217
|
+
- **Source**: NotebookLM notebook [ID]
|
|
218
|
+
- **Mode**: [interactive | 1:1 | auto-split | raw-only]
|
|
219
|
+
- **Modules created**: [N]
|
|
220
|
+
- **Files generated**: [list]
|
|
221
|
+
- **Routing**: → /v.understand --module (deep scan)
|
|
222
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Thu thập và phân tích Agent Metrics sau mỗi feature cycle"
|
|
3
|
+
phase: "M.0"
|
|
4
|
+
agent: "metrics-agent"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /v.metrics
|
|
8
|
+
|
|
9
|
+
> Orchestration wrapper cho **Metrics Agent**. Đọc `agents/metrics-agent.md` để thực hiện core logic.
|
|
10
|
+
|
|
11
|
+
## Điều kiện tiên quyết
|
|
12
|
+
- Feature phải đã qua **R.1** (Code Review hoàn thành)
|
|
13
|
+
- `spec.md`, `tasks.md`, `validation-report.md` phải tồn tại
|
|
14
|
+
- `_session.md` nên có execution trace
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
1. Đọc agent definition: `agents/metrics-agent.md`
|
|
18
|
+
2. Thực hiện toàn bộ quy trình trong agent definition
|
|
19
|
+
3. Tạo `metrics-report.md`
|
|
20
|
+
|
|
21
|
+
## Options
|
|
22
|
+
|
|
23
|
+
### (không có argument) — Feature hiện tại
|
|
24
|
+
Đo metrics cho feature đang active trong context.
|
|
25
|
+
|
|
26
|
+
### --aggregate — Tổng hợp nhiều features
|
|
27
|
+
```
|
|
28
|
+
/v.metrics --aggregate 5
|
|
29
|
+
```
|
|
30
|
+
Tổng hợp metrics từ 5 features gần nhất, phát hiện trends và rút ra improvement areas.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 🔀 Routing Rules — Sau Metrics
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Metrics report tạo xong
|
|
38
|
+
→ Route: /v.retrospective (nếu chưa chạy)
|
|
39
|
+
→ Hoặc: Feature complete — archive
|
|
40
|
+
|
|
41
|
+
Phát hiện Agent cần cải tiến urgently
|
|
42
|
+
→ Đề xuất sửa agent-config.md TRƯỚC feature tiếp theo
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Cập nhật State & Session
|
|
46
|
+
|
|
47
|
+
**Cập nhật `.flow-state.yaml`**:
|
|
48
|
+
```yaml
|
|
49
|
+
current_phase: "M.0"
|
|
50
|
+
phase_status: "done"
|
|
51
|
+
artifacts:
|
|
52
|
+
metrics_report:
|
|
53
|
+
exists: true
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Append vào `_session.md`**:
|
|
57
|
+
```markdown
|
|
58
|
+
### [M.0] Metrics — [YYYY-MM-DD]
|
|
59
|
+
- **Agent**: Metrics Agent
|
|
60
|
+
- **Output**: `metrics-report.md`
|
|
61
|
+
- **Key findings**: [top 3 findings]
|
|
62
|
+
- **Recommendations**: [top 3 recommendations]
|
|
63
|
+
- **Routing**: → /v.retrospective
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Ví dụ
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/v.metrics
|
|
72
|
+
/v.metrics feature 001-user-login
|
|
73
|
+
/v.metrics --aggregate 5
|
|
74
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Operations Agent — rà soát vận hành định kỳ / phân loại incident production rồi route flow khắc phục (O.0)"
|
|
3
|
+
phase: "O.0"
|
|
4
|
+
agent: "operations-agent"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /v.operations
|
|
8
|
+
|
|
9
|
+
> Orchestration wrapper cho **Operations Agent**. Đọc `agents/operations-agent.md` để thực hiện core logic.
|
|
10
|
+
> Khác `/v.hotfix` (vào thẳng flow khẩn P1/P2): `/v.operations` là **điểm vào O.0 thường xuyên** — rà soát vận hành sau deploy (M.0 → O.0) hoặc phân loại tín hiệu production trước khi quyết định flow.
|
|
11
|
+
|
|
12
|
+
## Điều kiện sử dụng
|
|
13
|
+
|
|
14
|
+
- Có alert/log/user report từ production cần đánh giá, **hoặc**
|
|
15
|
+
- Rà soát vận hành định kỳ sau khi feature đã deploy (chu trình M.0 → O.0)
|
|
16
|
+
|
|
17
|
+
## Execution
|
|
18
|
+
1. Đọc agent definition: `agents/operations-agent.md`
|
|
19
|
+
2. Thực hiện toàn bộ quy trình: assess severity (P1–P4) → root cause sơ bộ + scope → route
|
|
20
|
+
3. Ghi `operations-report.md` (+ `incidents/INC-XXX.md` nếu là incident) theo `.v-flow/templates/operations-report-template.md`
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 🔀 Routing Rules — Sau Operations
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
Severity = P1 / P2 (production down / nghiêm trọng)
|
|
28
|
+
→ Route: /v.hotfix (O.0 → B.1 → R.1 → O.0)
|
|
29
|
+
|
|
30
|
+
Severity = P3 và cần root cause + regression prevention
|
|
31
|
+
→ Route: /v.bugfix (S.1 → B.0 → B.1 → R.1)
|
|
32
|
+
|
|
33
|
+
Severity = P4 / thay đổi nhỏ (<5 files)
|
|
34
|
+
→ Route: /v.quickfix (S.1 nhanh → B.1 → R.1)
|
|
35
|
+
|
|
36
|
+
Không phải lỗi / chỉ theo dõi
|
|
37
|
+
→ Route: monitor — ghi nhận vào knowledge base, không trigger fix
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> Closed-loop: feedback từ production quay lại pipeline (spec/test/knowledge) để incident không lặp lại.
|
|
41
|
+
|
|
42
|
+
## Input
|
|
43
|
+
- Tín hiệu production: alert / log / user report (mô tả qua argument hoặc đính kèm)
|
|
44
|
+
- `.v-flow/features/NNN-feature/` *(nếu incident gắn với feature cụ thể)*
|
|
45
|
+
- `.v-flow/constitution.md`
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
- `.v-flow/features/NNN-feature/operations-report.md` *(hoặc thư mục feature liên quan)*
|
|
49
|
+
- `.v-flow/incidents/INC-XXX.md` *(nếu là incident — đánh số tăng dần)*
|
|
50
|
+
|
|
51
|
+
## Ví dụ
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
/v.operations
|
|
55
|
+
/v.operations "API /checkout trả 500 tăng đột biến từ 14:00"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Cập nhật State & Session
|
|
61
|
+
|
|
62
|
+
**Append vào `_session.md`**:
|
|
63
|
+
```markdown
|
|
64
|
+
### [O.0] Operations — [YYYY-MM-DD]
|
|
65
|
+
- **Agent**: Operations Agent
|
|
66
|
+
- **Severity**: [P1 | P2 | P3 | P4]
|
|
67
|
+
- **Root cause (sơ bộ)**: [...]
|
|
68
|
+
- **Route decision**: [hotfix | bugfix | quickfix | monitor]
|
|
69
|
+
- **Routing**: → [next step]
|
|
70
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Plan Agent — Thiết kế kiến trúc và tạo Implementation Plan + Task Breakdown"
|
|
3
|
+
phase: "B.0a"
|
|
4
|
+
agent: "plan-agent"
|
|
5
|
+
optional_agents: ["security", "ux", "api-contract"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /v.plan
|
|
9
|
+
|
|
10
|
+
> Orchestration wrapper cho **Plan Agent**. Đọc `agents/plan-agent.md` để thực hiện core logic.
|
|
11
|
+
|
|
12
|
+
## Điều kiện tiên quyết
|
|
13
|
+
- `spec.md` phải tồn tại và đã **Approved**
|
|
14
|
+
- `constitution.md` phải tồn tại
|
|
15
|
+
- Chạy **SONG SONG** với `/v.test`
|
|
16
|
+
|
|
17
|
+
## Execution
|
|
18
|
+
1. Đọc agent definition: `agents/plan-agent.md`
|
|
19
|
+
2. Thực hiện toàn bộ quy trình trong agent definition
|
|
20
|
+
3. Áp dụng command options bên dưới (nếu có)
|
|
21
|
+
|
|
22
|
+
## Options
|
|
23
|
+
|
|
24
|
+
### --with-security
|
|
25
|
+
Kích hoạt **Security Agent** — tạo `security-review.md`.
|
|
26
|
+
Dùng khi: Feature có auth, payment, user data, external API.
|
|
27
|
+
|
|
28
|
+
### --with-ux
|
|
29
|
+
Kích hoạt **UX Agent** — tạo `ux-checklist.md` theo `.v-flow/templates/ux-checklist-template.md`.
|
|
30
|
+
Dùng khi: Feature có UI/UX components.
|
|
31
|
+
|
|
32
|
+
### --with-api
|
|
33
|
+
Kích hoạt **API Contract Agent** — tạo `contracts/api-contract.md` theo `.v-flow/templates/api-contract-template.md`.
|
|
34
|
+
Dùng khi: Feature expose API cho client/3rd party (hoặc contract-first khi có cả FE+BE).
|
|
35
|
+
|
|
36
|
+
> Các optional agents chạy **SONG SONG** với Plan Agent (Map-Reduce B.0).
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 🔀 Routing Rules — Sau Plan
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Plan + Tasks tạo xong
|
|
44
|
+
→ Nếu /v.test chưa xong → Chờ Test Agent
|
|
45
|
+
→ Nếu /v.test đã xong → /v.check (Master Check)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Cập nhật State & Session
|
|
49
|
+
|
|
50
|
+
**Cập nhật `.flow-state.yaml`**:
|
|
51
|
+
```yaml
|
|
52
|
+
current_phase: "B.0a"
|
|
53
|
+
phase_status: "done"
|
|
54
|
+
artifacts:
|
|
55
|
+
plan: { exists: true, synced_to_spec: "v1.0" }
|
|
56
|
+
tasks: { exists: true, total: [N] }
|
|
57
|
+
b0_outputs:
|
|
58
|
+
plan: { exists: true, agent: "Plan Agent" }
|
|
59
|
+
tests: { exists: true, agent: "Test Agent" }
|
|
60
|
+
security: { exists: true/false, skipped: true/false }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Append vào `_session.md`**:
|
|
64
|
+
```markdown
|
|
65
|
+
### [B.0a] Plan — [YYYY-MM-DD]
|
|
66
|
+
- **Output**: plan.md, tasks.md ([N] tasks)
|
|
67
|
+
- **Annotations**: [N] parallel, [N] critical, [N] risky, [N] gates
|
|
68
|
+
- **Optional agents**: security=[yes/no], ux=[yes/no], api=[yes/no]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Ví dụ
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
/v.plan Feature 001-user-login
|
|
77
|
+
/v.plan --with-security --with-api
|
|
78
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Prototype Agent — Reproduce (dựng render chốt từ mockup qua DESIGN.md) hoặc Explore (variant throwaway) để chốt giao diện/validate ambiguity trước khi lên plan"
|
|
3
|
+
phase: "S.1.5"
|
|
4
|
+
agent: "prototype-agent"
|
|
5
|
+
optional: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /v.prototype
|
|
9
|
+
|
|
10
|
+
> **Optional** step tại S.1.5 — sau Specify (S.1), trước Plan (B.0).
|
|
11
|
+
> Hai chế độ: **Reproduce (`--from-mockup`)** — dựng render chốt (`ui/approved/`) từ mockup đã ingest qua DESIGN.md; **Explore (`--ui`/`--logic`)** — prototype throwaway khi spec còn câu hỏi chưa trả lời được bằng văn bản.
|
|
12
|
+
> **Không block pipeline** — user có thể skip và tiếp tục `/v.plan` bình thường.
|
|
13
|
+
|
|
14
|
+
## Điều kiện tiên quyết
|
|
15
|
+
|
|
16
|
+
- `spec.md` phải tồn tại (không cần Approved — Draft cũng chạy được)
|
|
17
|
+
- Câu hỏi cần trả lời được xác định (từ spec hoặc user chỉ định qua `--question`)
|
|
18
|
+
|
|
19
|
+
## Options
|
|
20
|
+
|
|
21
|
+
### `--logic`
|
|
22
|
+
Ép buộc LOGIC branch (terminal TUI). Bỏ qua branch selection tự động.
|
|
23
|
+
|
|
24
|
+
### `--ui`
|
|
25
|
+
Ép buộc UI branch (multi-variant HTML/CSS prototype — mode **Explore**). Bỏ qua branch selection tự động.
|
|
26
|
+
|
|
27
|
+
### `--from-mockup`
|
|
28
|
+
**UI branch — mode Reproduce.** Dùng khi UC có mockup định hướng. Agent tự lấy ảnh từ **con trỏ `Mockup nguồn`** (spec UI Intent §2) hoặc `ui/mockups/` (do human đặt) — đọc/trích ảnh **tại bước này** (render được human duyệt). Link Figma → đọc qua **Figma MCP** (`get_design_context`/`get_screenshot`); không có MCP → export PNG/SVG vào `ui/mockups/`. Thay vì sinh nhiều variant, agent dựng **1 render trung thực** qua `DESIGN.md` và lưu `ui/approved/UC-NN.*` làm **visual contract** (không throwaway). Cấu trúc bám mockup, style từ design system (không copy pixel).
|
|
29
|
+
Thường kèm `--req REQ-xxx` (hoặc `--question`) để xác định UC/màn hình. Kết hợp `--framework` nếu muốn render bằng framework dự án.
|
|
30
|
+
|
|
31
|
+
### `--framework <name>`
|
|
32
|
+
**Chỉ áp dụng cho UI branch.** Thường dùng kèm với `--ui`.
|
|
33
|
+
Nếu không có flag này: generate **HTML + CSS thuần** (mặc định, không cần setup, mở ngay trên trình duyệt).
|
|
34
|
+
|
|
35
|
+
Framework hỗ trợ:
|
|
36
|
+
- `--framework react` → TSX + CSS Module
|
|
37
|
+
- `--framework vue` → Vue SFC (`.vue`)
|
|
38
|
+
- `--framework angular` → Angular Component
|
|
39
|
+
- `--framework next` → Next.js page component
|
|
40
|
+
|
|
41
|
+
### `--question "..."`
|
|
42
|
+
Chỉ định câu hỏi cụ thể cần prototype trả lời.
|
|
43
|
+
Nếu không có, agent tự detect từ ambiguity markers trong `spec.md`.
|
|
44
|
+
|
|
45
|
+
### `--req <REQ-ID>`
|
|
46
|
+
Chỉ định trực tiếp requirement cần prototype trả lời (ví dụ: `--req REQ-E03`).
|
|
47
|
+
Agent sẽ đọc REQ đó trong `spec.md`, extract câu hỏi, và tự xác định branch phù hợp.
|
|
48
|
+
|
|
49
|
+
**Ưu tiên**: `--req` > `--question` > auto-detect từ spec.
|
|
50
|
+
|
|
51
|
+
> **Lưu ý**: Nếu REQ chỉ định không có ambiguity markers, agent sẽ confirm với user trước khi tiến hành.
|
|
52
|
+
|
|
53
|
+
### `--subshape <A|B>`
|
|
54
|
+
**Chỉ áp dụng cho UI branch.**
|
|
55
|
+
- `A` — Embed variants vào existing page (preferred, mặc định)
|
|
56
|
+
- `B` — Tạo throwaway route mới (last resort)
|
|
57
|
+
|
|
58
|
+
Nếu không có flag này: agent tự hỏi user hoặc default theo `config.json`.
|
|
59
|
+
|
|
60
|
+
## Ví dụ
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
/v.prototype
|
|
64
|
+
/v.prototype --req REQ-S02
|
|
65
|
+
/v.prototype --req REQ-E03 --logic
|
|
66
|
+
/v.prototype --from-mockup --req REQ-U05
|
|
67
|
+
/v.prototype --from-mockup --req REQ-U05 --framework react
|
|
68
|
+
/v.prototype --ui --question "Dashboard layout nên dùng sidebar hay top nav?"
|
|
69
|
+
/v.prototype --ui --subshape A --framework react --req REQ-U05
|
|
70
|
+
/v.prototype --ui --framework react --question "Dashboard layout nên dùng sidebar hay top nav?"
|
|
71
|
+
/v.prototype --logic --question "State machine xử lý concurrent upload có đúng không?"
|
|
72
|
+
/v.prototype --logic
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Routing Rules — Sau khi có verdict
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
VALIDATED
|
|
79
|
+
→ Ghi verdict vào .v-flow/features/NNN/prototype-notes.md
|
|
80
|
+
→ [mode=from-mockup] Lưu render chốt vào ui/approved/UC-NN.* + cập nhật spec UI Intent "Render đã chốt"
|
|
81
|
+
→ Append execution trace vào _session.md
|
|
82
|
+
→ Update .flow-state.yaml (artifacts.prototype.verdict = VALIDATED, mode, approved_ref)
|
|
83
|
+
→ ✅ Suggest: /v.plan + /v.test (chạy song song)
|
|
84
|
+
|
|
85
|
+
REJECTED
|
|
86
|
+
→ Ghi verdict + lý do + spec impact vào prototype-notes.md
|
|
87
|
+
→ ⚠️ Alert: "Spec cần được cập nhật trước khi plan"
|
|
88
|
+
→ Route: /v.specify (update spec với findings từ prototype)
|
|
89
|
+
→ Update .flow-state.yaml (artifacts.prototype.verdict = REJECTED)
|
|
90
|
+
|
|
91
|
+
INCONCLUSIVE
|
|
92
|
+
→ Ghi open questions vào prototype-notes.md
|
|
93
|
+
→ 🔔 Notify: "Cần thêm input từ stakeholder để kết luận"
|
|
94
|
+
→ Pipeline tạm dừng — user quyết định: iterate prototype hay tiếp tục với assumptions
|
|
95
|
+
→ Update .flow-state.yaml (artifacts.prototype.verdict = INCONCLUSIVE)
|
|
96
|
+
|
|
97
|
+
Skip prototype (user bỏ qua hoàn toàn)
|
|
98
|
+
→ Pipeline tiếp tục bình thường
|
|
99
|
+
→ Update .flow-state.yaml (artifacts.prototype.skipped = true)
|
|
100
|
+
→ Suggest: /v.plan + /v.test
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Output
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
.v-flow/features/NNN/
|
|
107
|
+
├── prototype-notes.md ← verdict + findings
|
|
108
|
+
├── ui/approved/ ← [mode=from-mockup] render đã chốt — GIỮ làm contract
|
|
109
|
+
│ └── UC-NN.[html|tsx|...]
|
|
110
|
+
└── prototype/ ← [explore] throwaway code (xóa sau khi có verdict)
|
|
111
|
+
├── [logic.ts | VariantA.tsx | ...]
|
|
112
|
+
└── README.md
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Read next
|
|
116
|
+
|
|
117
|
+
- `agents/prototype-agent.md` — chi tiết workflow của agent
|
|
118
|
+
- `skills/prototype/SKILL.md` — branch selection + V Flow integration
|
|
119
|
+
- `skills/prototype/LOGIC.md` — terminal TUI branch
|
|
120
|
+
- `skills/prototype/UI.md` — multi-variant UI branch
|
|
121
|
+
- `.v-flow/templates/prototype-notes-template.md` — output format chuẩn
|