@anhth2/spec-driven-dev-plugin 0.10.0 → 0.11.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/commands/debug.md +38 -8
- package/commands/define-product.md +38 -8
- package/commands/dev-gen-test.md +39 -9
- package/commands/dev-gen-test.tmpl +1 -1
- package/commands/dev-run-test.md +43 -10
- package/commands/dev-run-test.tmpl +5 -2
- package/commands/dev-smoke-test.md +38 -8
- package/commands/fix-bug.md +38 -8
- package/commands/generate-bdd.md +42 -10
- package/commands/generate-bdd.tmpl +4 -2
- package/commands/generate-code.md +39 -9
- package/commands/generate-code.tmpl +1 -1
- package/commands/generate-design-spec.md +38 -8
- package/commands/generate-prd.md +38 -8
- package/commands/generate-spec-manifest.md +38 -8
- package/commands/generate-tech-docs.md +38 -8
- package/commands/learn.md +38 -8
- package/commands/propose-scenario.md +38 -8
- package/commands/qc-analyze.md +514 -0
- package/commands/qc-analyze.tmpl +71 -0
- package/commands/qc-design-test.md +510 -0
- package/commands/qc-design-test.tmpl +67 -0
- package/commands/qc-plan.md +492 -0
- package/commands/qc-plan.tmpl +49 -0
- package/commands/qc-report.md +491 -0
- package/commands/qc-report.tmpl +48 -0
- package/commands/qc-review.md +496 -0
- package/commands/qc-review.tmpl +53 -0
- package/commands/qc-run-test.md +538 -0
- package/commands/qc-run-test.tmpl +77 -0
- package/commands/refine-prd.md +38 -8
- package/commands/report-bug.md +38 -8
- package/commands/review-code.md +38 -8
- package/commands/review-context.md +38 -8
- package/commands/review-tech-docs.md +38 -8
- package/commands/setup-ai-first.md +7 -0
- package/commands/sync.md +7 -0
- package/commands/update-framework.md +7 -0
- package/commands/validate-traces.md +54 -12
- package/commands/validate-traces.tmpl +16 -4
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +38 -8
- package/core/commands/define-product.md +38 -8
- package/core/commands/dev-gen-test.md +39 -9
- package/core/commands/dev-run-test.md +43 -10
- package/core/commands/dev-smoke-test.md +38 -8
- package/core/commands/fix-bug.md +38 -8
- package/core/commands/generate-bdd.md +42 -10
- package/core/commands/generate-code.md +39 -9
- package/core/commands/generate-design-spec.md +38 -8
- package/core/commands/generate-prd.md +38 -8
- package/core/commands/generate-spec-manifest.md +38 -8
- package/core/commands/generate-tech-docs.md +38 -8
- package/core/commands/learn.md +38 -8
- package/core/commands/propose-scenario.md +38 -8
- package/core/commands/qc-analyze.md +514 -0
- package/core/commands/qc-design-test.md +510 -0
- package/core/commands/qc-plan.md +492 -0
- package/core/commands/qc-report.md +491 -0
- package/core/commands/qc-review.md +496 -0
- package/core/commands/qc-run-test.md +538 -0
- package/core/commands/refine-prd.md +38 -8
- package/core/commands/report-bug.md +38 -8
- package/core/commands/review-code.md +38 -8
- package/core/commands/review-context.md +38 -8
- package/core/commands/review-tech-docs.md +38 -8
- package/core/commands/setup-ai-first.md +7 -0
- package/core/commands/sync.md +7 -0
- package/core/commands/update-framework.md +7 -0
- package/core/commands/validate-traces.md +54 -12
- package/core/modules/qc-playwright/stack-profile.yaml +65 -0
- package/core/skills/code/SKILL.md +45 -8
- package/core/skills/debug/SKILL.md +52 -8
- package/core/skills/design-spec/SKILL.md +38 -8
- package/core/skills/discovery/SKILL.md +38 -8
- package/core/skills/prd/SKILL.md +14 -0
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
- package/core/skills/qc/qa-analyst/business-rules.md +55 -0
- package/core/skills/qc/qa-analyst/data-flow.md +60 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +57 -0
- package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/core/skills/qc/qa-designer/functional/api.md +45 -0
- package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/core/skills/qc/qa-designer/integration/api.md +42 -0
- package/core/skills/qc/qa-designer/integration/db.md +39 -0
- package/core/skills/qc/qa-designer/integration/gui.md +40 -0
- package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/core/skills/qc/qa-designer/non-functional.md +40 -0
- package/core/skills/qc/qa-planner/test-plan.md +120 -0
- package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/core/skills/qc/qa-runner/e2e.md +49 -0
- package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/core/skills/qc/qa-runner/functional/api.md +35 -0
- package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/core/skills/qc/qa-runner/integration.md +47 -0
- package/core/skills/qc/qa-runner/non-functional.md +49 -0
- package/core/skills/qc/qa-runner/report/report.md +37 -0
- package/core/skills/setup-ai-first/SKILL.md +7 -0
- package/core/skills/spec/SKILL.md +14 -0
- package/core/skills/test/SKILL.md +83 -16
- package/core/steps/context-loader.md +31 -8
- package/core/steps/report-footer.md +7 -0
- package/core/templates/project-context.yaml +8 -0
- package/docs/01-getting-started/README.md +19 -0
- package/docs/01-getting-started/core-concepts.md +102 -0
- package/docs/01-getting-started/installation.md +154 -0
- package/docs/01-getting-started/quickstart.md +85 -0
- package/docs/02-guides/README.md +27 -0
- package/docs/02-guides/developer/README.md +46 -0
- package/docs/02-guides/developer/bdd-and-trace.md +123 -0
- package/docs/02-guides/developer/commands.md +76 -0
- package/docs/02-guides/developer/pr-checklist.md +15 -0
- package/docs/02-guides/developer/scenarios.md +448 -0
- package/docs/02-guides/developer/workflow.md +59 -0
- package/docs/02-guides/product-owner/README.md +77 -0
- package/docs/02-guides/product-owner/commands.md +30 -0
- package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
- package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
- package/docs/02-guides/product-owner/scenarios.md +357 -0
- package/docs/02-guides/qc-automation.md +92 -0
- package/docs/02-guides/tester/README.md +72 -0
- package/docs/02-guides/tester/bug-reporting.md +117 -0
- package/docs/02-guides/tester/reading-specs.md +79 -0
- package/docs/02-guides/tester/scenarios.md +186 -0
- package/docs/02-guides/tester/spec-manifest.md +124 -0
- package/docs/02-guides/tester/test-checklist.md +31 -0
- package/docs/02-guides/tester/workflow.md +79 -0
- package/docs/03-concepts/README.md +19 -0
- package/docs/03-concepts/architecture.md +243 -0
- package/docs/03-concepts/pipeline.md +249 -0
- package/docs/03-concepts/traceability.md +148 -0
- package/docs/04-operations/README.md +33 -0
- package/docs/04-operations/bug-flow.md +321 -0
- package/docs/04-operations/publishing.md +137 -0
- package/docs/04-operations/sync-and-update.md +328 -0
- package/docs/05-reference/README.md +29 -0
- package/docs/05-reference/commands.md +229 -0
- package/docs/05-reference/modules.md +110 -0
- package/docs/05-reference/trace-schema.md +146 -0
- package/docs/README.md +51 -0
- package/modules/qc-playwright/stack-profile.yaml +65 -0
- package/package.json +2 -2
- package/skills/code/SKILL.md +45 -8
- package/skills/debug/SKILL.md +52 -8
- package/skills/design-spec/SKILL.md +38 -8
- package/skills/discovery/SKILL.md +38 -8
- package/skills/prd/SKILL.md +14 -0
- package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
- package/skills/qc/qa-analyst/business-rules.md +55 -0
- package/skills/qc/qa-analyst/data-flow.md +60 -0
- package/skills/qc/qa-analyst/spec-breakdown.md +57 -0
- package/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/skills/qc/qa-designer/functional/api.md +45 -0
- package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/skills/qc/qa-designer/integration/api.md +42 -0
- package/skills/qc/qa-designer/integration/db.md +39 -0
- package/skills/qc/qa-designer/integration/gui.md +40 -0
- package/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/skills/qc/qa-designer/non-functional.md +40 -0
- package/skills/qc/qa-planner/test-plan.md +120 -0
- package/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/skills/qc/qa-runner/e2e.md +49 -0
- package/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/skills/qc/qa-runner/functional/api.md +35 -0
- package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/skills/qc/qa-runner/integration.md +47 -0
- package/skills/qc/qa-runner/non-functional.md +49 -0
- package/skills/qc/qa-runner/report/report.md +37 -0
- package/skills/setup-ai-first/SKILL.md +7 -0
- package/skills/spec/SKILL.md +14 -0
- package/skills/test/SKILL.md +83 -16
- package/steps/context-loader.md +31 -8
- package/steps/report-footer.md +7 -0
- package/templates/project-context.yaml +8 -0
- package/ARCHITECTURE.md +0 -258
package/steps/report-footer.md
CHANGED
|
@@ -34,6 +34,13 @@ Suggest the logical next command based on workflow phase:
|
|
|
34
34
|
| /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
35
35
|
| /generate-bdd | `/review-context {feature-file}` to verify coverage |
|
|
36
36
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
|
|
37
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
|
|
38
|
+
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
39
|
+
| /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
|
|
40
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
|
|
41
|
+
| /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
|
|
42
|
+
| /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
|
|
43
|
+
| /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
|
|
37
44
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
38
45
|
| /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
|
|
39
46
|
| /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
|
|
@@ -106,6 +106,14 @@ domains:
|
|
|
106
106
|
# module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
|
|
107
107
|
# specs_dir: "{{SERVICE_SUBMODULE_DIR}}/specs/bdd"
|
|
108
108
|
# tech_docs_dir: "{{SERVICE_SUBMODULE_DIR}}/specs/tech-docs"
|
|
109
|
+
#
|
|
110
|
+
# IMPORTANT — per-service CLAUDE.md:
|
|
111
|
+
# Each service submodule should have its OWN CLAUDE.md ({path}/CLAUDE.md) defining its
|
|
112
|
+
# architecture + coding standards for ITS stack. context-loader loads CLAUDE.md in two
|
|
113
|
+
# layers: root CLAUDE.md (umbrella-wide shared rules) + {service}/CLAUDE.md (overlay,
|
|
114
|
+
# wins on conflict for architecture/coding-standards). The agent sits at the umbrella
|
|
115
|
+
# root, so without a service CLAUDE.md, code generation falls back to umbrella defaults
|
|
116
|
+
# (likely the wrong stack). Generate one per service via /setup-ai-first inside each.
|
|
109
117
|
# {{DOMAIN_2}}:
|
|
110
118
|
# path: "{{SERVICE_2_DIR}}"
|
|
111
119
|
# module: "{{STACK_MODULE}}"
|
package/ARCHITECTURE.md
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
# Framework Architecture
|
|
2
|
-
|
|
3
|
-
> **Nguyên tắc**: Nhìn file này để hiểu toàn bộ framework trước khi đọc bất kỳ file chi tiết nào.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Layer Diagram
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
╔══════════════════════════════════════════════════════════════════════╗
|
|
11
|
-
║ SPEC-DRIVEN DEV FRAMEWORK v0.3 ║
|
|
12
|
-
╚══════════════════════════════════════════════════════════════════════╝
|
|
13
|
-
|
|
14
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
15
|
-
│ LAYER 0 — PROTECTION (luôn chạy trước) │
|
|
16
|
-
│ │
|
|
17
|
-
│ hooks/data-guard.js → PreToolUse hook: chặn đọc file nhạy cảm │
|
|
18
|
-
│ rules/data-protection.md → Quy tắc declarative cho AI agent │
|
|
19
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
20
|
-
│ safe ↓ blocked → ✋ STOP
|
|
21
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
22
|
-
│ LAYER 1 — ENTRY POINT (user trigger) │
|
|
23
|
-
│ │
|
|
24
|
-
│ commands/*.tmpl skills/*/SKILL.tmpl │
|
|
25
|
-
│ (slash commands) (auto-trigger by description match) │
|
|
26
|
-
│ /generate-bdd detect: "tạo BDD", "sinh feature" │
|
|
27
|
-
│ /generate-code detect: "viết code", "implement" │
|
|
28
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
29
|
-
│ both built by bin/build.js
|
|
30
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
31
|
-
│ LAYER 2 — SHARED STEPS (DRY, injected) │
|
|
32
|
-
│ │
|
|
33
|
-
│ steps/gate.md → resolve target file + CHECKPOINT │
|
|
34
|
-
│ steps/context-loader.md → load project config + rules │
|
|
35
|
-
│ steps/report-footer.md → standard output format │
|
|
36
|
-
│ │
|
|
37
|
-
│ Injected at build time via {{include:steps/X.md}} │
|
|
38
|
-
│ Source: *.tmpl → Output: *.md (gitignored) │
|
|
39
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
40
|
-
│ context loaded
|
|
41
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
42
|
-
│ LAYER 3 — PROJECT CONTEXT (read from consumer project) │
|
|
43
|
-
│ │
|
|
44
|
-
│ .agent/project-context.yaml → paths, tech_stack, domains │
|
|
45
|
-
│ CLAUDE.md → architecture, coding standards │
|
|
46
|
-
│ rules/data-protection.md → what AI must never access │
|
|
47
|
-
│ .agent/modules/{stack}/ → stack rules (plug-in, optional) │
|
|
48
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
49
|
-
│ context-aware
|
|
50
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
51
|
-
│ LAYER 4 — EXECUTION (command logic) │
|
|
52
|
-
│ │
|
|
53
|
-
│ DISCOVERY PRD / BDD CODE / DEV-CHECK DEBUG │
|
|
54
|
-
│ /define-product /generate-prd /generate-code /fix-bug │
|
|
55
|
-
│ /refine-prd /dev-gen-test /debug │
|
|
56
|
-
│ /generate-bdd /dev-run-test /validate- │
|
|
57
|
-
│ /generate-tech-docs /dev-smoke-test traces │
|
|
58
|
-
│ /review-code /setup-ai-first │
|
|
59
|
-
│ │
|
|
60
|
-
│ Lưu ý: /dev-gen-test, /dev-run-test, /dev-smoke-test là dev │
|
|
61
|
-
│ self-check / smoke (dev tự kiểm code của mình), KHÔNG phải bộ │
|
|
62
|
-
│ test QC chính thức — QC là một flow riêng chạy sau. │
|
|
63
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
64
|
-
│
|
|
65
|
-
┌──────────────────────────────────────────────────────────────────────┐
|
|
66
|
-
│ LAYER 5 — OUTPUT (artifacts in consumer proj) │
|
|
67
|
-
│ │
|
|
68
|
-
│ Spec module (cross-team, via {spec_source}): │
|
|
69
|
-
│ specs/product-definition/ specs/prd/ specs/bdd/ │
|
|
70
|
-
│ specs/tech-docs/ (API contract) .living-docs/ (gitignored) │
|
|
71
|
-
│ Service submodule (per-service): │
|
|
72
|
-
│ src/ .trace/*.tsv (authoritative, committed) .agent/review/ │
|
|
73
|
-
└──────────────────────────────────────────────────────────────────────┘
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## Data Flow — Một command chạy như thế nào
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
User types: /generate-bdd specs/prd/payment/PAY-01.md
|
|
82
|
-
│
|
|
83
|
-
▼
|
|
84
|
-
[L0] data-guard.js checks tool calls in real-time
|
|
85
|
-
→ nếu AI cố đọc .env / *.key → BLOCK + warn
|
|
86
|
-
│
|
|
87
|
-
▼
|
|
88
|
-
[L1] commands/generate-bdd.md được Claude đọc
|
|
89
|
-
(assembled từ generate-bdd.tmpl + injected steps)
|
|
90
|
-
│
|
|
91
|
-
▼
|
|
92
|
-
[L2] gate.md → resolve file path từ $ARGUMENTS
|
|
93
|
-
context-loader.md → đọc project-context.yaml, CLAUDE.md,
|
|
94
|
-
rules/data-protection.md,
|
|
95
|
-
modules/{stack}/stack-profile.yaml
|
|
96
|
-
│
|
|
97
|
-
▼
|
|
98
|
-
[L3] Claude biết: tech_stack, domains, architecture rules,
|
|
99
|
-
sensitive files to avoid, stack-specific patterns
|
|
100
|
-
│
|
|
101
|
-
▼
|
|
102
|
-
[L4] generate-bdd logic:
|
|
103
|
-
→ đọc PRD → extract UC/BR/AC
|
|
104
|
-
→ apply BDD rules R1-R10
|
|
105
|
-
→ viết specs/bdd/{domain}/{UC-ID}.feature
|
|
106
|
-
│
|
|
107
|
-
▼
|
|
108
|
-
[L5] Output: specs/bdd/payment/PAY-01-UC1.feature
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Build System
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
Source (committed to git) Build output (gitignored)
|
|
117
|
-
────────────────────────── ─────────────────────────
|
|
118
|
-
commands/*.tmpl ──┐
|
|
119
|
-
skills/**/SKILL.tmpl ──┤ node bin/build.js → commands/*.md
|
|
120
|
-
steps/*.md (shared) ──┘ skills/**/SKILL.md
|
|
121
|
-
|
|
122
|
-
Trigger:
|
|
123
|
-
npm run build ← manual
|
|
124
|
-
prepublishOnly hook ← auto before npm publish
|
|
125
|
-
bin/index.js install ← auto when user runs npx
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## Module Plug-in System
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
Available modules (modules/):
|
|
134
|
-
java-spring, angular, react, nextjs,
|
|
135
|
-
dotnet, golang, php-laravel, context-engineering
|
|
136
|
-
|
|
137
|
-
Usage:
|
|
138
|
-
npx @anhth2/spec-driven-dev-plugin --module java-spring
|
|
139
|
-
└─ copies modules/java-spring/ → consumer/.agent/modules/java-spring/
|
|
140
|
-
|
|
141
|
-
At runtime, context-loader.md reads:
|
|
142
|
-
.agent/modules/{tech_stack.module}/stack-profile.yaml
|
|
143
|
-
.agent/modules/{tech_stack.module}/architecture-snippets/
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Hook System — Data Protection
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
Consumer project setup:
|
|
152
|
-
.claude/settings.json ← registers hook (provided as template)
|
|
153
|
-
hooks/data-guard.js ← copied from this package on install
|
|
154
|
-
|
|
155
|
-
Runtime:
|
|
156
|
-
Every tool use (Read, Write, Edit, Bash)
|
|
157
|
-
│
|
|
158
|
-
▼
|
|
159
|
-
data-guard.js checks:
|
|
160
|
-
.env* / *.key / *.pem / *secret* / *password* / *credential*
|
|
161
|
-
application-prod.* / appsettings.Production.*
|
|
162
|
-
│
|
|
163
|
-
safe → allow blocked → exit(2) + warn user
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## Future — Sub-Agent Pattern (v2 roadmap)
|
|
169
|
-
|
|
170
|
-
Khi một số command quá nặng cho single context window:
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
Main session (orchestrator — lightweight, chỉ coordinate)
|
|
174
|
-
│
|
|
175
|
-
├─ spawn spec-agent ──→ /refine-prd analysis (own context window)
|
|
176
|
-
│ └─ returns: findings.yaml
|
|
177
|
-
│
|
|
178
|
-
├─ spawn codegen-agent ──→ /generate-code UC1 (own context window)
|
|
179
|
-
│ └─ returns: src/ changes
|
|
180
|
-
│
|
|
181
|
-
└─ spawn test-agent ──→ /dev-gen-test UC1 (own context window)
|
|
182
|
-
└─ returns: dev self-check test files (smoke, không phải QC)
|
|
183
|
-
|
|
184
|
-
Benefits:
|
|
185
|
-
- Main session không bị bloat bởi large file reads
|
|
186
|
-
- Mỗi agent focus vào 1 task, ít hallucination hơn
|
|
187
|
-
- Parallel execution cho multiple UCs
|
|
188
|
-
|
|
189
|
-
Implementation path:
|
|
190
|
-
1. Tạo steps/spawn-agent.md — pattern + handoff payload format
|
|
191
|
-
2. Tạo commands/orchestrate-feature.tmpl — top-level orchestrator
|
|
192
|
-
3. Sub-agent commands nhận input qua $ARGUMENTS (JSON payload)
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
## Directory Map
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
spec-driven-dev/
|
|
201
|
-
├── ARCHITECTURE.md ← Đọc đây trước ◀◀◀
|
|
202
|
-
├── bin/
|
|
203
|
-
│ ├── build.js ← assembles *.tmpl → *.md
|
|
204
|
-
│ └── index.js ← npm installer + hook installer
|
|
205
|
-
├── commands/
|
|
206
|
-
│ └── *.tmpl ← slash commands (23 commands)
|
|
207
|
-
├── hooks/
|
|
208
|
-
│ ├── data-guard.js ← PreToolUse sensitive file protection
|
|
209
|
-
│ └── settings.json ← hook registration template
|
|
210
|
-
├── modules/
|
|
211
|
-
│ └── {stack}/ ← 8 stacks: java-spring, angular, react,
|
|
212
|
-
│ ├── module.yaml nextjs, dotnet, golang, php-laravel,
|
|
213
|
-
│ ├── stack-profile.yaml context-engineering
|
|
214
|
-
│ └── architecture-snippets/
|
|
215
|
-
├── rules/
|
|
216
|
-
│ ├── data-protection.md ← what AI must NEVER read/write
|
|
217
|
-
│ └── workflow.md ← general AI behavior rules
|
|
218
|
-
├── skills/
|
|
219
|
-
│ └── {name}/SKILL.tmpl ← Claude plugin skills (8 skills)
|
|
220
|
-
├── steps/
|
|
221
|
-
│ ├── gate.md ← shared: file resolve + checkpoint
|
|
222
|
-
│ ├── context-loader.md ← shared: load all project context
|
|
223
|
-
│ ├── spawn-agent.md ← shared: sub-agent orchestration
|
|
224
|
-
│ ├── capture-lesson.md ← shared: record a guardrail (/learn etc.)
|
|
225
|
-
│ └── report-footer.md ← shared: standard output format
|
|
226
|
-
└── templates/
|
|
227
|
-
├── project-context.yaml ← consumer project config template
|
|
228
|
-
├── architecture.template.md
|
|
229
|
-
└── platform-guide.template.md
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
> Build output (gitignored): `commands/*.md`, `skills/**/SKILL.md`, and `core/` (the distributable copied into a consumer's `.agent/` by `--init`). Consumer-side tester artifacts live in the shared spec repo under `feedback/bug-reports/` and `feedback/bdd-proposals/`. In umbrella mode the **API contract (tech-docs)** is a **cross-team artifact**: khi `setup.spec_source` được set, tech-docs LUÔN route về `{spec_source}/specs/tech-docs/` (giống PRD / design-spec / domain-knowledge), KHÔNG per-service — để FE/App đọc contract qua spec submodule ở `/generate-code --phase=integration`. Chỉ khi không có `spec_source` thì tech-docs mới nằm per-service.
|
|
233
|
-
|
|
234
|
-
> **Living Docs / trace data location**: `.trace/*.tsv` của mỗi service là **authoritative** và được commit trong chính SERVICE submodule. Canonical report của Living Docs (`trace-report.json` + bản TSV mirror đã namespaced) được sinh vào SPEC MODULE tại `{spec_source}/.living-docs/` (gitignored) bởi `/sync` hoặc `/validate-traces`. Ngoài ra một panel mirror cục bộ tại `./.trace` của workspace hiện tại cũng được ghi để VS Code panel resolve được data ngay cả khi mở bên trong một service submodule (không chỉ ở umbrella root). Lý do: spec module được mount vào mọi umbrella/service workspace, nên nó là nơi chung, luôn resolve được cho cross-team dashboard.
|
|
235
|
-
>
|
|
236
|
-
> Trace TSV schema có thêm 2 cột `dev_selftest` (pass/fail/not_run) và `dev_selftest_at`, được set bởi `/dev-run-test` và surface trong Living Docs report như tín hiệu **dev self-check** (không phải coverage QC chính thức).
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## Maintenance Guide
|
|
241
|
-
|
|
242
|
-
| Muốn thay đổi gì | Sửa file nào |
|
|
243
|
-
|------------------|-------------|
|
|
244
|
-
| Logic của 1 command cụ thể | `commands/{name}.tmpl` |
|
|
245
|
-
| Logic của 1 skill cụ thể | `skills/{name}/SKILL.tmpl` |
|
|
246
|
-
| Gate / checkpoint pattern | `steps/gate.md` |
|
|
247
|
-
| Context loading | `steps/context-loader.md` |
|
|
248
|
-
| Report format | `steps/report-footer.md` |
|
|
249
|
-
| Sensitive file patterns | `hooks/data-guard.js` + `rules/data-protection.md` |
|
|
250
|
-
| Stack-specific rules | `modules/{stack}/stack-profile.yaml` |
|
|
251
|
-
| Project setup template | `templates/project-context.yaml` |
|
|
252
|
-
| Build system | `bin/build.js` |
|
|
253
|
-
| Installer | `bin/index.js` |
|
|
254
|
-
|
|
255
|
-
Sau khi sửa bất kỳ `.tmpl` hoặc `steps/*.md`:
|
|
256
|
-
```bash
|
|
257
|
-
npm run build # regenerate tất cả *.md
|
|
258
|
-
```
|