@anhth2/spec-driven-dev-plugin 0.8.0 → 0.9.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.
Files changed (89) hide show
  1. package/ARCHITECTURE.md +6 -2
  2. package/commands/debug.md +152 -0
  3. package/commands/debug.tmpl +16 -0
  4. package/commands/define-product.md +57 -0
  5. package/commands/fix-bug.md +153 -0
  6. package/commands/fix-bug.tmpl +17 -0
  7. package/commands/generate-bdd.md +277 -13
  8. package/commands/generate-bdd.tmpl +220 -13
  9. package/commands/generate-code.md +154 -2
  10. package/commands/generate-code.tmpl +97 -2
  11. package/commands/generate-design-spec.md +57 -0
  12. package/commands/generate-prd.md +75 -0
  13. package/commands/generate-prd.tmpl +18 -0
  14. package/commands/generate-spec-manifest.md +57 -0
  15. package/commands/generate-tech-docs.md +79 -1
  16. package/commands/generate-tech-docs.tmpl +22 -1
  17. package/commands/generate-tests.md +57 -0
  18. package/commands/learn.md +554 -0
  19. package/commands/learn.tmpl +63 -0
  20. package/commands/propose-scenario.md +521 -0
  21. package/commands/propose-scenario.tmpl +109 -0
  22. package/commands/refine-prd.md +57 -0
  23. package/commands/report-bug.md +543 -0
  24. package/commands/report-bug.tmpl +131 -0
  25. package/commands/review-code.md +153 -0
  26. package/commands/review-code.tmpl +17 -0
  27. package/commands/review-context.md +57 -0
  28. package/commands/review-tech-docs.md +139 -4
  29. package/commands/review-tech-docs.tmpl +82 -4
  30. package/commands/run-tests.md +82 -0
  31. package/commands/run-tests.tmpl +25 -0
  32. package/commands/setup-ai-first.md +15 -5
  33. package/commands/setup-ai-first.tmpl +10 -5
  34. package/commands/smoke-test.md +57 -0
  35. package/commands/sync.md +405 -0
  36. package/commands/sync.tmpl +345 -0
  37. package/commands/update-framework.md +211 -0
  38. package/commands/update-framework.tmpl +151 -0
  39. package/commands/validate-traces.md +115 -2
  40. package/commands/validate-traces.tmpl +58 -2
  41. package/core/FRAMEWORK_VERSION +1 -1
  42. package/core/commands/debug.md +152 -0
  43. package/core/commands/define-product.md +57 -0
  44. package/core/commands/fix-bug.md +153 -0
  45. package/core/commands/generate-bdd.md +277 -13
  46. package/core/commands/generate-code.md +154 -2
  47. package/core/commands/generate-design-spec.md +57 -0
  48. package/core/commands/generate-prd.md +75 -0
  49. package/core/commands/generate-spec-manifest.md +57 -0
  50. package/core/commands/generate-tech-docs.md +79 -1
  51. package/core/commands/generate-tests.md +57 -0
  52. package/core/commands/learn.md +554 -0
  53. package/core/commands/propose-scenario.md +521 -0
  54. package/core/commands/refine-prd.md +57 -0
  55. package/core/commands/report-bug.md +543 -0
  56. package/core/commands/review-code.md +153 -0
  57. package/core/commands/review-context.md +57 -0
  58. package/core/commands/review-tech-docs.md +139 -4
  59. package/core/commands/run-tests.md +82 -0
  60. package/core/commands/setup-ai-first.md +15 -5
  61. package/core/commands/smoke-test.md +57 -0
  62. package/core/commands/sync.md +405 -0
  63. package/core/commands/update-framework.md +211 -0
  64. package/core/commands/validate-traces.md +115 -2
  65. package/core/skills/code/SKILL.md +62 -0
  66. package/core/skills/debug/SKILL.md +67 -0
  67. package/core/skills/design-spec/SKILL.md +57 -0
  68. package/core/skills/discovery/SKILL.md +57 -0
  69. package/core/skills/prd/SKILL.md +10 -0
  70. package/core/skills/setup-ai-first/SKILL.md +5 -0
  71. package/core/skills/spec/SKILL.md +10 -0
  72. package/core/skills/test/SKILL.md +119 -0
  73. package/core/steps/capture-lesson.md +79 -0
  74. package/core/steps/context-loader.md +52 -0
  75. package/core/steps/report-footer.md +5 -0
  76. package/core/templates/project-context.yaml +11 -0
  77. package/package.json +1 -1
  78. package/skills/code/SKILL.md +62 -0
  79. package/skills/debug/SKILL.md +67 -0
  80. package/skills/design-spec/SKILL.md +57 -0
  81. package/skills/discovery/SKILL.md +57 -0
  82. package/skills/prd/SKILL.md +10 -0
  83. package/skills/setup-ai-first/SKILL.md +5 -0
  84. package/skills/spec/SKILL.md +10 -0
  85. package/skills/test/SKILL.md +119 -0
  86. package/steps/capture-lesson.md +79 -0
  87. package/steps/context-loader.md +52 -0
  88. package/steps/report-footer.md +5 -0
  89. package/templates/project-context.yaml +11 -0
@@ -89,6 +89,37 @@ If `services` section is present:
89
89
  - Override `paths.domain_knowledge_dir` → `{spec_source}/specs/domain-knowledge`
90
90
  - Override `paths.business_dictionary` → `{spec_source}/specs/domain-knowledge/business-dictionary.md`
