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,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Quality Assessment - Poor Spec Needing Improvement"
|
|
3
|
+
description: "Evaluate a vague specification with untestable criteria, triggering feedback loop"
|
|
4
|
+
skill: increment-quality-judge
|
|
5
|
+
priority: P1
|
|
6
|
+
estimated_time: "2-3 minutes"
|
|
7
|
+
|
|
8
|
+
input:
|
|
9
|
+
prompt: "Assess the quality of the payment processing spec"
|
|
10
|
+
spec_content: |
|
|
11
|
+
# Payment Processing
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
Add payment feature to the app.
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
- Users can make payments
|
|
18
|
+
- System should be secure
|
|
19
|
+
- Payments should be fast
|
|
20
|
+
- Handle errors properly
|
|
21
|
+
|
|
22
|
+
## Technical Details
|
|
23
|
+
- Use some payment provider
|
|
24
|
+
- Store payment info
|
|
25
|
+
- Send receipts
|
|
26
|
+
|
|
27
|
+
expected_output:
|
|
28
|
+
overall_score: 0.50-0.70
|
|
29
|
+
score_range: "needs_work" # Below 70
|
|
30
|
+
|
|
31
|
+
dimension_scores:
|
|
32
|
+
clarity:
|
|
33
|
+
max: 0.65
|
|
34
|
+
rationale: "Vague problem statement, objectives unclear"
|
|
35
|
+
|
|
36
|
+
testability:
|
|
37
|
+
max: 0.55
|
|
38
|
+
rationale: "Acceptance criteria not measurable (no metrics, thresholds)"
|
|
39
|
+
|
|
40
|
+
completeness:
|
|
41
|
+
max: 0.60
|
|
42
|
+
rationale: "Missing error handling details, security specs, performance targets"
|
|
43
|
+
|
|
44
|
+
feasibility:
|
|
45
|
+
max: 0.70
|
|
46
|
+
rationale: "No timeline, resource requirements unclear"
|
|
47
|
+
|
|
48
|
+
maintainability:
|
|
49
|
+
max: 0.65
|
|
50
|
+
rationale: "Lacks modularity, extension points undefined"
|
|
51
|
+
|
|
52
|
+
edge_cases:
|
|
53
|
+
max: 0.50
|
|
54
|
+
rationale: "No failure scenarios, retry logic, or edge case handling"
|
|
55
|
+
|
|
56
|
+
issues_found:
|
|
57
|
+
count: 5-8
|
|
58
|
+
severity_breakdown:
|
|
59
|
+
critical: 0-1
|
|
60
|
+
major: 3-5
|
|
61
|
+
minor: 2-3
|
|
62
|
+
|
|
63
|
+
typical_issues:
|
|
64
|
+
- severity: "major"
|
|
65
|
+
description: "Acceptance criteria not testable"
|
|
66
|
+
location: "Requirements section"
|
|
67
|
+
suggestion: "Add measurable metrics (e.g., 'Payment completes in <3s')"
|
|
68
|
+
|
|
69
|
+
- severity: "major"
|
|
70
|
+
description: "Security requirements too vague"
|
|
71
|
+
location: "Technical Details"
|
|
72
|
+
suggestion: "Specify: PCI-DSS compliance, encryption standards (TLS 1.3), tokenization"
|
|
73
|
+
|
|
74
|
+
- severity: "major"
|
|
75
|
+
description: "No error handling specification"
|
|
76
|
+
location: "Requirements"
|
|
77
|
+
suggestion: "Define error scenarios: payment declined, timeout, network failure"
|
|
78
|
+
|
|
79
|
+
- severity: "minor"
|
|
80
|
+
description: "Payment provider not specified"
|
|
81
|
+
location: "Technical Details"
|
|
82
|
+
suggestion: "Choose provider: Stripe, PayPal, or Square"
|
|
83
|
+
|
|
84
|
+
suggestions:
|
|
85
|
+
count: 5-8
|
|
86
|
+
priority_breakdown:
|
|
87
|
+
high: 3-5
|
|
88
|
+
medium: 2-3
|
|
89
|
+
low: 0-1
|
|
90
|
+
|
|
91
|
+
confidence: 0.85-0.95 # High confidence even for poor spec
|
|
92
|
+
|
|
93
|
+
validation:
|
|
94
|
+
- "Overall score < 0.70"
|
|
95
|
+
- "Testability dimension < 0.60"
|
|
96
|
+
- "At least 5 issues found"
|
|
97
|
+
- "At least 3 major issues"
|
|
98
|
+
- "At least 5 suggestions provided"
|
|
99
|
+
- "High priority suggestions >= 3"
|
|
100
|
+
- "Confidence >= 0.85"
|
|
101
|
+
|
|
102
|
+
success_criteria:
|
|
103
|
+
- "Score accurately reflects poor quality"
|
|
104
|
+
- "All 6 dimensions show low scores"
|
|
105
|
+
- "Issues clearly documented with locations"
|
|
106
|
+
- "Actionable suggestions with examples"
|
|
107
|
+
- "Would trigger feedback loop (score < 0.80)"
|
|
108
|
+
---
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Export Suggestions to Tasks"
|
|
3
|
+
description: "Quality assessment with suggestions exported to tasks.md"
|
|
4
|
+
skill: increment-quality-judge
|
|
5
|
+
priority: P2
|
|
6
|
+
estimated_time: "2-3 minutes"
|
|
7
|
+
|
|
8
|
+
input:
|
|
9
|
+
prompt: "Assess quality and export suggestions to tasks"
|
|
10
|
+
spec_content: |
|
|
11
|
+
# User Profile Management
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
Allow users to manage their profile information.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
- User can update profile (name, email, avatar)
|
|
18
|
+
- Changes saved successfully
|
|
19
|
+
- Validation for email format
|
|
20
|
+
|
|
21
|
+
## Security
|
|
22
|
+
- Email verification required for email changes
|
|
23
|
+
|
|
24
|
+
export_to_tasks: true
|
|
25
|
+
increment_id: "0025-user-profile"
|
|
26
|
+
|
|
27
|
+
expected_output:
|
|
28
|
+
overall_score: 0.70-0.80
|
|
29
|
+
score_range: "acceptable" # 70-79
|
|
30
|
+
|
|
31
|
+
issues_found:
|
|
32
|
+
count: 3-5
|
|
33
|
+
typical_issues:
|
|
34
|
+
- "Performance requirements not specified"
|
|
35
|
+
- "Avatar upload constraints unclear (size, format)"
|
|
36
|
+
- "Concurrent edit conflict resolution not defined"
|
|
37
|
+
|
|
38
|
+
suggestions:
|
|
39
|
+
count: 3-5
|
|
40
|
+
typical_suggestions:
|
|
41
|
+
- priority: "high"
|
|
42
|
+
description: "Add performance requirements"
|
|
43
|
+
example: "Profile update completes in <1s, avatar upload <5s"
|
|
44
|
+
|
|
45
|
+
- priority: "high"
|
|
46
|
+
description: "Specify avatar constraints"
|
|
47
|
+
example: "Max size: 5MB, formats: JPG/PNG/WebP, dimensions: 512x512"
|
|
48
|
+
|
|
49
|
+
- priority: "medium"
|
|
50
|
+
description: "Define edit conflict resolution"
|
|
51
|
+
example: "Last-write-wins or optimistic locking with version field"
|
|
52
|
+
|
|
53
|
+
export_result:
|
|
54
|
+
file_path: ".specweave/increments/0025-user-profile/tasks.md"
|
|
55
|
+
tasks_added: 3-5
|
|
56
|
+
format: "markdown checklist"
|
|
57
|
+
|
|
58
|
+
tasks_content: |
|
|
59
|
+
## Quality Improvements (from AI assessment)
|
|
60
|
+
|
|
61
|
+
- [ ] Add performance requirements (HIGH)
|
|
62
|
+
- Profile update: <1s
|
|
63
|
+
- Avatar upload: <5s
|
|
64
|
+
|
|
65
|
+
- [ ] Specify avatar upload constraints (HIGH)
|
|
66
|
+
- Max size: 5MB
|
|
67
|
+
- Formats: JPG, PNG, WebP
|
|
68
|
+
- Dimensions: 512x512
|
|
69
|
+
|
|
70
|
+
- [ ] Define edit conflict resolution (MEDIUM)
|
|
71
|
+
- Strategy: Last-write-wins or optimistic locking
|
|
72
|
+
|
|
73
|
+
validation:
|
|
74
|
+
- "Suggestions exported to tasks.md"
|
|
75
|
+
- "Tasks in markdown checklist format"
|
|
76
|
+
- "Each task labeled with priority (HIGH/MEDIUM/LOW)"
|
|
77
|
+
- "Tasks include specific details, not vague"
|
|
78
|
+
- "File created at correct path"
|
|
79
|
+
- "At least 3 tasks added"
|
|
80
|
+
|
|
81
|
+
success_criteria:
|
|
82
|
+
- "Export completes without errors"
|
|
83
|
+
- "Tasks are actionable with clear details"
|
|
84
|
+
- "Priority labels match suggestion priorities"
|
|
85
|
+
- "Tasks integrate cleanly with existing tasks.md"
|
|
86
|
+
- "Can check off tasks as they're completed"
|
|
87
|
+
---
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# jira-sync Skill
|
|
2
|
+
|
|
3
|
+
**Status**: To be developed
|
|
4
|
+
**Priority**: Medium
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
Bidirectional sync between SpecWeave increments and JIRA (Atlassian)
|
|
9
|
+
|
|
10
|
+
**Note**: This skill handles ONLY JIRA. For Azure DevOps, see `ado-sync` skill.
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
### Export to JIRA
|
|
15
|
+
- Create JIRA issues from SpecWeave increments
|
|
16
|
+
- Map spec.md user stories → JIRA Stories
|
|
17
|
+
- Map tasks.md tasks → JIRA Sub-tasks
|
|
18
|
+
- Create Epics if specified in spec.md
|
|
19
|
+
- Set priorities, labels, components
|
|
20
|
+
|
|
21
|
+
### Import from JIRA
|
|
22
|
+
- Sync JIRA updates back to SpecWeave
|
|
23
|
+
- Import existing JIRA issues as increments
|
|
24
|
+
- Update status, assignees, comments
|
|
25
|
+
|
|
26
|
+
### Bidirectional Sync
|
|
27
|
+
- Keep status in sync (To Do, In Progress, Done)
|
|
28
|
+
- Sync descriptions and acceptance criteria
|
|
29
|
+
- Sync comments
|
|
30
|
+
- Handle conflicts intelligently
|
|
31
|
+
|
|
32
|
+
## JIRA-Specific Concepts
|
|
33
|
+
|
|
34
|
+
### Mapping: SpecWeave → JIRA
|
|
35
|
+
|
|
36
|
+
| SpecWeave | JIRA |
|
|
37
|
+
|-----------|------|
|
|
38
|
+
| spec.md (with Epic) | Epic |
|
|
39
|
+
| spec.md User Story | Story |
|
|
40
|
+
| tasks.md Task | Sub-task |
|
|
41
|
+
| Acceptance Tests (spec.md) | Acceptance Criteria (Story) |
|
|
42
|
+
| Acceptance Criteria (tasks.md) | Sub-task checklist |
|
|
43
|
+
| Status: planned | To Do |
|
|
44
|
+
| Status: in-progress | In Progress |
|
|
45
|
+
| Status: completed | Done |
|
|
46
|
+
|
|
47
|
+
### JIRA Structure Example
|
|
48
|
+
|
|
49
|
+
**spec.md with JIRA structure**:
|
|
50
|
+
```markdown
|
|
51
|
+
---
|
|
52
|
+
increment: 002-payment-processing
|
|
53
|
+
status: planned
|
|
54
|
+
structure: jira
|
|
55
|
+
jira_epic: PROJ-123
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Epic: E-commerce Infrastructure
|
|
59
|
+
**JIRA**: PROJ-123
|
|
60
|
+
|
|
61
|
+
### Story: Subscribe to Plan
|
|
62
|
+
**JIRA**: PROJ-124
|
|
63
|
+
**Priority**: P1
|
|
64
|
+
**Labels**: payments, stripe
|
|
65
|
+
**Components**: Backend, Frontend
|
|
66
|
+
|
|
67
|
+
**Description**:
|
|
68
|
+
As a user, I want to subscribe to a monthly plan...
|
|
69
|
+
|
|
70
|
+
**Acceptance Criteria**:
|
|
71
|
+
- User can select plan
|
|
72
|
+
- Payment processed
|
|
73
|
+
- Subscription activated
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**tasks.md creates Sub-tasks**:
|
|
77
|
+
```markdown
|
|
78
|
+
## Tasks for PROJ-124 (Subscribe to Plan)
|
|
79
|
+
|
|
80
|
+
### Task T001: Create StripeService
|
|
81
|
+
**JIRA**: PROJ-125 (Sub-task of PROJ-124)
|
|
82
|
+
**Agent**: nodejs-backend
|
|
83
|
+
|
|
84
|
+
**Description**: Create Stripe service class...
|
|
85
|
+
|
|
86
|
+
**Acceptance Criteria**:
|
|
87
|
+
- [ ] StripeService class exists
|
|
88
|
+
- [ ] Unit tests passing
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Authentication
|
|
92
|
+
|
|
93
|
+
**JIRA Cloud**:
|
|
94
|
+
```yaml
|
|
95
|
+
# .specweave/config.yaml
|
|
96
|
+
jira_sync:
|
|
97
|
+
type: "cloud"
|
|
98
|
+
url: "https://your-org.atlassian.net"
|
|
99
|
+
email: "user@example.com"
|
|
100
|
+
api_token: "${JIRA_API_TOKEN}" # From environment variable
|
|
101
|
+
project_key: "PROJ"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**JIRA Server/Data Center**:
|
|
105
|
+
```yaml
|
|
106
|
+
jira_sync:
|
|
107
|
+
type: "server"
|
|
108
|
+
url: "https://jira.your-company.com"
|
|
109
|
+
username: "user"
|
|
110
|
+
password: "${JIRA_PASSWORD}" # From environment variable
|
|
111
|
+
project_key: "PROJ"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Configuration
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
# .specweave/config.yaml
|
|
118
|
+
jira_sync:
|
|
119
|
+
enabled: false
|
|
120
|
+
|
|
121
|
+
# JIRA instance
|
|
122
|
+
url: "https://your-org.atlassian.net"
|
|
123
|
+
project_key: "PROJ"
|
|
124
|
+
|
|
125
|
+
# Authentication (use environment variables!)
|
|
126
|
+
email: "${JIRA_EMAIL}"
|
|
127
|
+
api_token: "${JIRA_API_TOKEN}"
|
|
128
|
+
|
|
129
|
+
# Sync settings
|
|
130
|
+
sync_direction: "bidirectional" # export | import | bidirectional
|
|
131
|
+
sync_interval: 300 # seconds (5 minutes)
|
|
132
|
+
|
|
133
|
+
# What to sync
|
|
134
|
+
sync_status: true
|
|
135
|
+
sync_comments: true
|
|
136
|
+
sync_assignees: true
|
|
137
|
+
sync_attachments: false
|
|
138
|
+
|
|
139
|
+
# Issue mapping
|
|
140
|
+
epic_label: "epic" # Custom field or label for epics
|
|
141
|
+
|
|
142
|
+
# Webhooks (for real-time sync)
|
|
143
|
+
webhook_enabled: true
|
|
144
|
+
webhook_secret: "${JIRA_WEBHOOK_SECRET}"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Workflow
|
|
148
|
+
|
|
149
|
+
### Export Workflow (SpecWeave → JIRA)
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
User: Creates increment in SpecWeave
|
|
153
|
+
.specweave/increments/0002-payment/
|
|
154
|
+
spec.md (with structure: jira)
|
|
155
|
+
tasks.md
|
|
156
|
+
|
|
157
|
+
↓ jira-sync detects new increment
|
|
158
|
+
|
|
159
|
+
Creates in JIRA:
|
|
160
|
+
Epic: PROJ-123 "E-commerce Infrastructure"
|
|
161
|
+
Story: PROJ-124 "Subscribe to Plan"
|
|
162
|
+
Sub-task: PROJ-125 "Create StripeService"
|
|
163
|
+
Sub-task: PROJ-126 "Create API endpoints"
|
|
164
|
+
|
|
165
|
+
Links created:
|
|
166
|
+
spec.md → PROJ-124
|
|
167
|
+
tasks.md T001 → PROJ-125
|
|
168
|
+
tasks.md T002 → PROJ-126
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Import Workflow (JIRA → SpecWeave)
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
User: Updates JIRA issue status to "In Progress"
|
|
175
|
+
|
|
176
|
+
↓ JIRA webhook triggers
|
|
177
|
+
|
|
178
|
+
jira-sync:
|
|
179
|
+
Detects change to PROJ-124
|
|
180
|
+
Finds linked increment: 002-payment
|
|
181
|
+
Updates: .specweave/increments/0002-payment/spec.md
|
|
182
|
+
status: planned → in-progress
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Bidirectional Sync
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
User: Checks off task in tasks.md
|
|
189
|
+
- [x] T001: Create StripeService
|
|
190
|
+
|
|
191
|
+
↓ jira-sync detects change
|
|
192
|
+
|
|
193
|
+
Updates JIRA:
|
|
194
|
+
PROJ-125 status → Done
|
|
195
|
+
|
|
196
|
+
User: Changes PROJ-124 to "Done" in JIRA
|
|
197
|
+
|
|
198
|
+
↓ JIRA webhook triggers
|
|
199
|
+
|
|
200
|
+
jira-sync updates SpecWeave:
|
|
201
|
+
.specweave/increments/0002-payment/spec.md
|
|
202
|
+
status: in-progress → completed
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## API Integration
|
|
206
|
+
|
|
207
|
+
### JIRA REST API Endpoints Used
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
// Create Epic
|
|
211
|
+
POST /rest/api/3/issue
|
|
212
|
+
{
|
|
213
|
+
"fields": {
|
|
214
|
+
"project": { "key": "PROJ" },
|
|
215
|
+
"issuetype": { "name": "Epic" },
|
|
216
|
+
"summary": "E-commerce Infrastructure",
|
|
217
|
+
"customfield_10011": "epic-name" // Epic Name field
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Create Story (linked to Epic)
|
|
222
|
+
POST /rest/api/3/issue
|
|
223
|
+
{
|
|
224
|
+
"fields": {
|
|
225
|
+
"project": { "key": "PROJ" },
|
|
226
|
+
"issuetype": { "name": "Story" },
|
|
227
|
+
"summary": "Subscribe to Plan",
|
|
228
|
+
"parent": { "key": "PROJ-123" } // Link to Epic
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// Create Sub-task
|
|
233
|
+
POST /rest/api/3/issue
|
|
234
|
+
{
|
|
235
|
+
"fields": {
|
|
236
|
+
"project": { "key": "PROJ" },
|
|
237
|
+
"issuetype": { "name": "Sub-task" },
|
|
238
|
+
"parent": { "key": "PROJ-124" },
|
|
239
|
+
"summary": "Create StripeService"
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Update status
|
|
244
|
+
POST /rest/api/3/issue/{issueKey}/transitions
|
|
245
|
+
{
|
|
246
|
+
"transition": { "id": "31" } // "In Progress"
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Webhooks
|
|
251
|
+
|
|
252
|
+
### Setup JIRA Webhook
|
|
253
|
+
|
|
254
|
+
1. Go to JIRA Settings → System → Webhooks
|
|
255
|
+
2. Create webhook:
|
|
256
|
+
- URL: `https://your-app.com/api/webhooks/jira`
|
|
257
|
+
- Events: Issue created, updated, deleted
|
|
258
|
+
- Secret: Random string (store in JIRA_WEBHOOK_SECRET)
|
|
259
|
+
|
|
260
|
+
### Webhook Handler
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
// Receives JIRA webhook
|
|
264
|
+
POST /api/webhooks/jira
|
|
265
|
+
|
|
266
|
+
// jira-sync processes:
|
|
267
|
+
1. Verify webhook signature
|
|
268
|
+
2. Extract issue data
|
|
269
|
+
3. Find linked SpecWeave increment
|
|
270
|
+
4. Update spec.md or tasks.md
|
|
271
|
+
5. Commit changes (optional)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Conflict Resolution
|
|
275
|
+
|
|
276
|
+
**Scenario**: Both SpecWeave and JIRA updated simultaneously
|
|
277
|
+
|
|
278
|
+
**Strategy**:
|
|
279
|
+
1. **Timestamp-based**: Latest change wins
|
|
280
|
+
2. **User prompt**: Ask user which to keep
|
|
281
|
+
3. **Merge**: Combine changes if possible
|
|
282
|
+
|
|
283
|
+
**Example**:
|
|
284
|
+
```
|
|
285
|
+
SpecWeave: status → in-progress (10:00 AM)
|
|
286
|
+
JIRA: status → done (10:05 AM)
|
|
287
|
+
|
|
288
|
+
jira-sync:
|
|
289
|
+
Latest is JIRA (10:05 AM)
|
|
290
|
+
Update SpecWeave → done
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## Error Handling
|
|
294
|
+
|
|
295
|
+
**Common errors**:
|
|
296
|
+
- JIRA API rate limits → Retry with exponential backoff
|
|
297
|
+
- Authentication failed → Notify user, check credentials
|
|
298
|
+
- Issue not found → Create if export, skip if import
|
|
299
|
+
- Network errors → Queue for retry
|
|
300
|
+
|
|
301
|
+
## Testing
|
|
302
|
+
|
|
303
|
+
**Test scenarios**:
|
|
304
|
+
1. Create increment → Creates JIRA issues
|
|
305
|
+
2. Update JIRA → Updates SpecWeave
|
|
306
|
+
3. Update SpecWeave → Updates JIRA
|
|
307
|
+
4. Conflict resolution
|
|
308
|
+
5. Webhook handling
|
|
309
|
+
6. Error recovery
|
|
310
|
+
|
|
311
|
+
## Integration with Other Skills
|
|
312
|
+
|
|
313
|
+
- **task-builder**: Reads JIRA structure from spec.md
|
|
314
|
+
- **increment-planner**: Can specify structure: jira
|
|
315
|
+
|
|
316
|
+
## Future Enhancements
|
|
317
|
+
|
|
318
|
+
- Support for JIRA sprints/iterations
|
|
319
|
+
- Sync custom fields
|
|
320
|
+
- Attachment sync
|
|
321
|
+
- Advanced filtering (which issues to sync)
|
|
322
|
+
- Bulk import from JIRA
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
**To implement**: See task in .specweave/increments/
|
|
327
|
+
|
|
328
|
+
**See also**: `ado-sync` skill for Azure DevOps integration
|