@edupia-tutor/spec-driven-docs 0.14.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/bin/build.js +230 -0
- package/bin/index.js +598 -0
- package/commands/debug.md +830 -0
- package/commands/debug.tmpl +257 -0
- package/commands/define-product.md +652 -0
- package/commands/define-product.tmpl +158 -0
- package/commands/dev-gen-test.md +1010 -0
- package/commands/dev-gen-test.tmpl +490 -0
- package/commands/dev-run-test.md +744 -0
- package/commands/dev-run-test.tmpl +224 -0
- package/commands/dev-smoke-test.md +711 -0
- package/commands/dev-smoke-test.tmpl +217 -0
- package/commands/fix-bug.md +744 -0
- package/commands/fix-bug.tmpl +171 -0
- package/commands/generate-bdd.md +1054 -0
- package/commands/generate-bdd.tmpl +534 -0
- package/commands/generate-code.md +869 -0
- package/commands/generate-code.tmpl +349 -0
- package/commands/generate-design-spec.md +958 -0
- package/commands/generate-design-spec.tmpl +464 -0
- package/commands/generate-prd.md +748 -0
- package/commands/generate-prd.tmpl +254 -0
- package/commands/generate-spec-manifest.md +658 -0
- package/commands/generate-spec-manifest.tmpl +164 -0
- package/commands/generate-tech-docs.md +849 -0
- package/commands/generate-tech-docs.tmpl +355 -0
- package/commands/learn.md +636 -0
- package/commands/learn.tmpl +63 -0
- package/commands/map-testids.md +575 -0
- package/commands/map-testids.tmpl +81 -0
- package/commands/propose-scenario.md +623 -0
- package/commands/propose-scenario.tmpl +129 -0
- package/commands/qc-analyze.md +580 -0
- package/commands/qc-analyze.tmpl +86 -0
- package/commands/qc-design-test.md +562 -0
- package/commands/qc-design-test.tmpl +68 -0
- package/commands/qc-plan.md +543 -0
- package/commands/qc-plan.tmpl +49 -0
- package/commands/qc-report.md +554 -0
- package/commands/qc-report.tmpl +60 -0
- package/commands/qc-review.md +547 -0
- package/commands/qc-review.tmpl +53 -0
- package/commands/qc-run-test.md +604 -0
- package/commands/qc-run-test.tmpl +84 -0
- package/commands/refine-prd.md +772 -0
- package/commands/refine-prd.tmpl +140 -0
- package/commands/report-bug.md +639 -0
- package/commands/report-bug.tmpl +145 -0
- package/commands/review-code.md +677 -0
- package/commands/review-code.tmpl +104 -0
- package/commands/review-context.md +1047 -0
- package/commands/review-context.tmpl +415 -0
- package/commands/review-tech-docs.md +811 -0
- package/commands/review-tech-docs.tmpl +317 -0
- package/commands/setup-ai-first.md +545 -0
- package/commands/setup-ai-first.tmpl +358 -0
- package/commands/sync.md +451 -0
- package/commands/sync.tmpl +351 -0
- package/commands/update-framework.md +251 -0
- package/commands/update-framework.tmpl +151 -0
- package/commands/validate-traces.md +842 -0
- package/commands/validate-traces.tmpl +348 -0
- package/core/FRAMEWORK_VERSION +1 -0
- package/core/commands/debug.md +830 -0
- package/core/commands/define-product.md +652 -0
- package/core/commands/dev-gen-test.md +1010 -0
- package/core/commands/dev-run-test.md +744 -0
- package/core/commands/dev-smoke-test.md +711 -0
- package/core/commands/fix-bug.md +744 -0
- package/core/commands/generate-bdd.md +1054 -0
- package/core/commands/generate-code.md +869 -0
- package/core/commands/generate-design-spec.md +958 -0
- package/core/commands/generate-prd.md +748 -0
- package/core/commands/generate-spec-manifest.md +658 -0
- package/core/commands/generate-tech-docs.md +849 -0
- package/core/commands/learn.md +636 -0
- package/core/commands/map-testids.md +575 -0
- package/core/commands/propose-scenario.md +623 -0
- package/core/commands/qc-analyze.md +580 -0
- package/core/commands/qc-design-test.md +562 -0
- package/core/commands/qc-plan.md +543 -0
- package/core/commands/qc-report.md +554 -0
- package/core/commands/qc-review.md +547 -0
- package/core/commands/qc-run-test.md +604 -0
- package/core/commands/refine-prd.md +772 -0
- package/core/commands/report-bug.md +639 -0
- package/core/commands/review-code.md +677 -0
- package/core/commands/review-context.md +1047 -0
- package/core/commands/review-tech-docs.md +811 -0
- package/core/commands/setup-ai-first.md +545 -0
- package/core/commands/sync.md +451 -0
- package/core/commands/update-framework.md +251 -0
- package/core/commands/validate-traces.md +842 -0
- package/core/hooks/data-guard.js +141 -0
- package/core/hooks/settings.json +18 -0
- package/core/modules/android-compose/module.yaml +13 -0
- package/core/modules/android-compose/stack-profile.yaml +57 -0
- package/core/modules/angular/architecture-snippets/component-patterns.md +187 -0
- package/core/modules/angular/module.yaml +6 -0
- package/core/modules/angular/stack-profile.yaml +38 -0
- package/core/modules/context-engineering/architecture-snippets/context-design.md +119 -0
- package/core/modules/context-engineering/module.yaml +9 -0
- package/core/modules/context-engineering/stack-profile.yaml +61 -0
- package/core/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
- package/core/modules/dotnet/module.yaml +6 -0
- package/core/modules/dotnet/stack-profile.yaml +50 -0
- package/core/modules/flutter/module.yaml +14 -0
- package/core/modules/flutter/stack-profile.yaml +59 -0
- package/core/modules/golang/architecture-snippets/domain-layout.md +283 -0
- package/core/modules/golang/module.yaml +6 -0
- package/core/modules/golang/stack-profile.yaml +40 -0
- package/core/modules/ios-swiftui/module.yaml +13 -0
- package/core/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/core/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
- package/core/modules/java-spring/module.yaml +15 -0
- package/core/modules/java-spring/stack-profile.yaml +28 -0
- package/core/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
- package/core/modules/nextjs/module.yaml +14 -0
- package/core/modules/nextjs/stack-profile.yaml +74 -0
- package/core/modules/nuxt/module.yaml +14 -0
- package/core/modules/nuxt/stack-profile.yaml +58 -0
- package/core/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
- package/core/modules/php-laravel/module.yaml +15 -0
- package/core/modules/php-laravel/stack-profile.yaml +56 -0
- package/core/modules/qc-playwright/stack-profile.yaml +66 -0
- package/core/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
- package/core/modules/react/module.yaml +14 -0
- package/core/modules/react/stack-profile.yaml +63 -0
- package/core/modules/react-native/module.yaml +14 -0
- package/core/modules/react-native/stack-profile.yaml +56 -0
- package/core/modules/vue/module.yaml +14 -0
- package/core/modules/vue/stack-profile.yaml +65 -0
- package/core/rules/data-protection.md +80 -0
- package/core/rules/workflow.md +44 -0
- package/core/skills/code/SKILL.md +770 -0
- package/core/skills/debug/SKILL.md +869 -0
- package/core/skills/design-spec/SKILL.md +589 -0
- package/core/skills/discovery/SKILL.md +554 -0
- package/core/skills/prd/SKILL.md +562 -0
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
- package/core/skills/qc/qa-analyst/business-rules.md +59 -0
- package/core/skills/qc/qa-analyst/data-flow.md +64 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +61 -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 +216 -0
- package/core/skills/spec/SKILL.md +461 -0
- package/core/skills/test/SKILL.md +1297 -0
- package/core/steps/capture-lesson.md +79 -0
- package/core/steps/context-loader.md +307 -0
- package/core/steps/gate.md +87 -0
- package/core/steps/report-footer.md +100 -0
- package/core/steps/review-fanout.md +138 -0
- package/core/steps/spawn-agent.md +124 -0
- package/core/steps/trace-mirror.md +26 -0
- package/core/templates/architecture.template.md +113 -0
- package/core/templates/design-spec.template.md +217 -0
- package/core/templates/feature.template +259 -0
- package/core/templates/platform-guide.template.md +145 -0
- package/core/templates/prd.template.md +327 -0
- package/core/templates/product-definition.template.md +168 -0
- package/core/templates/project-context.yaml +161 -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 +156 -0
- package/docs/01-getting-started/quickstart.md +85 -0
- package/docs/02-guides/README.md +26 -0
- package/docs/02-guides/developer/README.md +46 -0
- package/docs/02-guides/developer/bdd-and-trace.md +125 -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 +460 -0
- package/docs/02-guides/developer/workflow.md +121 -0
- package/docs/02-guides/product-owner/README.md +79 -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 +436 -0
- package/docs/02-guides/tester/README.md +75 -0
- package/docs/02-guides/tester/bug-reporting.md +117 -0
- package/docs/02-guides/tester/qc-automation.md +165 -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 +130 -0
- package/docs/02-guides/tester/test-checklist.md +31 -0
- package/docs/02-guides/tester/workflow.md +77 -0
- package/docs/03-concepts/README.md +19 -0
- package/docs/03-concepts/architecture.md +248 -0
- package/docs/03-concepts/pipeline.md +274 -0
- package/docs/03-concepts/traceability.md +149 -0
- package/docs/04-operations/README.md +33 -0
- package/docs/04-operations/bug-flow.md +362 -0
- package/docs/04-operations/publishing.md +137 -0
- package/docs/04-operations/sync-and-update.md +522 -0
- package/docs/05-reference/README.md +32 -0
- package/docs/05-reference/command-cheatsheet.md +147 -0
- package/docs/05-reference/commands.md +232 -0
- package/docs/05-reference/modules.md +110 -0
- package/docs/05-reference/trace-schema.md +153 -0
- package/docs/README.md +49 -0
- package/hooks/data-guard.js +141 -0
- package/hooks/settings.json +18 -0
- package/modules/android-compose/module.yaml +13 -0
- package/modules/android-compose/stack-profile.yaml +57 -0
- package/modules/angular/architecture-snippets/component-patterns.md +187 -0
- package/modules/angular/module.yaml +6 -0
- package/modules/angular/stack-profile.yaml +38 -0
- package/modules/context-engineering/architecture-snippets/context-design.md +119 -0
- package/modules/context-engineering/module.yaml +9 -0
- package/modules/context-engineering/stack-profile.yaml +61 -0
- package/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
- package/modules/dotnet/module.yaml +6 -0
- package/modules/dotnet/stack-profile.yaml +50 -0
- package/modules/flutter/module.yaml +14 -0
- package/modules/flutter/stack-profile.yaml +59 -0
- package/modules/golang/architecture-snippets/domain-layout.md +283 -0
- package/modules/golang/module.yaml +6 -0
- package/modules/golang/stack-profile.yaml +40 -0
- package/modules/ios-swiftui/module.yaml +13 -0
- package/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
- package/modules/java-spring/module.yaml +15 -0
- package/modules/java-spring/stack-profile.yaml +28 -0
- package/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
- package/modules/nextjs/module.yaml +14 -0
- package/modules/nextjs/stack-profile.yaml +74 -0
- package/modules/nuxt/module.yaml +14 -0
- package/modules/nuxt/stack-profile.yaml +58 -0
- package/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
- package/modules/php-laravel/module.yaml +15 -0
- package/modules/php-laravel/stack-profile.yaml +56 -0
- package/modules/qc-playwright/stack-profile.yaml +66 -0
- package/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
- package/modules/react/module.yaml +14 -0
- package/modules/react/stack-profile.yaml +63 -0
- package/modules/react-native/module.yaml +14 -0
- package/modules/react-native/stack-profile.yaml +56 -0
- package/modules/vue/module.yaml +14 -0
- package/modules/vue/stack-profile.yaml +65 -0
- package/package.json +49 -0
- package/rules/data-protection.md +80 -0
- package/rules/workflow.md +44 -0
- package/scripts/init.sh +49 -0
- package/scripts/migrate-specs.js +256 -0
- package/scripts/upgrade.sh +94 -0
- package/skills/code/SKILL.md +770 -0
- package/skills/code/SKILL.tmpl +176 -0
- package/skills/debug/SKILL.md +869 -0
- package/skills/debug/SKILL.tmpl +262 -0
- package/skills/design-spec/SKILL.md +589 -0
- package/skills/design-spec/SKILL.tmpl +95 -0
- package/skills/discovery/SKILL.md +554 -0
- package/skills/discovery/SKILL.tmpl +147 -0
- package/skills/prd/SKILL.md +562 -0
- package/skills/prd/SKILL.tmpl +188 -0
- package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
- package/skills/qc/qa-analyst/business-rules.md +59 -0
- package/skills/qc/qa-analyst/data-flow.md +64 -0
- package/skills/qc/qa-analyst/spec-breakdown.md +61 -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 +216 -0
- package/skills/setup-ai-first/SKILL.tmpl +116 -0
- package/skills/spec/SKILL.md +461 -0
- package/skills/spec/SKILL.tmpl +174 -0
- package/skills/test/SKILL.md +1297 -0
- package/skills/test/SKILL.tmpl +296 -0
- package/steps/capture-lesson.md +79 -0
- package/steps/context-loader.md +307 -0
- package/steps/gate.md +87 -0
- package/steps/report-footer.md +100 -0
- package/steps/review-fanout.md +138 -0
- package/steps/spawn-agent.md +124 -0
- package/steps/trace-mirror.md +26 -0
- package/templates/architecture.template.md +113 -0
- package/templates/design-spec.template.md +217 -0
- package/templates/feature.template +259 -0
- package/templates/platform-guide.template.md +145 -0
- package/templates/prd.template.md +327 -0
- package/templates/product-definition.template.md +168 -0
- package/templates/project-context.yaml +161 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# /fix-bug — Full Bug Fix Workflow
|
|
2
|
+
|
|
3
|
+
## Gate
|
|
4
|
+
{{include:steps/gate.md}}
|
|
5
|
+
|
|
6
|
+
*Note: For this command, the target in Step 1 is a ticket ID (e.g., `PROJ-123`), a **filed bug `{BUG-ID}`** (a `{paths.bug_reports_dir}/{BUG-ID}.md` from `/report-bug` — e.g. a QC product-gap), or a bug description from `$ARGUMENTS`. If a `{BUG-ID}` is given, resolve & read that report for spec context; otherwise proceed to context loading.*
|
|
7
|
+
|
|
8
|
+
## Context
|
|
9
|
+
{{include:steps/context-loader.md}}
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Phase 1 — Gather Info
|
|
14
|
+
If a `{BUG-ID}` was given: read `{paths.bug_reports_dir}/{BUG-ID}.md` for the spec context, AC violated, expected-vs-actual, and the suggested layer — use it as the bug details (no need to re-ask).
|
|
15
|
+
If ticket: fetch details (or ask user to paste).
|
|
16
|
+
If no ticket / BUG-ID — CHECKPOINT:
|
|
17
|
+
1. Where does the bug occur? (module, endpoint, flow)
|
|
18
|
+
2. Steps to reproduce?
|
|
19
|
+
3. Expected vs Actual?
|
|
20
|
+
4. Error log / stack trace?
|
|
21
|
+
|
|
22
|
+
## Phase 2 — Root Cause Analysis
|
|
23
|
+
|
|
24
|
+
Use `active_module` from context to select the relevant table.
|
|
25
|
+
|
|
26
|
+
### If `platform_type = backend`
|
|
27
|
+
|
|
28
|
+
#### java-spring / golang / dotnet / php-laravel
|
|
29
|
+
|
|
30
|
+
| Bug Type | Common Location | How to Check |
|
|
31
|
+
|----------|----------------|--------------|
|
|
32
|
+
| Wrong response data | Mapping layer | Check field mapping, DTO conversions |
|
|
33
|
+
| 400 Bad Request | Input validation | Check DTO constraints / validators |
|
|
34
|
+
| 401 Unauthorized | Auth filter | Check token config, filter order |
|
|
35
|
+
| 403 Forbidden | Auth config | Check role-based access rules |
|
|
36
|
+
| 404 Not Found | Repository query | Check find method, ID types |
|
|
37
|
+
| N+1 Query | Data access | Check for missing JOIN FETCH / eager load |
|
|
38
|
+
| Null Pointer | Optional not handled | Check Optional.orElseThrow, null guards |
|
|
39
|
+
| Transaction rollback | Missing @Transactional | Check transaction scope, propagation |
|
|
40
|
+
| Stale cache | Missing eviction | Check cache invalidation triggers |
|
|
41
|
+
| Type mismatch | Filter / specification | Check field types in predicates |
|
|
42
|
+
|
|
43
|
+
#### context-engineering (AI/LLM pipelines)
|
|
44
|
+
|
|
45
|
+
| Bug Type | Common Location | How to Check |
|
|
46
|
+
|----------|----------------|--------------|
|
|
47
|
+
| Wrong pipeline output | Prompt template | Check prompt content; verify variables are substituted correctly |
|
|
48
|
+
| Missing context in output | Context assembly | Verify all required context blocks are included and non-empty |
|
|
49
|
+
| Schema validation failure | Output parser | Compare raw LLM output vs expected schema; add stricter output instructions |
|
|
50
|
+
| Flaky / non-deterministic results | LLM temperature | Check temperature setting; use fixed seed/mock in tests |
|
|
51
|
+
| API rate limit errors | LLM client | Implement backoff; check quota usage in provider dashboard |
|
|
52
|
+
| Token limit exceeded | Prompt assembly | Reduce context size; add chunking strategy |
|
|
53
|
+
|
|
54
|
+
### If `platform_type = web-frontend`
|
|
55
|
+
|
|
56
|
+
| Bug Type | Common Location | How to Check |
|
|
57
|
+
|----------|----------------|--------------|
|
|
58
|
+
| Wrong data displayed | State / store | Check state update logic, selector |
|
|
59
|
+
| UI not re-rendering | Missing reactive dep | Check deps array, state immutability |
|
|
60
|
+
| API data not loading | HTTP client / hook | Check network tab, error handler |
|
|
61
|
+
| 401 on API call | Auth token | Check token refresh, header injection |
|
|
62
|
+
| Form not submitting | Validation / handler | Check form state, required fields, errors |
|
|
63
|
+
| Route not found | Router config | Check route definition, lazy import |
|
|
64
|
+
| Build / type error | TypeScript types | Compare type definitions vs actual API shape |
|
|
65
|
+
|
|
66
|
+
### If `platform_type = mobile`
|
|
67
|
+
|
|
68
|
+
| Bug Type | Common Location | How to Check |
|
|
69
|
+
|----------|----------------|--------------|
|
|
70
|
+
| Screen shows stale data | State / BLoC / ViewModel | Check event dispatched, state emitted correctly |
|
|
71
|
+
| Crash on navigation | Route param missing | Check params passed, null safety |
|
|
72
|
+
| API call not firing | Repository / service layer | Add log in repo method, check network |
|
|
73
|
+
| UI not reflecting state | Widget not observing stream | Check `BlocBuilder` / `StateObserver` setup |
|
|
74
|
+
| Crash on app resume | Lifecycle handler | Check `onResume` / `viewDidAppear` logic |
|
|
75
|
+
| Auth token expired | Token refresh logic | Check refresh flow, token storage |
|
|
76
|
+
| Permission denied | OS permission | Check runtime permission request code |
|
|
77
|
+
|
|
78
|
+
CHECKPOINT — Root Cause Report:
|
|
79
|
+
```
|
|
80
|
+
Bug: {description} | Module: {name}
|
|
81
|
+
Root cause: {analysis}
|
|
82
|
+
Affected files: {list}
|
|
83
|
+
Proposed fix: {what to change}
|
|
84
|
+
Regression risk: Low / Medium / High
|
|
85
|
+
Proceed? (Y/N)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Phase 3 — Fix
|
|
89
|
+
|
|
90
|
+
*Umbrella mode: the buggy code lives in the **service submodule** resolved at context-loader Step 1.6 — create the branch and run every git/build step from **inside** `{service_root}`. Single-service: omit the `cd`.*
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cd {service_root} # umbrella: the service submodule; single-service: omit
|
|
94
|
+
git checkout -b fix/{TICKET_ID}-{description}
|
|
95
|
+
```
|
|
96
|
+
Apply fix. Add trace annotation if file has `@trace.implements`:
|
|
97
|
+
```
|
|
98
|
+
@trace.fixes={TICKET_ID}
|
|
99
|
+
@trace.root_cause={brief description}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Phase 4 — Regression Test
|
|
103
|
+
```
|
|
104
|
+
// @trace.verifies={UC-ID}
|
|
105
|
+
// @trace.regression={TICKET_ID}
|
|
106
|
+
Test: "Regression {TICKET_ID}: {bug description}"
|
|
107
|
+
```
|
|
108
|
+
Run test. If fail → debug and fix (max 3 iterations).
|
|
109
|
+
|
|
110
|
+
## Phase 5 — Build & Commit (2-layer push in umbrella mode)
|
|
111
|
+
```bash
|
|
112
|
+
{conventions.build_command} # max 3 retries — runs inside {service_root} in umbrella mode
|
|
113
|
+
# Tầng 1 — push the fix branch in the service submodule (where the code lives):
|
|
114
|
+
git add {files}
|
|
115
|
+
git commit -m "fix({TICKET_ID}): {description}"
|
|
116
|
+
git push -u origin fix/{TICKET_ID}-{slug} # then open a PR into the service's tracked branch
|
|
117
|
+
```
|
|
118
|
+
> **Umbrella mode — Tầng 2 (bump umbrella pointer):** the umbrella records a *commit* of the service
|
|
119
|
+
> submodule, not a branch. After the fix-branch PR **merges** into the service's tracked branch, bump
|
|
120
|
+
> the pointer so teammates pulling the umbrella don't hit "commit not found":
|
|
121
|
+
> ```bash
|
|
122
|
+
> cd - # back to umbrella root
|
|
123
|
+
> git add {service_root} && git commit -m "chore: bump {service_root} pointer (fix {TICKET_ID})"
|
|
124
|
+
> git push
|
|
125
|
+
> ```
|
|
126
|
+
> Single-service mode: no umbrella pointer — Tầng 1 is the whole push. Full rule: Sync & Update §4.4 (commit 2 tầng).
|
|
127
|
+
|
|
128
|
+
## Phase 5.5 — Close the bug report (if fixing a filed `{BUG-ID}`)
|
|
129
|
+
|
|
130
|
+
*Skip if the target was a plain ticket/description (no `{BUG-ID}` file).*
|
|
131
|
+
|
|
132
|
+
After the fix is committed, update `{paths.bug_reports_dir}/{BUG-ID}.md`:
|
|
133
|
+
- Set `State` → `🟡 Fixed` and append a short **Resolution** (root cause + commit/PR link).
|
|
134
|
+
- It is **not** `Closed` yet — QC owns verification: when `/qc-run-test` re-runs and `qc_status`
|
|
135
|
+
for the linked SC flips to `pass`, it becomes `🟢 Closed` (and `qc_owner`/`qc_blocked_by` clear).
|
|
136
|
+
- Commit the updated report to the spec repo (same 2-layer push as `/report-bug`) so the PO/PM
|
|
137
|
+
"waiting-on" view reflects it on `/sync`.
|
|
138
|
+
|
|
139
|
+
This is the only write `/fix-bug` makes to the feedback area — it still fixes **code** only,
|
|
140
|
+
never edits PRD/BDD (spec changes are PO/Dev per BUG_FLOW Case 2–4).
|
|
141
|
+
|
|
142
|
+
## Phase 6 — Offer to Record a Lesson (optional)
|
|
143
|
+
|
|
144
|
+
If the root cause was a **mistake the AI made during generation and could repeat**
|
|
145
|
+
(e.g. it generated code that skipped a layer, missed a null guard, used a wrong pattern —
|
|
146
|
+
NOT an external cause like a third-party outage or bad input data), ask:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
This root cause looks like a repeatable AI mistake.
|
|
150
|
+
Record it as a project lesson so it isn't generated again? (Y/N)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
If `Y` → run the capture procedure below with `source=/fix-bug {TICKET_ID}`, an appropriate
|
|
154
|
+
`category` (usually `code-gen`), and `scope` = the affected domain or file glob.
|
|
155
|
+
|
|
156
|
+
{{include:steps/capture-lesson.md}}
|
|
157
|
+
|
|
158
|
+
## Output
|
|
159
|
+
|
|
160
|
+
{{include:steps/report-footer.md}}
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
/fix-bug Complete — {TICKET_ID}
|
|
164
|
+
Root Cause: {analysis}
|
|
165
|
+
Changes: {list}
|
|
166
|
+
✅ Regression test added | ✅ Build: SUCCESS
|
|
167
|
+
{🐞 BUG-{id} → State: Fixed (pushed) — Closed after /qc-run-test re-verify pass | if fixing a filed bug}
|
|
168
|
+
{📝 Lesson L-NNN recorded (if captured)}
|
|
169
|
+
Branch: fix/{TICKET_ID}-{slug}
|
|
170
|
+
Next: Create PR and link to ticket. {QC: re-run /qc-run-test {UC-ID} to verify + close the bug | if applicable}
|
|
171
|
+
```
|