specweave 0.1.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/INSTALL.md +848 -0
- package/LICENSE +21 -0
- package/README.md +675 -0
- package/SPECWEAVE.md +665 -0
- package/bin/install-agents.sh +57 -0
- package/bin/install-all.sh +49 -0
- package/bin/install-commands.sh +56 -0
- package/bin/install-skills.sh +57 -0
- package/bin/specweave.js +81 -0
- package/dist/adapters/adapter-base.d.ts +50 -0
- package/dist/adapters/adapter-base.d.ts.map +1 -0
- package/dist/adapters/adapter-base.js +146 -0
- package/dist/adapters/adapter-base.js.map +1 -0
- package/dist/adapters/adapter-interface.d.ts +108 -0
- package/dist/adapters/adapter-interface.d.ts.map +1 -0
- package/dist/adapters/adapter-interface.js +9 -0
- package/dist/adapters/adapter-interface.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +54 -0
- package/dist/adapters/claude/adapter.d.ts.map +1 -0
- package/dist/adapters/claude/adapter.js +184 -0
- package/dist/adapters/claude/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +42 -0
- package/dist/adapters/copilot/adapter.d.ts.map +1 -0
- package/dist/adapters/copilot/adapter.js +239 -0
- package/dist/adapters/copilot/adapter.js.map +1 -0
- package/dist/adapters/cursor/adapter.d.ts +42 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -0
- package/dist/adapters/cursor/adapter.js +297 -0
- package/dist/adapters/cursor/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +40 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -0
- package/dist/adapters/generic/adapter.js +155 -0
- package/dist/adapters/generic/adapter.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +247 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +7 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +160 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +154 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/package.json +90 -0
- package/src/adapters/README.md +312 -0
- package/src/adapters/adapter-base.ts +146 -0
- package/src/adapters/adapter-interface.ts +120 -0
- package/src/adapters/claude/README.md +241 -0
- package/src/adapters/claude/adapter.ts +157 -0
- package/src/adapters/copilot/.github/copilot/instructions.md +376 -0
- package/src/adapters/copilot/README.md +200 -0
- package/src/adapters/copilot/adapter.ts +210 -0
- package/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
- package/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
- package/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
- package/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
- package/src/adapters/cursor/.cursorrules +325 -0
- package/src/adapters/cursor/README.md +243 -0
- package/src/adapters/cursor/adapter.ts +268 -0
- package/src/adapters/generic/README.md +277 -0
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +676 -0
- package/src/adapters/generic/adapter.ts +159 -0
- package/src/adapters/registry.yaml +126 -0
- package/src/agents/architect/AGENT.md +416 -0
- package/src/agents/devops/AGENT.md +1738 -0
- package/src/agents/docs-writer/AGENT.md +239 -0
- package/src/agents/performance/AGENT.md +228 -0
- package/src/agents/pm/AGENT.md +751 -0
- package/src/agents/qa-lead/AGENT.md +150 -0
- package/src/agents/security/AGENT.md +179 -0
- package/src/agents/sre/AGENT.md +582 -0
- package/src/agents/sre/modules/backend-diagnostics.md +481 -0
- package/src/agents/sre/modules/database-diagnostics.md +509 -0
- package/src/agents/sre/modules/infrastructure.md +561 -0
- package/src/agents/sre/modules/monitoring.md +439 -0
- package/src/agents/sre/modules/security-incidents.md +421 -0
- package/src/agents/sre/modules/ui-diagnostics.md +302 -0
- package/src/agents/sre/playbooks/01-high-cpu-usage.md +204 -0
- package/src/agents/sre/playbooks/02-database-deadlock.md +241 -0
- package/src/agents/sre/playbooks/03-memory-leak.md +252 -0
- package/src/agents/sre/playbooks/04-slow-api-response.md +269 -0
- package/src/agents/sre/playbooks/05-ddos-attack.md +293 -0
- package/src/agents/sre/playbooks/06-disk-full.md +314 -0
- package/src/agents/sre/playbooks/07-service-down.md +333 -0
- package/src/agents/sre/playbooks/08-data-corruption.md +337 -0
- package/src/agents/sre/playbooks/09-cascade-failure.md +430 -0
- package/src/agents/sre/playbooks/10-rate-limit-exceeded.md +464 -0
- package/src/agents/sre/scripts/health-check.sh +230 -0
- package/src/agents/sre/scripts/log-analyzer.py +213 -0
- package/src/agents/sre/scripts/metrics-collector.sh +294 -0
- package/src/agents/sre/scripts/trace-analyzer.js +257 -0
- package/src/agents/sre/templates/incident-report.md +249 -0
- package/src/agents/sre/templates/mitigation-plan.md +375 -0
- package/src/agents/sre/templates/post-mortem.md +418 -0
- package/src/agents/sre/templates/runbook-template.md +412 -0
- package/src/agents/tech-lead/AGENT.md +263 -0
- package/src/commands/add-tasks.md +176 -0
- package/src/commands/close-increment.md +347 -0
- package/src/commands/create-increment.md +223 -0
- package/src/commands/create-project.md +528 -0
- package/src/commands/generate-docs.md +623 -0
- package/src/commands/list-increments.md +180 -0
- package/src/commands/review-docs.md +331 -0
- package/src/commands/start-increment.md +139 -0
- package/src/commands/sync-github.md +115 -0
- package/src/commands/validate-increment.md +800 -0
- package/src/hooks/README.md +252 -0
- package/src/hooks/docs-changed.sh +59 -0
- package/src/hooks/human-input-required.sh +55 -0
- package/src/hooks/post-task-completion.sh +57 -0
- package/src/hooks/pre-implementation.sh +47 -0
- package/src/skills/ado-sync/README.md +449 -0
- package/src/skills/ado-sync/SKILL.md +245 -0
- package/src/skills/ado-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/ado-sync/test-cases/test-2.yaml +8 -0
- package/src/skills/ado-sync/test-cases/test-3.yaml +9 -0
- package/src/skills/bmad-method-expert/SKILL.md +628 -0
- package/src/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
- package/src/skills/bmad-method-expert/scripts/check-setup.js +208 -0
- package/src/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
- package/src/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/SKILL.md +523 -0
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +48 -0
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/SKILL.md +625 -0
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/context-loader/SKILL.md +734 -0
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +39 -0
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +44 -0
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +45 -0
- package/src/skills/context-optimizer/SKILL.md +618 -0
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +97 -0
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +109 -0
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +98 -0
- package/src/skills/cost-optimizer/SKILL.md +190 -0
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +75 -0
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +52 -0
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +63 -0
- package/src/skills/cost-optimizer/test-results/README.md +46 -0
- package/src/skills/design-system-architect/SKILL.md +107 -0
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +23 -0
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +24 -0
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +23 -0
- package/src/skills/diagrams-architect/SKILL.md +763 -0
- package/src/skills/diagrams-generator/SKILL.md +25 -0
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +8 -0
- package/src/skills/docs-updater/README.md +48 -0
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/dotnet-backend/SKILL.md +250 -0
- package/src/skills/e2e-playwright/README.md +506 -0
- package/src/skills/e2e-playwright/SKILL.md +457 -0
- package/src/skills/e2e-playwright/execute.js +373 -0
- package/src/skills/e2e-playwright/lib/utils.js +514 -0
- package/src/skills/e2e-playwright/package.json +33 -0
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +54 -0
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +64 -0
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +74 -0
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +98 -0
- package/src/skills/figma-designer/SKILL.md +149 -0
- package/src/skills/figma-implementer/SKILL.md +148 -0
- package/src/skills/figma-mcp-connector/SKILL.md +136 -0
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +22 -0
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +21 -0
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +18 -0
- package/src/skills/figma-to-code/SKILL.md +128 -0
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +29 -0
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +27 -0
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +28 -0
- package/src/skills/frontend/SKILL.md +177 -0
- package/src/skills/github-sync/SKILL.md +252 -0
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/hetzner-provisioner/README.md +308 -0
- package/src/skills/hetzner-provisioner/SKILL.md +251 -0
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +71 -0
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +85 -0
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +126 -0
- package/src/skills/hetzner-provisioner/test-results/README.md +259 -0
- package/src/skills/increment-planner/SKILL.md +889 -0
- package/src/skills/increment-planner/scripts/feature-utils.js +250 -0
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +27 -0
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +30 -0
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +24 -0
- package/src/skills/increment-quality-judge/SKILL.md +566 -0
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +95 -0
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +108 -0
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +87 -0
- package/src/skills/jira-sync/README.md +328 -0
- package/src/skills/jira-sync/SKILL.md +209 -0
- package/src/skills/jira-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-2.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-3.yaml +10 -0
- package/src/skills/nextjs/SKILL.md +176 -0
- package/src/skills/nodejs-backend/SKILL.md +181 -0
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/python-backend/SKILL.md +226 -0
- package/src/skills/role-orchestrator/README.md +197 -0
- package/src/skills/role-orchestrator/SKILL.md +1184 -0
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +98 -0
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +73 -0
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +121 -0
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +145 -0
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +149 -0
- package/src/skills/skill-creator/LICENSE.txt +202 -0
- package/src/skills/skill-creator/SKILL.md +209 -0
- package/src/skills/skill-creator/scripts/init_skill.py +303 -0
- package/src/skills/skill-creator/scripts/package_skill.py +110 -0
- package/src/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/skill-router/SKILL.md +497 -0
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +33 -0
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +42 -0
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +50 -0
- package/src/skills/spec-driven-brainstorming/README.md +264 -0
- package/src/skills/spec-driven-brainstorming/SKILL.md +439 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +148 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +190 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +233 -0
- package/src/skills/spec-driven-debugging/README.md +479 -0
- package/src/skills/spec-driven-debugging/SKILL.md +652 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +212 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +461 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +366 -0
- package/src/skills/spec-kit-expert/SKILL.md +1012 -0
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/specweave-ado-mapper/SKILL.md +501 -0
- package/src/skills/specweave-detector/SKILL.md +420 -0
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +34 -0
- package/src/skills/specweave-jira-mapper/SKILL.md +500 -0
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/task-builder/README.md +90 -0
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/templates/.env.example +144 -0
- package/src/templates/.gitignore.template +81 -0
- package/src/templates/CLAUDE.md.template +383 -0
- package/src/templates/README.md.template +240 -0
- package/src/templates/config.yaml +333 -0
- package/src/templates/docs/README.md +124 -0
- package/src/templates/docs/adr-template.md +118 -0
- package/src/templates/docs/hld-template.md +220 -0
- package/src/templates/docs/lld-template.md +580 -0
- package/src/templates/docs/prd-template.md +132 -0
- package/src/templates/docs/rfc-template.md +229 -0
- package/src/templates/docs/runbook-template.md +298 -0
- package/src/templates/environments/minimal/.env.production +16 -0
- package/src/templates/environments/minimal/README.md +54 -0
- package/src/templates/environments/minimal/deploy-production.yml +52 -0
- package/src/templates/environments/progressive/.env.qa +28 -0
- package/src/templates/environments/progressive/README.md +129 -0
- package/src/templates/environments/progressive/deploy-production.yml +93 -0
- package/src/templates/environments/progressive/deploy-qa.yml +62 -0
- package/src/templates/environments/progressive/deploy-staging.yml +67 -0
- package/src/templates/environments/standard/.env.development +20 -0
- package/src/templates/environments/standard/.env.production +30 -0
- package/src/templates/environments/standard/.env.staging +23 -0
- package/src/templates/environments/standard/README.md +97 -0
- package/src/templates/environments/standard/deploy-production.yml +68 -0
- package/src/templates/environments/standard/deploy-staging.yml +61 -0
- package/src/templates/environments/standard/docker-compose.yml +43 -0
- package/src/templates/increment-metadata-template.yaml +138 -0
|
@@ -0,0 +1,800 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: validate-increment
|
|
3
|
+
description: Validate SpecWeave increment with rule-based checks and optional AI quality assessment
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Validate Increment
|
|
7
|
+
|
|
8
|
+
You are helping the user validate a SpecWeave increment with optional AI-powered quality assessment.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
/validate-increment <increment-id> [--quality] [--export] [--fix] [--always]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Arguments
|
|
17
|
+
|
|
18
|
+
- `<increment-id>`: Required. Increment ID (e.g., "001", "0001", "1", "0042")
|
|
19
|
+
|
|
20
|
+
## Flags
|
|
21
|
+
|
|
22
|
+
- `--quality`: Run AI quality assessment (LLM-as-judge, ~2k tokens, 1-2 minutes)
|
|
23
|
+
- `--export`: Export AI suggestions to tasks.md automatically
|
|
24
|
+
- `--fix`: Auto-fix HIGH priority issues (experimental, requires confirmation)
|
|
25
|
+
- `--always`: Save quality assessment as default in config.yaml
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
### Step 1: Parse and Validate Arguments
|
|
30
|
+
|
|
31
|
+
1. **Extract increment ID**:
|
|
32
|
+
- Parse from command: `/validate-increment 001` → "001"
|
|
33
|
+
- Normalize to 4-digit format: "0001"
|
|
34
|
+
- Support formats: "1", "01", "001", "0001"
|
|
35
|
+
|
|
36
|
+
2. **Extract flags**:
|
|
37
|
+
- Check for `--quality` flag
|
|
38
|
+
- Check for `--export` flag
|
|
39
|
+
- Check for `--fix` flag
|
|
40
|
+
- Check for `--always` flag
|
|
41
|
+
|
|
42
|
+
3. **Validate increment exists**:
|
|
43
|
+
- List directories in `.specweave/increments/`
|
|
44
|
+
- Find matching increment (e.g., `0001-authentication`, `0001-auth`, etc.)
|
|
45
|
+
- If not found: Show error with available increments
|
|
46
|
+
|
|
47
|
+
**Example output if not found**:
|
|
48
|
+
```
|
|
49
|
+
❌ Error: Increment 0001 not found
|
|
50
|
+
|
|
51
|
+
Available increments:
|
|
52
|
+
• 0002-core-enhancements
|
|
53
|
+
• 0003-payment-processing
|
|
54
|
+
• 0004-reporting-dashboard
|
|
55
|
+
|
|
56
|
+
Usage: /validate-increment <id> [--quality] [--export] [--fix] [--always]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 2: Run Rule-Based Validation (Always)
|
|
60
|
+
|
|
61
|
+
Run 120 validation rules across 4 categories:
|
|
62
|
+
|
|
63
|
+
1. **Consistency Rules (47 checks)**:
|
|
64
|
+
- User stories in spec.md → sections in plan.md
|
|
65
|
+
- Components in plan.md → tasks in tasks.md
|
|
66
|
+
- Test cases (TC-0001) in spec.md → tests.md coverage
|
|
67
|
+
- Cross-document consistency (IDs, priorities, dependencies)
|
|
68
|
+
|
|
69
|
+
2. **Completeness Rules (23 checks)**:
|
|
70
|
+
- spec.md: Frontmatter, problem statement, user stories, acceptance criteria
|
|
71
|
+
- plan.md: Architecture, components, data model, API contracts, security
|
|
72
|
+
- tasks.md: Task IDs, descriptions, priorities, estimates
|
|
73
|
+
|
|
74
|
+
3. **Quality Rules (31 checks)**:
|
|
75
|
+
- spec.md: Technology-agnostic, testable acceptance criteria
|
|
76
|
+
- plan.md: Technical details, ADRs exist, security addressed
|
|
77
|
+
- tasks.md: Actionable, reasonable estimates (<1 day)
|
|
78
|
+
|
|
79
|
+
4. **Traceability Rules (19 checks)**:
|
|
80
|
+
- TC-0001 format, sequential numbering
|
|
81
|
+
- ADR references exist
|
|
82
|
+
- Diagram references valid
|
|
83
|
+
|
|
84
|
+
**Display results**:
|
|
85
|
+
```
|
|
86
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
87
|
+
VALIDATION RESULTS: Increment 0001-authentication
|
|
88
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
89
|
+
|
|
90
|
+
✅ Rule-Based Validation: PASSED (120/120 checks)
|
|
91
|
+
✓ Consistency (47/47)
|
|
92
|
+
✓ Completeness (23/23)
|
|
93
|
+
✓ Quality (31/31)
|
|
94
|
+
✓ Traceability (19/19)
|
|
95
|
+
|
|
96
|
+
Files validated:
|
|
97
|
+
• spec.md (250 lines, 6 user stories)
|
|
98
|
+
• plan.md (480 lines, 8 components)
|
|
99
|
+
• tasks.md (42 tasks, P0-P2)
|
|
100
|
+
• tests.md (12 test cases, 85% coverage)
|
|
101
|
+
|
|
102
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**If errors found**:
|
|
106
|
+
```
|
|
107
|
+
❌ Rule-Based Validation: FAILED (115/120 checks)
|
|
108
|
+
✓ Consistency (45/47) - 2 errors
|
|
109
|
+
✓ Completeness (23/23)
|
|
110
|
+
⚠️ Quality (28/31) - 3 warnings
|
|
111
|
+
✓ Traceability (19/19)
|
|
112
|
+
|
|
113
|
+
ERRORS (2):
|
|
114
|
+
🔴 spec.md:45 - Missing acceptance criteria for US-003
|
|
115
|
+
🔴 Inconsistency: spec.md mentions "real-time updates" but plan.md doesn't address it
|
|
116
|
+
|
|
117
|
+
WARNINGS (3):
|
|
118
|
+
🟡 Task T012 exceeds size guideline (5 days, should be <1 day)
|
|
119
|
+
🟡 No security considerations in plan.md
|
|
120
|
+
🟡 ADR-0005 referenced but doesn't exist (plan.md:89)
|
|
121
|
+
|
|
122
|
+
Action required:
|
|
123
|
+
1. Fix missing acceptance criteria for US-003
|
|
124
|
+
2. Address "real-time updates" in plan.md or remove from spec.md
|
|
125
|
+
3. Consider breaking down T012 into smaller tasks
|
|
126
|
+
|
|
127
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Step 3: Determine If Quality Assessment Should Run
|
|
131
|
+
|
|
132
|
+
**Check in this order**:
|
|
133
|
+
|
|
134
|
+
1. **If `--quality` flag provided**: Run quality assessment (skip prompt)
|
|
135
|
+
2. **Else if `config.yaml` has `validation.quality_judge.always_run: true`**: Run quality assessment (skip prompt)
|
|
136
|
+
3. **Else**: Prompt user
|
|
137
|
+
|
|
138
|
+
**Prompt format** (if needed):
|
|
139
|
+
```
|
|
140
|
+
🤔 Run AI Quality Assessment? (Optional)
|
|
141
|
+
|
|
142
|
+
This will:
|
|
143
|
+
• Evaluate spec clarity, testability, edge cases
|
|
144
|
+
• Provide detailed improvement suggestions
|
|
145
|
+
• Use ~2,000 tokens (1-2 minutes)
|
|
146
|
+
• Cost: ~$0.02 (Claude Sonnet 4.5)
|
|
147
|
+
|
|
148
|
+
Your choice:
|
|
149
|
+
[Y] Yes, assess quality
|
|
150
|
+
[N] No, skip (default)
|
|
151
|
+
[A] Always run (save to config)
|
|
152
|
+
|
|
153
|
+
Choice: _
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Step 4: Run AI Quality Assessment (If Approved)
|
|
157
|
+
|
|
158
|
+
**Invoke `increment-quality-judge` skill** with these parameters:
|
|
159
|
+
- increment_id: "0001"
|
|
160
|
+
- files: ["spec.md", "plan.md", "tests.md"]
|
|
161
|
+
- dimensions: ["clarity", "testability", "completeness", "feasibility", "maintainability", "edge_cases"]
|
|
162
|
+
|
|
163
|
+
**Quality judge evaluates 6 dimensions**:
|
|
164
|
+
|
|
165
|
+
1. **Clarity** (weight: 0.20)
|
|
166
|
+
- Is problem statement clear?
|
|
167
|
+
- Are objectives well-defined?
|
|
168
|
+
- Is terminology consistent?
|
|
169
|
+
|
|
170
|
+
2. **Testability** (weight: 0.25)
|
|
171
|
+
- Are acceptance criteria testable?
|
|
172
|
+
- Can success be measured objectively?
|
|
173
|
+
- Are edge cases identifiable?
|
|
174
|
+
|
|
175
|
+
3. **Completeness** (weight: 0.20)
|
|
176
|
+
- All requirements addressed?
|
|
177
|
+
- Error handling specified?
|
|
178
|
+
- Non-functional requirements included?
|
|
179
|
+
|
|
180
|
+
4. **Feasibility** (weight: 0.15)
|
|
181
|
+
- Architecture scalable?
|
|
182
|
+
- Technical constraints realistic?
|
|
183
|
+
- Timeline achievable?
|
|
184
|
+
|
|
185
|
+
5. **Maintainability** (weight: 0.10)
|
|
186
|
+
- Design modular?
|
|
187
|
+
- Extension points identified?
|
|
188
|
+
- Technical debt addressed?
|
|
189
|
+
|
|
190
|
+
6. **Edge Cases** (weight: 0.10)
|
|
191
|
+
- Failure scenarios covered?
|
|
192
|
+
- Performance limits specified?
|
|
193
|
+
- Security considerations included?
|
|
194
|
+
|
|
195
|
+
**Display quality results**:
|
|
196
|
+
```
|
|
197
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
198
|
+
AI QUALITY ASSESSMENT
|
|
199
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
200
|
+
|
|
201
|
+
Overall Score: 87/100 (GOOD) ✓
|
|
202
|
+
|
|
203
|
+
Dimension Scores:
|
|
204
|
+
Clarity: 92/100 ✓✓
|
|
205
|
+
Testability: 78/100 ✓ (Needs improvement)
|
|
206
|
+
Completeness: 90/100 ✓✓
|
|
207
|
+
Feasibility: 88/100 ✓✓
|
|
208
|
+
Maintainability: 85/100 ✓
|
|
209
|
+
Edge Cases: 72/100 ⚠️ (Action needed)
|
|
210
|
+
|
|
211
|
+
Confidence: 92%
|
|
212
|
+
|
|
213
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
214
|
+
ISSUES FOUND (3)
|
|
215
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
216
|
+
|
|
217
|
+
🔴 MAJOR: Acceptance criteria not fully testable
|
|
218
|
+
Dimension: Testability
|
|
219
|
+
Location: spec.md, section "Success Criteria" (line 78)
|
|
220
|
+
Issue: "User can log in successfully" is vague
|
|
221
|
+
Impact: QA won't know when feature is complete
|
|
222
|
+
|
|
223
|
+
🔴 MAJOR: Rate limiting edge case not addressed
|
|
224
|
+
Dimension: Edge Cases
|
|
225
|
+
Location: plan.md, section "Security" (line 145)
|
|
226
|
+
Issue: No mention of brute-force protection
|
|
227
|
+
Impact: Security vulnerability risk (OWASP A07:2021)
|
|
228
|
+
|
|
229
|
+
🔸 MINOR: Performance requirements missing
|
|
230
|
+
Dimension: Completeness
|
|
231
|
+
Location: spec.md, section "Non-Functional Requirements"
|
|
232
|
+
Issue: No latency or throughput targets specified
|
|
233
|
+
Impact: Hard to measure success objectively
|
|
234
|
+
|
|
235
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
236
|
+
SUGGESTIONS (3)
|
|
237
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
238
|
+
|
|
239
|
+
🎯 HIGH PRIORITY: Make acceptance criteria measurable
|
|
240
|
+
|
|
241
|
+
Current:
|
|
242
|
+
"User can log in successfully"
|
|
243
|
+
|
|
244
|
+
Improved:
|
|
245
|
+
"User can log in with valid credentials within 2 seconds,
|
|
246
|
+
receiving a JWT token with 24h expiry. Success rate >99.9%."
|
|
247
|
+
|
|
248
|
+
Why: Testable criteria = clear success definition
|
|
249
|
+
|
|
250
|
+
🎯 HIGH PRIORITY: Specify edge case handling
|
|
251
|
+
|
|
252
|
+
Add section: "Error Scenarios"
|
|
253
|
+
- Rate limiting: 5 failed attempts → 15 min lockout
|
|
254
|
+
- Invalid token: Return 401 with error code AUTH_INVALID
|
|
255
|
+
- Expired session: Redirect to login with message
|
|
256
|
+
- Network timeout: Retry 3 times with exponential backoff
|
|
257
|
+
|
|
258
|
+
Why: Edge cases cause 60% of production bugs
|
|
259
|
+
|
|
260
|
+
🔹 MEDIUM PRIORITY: Add performance requirements
|
|
261
|
+
|
|
262
|
+
Suggested addition to spec.md:
|
|
263
|
+
- Login latency: p95 < 500ms, p99 < 1s
|
|
264
|
+
- Concurrent logins: Support 100 requests/sec
|
|
265
|
+
- Token validation: < 10ms per request
|
|
266
|
+
- Uptime SLA: 99.9% (43 min downtime/month)
|
|
267
|
+
|
|
268
|
+
Why: Performance is a feature, not an afterthought
|
|
269
|
+
|
|
270
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
271
|
+
SUMMARY
|
|
272
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
273
|
+
|
|
274
|
+
✅ This specification is GOOD (87/100)
|
|
275
|
+
|
|
276
|
+
Strengths:
|
|
277
|
+
• Clear problem statement and objectives
|
|
278
|
+
• Architecture is sound and scalable
|
|
279
|
+
• Good coverage of functional requirements
|
|
280
|
+
• Strong maintainability score
|
|
281
|
+
|
|
282
|
+
Areas for improvement:
|
|
283
|
+
• Make acceptance criteria more testable (2 items)
|
|
284
|
+
• Address edge cases (rate limiting, errors)
|
|
285
|
+
• Add performance requirements
|
|
286
|
+
|
|
287
|
+
Recommendation: Address HIGH priority suggestions before
|
|
288
|
+
implementation. MEDIUM priority can be added incrementally.
|
|
289
|
+
|
|
290
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Step 5: Handle Export Flag
|
|
294
|
+
|
|
295
|
+
**If `--export` flag OR user chooses "Export"**:
|
|
296
|
+
|
|
297
|
+
1. Parse all suggestions from quality assessment
|
|
298
|
+
2. Add to `.specweave/increments/0001-name/tasks.md`
|
|
299
|
+
3. Format as tasks with priority labels
|
|
300
|
+
|
|
301
|
+
**Example tasks.md addition**:
|
|
302
|
+
```markdown
|
|
303
|
+
## Quality Improvement Tasks (from AI assessment)
|
|
304
|
+
|
|
305
|
+
- [ ] **[HIGH]** Make acceptance criteria measurable (spec.md:78)
|
|
306
|
+
Current: "User can log in successfully"
|
|
307
|
+
Improved: "User can log in with valid credentials within 2 seconds, receiving JWT with 24h expiry"
|
|
308
|
+
Estimated: 1h
|
|
309
|
+
|
|
310
|
+
- [ ] **[HIGH]** Specify edge case handling for rate limiting (plan.md:145)
|
|
311
|
+
Add: Rate limiting (5 attempts → 15min lockout), invalid token handling, session expiry flow
|
|
312
|
+
Estimated: 2h
|
|
313
|
+
|
|
314
|
+
- [ ] **[MEDIUM]** Add performance requirements (spec.md:120)
|
|
315
|
+
Add: Login latency (p95 <500ms), concurrent logins (100/sec), token validation (<10ms)
|
|
316
|
+
Estimated: 1h
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Display confirmation**:
|
|
320
|
+
```
|
|
321
|
+
✅ Exported 3 suggestions to tasks.md
|
|
322
|
+
|
|
323
|
+
Added tasks:
|
|
324
|
+
• Make acceptance criteria measurable (HIGH, 1h)
|
|
325
|
+
• Specify edge case handling (HIGH, 2h)
|
|
326
|
+
• Add performance requirements (MEDIUM, 1h)
|
|
327
|
+
|
|
328
|
+
Total estimated effort: 4 hours
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Step 6: Handle Fix Flag (Experimental)
|
|
332
|
+
|
|
333
|
+
**If `--fix` flag provided**:
|
|
334
|
+
|
|
335
|
+
**Warning**: Auto-fix is experimental. Always show diff and ask confirmation.
|
|
336
|
+
|
|
337
|
+
1. **Identify fixable issues**:
|
|
338
|
+
- Only attempt to fix HIGH priority issues
|
|
339
|
+
- Only fix issues with clear, unambiguous improvements
|
|
340
|
+
- Skip issues requiring domain knowledge
|
|
341
|
+
|
|
342
|
+
2. **Generate fixes**:
|
|
343
|
+
- Use Edit tool to apply suggestions
|
|
344
|
+
- Show diff before applying
|
|
345
|
+
|
|
346
|
+
3. **Show diff and ask confirmation**:
|
|
347
|
+
```
|
|
348
|
+
🔧 Auto-Fix Available (2/3 suggestions)
|
|
349
|
+
|
|
350
|
+
Fix 1: Make acceptance criteria measurable
|
|
351
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
352
|
+
File: spec.md (line 78)
|
|
353
|
+
|
|
354
|
+
- User can log in successfully
|
|
355
|
+
+ User can log in with valid credentials within 2 seconds,
|
|
356
|
+
+ receiving a JWT token with 24h expiry. Success rate >99.9%.
|
|
357
|
+
|
|
358
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
359
|
+
|
|
360
|
+
Fix 2: Add performance requirements
|
|
361
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
362
|
+
File: spec.md (line 120)
|
|
363
|
+
|
|
364
|
+
+ ## Performance Requirements
|
|
365
|
+
+
|
|
366
|
+
+ - Login latency: p95 < 500ms, p99 < 1s
|
|
367
|
+
+ - Concurrent logins: Support 100 requests/sec
|
|
368
|
+
+ - Token validation: < 10ms per request
|
|
369
|
+
+ - Uptime SLA: 99.9% (43 min downtime/month)
|
|
370
|
+
|
|
371
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
372
|
+
|
|
373
|
+
Apply these fixes?
|
|
374
|
+
[Y] Yes, apply all
|
|
375
|
+
[S] Show more details
|
|
376
|
+
[N] No, cancel
|
|
377
|
+
[E] Export to tasks instead
|
|
378
|
+
|
|
379
|
+
Choice: _
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
4. **If user approves**:
|
|
383
|
+
- Apply fixes using Edit tool
|
|
384
|
+
- Re-run validation to confirm improvements
|
|
385
|
+
- Show summary
|
|
386
|
+
|
|
387
|
+
**After applying fixes**:
|
|
388
|
+
```
|
|
389
|
+
✅ Applied 2 fixes successfully
|
|
390
|
+
|
|
391
|
+
Changes:
|
|
392
|
+
• spec.md: Made acceptance criteria measurable (+3 lines)
|
|
393
|
+
• spec.md: Added performance requirements section (+8 lines)
|
|
394
|
+
|
|
395
|
+
Re-validating...
|
|
396
|
+
|
|
397
|
+
✅ Rule-Based Validation: PASSED (120/120)
|
|
398
|
+
🔍 AI Quality Score: 92/100 (EXCELLENT) ✓✓
|
|
399
|
+
|
|
400
|
+
Improvement: 87 → 92 (+5 points)
|
|
401
|
+
|
|
402
|
+
Remaining issues: 1 (requires manual review)
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Step 7: Handle Always Flag
|
|
406
|
+
|
|
407
|
+
**If `--always` flag OR user selects "Always run"**:
|
|
408
|
+
|
|
409
|
+
1. Update `.specweave/config.yaml`:
|
|
410
|
+
```yaml
|
|
411
|
+
validation:
|
|
412
|
+
quality_judge:
|
|
413
|
+
enabled: true
|
|
414
|
+
always_run: true # ← Set to true
|
|
415
|
+
auto_prompt: false # ← Disable prompt
|
|
416
|
+
thresholds:
|
|
417
|
+
excellent: 90
|
|
418
|
+
good: 80
|
|
419
|
+
acceptable: 70
|
|
420
|
+
dimensions:
|
|
421
|
+
clarity: true
|
|
422
|
+
testability: true
|
|
423
|
+
completeness: true
|
|
424
|
+
feasibility: true
|
|
425
|
+
maintainability: true
|
|
426
|
+
edge_cases: true
|
|
427
|
+
max_tokens: 2000
|
|
428
|
+
export_to_tasks: false # User can still use --export flag
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
2. **Display confirmation**:
|
|
432
|
+
```
|
|
433
|
+
✅ Configuration updated
|
|
434
|
+
|
|
435
|
+
Quality assessment will now run automatically for all future validations.
|
|
436
|
+
|
|
437
|
+
To disable:
|
|
438
|
+
1. Edit .specweave/config.yaml
|
|
439
|
+
2. Set validation.quality_judge.always_run: false
|
|
440
|
+
|
|
441
|
+
Or run: /validate-increment <id> (quality will run automatically)
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Step 8: Generate Validation Report
|
|
445
|
+
|
|
446
|
+
**Always generate detailed report** at:
|
|
447
|
+
`.specweave/increments/0001-name/reports/validation-report.md`
|
|
448
|
+
|
|
449
|
+
**Report structure**:
|
|
450
|
+
```markdown
|
|
451
|
+
# Validation Report: Increment 0001-authentication
|
|
452
|
+
|
|
453
|
+
Generated: 2025-10-28 14:32:15 UTC
|
|
454
|
+
Command: /validate-increment 001 --quality
|
|
455
|
+
|
|
456
|
+
## Executive Summary
|
|
457
|
+
|
|
458
|
+
**Overall Status**: ✅ PASSED (with recommendations)
|
|
459
|
+
|
|
460
|
+
- Rule-Based Validation: 120/120 checks passed
|
|
461
|
+
- AI Quality Score: 87/100 (GOOD)
|
|
462
|
+
- Issues Found: 3 (2 major, 1 minor)
|
|
463
|
+
- Suggestions: 3 (2 high, 1 medium priority)
|
|
464
|
+
|
|
465
|
+
## Rule-Based Validation Results
|
|
466
|
+
|
|
467
|
+
### Consistency (47/47) ✓
|
|
468
|
+
- User story → plan alignment: ✓
|
|
469
|
+
- Plan → tasks alignment: ✓
|
|
470
|
+
- Spec → tests traceability: ✓
|
|
471
|
+
- Cross-document consistency: ✓
|
|
472
|
+
|
|
473
|
+
### Completeness (23/23) ✓
|
|
474
|
+
- spec.md sections: ✓
|
|
475
|
+
- plan.md sections: ✓
|
|
476
|
+
- tasks.md structure: ✓
|
|
477
|
+
|
|
478
|
+
### Quality (31/31) ✓
|
|
479
|
+
- Technology-agnostic spec: ✓
|
|
480
|
+
- Testable acceptance criteria: ✓
|
|
481
|
+
- Actionable tasks: ✓
|
|
482
|
+
|
|
483
|
+
### Traceability (19/19) ✓
|
|
484
|
+
- TC-0001 format: ✓
|
|
485
|
+
- ADR references: ✓
|
|
486
|
+
- Diagram references: ✓
|
|
487
|
+
|
|
488
|
+
## AI Quality Assessment
|
|
489
|
+
|
|
490
|
+
### Overall Score: 87/100 (GOOD)
|
|
491
|
+
|
|
492
|
+
### Dimension Scores
|
|
493
|
+
|
|
494
|
+
| Dimension | Score | Grade | Status |
|
|
495
|
+
|-----------|-------|-------|--------|
|
|
496
|
+
| Clarity | 92/100 | ✓✓ | Excellent |
|
|
497
|
+
| Testability | 78/100 | ✓ | Needs improvement |
|
|
498
|
+
| Completeness | 90/100 | ✓✓ | Excellent |
|
|
499
|
+
| Feasibility | 88/100 | ✓✓ | Excellent |
|
|
500
|
+
| Maintainability | 85/100 | ✓ | Good |
|
|
501
|
+
| Edge Cases | 72/100 | ⚠️ | Action needed |
|
|
502
|
+
|
|
503
|
+
### Issues Found
|
|
504
|
+
|
|
505
|
+
#### 🔴 MAJOR: Acceptance criteria not fully testable
|
|
506
|
+
- **Dimension**: Testability
|
|
507
|
+
- **Location**: spec.md:78, section "Success Criteria"
|
|
508
|
+
- **Issue**: "User can log in successfully" is vague
|
|
509
|
+
- **Impact**: QA won't know when feature is complete
|
|
510
|
+
- **Recommendation**: Make criteria measurable with specific metrics
|
|
511
|
+
|
|
512
|
+
#### 🔴 MAJOR: Rate limiting edge case not addressed
|
|
513
|
+
- **Dimension**: Edge Cases
|
|
514
|
+
- **Location**: plan.md:145, section "Security"
|
|
515
|
+
- **Issue**: No mention of brute-force protection
|
|
516
|
+
- **Impact**: Security vulnerability risk (OWASP A07:2021)
|
|
517
|
+
- **Recommendation**: Add rate limiting (5 attempts → 15min lockout)
|
|
518
|
+
|
|
519
|
+
#### 🔸 MINOR: Performance requirements missing
|
|
520
|
+
- **Dimension**: Completeness
|
|
521
|
+
- **Location**: spec.md:120
|
|
522
|
+
- **Issue**: No latency or throughput targets
|
|
523
|
+
- **Impact**: Hard to measure success objectively
|
|
524
|
+
- **Recommendation**: Add p95 latency, concurrent users, SLA targets
|
|
525
|
+
|
|
526
|
+
### Suggestions
|
|
527
|
+
|
|
528
|
+
[Full suggestions with before/after examples]
|
|
529
|
+
|
|
530
|
+
## Recommendations
|
|
531
|
+
|
|
532
|
+
### Before Implementation
|
|
533
|
+
1. ✅ Fix 2 major issues (testability, edge cases)
|
|
534
|
+
2. ✅ Estimated effort: 3-4 hours
|
|
535
|
+
|
|
536
|
+
### During Implementation
|
|
537
|
+
1. Monitor testability of acceptance criteria
|
|
538
|
+
2. Add security tests for rate limiting
|
|
539
|
+
3. Set up performance monitoring
|
|
540
|
+
|
|
541
|
+
### Post-Implementation
|
|
542
|
+
1. Re-validate to confirm improvements
|
|
543
|
+
2. Update documentation with actual performance metrics
|
|
544
|
+
3. Create runbook for handling edge cases
|
|
545
|
+
|
|
546
|
+
## Files Validated
|
|
547
|
+
|
|
548
|
+
- spec.md (250 lines, 6 user stories, 15 requirements)
|
|
549
|
+
- plan.md (480 lines, 8 components, 3 ADRs)
|
|
550
|
+
- tasks.md (42 tasks, estimated 3-4 weeks)
|
|
551
|
+
- tests.md (12 test cases, 85% coverage)
|
|
552
|
+
|
|
553
|
+
## Validation History
|
|
554
|
+
|
|
555
|
+
| Date | Rule-Based | Quality Score | Command |
|
|
556
|
+
|------|------------|---------------|---------|
|
|
557
|
+
| 2025-10-28 | 120/120 | 87/100 | /validate-increment 001 --quality |
|
|
558
|
+
| 2025-10-25 | 115/120 | N/A | Auto-validation on save |
|
|
559
|
+
| 2025-10-24 | 110/120 | N/A | Auto-validation on save |
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
Generated by SpecWeave validation system
|
|
564
|
+
For details: .specweave/docs/internal/delivery/guides/increment-validation.md
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
**Notify user**:
|
|
568
|
+
```
|
|
569
|
+
📋 Full validation report saved:
|
|
570
|
+
.specweave/increments/0001-authentication/reports/validation-report.md
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
## Examples
|
|
574
|
+
|
|
575
|
+
### Example 1: Basic Validation (Rule-Based Only)
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
/validate-increment 001
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
**Output**:
|
|
582
|
+
```
|
|
583
|
+
✅ Rule-Based Validation: PASSED (120/120 checks)
|
|
584
|
+
|
|
585
|
+
🤔 Run AI Quality Assessment? [Y/n]: _
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
### Example 2: Validation with Quality Assessment
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
/validate-increment 001 --quality
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
**Output**:
|
|
595
|
+
```
|
|
596
|
+
✅ Rule-Based: 120/120
|
|
597
|
+
🔍 AI Quality: 87/100 (GOOD)
|
|
598
|
+
|
|
599
|
+
Issues: 2 major, 1 minor
|
|
600
|
+
Suggestions: 3 (2 high, 1 medium)
|
|
601
|
+
|
|
602
|
+
📋 Full report: .specweave/increments/0001-auth/reports/validation-report.md
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
### Example 3: Validate and Export Suggestions
|
|
606
|
+
|
|
607
|
+
```bash
|
|
608
|
+
/validate-increment 001 --quality --export
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Output**:
|
|
612
|
+
```
|
|
613
|
+
✅ Rule-Based: 120/120
|
|
614
|
+
🔍 AI Quality: 87/100
|
|
615
|
+
|
|
616
|
+
✅ Exported 3 suggestions to tasks.md
|
|
617
|
+
• Make acceptance criteria measurable (HIGH)
|
|
618
|
+
• Specify edge case handling (HIGH)
|
|
619
|
+
• Add performance requirements (MEDIUM)
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### Example 4: Auto-Fix Issues
|
|
623
|
+
|
|
624
|
+
```bash
|
|
625
|
+
/validate-increment 001 --quality --fix
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
**Output**:
|
|
629
|
+
```
|
|
630
|
+
✅ Rule-Based: 120/120
|
|
631
|
+
🔍 AI Quality: 87/100
|
|
632
|
+
|
|
633
|
+
🔧 Auto-fix available for 2/3 issues
|
|
634
|
+
|
|
635
|
+
[Shows diff]
|
|
636
|
+
|
|
637
|
+
Apply fixes? [Y/s/n/e]: Y
|
|
638
|
+
|
|
639
|
+
✅ Applied 2 fixes
|
|
640
|
+
Re-validated: 92/100 (improvement: +5)
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Example 5: Make Quality Assessment Default
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
/validate-increment 001 --always
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
**Output**:
|
|
650
|
+
```
|
|
651
|
+
✅ Rule-Based: 120/120
|
|
652
|
+
🔍 AI Quality: 87/100
|
|
653
|
+
|
|
654
|
+
✅ Configuration updated
|
|
655
|
+
Quality assessment will run automatically for future validations.
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
## Error Handling
|
|
659
|
+
|
|
660
|
+
### Increment Not Found
|
|
661
|
+
```
|
|
662
|
+
❌ Error: Increment 0001 not found
|
|
663
|
+
|
|
664
|
+
Available increments:
|
|
665
|
+
• 0002-core-enhancements
|
|
666
|
+
• 0003-payment-processing
|
|
667
|
+
|
|
668
|
+
Usage: /validate-increment <id> [--quality] [--export] [--fix] [--always]
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
### Invalid Flags
|
|
672
|
+
```
|
|
673
|
+
❌ Error: Invalid flag '--qualitty'
|
|
674
|
+
|
|
675
|
+
Valid flags:
|
|
676
|
+
--quality Run AI quality assessment
|
|
677
|
+
--export Export suggestions to tasks.md
|
|
678
|
+
--fix Auto-fix issues (experimental)
|
|
679
|
+
--always Make quality assessment default
|
|
680
|
+
|
|
681
|
+
Usage: /validate-increment <id> [--quality] [--export] [--fix] [--always]
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
### Quality Assessment Failed
|
|
685
|
+
```
|
|
686
|
+
⚠️ Warning: AI quality assessment failed (API error)
|
|
687
|
+
|
|
688
|
+
✅ Rule-based validation completed successfully (120/120)
|
|
689
|
+
|
|
690
|
+
You can:
|
|
691
|
+
1. Try again: /validate-increment 001 --quality
|
|
692
|
+
2. Continue with rule-based results
|
|
693
|
+
3. Check logs: .specweave/increments/0001-name/logs/validation.log
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### No Fixable Issues
|
|
697
|
+
```
|
|
698
|
+
ℹ️ No auto-fixable issues found
|
|
699
|
+
|
|
700
|
+
All issues require manual review:
|
|
701
|
+
• Architectural decision (requires ADR)
|
|
702
|
+
• Domain-specific requirement (requires expertise)
|
|
703
|
+
• Ambiguous context (requires clarification)
|
|
704
|
+
|
|
705
|
+
Export suggestions to tasks? [Y/n]: _
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
## Integration with Hooks
|
|
709
|
+
|
|
710
|
+
This command can be triggered by:
|
|
711
|
+
|
|
712
|
+
1. **Manual execution**: `/validate-increment 001 --quality`
|
|
713
|
+
2. **Post-document-save hook**: Auto-runs rule-based validation
|
|
714
|
+
3. **Pre-implementation hook**: Validates before starting tasks
|
|
715
|
+
4. **CI/CD pipeline**: Automated validation in GitHub Actions
|
|
716
|
+
|
|
717
|
+
**Hook integration** (`.claude/hooks/post-document-save.sh`):
|
|
718
|
+
```bash
|
|
719
|
+
#!/bin/bash
|
|
720
|
+
# Auto-validate on save
|
|
721
|
+
|
|
722
|
+
if [[ "$FILE" =~ spec\.md|plan\.md|tasks\.md|tests\.md ]]; then
|
|
723
|
+
# Extract increment ID from path
|
|
724
|
+
INCREMENT_ID=$(echo "$FILE" | grep -oP '(?<=increments/)\d{4}')
|
|
725
|
+
|
|
726
|
+
# Run validation (rule-based only, no quality unless config says so)
|
|
727
|
+
/validate-increment "$INCREMENT_ID"
|
|
728
|
+
fi
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
## Configuration
|
|
732
|
+
|
|
733
|
+
**File**: `.specweave/config.yaml`
|
|
734
|
+
|
|
735
|
+
```yaml
|
|
736
|
+
validation:
|
|
737
|
+
enabled: true
|
|
738
|
+
auto_validate: true
|
|
739
|
+
severity_threshold: warning
|
|
740
|
+
|
|
741
|
+
# Quality judge settings
|
|
742
|
+
quality_judge:
|
|
743
|
+
enabled: true
|
|
744
|
+
always_run: false # Set to true with --always flag
|
|
745
|
+
auto_prompt: true # Prompt user if always_run is false
|
|
746
|
+
thresholds:
|
|
747
|
+
excellent: 90
|
|
748
|
+
good: 80
|
|
749
|
+
acceptable: 70
|
|
750
|
+
needs_work: 0
|
|
751
|
+
dimensions:
|
|
752
|
+
clarity: true
|
|
753
|
+
testability: true
|
|
754
|
+
completeness: true
|
|
755
|
+
feasibility: true
|
|
756
|
+
maintainability: true
|
|
757
|
+
edge_cases: true
|
|
758
|
+
max_tokens: 2000
|
|
759
|
+
export_to_tasks: false # Set to true to auto-export suggestions
|
|
760
|
+
|
|
761
|
+
# Auto-fix settings
|
|
762
|
+
auto_fix:
|
|
763
|
+
enabled: true
|
|
764
|
+
require_confirmation: true # Always ask before applying fixes
|
|
765
|
+
max_fixes_per_run: 5 # Limit fixes to avoid large changes
|
|
766
|
+
|
|
767
|
+
# Report settings
|
|
768
|
+
reports:
|
|
769
|
+
save_to: "reports/validation-report.md"
|
|
770
|
+
format: markdown
|
|
771
|
+
include_line_numbers: true
|
|
772
|
+
include_suggestions: true
|
|
773
|
+
include_history: true
|
|
774
|
+
|
|
775
|
+
# Hooks
|
|
776
|
+
hooks:
|
|
777
|
+
post_document_save: true
|
|
778
|
+
pre_implementation: true
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
## Related Commands
|
|
782
|
+
|
|
783
|
+
- `/create-increment`: Create new increment (auto-validates on creation)
|
|
784
|
+
- `/review-docs`: Review strategic documentation before implementation
|
|
785
|
+
- `/close-increment`: Close increment (validates before closing)
|
|
786
|
+
- `/sync-github`: Sync to GitHub (validates before sync)
|
|
787
|
+
|
|
788
|
+
## Related Skills
|
|
789
|
+
|
|
790
|
+
- `increment-quality-judge`: AI-powered quality assessment
|
|
791
|
+
- `increment-validator`: Rule-based validation (120 checks)
|
|
792
|
+
- `increment-planner`: Creates increments with validation built-in
|
|
793
|
+
|
|
794
|
+
---
|
|
795
|
+
|
|
796
|
+
**Important**: This command works alongside intent-based validation. Users can say:
|
|
797
|
+
- "Validate quality of increment 001" (intent-based)
|
|
798
|
+
- `/validate-increment 001 --quality` (slash command)
|
|
799
|
+
|
|
800
|
+
Both routes activate the same validation logic for consistency.
|