91
91
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
92
+ - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
93
+ - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
94
+
95
+ > **Why under `spec_source`:** tester feedback (`/report-bug`, `/propose-scenario`) must land in the **shared spec repo** so PO/Dev see it when they `/sync`. In single-service mode (no `spec_source`), these default to `feedback/bug-reports` and `feedback/bdd-proposals` at repo root — still shared, same repo.
96
+
97
+ ---
98
+
99
+ ## Step 1.6 — [SERVICE CONVENTIONS] Load service-specific conventions (umbrella mode)
100
+
101
+ *Skip this step entirely if `active_service` is `"unresolved"` or context is single-service mode.*
102
+
103
+ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-service/`):
104
+
105
+ **1. Locate service config** — try in priority order:
106
+ - `{active_service}/.agent/project-context.yaml`
107
+ - `{active_service}/project-context.yaml`
108
+
109
+ **2. If found, override with service-specific values:**
110
+
111
+ | Variable | Source |
112
+ |----------|--------|
113
+ | `conventions.test_command` | service's `conventions.test_command` |
114
+ | `conventions.build_command` | service's `conventions.build_command` |
115
+ | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` — default: `{active_service}/.trace` |
116
+ | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
117
+
118
+ **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
119
+ - Shell commands (`/run-tests`, `/generate-tests`) run **from within** `service_root`
120
+ - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
121
+
122
+ **4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
92
123
 
93
124
  ---
94
125
 
@@ -182,6 +213,25 @@ These two variables (`active_module`, `platform_type`) are the canonical source
182
213
 
183
214
  ---
184
215
 
216
+ ## Step 6.7 — [GUARDRAILS] Load Project Lessons (conditional)
217
+
218
+ *Accumulated mistakes the AI must not repeat in this project. These are added over time via `/learn`
219
+ or accepted during `/review-code`, `/fix-bug`, `/debug`.*
220
+
221
+ Resolve the lessons file path:
222
+ - Use `paths.lessons_file` if set (may be service-overridden in umbrella mode, Step 1.6)
223
+ - Else default `specs/domain-knowledge/lessons-learned.md`
224
+ - In umbrella/service mode (when `service_root` is set), if `paths.lessons_file` is unset, default to `{service_root}/.agent/project-lessons.md`
225
+
226
+ If the file exists, read it and store ALL lessons as **ACTIVE GUARDRAILS** for the session:
227
+ - Treat each lesson's **Rule** as a hard constraint — same priority as CLAUDE.md coding standards (Step 3).
228
+ - Before generating or modifying any artifact (PRD, BDD, tech-doc, code, test), check the output against every lesson whose `category` matches the current command AND whose `scope` matches the target (domain / file).
229
+ - If a generated output would violate a lesson → correct it **before** presenting, and note which lesson (`L-NNN`) was applied.
230
+
231
+ If the file does not exist → skip silently (no lessons captured yet).
232
+
233
+ ---
234
+
185
235
  ## Step 7 — [RECAP] Working Memory Recap (anti-lost-in-middle)
186
236
 
187
237
  After loading all context, synthesize and output a compact summary block.
@@ -197,7 +247,9 @@ Layers : {layer order from CLAUDE.md §2, e.g., Controller → Facade → Ser
197
247
  Ticket : {ticket_prefix}-
198
248
  Dict : {loaded — N canonical terms, M banned terms | missing}
199
249
  Entities : {loaded — EntityA, EntityB, EntityC | missing}
250
+ Lessons : {loaded — N guardrails | none yet}
200
251
  Service : {active_service} ({active_service_module}) | single-service
252
+ Svc Root : {service_root} — conventions + trace_dir loaded from service config | —
201
253
  Status : {FULL | PARTIAL — missing: CLAUDE.md / business-dict / core-entities | MINIMAL}
202
254
  ```
203
255
 
@@ -45,6 +45,11 @@ Suggest the logical next command based on workflow phase:
45
45
  | /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/generate-tests {UC-ID}`; all OK → create PR |
46
46
  | /fix-bug | Create PR and link to ticket |
47
47
  | /debug | `/fix-bug {ticket-id}` if fix needed |
48
+ | /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
49
+ | /propose-scenario | Notify PO/Dev to review the proposal in `feedback/bdd-proposals/` |
50
+ | /learn | Continue working — lesson applies on next command |
51
+ | /sync | `/validate-traces` for full coverage; act on any `📥 tester feedback` surfaced |
52
+ | /update-framework | Review `git diff .agent/`, commit; `/sync` for project content |
48
53
 
49
54
  Format the footer as:
50
55
  ```
@@ -45,6 +45,11 @@ paths:
45
45
  business_dictionary: "specs/domain-knowledge/business-dictionary.md"
46
46
  core_entities: "specs/domain-knowledge/core-entities.md"
47
47
 
48
+ # Project Lessons (guardrails accumulated via /learn — loaded by context-loader Step 6.7)
49
+ # Single-service default below. In umbrella/service mode, set this in each service's
50
+ # .agent/project-context.yaml to ".agent/project-lessons.md" (resolved per service_root).
51
+ lessons_file: "specs/domain-knowledge/lessons-learned.md"
52
+
48
53
  # Tech Docs
49
54
  tech_docs_dir: "tech-docs"
50
55
 
@@ -54,6 +59,12 @@ paths:
54
59
  # Trace
55
60
  trace_dir: ".trace"
56
61
 
62
+ # Tester feedback (written by /report-bug and /propose-scenario).
63
+ # These live in the SHARED spec repo so PO/Dev see them on their next /sync.
64
+ # In umbrella mode, context-loader auto-resolves them under {spec_source}/feedback/.
65
+ bug_reports_dir: "feedback/bug-reports"
66
+ bdd_proposals_dir: "feedback/bdd-proposals"
67
+
57
68
  tech_stack:
58
69
  language: "{{LANGUAGE}}" # e.g., Java 17 / TypeScript / C# / Go
59
70
  framework: "{{FRAMEWORK}}" # e.g., Spring Boot 3.2 / Angular 17 / .NET 8