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.
Files changed (288) hide show
  1. package/INSTALL.md +848 -0
  2. package/LICENSE +21 -0
  3. package/README.md +675 -0
  4. package/SPECWEAVE.md +665 -0
  5. package/bin/install-agents.sh +57 -0
  6. package/bin/install-all.sh +49 -0
  7. package/bin/install-commands.sh +56 -0
  8. package/bin/install-skills.sh +57 -0
  9. package/bin/specweave.js +81 -0
  10. package/dist/adapters/adapter-base.d.ts +50 -0
  11. package/dist/adapters/adapter-base.d.ts.map +1 -0
  12. package/dist/adapters/adapter-base.js +146 -0
  13. package/dist/adapters/adapter-base.js.map +1 -0
  14. package/dist/adapters/adapter-interface.d.ts +108 -0
  15. package/dist/adapters/adapter-interface.d.ts.map +1 -0
  16. package/dist/adapters/adapter-interface.js +9 -0
  17. package/dist/adapters/adapter-interface.js.map +1 -0
  18. package/dist/adapters/claude/adapter.d.ts +54 -0
  19. package/dist/adapters/claude/adapter.d.ts.map +1 -0
  20. package/dist/adapters/claude/adapter.js +184 -0
  21. package/dist/adapters/claude/adapter.js.map +1 -0
  22. package/dist/adapters/copilot/adapter.d.ts +42 -0
  23. package/dist/adapters/copilot/adapter.d.ts.map +1 -0
  24. package/dist/adapters/copilot/adapter.js +239 -0
  25. package/dist/adapters/copilot/adapter.js.map +1 -0
  26. package/dist/adapters/cursor/adapter.d.ts +42 -0
  27. package/dist/adapters/cursor/adapter.d.ts.map +1 -0
  28. package/dist/adapters/cursor/adapter.js +297 -0
  29. package/dist/adapters/cursor/adapter.js.map +1 -0
  30. package/dist/adapters/generic/adapter.d.ts +40 -0
  31. package/dist/adapters/generic/adapter.d.ts.map +1 -0
  32. package/dist/adapters/generic/adapter.js +155 -0
  33. package/dist/adapters/generic/adapter.js.map +1 -0
  34. package/dist/cli/commands/init.d.ts +6 -0
  35. package/dist/cli/commands/init.d.ts.map +1 -0
  36. package/dist/cli/commands/init.js +247 -0
  37. package/dist/cli/commands/init.js.map +1 -0
  38. package/dist/cli/commands/install.d.ts +7 -0
  39. package/dist/cli/commands/install.d.ts.map +1 -0
  40. package/dist/cli/commands/install.js +160 -0
  41. package/dist/cli/commands/install.js.map +1 -0
  42. package/dist/cli/commands/list.d.ts +6 -0
  43. package/dist/cli/commands/list.d.ts.map +1 -0
  44. package/dist/cli/commands/list.js +154 -0
  45. package/dist/cli/commands/list.js.map +1 -0
  46. package/package.json +90 -0
  47. package/src/adapters/README.md +312 -0
  48. package/src/adapters/adapter-base.ts +146 -0
  49. package/src/adapters/adapter-interface.ts +120 -0
  50. package/src/adapters/claude/README.md +241 -0
  51. package/src/adapters/claude/adapter.ts +157 -0
  52. package/src/adapters/copilot/.github/copilot/instructions.md +376 -0
  53. package/src/adapters/copilot/README.md +200 -0
  54. package/src/adapters/copilot/adapter.ts +210 -0
  55. package/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
  56. package/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
  57. package/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
  58. package/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
  59. package/src/adapters/cursor/.cursorrules +325 -0
  60. package/src/adapters/cursor/README.md +243 -0
  61. package/src/adapters/cursor/adapter.ts +268 -0
  62. package/src/adapters/generic/README.md +277 -0
  63. package/src/adapters/generic/SPECWEAVE-MANUAL.md +676 -0
  64. package/src/adapters/generic/adapter.ts +159 -0
  65. package/src/adapters/registry.yaml +126 -0
  66. package/src/agents/architect/AGENT.md +416 -0
  67. package/src/agents/devops/AGENT.md +1738 -0
  68. package/src/agents/docs-writer/AGENT.md +239 -0
  69. package/src/agents/performance/AGENT.md +228 -0
  70. package/src/agents/pm/AGENT.md +751 -0
  71. package/src/agents/qa-lead/AGENT.md +150 -0
  72. package/src/agents/security/AGENT.md +179 -0
  73. package/src/agents/sre/AGENT.md +582 -0
  74. package/src/agents/sre/modules/backend-diagnostics.md +481 -0
  75. package/src/agents/sre/modules/database-diagnostics.md +509 -0
  76. package/src/agents/sre/modules/infrastructure.md +561 -0
  77. package/src/agents/sre/modules/monitoring.md +439 -0
  78. package/src/agents/sre/modules/security-incidents.md +421 -0
  79. package/src/agents/sre/modules/ui-diagnostics.md +302 -0
  80. package/src/agents/sre/playbooks/01-high-cpu-usage.md +204 -0
  81. package/src/agents/sre/playbooks/02-database-deadlock.md +241 -0
  82. package/src/agents/sre/playbooks/03-memory-leak.md +252 -0
  83. package/src/agents/sre/playbooks/04-slow-api-response.md +269 -0
  84. package/src/agents/sre/playbooks/05-ddos-attack.md +293 -0
  85. package/src/agents/sre/playbooks/06-disk-full.md +314 -0
  86. package/src/agents/sre/playbooks/07-service-down.md +333 -0
  87. package/src/agents/sre/playbooks/08-data-corruption.md +337 -0
  88. package/src/agents/sre/playbooks/09-cascade-failure.md +430 -0
  89. package/src/agents/sre/playbooks/10-rate-limit-exceeded.md +464 -0
  90. package/src/agents/sre/scripts/health-check.sh +230 -0
  91. package/src/agents/sre/scripts/log-analyzer.py +213 -0
  92. package/src/agents/sre/scripts/metrics-collector.sh +294 -0
  93. package/src/agents/sre/scripts/trace-analyzer.js +257 -0
  94. package/src/agents/sre/templates/incident-report.md +249 -0
  95. package/src/agents/sre/templates/mitigation-plan.md +375 -0
  96. package/src/agents/sre/templates/post-mortem.md +418 -0
  97. package/src/agents/sre/templates/runbook-template.md +412 -0
  98. package/src/agents/tech-lead/AGENT.md +263 -0
  99. package/src/commands/add-tasks.md +176 -0
  100. package/src/commands/close-increment.md +347 -0
  101. package/src/commands/create-increment.md +223 -0
  102. package/src/commands/create-project.md +528 -0
  103. package/src/commands/generate-docs.md +623 -0
  104. package/src/commands/list-increments.md +180 -0
  105. package/src/commands/review-docs.md +331 -0
  106. package/src/commands/start-increment.md +139 -0
  107. package/src/commands/sync-github.md +115 -0
  108. package/src/commands/validate-increment.md +800 -0
  109. package/src/hooks/README.md +252 -0
  110. package/src/hooks/docs-changed.sh +59 -0
  111. package/src/hooks/human-input-required.sh +55 -0
  112. package/src/hooks/post-task-completion.sh +57 -0
  113. package/src/hooks/pre-implementation.sh +47 -0
  114. package/src/skills/ado-sync/README.md +449 -0
  115. package/src/skills/ado-sync/SKILL.md +245 -0
  116. package/src/skills/ado-sync/test-cases/test-1.yaml +9 -0
  117. package/src/skills/ado-sync/test-cases/test-2.yaml +8 -0
  118. package/src/skills/ado-sync/test-cases/test-3.yaml +9 -0
  119. package/src/skills/bmad-method-expert/SKILL.md +628 -0
  120. package/src/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
  121. package/src/skills/bmad-method-expert/scripts/check-setup.js +208 -0
  122. package/src/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
  123. package/src/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
  124. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +12 -0
  125. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +12 -0
  126. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +12 -0
  127. package/src/skills/brownfield-analyzer/SKILL.md +523 -0
  128. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +48 -0
  129. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +12 -0
  130. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +12 -0
  131. package/src/skills/brownfield-onboarder/SKILL.md +625 -0
  132. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +12 -0
  133. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +12 -0
  134. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +12 -0
  135. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +12 -0
  136. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +12 -0
  137. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +12 -0
  138. package/src/skills/context-loader/SKILL.md +734 -0
  139. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +39 -0
  140. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +44 -0
  141. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +45 -0
  142. package/src/skills/context-optimizer/SKILL.md +618 -0
  143. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +97 -0
  144. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +109 -0
  145. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +98 -0
  146. package/src/skills/cost-optimizer/SKILL.md +190 -0
  147. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +75 -0
  148. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +52 -0
  149. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +63 -0
  150. package/src/skills/cost-optimizer/test-results/README.md +46 -0
  151. package/src/skills/design-system-architect/SKILL.md +107 -0
  152. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +23 -0
  153. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +24 -0
  154. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +23 -0
  155. package/src/skills/diagrams-architect/SKILL.md +763 -0
  156. package/src/skills/diagrams-generator/SKILL.md +25 -0
  157. package/src/skills/diagrams-generator/test-cases/test-1.yaml +9 -0
  158. package/src/skills/diagrams-generator/test-cases/test-2.yaml +9 -0
  159. package/src/skills/diagrams-generator/test-cases/test-3.yaml +8 -0
  160. package/src/skills/docs-updater/README.md +48 -0
  161. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +12 -0
  162. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +12 -0
  163. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +12 -0
  164. package/src/skills/dotnet-backend/SKILL.md +250 -0
  165. package/src/skills/e2e-playwright/README.md +506 -0
  166. package/src/skills/e2e-playwright/SKILL.md +457 -0
  167. package/src/skills/e2e-playwright/execute.js +373 -0
  168. package/src/skills/e2e-playwright/lib/utils.js +514 -0
  169. package/src/skills/e2e-playwright/package.json +33 -0
  170. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +54 -0
  171. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +64 -0
  172. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +74 -0
  173. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +98 -0
  174. package/src/skills/figma-designer/SKILL.md +149 -0
  175. package/src/skills/figma-implementer/SKILL.md +148 -0
  176. package/src/skills/figma-mcp-connector/SKILL.md +136 -0
  177. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +22 -0
  178. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +21 -0
  179. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +18 -0
  180. package/src/skills/figma-to-code/SKILL.md +128 -0
  181. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +29 -0
  182. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +27 -0
  183. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +28 -0
  184. package/src/skills/frontend/SKILL.md +177 -0
  185. package/src/skills/github-sync/SKILL.md +252 -0
  186. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +12 -0
  187. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +12 -0
  188. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +12 -0
  189. package/src/skills/hetzner-provisioner/README.md +308 -0
  190. package/src/skills/hetzner-provisioner/SKILL.md +251 -0
  191. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +71 -0
  192. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +85 -0
  193. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +126 -0
  194. package/src/skills/hetzner-provisioner/test-results/README.md +259 -0
  195. package/src/skills/increment-planner/SKILL.md +889 -0
  196. package/src/skills/increment-planner/scripts/feature-utils.js +250 -0
  197. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +27 -0
  198. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +30 -0
  199. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +24 -0
  200. package/src/skills/increment-quality-judge/SKILL.md +566 -0
  201. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +95 -0
  202. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +108 -0
  203. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +87 -0
  204. package/src/skills/jira-sync/README.md +328 -0
  205. package/src/skills/jira-sync/SKILL.md +209 -0
  206. package/src/skills/jira-sync/test-cases/test-1.yaml +9 -0
  207. package/src/skills/jira-sync/test-cases/test-2.yaml +9 -0
  208. package/src/skills/jira-sync/test-cases/test-3.yaml +10 -0
  209. package/src/skills/nextjs/SKILL.md +176 -0
  210. package/src/skills/nodejs-backend/SKILL.md +181 -0
  211. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +12 -0
  212. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +12 -0
  213. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +12 -0
  214. package/src/skills/python-backend/SKILL.md +226 -0
  215. package/src/skills/role-orchestrator/README.md +197 -0
  216. package/src/skills/role-orchestrator/SKILL.md +1184 -0
  217. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +98 -0
  218. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +73 -0
  219. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +121 -0
  220. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +145 -0
  221. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +149 -0
  222. package/src/skills/skill-creator/LICENSE.txt +202 -0
  223. package/src/skills/skill-creator/SKILL.md +209 -0
  224. package/src/skills/skill-creator/scripts/init_skill.py +303 -0
  225. package/src/skills/skill-creator/scripts/package_skill.py +110 -0
  226. package/src/skills/skill-creator/scripts/quick_validate.py +65 -0
  227. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +12 -0
  228. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +12 -0
  229. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +12 -0
  230. package/src/skills/skill-router/SKILL.md +497 -0
  231. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +33 -0
  232. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +42 -0
  233. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +50 -0
  234. package/src/skills/spec-driven-brainstorming/README.md +264 -0
  235. package/src/skills/spec-driven-brainstorming/SKILL.md +439 -0
  236. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +148 -0
  237. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +190 -0
  238. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +233 -0
  239. package/src/skills/spec-driven-debugging/README.md +479 -0
  240. package/src/skills/spec-driven-debugging/SKILL.md +652 -0
  241. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +212 -0
  242. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +461 -0
  243. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +366 -0
  244. package/src/skills/spec-kit-expert/SKILL.md +1012 -0
  245. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +12 -0
  246. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +12 -0
  247. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +12 -0
  248. package/src/skills/specweave-ado-mapper/SKILL.md +501 -0
  249. package/src/skills/specweave-detector/SKILL.md +420 -0
  250. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +37 -0
  251. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +37 -0
  252. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +34 -0
  253. package/src/skills/specweave-jira-mapper/SKILL.md +500 -0
  254. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +12 -0
  255. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +12 -0
  256. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +12 -0
  257. package/src/skills/task-builder/README.md +90 -0
  258. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +12 -0
  259. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +12 -0
  260. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +12 -0
  261. package/src/templates/.env.example +144 -0
  262. package/src/templates/.gitignore.template +81 -0
  263. package/src/templates/CLAUDE.md.template +383 -0
  264. package/src/templates/README.md.template +240 -0
  265. package/src/templates/config.yaml +333 -0
  266. package/src/templates/docs/README.md +124 -0
  267. package/src/templates/docs/adr-template.md +118 -0
  268. package/src/templates/docs/hld-template.md +220 -0
  269. package/src/templates/docs/lld-template.md +580 -0
  270. package/src/templates/docs/prd-template.md +132 -0
  271. package/src/templates/docs/rfc-template.md +229 -0
  272. package/src/templates/docs/runbook-template.md +298 -0
  273. package/src/templates/environments/minimal/.env.production +16 -0
  274. package/src/templates/environments/minimal/README.md +54 -0
  275. package/src/templates/environments/minimal/deploy-production.yml +52 -0
  276. package/src/templates/environments/progressive/.env.qa +28 -0
  277. package/src/templates/environments/progressive/README.md +129 -0
  278. package/src/templates/environments/progressive/deploy-production.yml +93 -0
  279. package/src/templates/environments/progressive/deploy-qa.yml +62 -0
  280. package/src/templates/environments/progressive/deploy-staging.yml +67 -0
  281. package/src/templates/environments/standard/.env.development +20 -0
  282. package/src/templates/environments/standard/.env.production +30 -0
  283. package/src/templates/environments/standard/.env.staging +23 -0
  284. package/src/templates/environments/standard/README.md +97 -0
  285. package/src/templates/environments/standard/deploy-production.yml +68 -0
  286. package/src/templates/environments/standard/deploy-staging.yml +61 -0
  287. package/src/templates/environments/standard/docker-compose.yml +43 -0
  288. 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