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,500 @@
1
+ ---
2
+ name: specweave-jira-mapper
3
+ description: Expert in bidirectional conversion between SpecWeave increments and JIRA epics/stories/subtasks. Handles export (increment → JIRA), import (JIRA → increment), and bidirectional sync with conflict resolution. Activates for JIRA sync, issue creation, import from JIRA.
4
+ tools: Read, Write, Edit, Bash
5
+ model: claude-sonnet-4-5-20250929
6
+ ---
7
+
8
+ # Specweave Jira Mapper Skill
9
+
10
+ You are an expert in mapping SpecWeave concepts to JIRA and vice versa with precision and traceability.
11
+
12
+ ## Core Responsibilities
13
+
14
+ 1. **Export SpecWeave increments to JIRA** (Increment → Epic + Stories + Subtasks)
15
+ 2. **Import JIRA epics as SpecWeave increments** (Epic → Increment structure)
16
+ 3. **Bidirectional sync** with conflict detection and resolution
17
+ 4. **Maintain traceability** (store keys, URLs, timestamps)
18
+ 5. **Validate mapping accuracy** using test cases
19
+ 6. **Handle edge cases** (missing fields, invalid statuses, API errors)
20
+
21
+ ---
22
+
23
+ ## Concept Mappings
24
+
25
+ ### SpecWeave → JIRA
26
+
27
+ | SpecWeave Concept | JIRA Concept | Mapping Rules |
28
+ |-------------------|--------------|---------------|
29
+ | **Increment** | Epic | Title: `[Increment ###] [Title]` |
30
+ | **User Story** (from spec.md) | Story | Linked to parent Epic, includes acceptance criteria |
31
+ | **Task** (from tasks.md) | Subtask | Linked to parent Story, checkbox → Subtask |
32
+ | **Acceptance Criteria** (TC-0001) | Story Description | Formatted as checkboxes in Story description |
33
+ | **Priority P1** | Priority: Highest | Critical path, must complete |
34
+ | **Priority P2** | Priority: High | Important but not blocking |
35
+ | **Priority P3** | Priority: Medium | Nice to have |
36
+ | **Status: planned** | Status: To Do | Not started |
37
+ | **Status: in-progress** | Status: In Progress | Active work |
38
+ | **Status: completed** | Status: Done | Finished |
39
+ | **spec.md** | Epic Description | Summary + link to spec (if GitHub repo) |
40
+ | **context-manifest.yaml** | Custom Field: Context | Serialized YAML in custom field (optional) |
41
+
42
+ ### JIRA → SpecWeave
43
+
44
+ | JIRA Concept | SpecWeave Concept | Import Rules |
45
+ |--------------|-------------------|--------------|
46
+ | **Epic** | Increment | Auto-number next available (e.g., 0003) |
47
+ | **Story** | User Story | Extract title, description, acceptance criteria |
48
+ | **Subtask** | Task | Map to tasks.md checklist |
49
+ | **Story Description** | Acceptance Criteria | Parse checkboxes as TC-0001, TC-0002 |
50
+ | **Epic Link** | Parent Increment | Maintain parent-child relationships |
51
+ | **Priority: Highest** | Priority P1 | Critical |
52
+ | **Priority: High** | Priority P2 | Important |
53
+ | **Priority: Medium/Low** | Priority P3 | Nice to have |
54
+ | **Status: To Do** | Status: planned | Not started |
55
+ | **Status: In Progress** | Status: in-progress | Active |
56
+ | **Status: Done** | Status: completed | Finished |
57
+ | **Custom Field: Spec URL** | spec.md link | Bidirectional reference |
58
+
59
+ ---
60
+
61
+ ## Conversion Workflows
62
+
63
+ ### 1. Export: Increment → JIRA Epic
64
+
65
+ **Input**: `.specweave/increments/0001-feature-name/`
66
+
67
+ **Prerequisites**:
68
+ - Increment folder exists
69
+ - `spec.md` exists with valid frontmatter
70
+ - `tasks.md` exists
71
+ - JIRA connection configured
72
+
73
+ **Process**:
74
+
75
+ 1. **Read increment files**:
76
+ ```bash
77
+ # Read spec.md
78
+ - Extract frontmatter (title, description, priority)
79
+ - Extract user stories (US1-001, US1-002)
80
+ - Extract acceptance criteria (TC-0001, TC-0002)
81
+
82
+ # Read tasks.md
83
+ - Extract task checklist
84
+ - Group tasks by user story (if structured)
85
+ ```
86
+
87
+ 2. **Create JIRA Epic**:
88
+ ```
89
+ Title: [Increment 0001] Feature Name
90
+ Description:
91
+ {spec.md summary}
92
+
93
+ Specification: {link to spec.md if GitHub repo}
94
+
95
+ Labels: specweave, priority:P1, status:planned
96
+ Custom Fields:
97
+ - SpecWeave Increment ID: 0001-feature-name
98
+ - Spec URL: https://github.com/user/repo/blob/main/.specweave/increments/0001-feature-name/spec.md
99
+ ```
100
+
101
+ 3. **Create JIRA Stories** (one per user story):
102
+ ```
103
+ Title: {User Story title}
104
+ Description:
105
+ **As a** {role}
106
+ **I want to** {goal}
107
+ **So that** {benefit}
108
+
109
+ **Acceptance Criteria**:
110
+ - [ ] TC-0001: {criteria}
111
+ - [ ] TC-0002: {criteria}
112
+
113
+ Epic Link: {Epic Key}
114
+ Labels: specweave, user-story
115
+ ```
116
+
117
+ 4. **Create JIRA Subtasks** (from tasks.md):
118
+ ```
119
+ Title: {Task description}
120
+ Parent: {Story Key}
121
+ Labels: specweave, task
122
+ ```
123
+
124
+ 5. **Update increment frontmatter**:
125
+ ```yaml
126
+ jira:
127
+ epic_key: "PROJ-123"
128
+ epic_url: "https://jira.company.com/browse/PROJ-123"
129
+ stories:
130
+ - key: "PROJ-124"
131
+ user_story_id: "US1-001"
132
+ - key: "PROJ-125"
133
+ user_story_id: "US1-002"
134
+ last_sync: "2025-10-26T14:00:00Z"
135
+ sync_direction: "export"
136
+ ```
137
+
138
+ **Output**:
139
+ ```
140
+ ✅ Exported to JIRA!
141
+
142
+ Epic: PROJ-123
143
+ URL: https://jira.company.com/browse/PROJ-123
144
+ Stories: 5 created (PROJ-124 to PROJ-128)
145
+ Subtasks: 12 created
146
+ Last Sync: 2025-10-26T14:00:00Z
147
+ ```
148
+
149
+ ---
150
+
151
+ ### 2. Import: JIRA Epic → Increment
152
+
153
+ **Input**: JIRA Epic key (e.g., `PROJ-123`)
154
+
155
+ **Prerequisites**:
156
+ - Valid JIRA Epic key
157
+ - Epic exists and is accessible
158
+ - JIRA connection configured
159
+
160
+ **Process**:
161
+
162
+ 1. **Fetch Epic details** (via JIRA API/MCP):
163
+ ```
164
+ - Epic title, description, labels
165
+ - Epic custom fields (if SpecWeave ID exists)
166
+ - Priority, status
167
+ ```
168
+
169
+ 2. **Fetch linked Stories and Subtasks**:
170
+ ```
171
+ - All Stories linked to Epic
172
+ - All Subtasks linked to each Story
173
+ - Story descriptions (acceptance criteria)
174
+ ```
175
+
176
+ 3. **Auto-number next increment**:
177
+ ```bash
178
+ # Scan .specweave/increments/ for highest number
179
+ ls .specweave/increments/ | grep -E '^[0-9]{4}' | sort -n | tail -1
180
+ # Increment by 1 → 0003
181
+ ```
182
+
183
+ 4. **Create increment folder**:
184
+ ```
185
+ .specweave/increments/0003-imported-feature/
186
+ ```
187
+
188
+ 5. **Generate spec.md**:
189
+ ```yaml
190
+ ---
191
+ increment_id: "0003"
192
+ title: "{Epic title}"
193
+ status: "{mapped from JIRA status}"
194
+ priority: "{mapped from JIRA priority}"
195
+ created_at: "{Epic created date}"
196
+ jira:
197
+ epic_key: "PROJ-123"
198
+ epic_url: "https://jira.company.com/browse/PROJ-123"
199
+ imported_at: "2025-10-26T14:00:00Z"
200
+ ---
201
+
202
+ # {Epic title}
203
+
204
+ {Epic description}
205
+
206
+ ## User Stories
207
+
208
+ ### US1-001: {Story 1 title}
209
+
210
+ **As a** {extracted from Story description}
211
+ **I want to** {extracted}
212
+ **So that** {extracted}
213
+
214
+ **Acceptance Criteria**:
215
+ - [ ] TC-0001: {parsed from Story description}
216
+ - [ ] TC-0002: {parsed}
217
+
218
+ **JIRA Story**: [PROJ-124](https://jira.company.com/browse/PROJ-124)
219
+ ```
220
+
221
+ 6. **Generate tasks.md**:
222
+ ```markdown
223
+ # Tasks: {Increment title}
224
+
225
+ ## User Story: US1-001
226
+
227
+ - [ ] {Subtask 1 title} (JIRA: PROJ-130)
228
+ - [ ] {Subtask 2 title} (JIRA: PROJ-131)
229
+
230
+ ## User Story: US1-002
231
+
232
+ - [ ] {Subtask 3 title} (JIRA: PROJ-132)
233
+ ```
234
+
235
+ 7. **Generate context-manifest.yaml** (default):
236
+ ```yaml
237
+ ---
238
+ spec_sections: []
239
+ documentation: []
240
+ max_context_tokens: 10000
241
+ priority: high
242
+ auto_refresh: false
243
+ ---
244
+ ```
245
+
246
+ 8. **Update JIRA Epic** (add custom field if available):
247
+ ```
248
+ Custom Field: SpecWeave Increment ID = 0003-imported-feature
249
+ ```
250
+
251
+ **Output**:
252
+ ```
253
+ ✅ Imported from JIRA!
254
+
255
+ Increment: 0003-imported-feature
256
+ Location: .specweave/increments/0003-imported-feature/
257
+ User Stories: 5 imported
258
+ Tasks: 12 imported
259
+ JIRA Epic: PROJ-123
260
+ ```
261
+
262
+ ---
263
+
264
+ ### 3. Bidirectional Sync
265
+
266
+ **Trigger**: Manual (`/sync-jira`) or webhook
267
+
268
+ **Prerequisites**:
269
+ - Increment has JIRA metadata in frontmatter
270
+ - JIRA Epic/Stories exist
271
+ - Last sync timestamp available
272
+
273
+ **Process**:
274
+
275
+ 1. **Detect changes since last sync**:
276
+ ```
277
+ SpecWeave changes:
278
+ - spec.md modified after last_sync
279
+ - tasks.md modified after last_sync
280
+ - Task checkboxes changed
281
+
282
+ JIRA changes:
283
+ - Epic/Story/Subtask updated after last_sync
284
+ - Status changes
285
+ - New comments
286
+ ```
287
+
288
+ 2. **Compare and detect conflicts**:
289
+ ```
290
+ Conflict types:
291
+ - Title changed in both (SpecWeave + JIRA)
292
+ - Task marked done in SpecWeave, but JIRA Subtask still "In Progress"
293
+ - Priority changed in both
294
+ ```
295
+
296
+ 3. **Present conflicts to user**:
297
+ ```
298
+ ⚠️ Sync Conflicts Detected:
299
+
300
+ 1. Title changed:
301
+ SpecWeave: "User Authentication v2"
302
+ JIRA: "User Auth with OAuth"
303
+
304
+ Choose: [SpecWeave] [JIRA] [Manual]
305
+
306
+ 2. Task status mismatch:
307
+ Task: "Implement login endpoint"
308
+ SpecWeave: ✅ completed
309
+ JIRA Subtask: In Progress
310
+
311
+ Choose: [Mark JIRA Done] [Uncheck SpecWeave] [Manual]
312
+ ```
313
+
314
+ 4. **Apply sync**:
315
+ ```
316
+ SpecWeave → JIRA:
317
+ - Update Epic/Story titles
318
+ - Update Subtask statuses (checkbox → JIRA status)
319
+ - Add comments for significant changes
320
+
321
+ JIRA → SpecWeave:
322
+ - Update spec.md frontmatter (status, priority)
323
+ - Update task checkboxes (JIRA Subtask status → checkbox)
324
+ - Log JIRA comments to increment logs/
325
+ ```
326
+
327
+ 5. **Update sync timestamps**:
328
+ ```yaml
329
+ jira:
330
+ last_sync: "2025-10-26T16:30:00Z"
331
+ sync_direction: "bidirectional"
332
+ conflicts_resolved: 2
333
+ ```
334
+
335
+ **Output**:
336
+ ```
337
+ ✅ Synced with JIRA!
338
+
339
+ Direction: Bidirectional
340
+ Changes Applied:
341
+ - SpecWeave → JIRA: 3 updates
342
+ - JIRA → SpecWeave: 5 updates
343
+ Conflicts Resolved: 2 (user decisions)
344
+ Last Sync: 2025-10-26T16:30:00Z
345
+ ```
346
+
347
+ ---
348
+
349
+ ## Edge Cases and Error Handling
350
+
351
+ ### Missing Fields
352
+
353
+ **Problem**: Increment missing spec.md or JIRA Epic missing required fields
354
+
355
+ **Solution**:
356
+ ```
357
+ ❌ Error: spec.md not found in increment 0001-feature-name
358
+
359
+ Expected: .specweave/increments/0001-feature-name/spec.md
360
+
361
+ Please create spec.md before exporting to JIRA.
362
+ ```
363
+
364
+ ### JIRA API Errors
365
+
366
+ **Problem**: JIRA API rate limit, authentication failure, network error
367
+
368
+ **Solution**:
369
+ ```
370
+ ❌ JIRA API Error: Rate limit exceeded (429)
371
+
372
+ Retry in: 60 seconds
373
+
374
+ Alternative: Export to JSON and manually import to JIRA later.
375
+ ```
376
+
377
+ ### Invalid Status Mapping
378
+
379
+ **Problem**: JIRA uses custom workflow statuses not in standard mapping
380
+
381
+ **Solution**:
382
+ ```
383
+ ⚠️ Unknown JIRA status: "Awaiting Review"
384
+
385
+ Available mappings:
386
+ - To Do → planned
387
+ - In Progress → in-progress
388
+ - Done → completed
389
+
390
+ Map "Awaiting Review" to: [planned] [in-progress] [completed] [Custom]
391
+ ```
392
+
393
+ ### Conflict Resolution
394
+
395
+ **Problem**: Same field changed in both SpecWeave and JIRA
396
+
397
+ **Solution**:
398
+ - Always ask user for resolution
399
+ - Provide diff view
400
+ - Offer merge options
401
+ - Never auto-resolve conflicts silently
402
+
403
+ ---
404
+
405
+ ## Templates
406
+
407
+ Use templates in `templates/` folder for consistent outputs:
408
+
409
+ - `epic-from-increment.md` - Epic creation template
410
+ - `story-from-user-story.md` - Story creation template
411
+ - `increment-from-epic.md` - Increment import template
412
+
413
+ ---
414
+
415
+ ## References
416
+
417
+ Consult references in `references/` folder:
418
+
419
+ - `jira-concepts.md` - JIRA terminology (Epic, Story, Subtask, Epic Link)
420
+ - `specweave-concepts.md` - SpecWeave structure (Increment, User Story, Task)
421
+ - `mapping-examples.md` - Real-world conversion examples
422
+
423
+ ---
424
+
425
+ ## Test Cases
426
+
427
+ Validate all conversions using test cases in `test-cases/`:
428
+
429
+ 1. **test-1-increment-to-epic.yaml** - Basic export (Increment → Epic)
430
+ 2. **test-2-epic-to-increment.yaml** - Basic import (Epic → Increment)
431
+ 3. **test-3-bidirectional-sync.yaml** - Sync with conflict resolution
432
+
433
+ **Run tests**:
434
+ ```bash
435
+ npm run test:agents:specweave-jira-mapper
436
+ ```
437
+
438
+ ---
439
+
440
+ ## Best Practices
441
+
442
+ 1. **Always validate before sync** - Check increment structure, JIRA connection
443
+ 2. **Preserve traceability** - Store JIRA keys in frontmatter, SpecWeave IDs in JIRA
444
+ 3. **Ask before overwriting** - Never auto-resolve conflicts
445
+ 4. **Log all operations** - Write sync logs to `.specweave/increments/{id}/logs/jira-sync.log`
446
+ 5. **Handle errors gracefully** - Provide actionable error messages
447
+ 6. **Test mappings** - Use test cases to validate accuracy
448
+
449
+ ---
450
+
451
+ ## Usage Examples
452
+
453
+ ### Export to JIRA
454
+
455
+ ```
456
+ User: "Export increment 0001 to JIRA"
457
+
458
+ You:
459
+ 1. Read .specweave/increments/0001-*/spec.md and tasks.md
460
+ 2. Extract user stories and tasks
461
+ 3. Create JIRA Epic with title "[Increment 0001] {title}"
462
+ 4. Create Stories for each user story
463
+ 5. Create Subtasks for each task
464
+ 6. Update increment frontmatter with JIRA keys
465
+ 7. Present summary with Epic URL
466
+ ```
467
+
468
+ ### Import from JIRA
469
+
470
+ ```
471
+ User: "Import JIRA epic PROJ-123"
472
+
473
+ You:
474
+ 1. Fetch Epic PROJ-123 via JIRA API
475
+ 2. Fetch linked Stories and Subtasks
476
+ 3. Auto-number next increment (e.g., 0003)
477
+ 4. Generate spec.md with user stories
478
+ 5. Generate tasks.md with subtasks
479
+ 6. Generate context-manifest.yaml (default)
480
+ 7. Present summary with increment location
481
+ ```
482
+
483
+ ### Bidirectional Sync
484
+
485
+ ```
486
+ User: "Sync increment 0001 with JIRA"
487
+
488
+ You:
489
+ 1. Read increment frontmatter for JIRA keys
490
+ 2. Detect changes since last_sync
491
+ 3. Compare SpecWeave vs JIRA
492
+ 4. Present conflicts (if any) for user resolution
493
+ 5. Apply sync (SpecWeave ↔ JIRA)
494
+ 6. Update sync timestamps
495
+ 7. Present summary with changes applied
496
+ ```
497
+
498
+ ---
499
+
500
+ **You are the authoritative mapper between SpecWeave and JIRA. Your conversions must be accurate, traceable, and reversible.**
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---
@@ -0,0 +1,90 @@
1
+ # task-builder Skill
2
+
3
+ **Status**: To be developed
4
+ **Priority**: High
5
+
6
+ ## Purpose
7
+
8
+ Converts high-level spec.md (user stories, epics, capabilities) into detailed tasks.md with:
9
+ - Technical implementation details
10
+ - File paths and code snippets
11
+ - Acceptance criteria per task
12
+ - Agent/skill references (which agent to use for each task)
13
+ - Documentation update requirements
14
+
15
+ ## When It Activates
16
+
17
+ - After increment-planner creates increment
18
+ - After spec.md is created
19
+ - User says "create tasks for this feature"
20
+ - User says "break down implementation"
21
+
22
+ ## What It Does
23
+
24
+ 1. **Reads spec.md**: Understands user stories, acceptance tests
25
+ 2. **Creates tasks.md**:
26
+ - Maps user stories → tasks
27
+ - Adds technical details (file paths, code)
28
+ - Adds acceptance criteria per task
29
+ - Specifies which agent/skills to use
30
+ - Links to documentation
31
+ 3. **Updates docs**: Marks sections as [DRAFT] that need updates
32
+ 4. **Understands structure**: Adapts to JIRA, ADO, or simple user stories
33
+
34
+ ## Task vs User Story
35
+
36
+ - **User Story**: Has acceptance TESTS (verify feature works)
37
+ - **Task**: Has acceptance CRITERIA (verify task complete)
38
+
39
+ ## Example Output
40
+
41
+ ```markdown
42
+ # tasks.md
43
+
44
+ ## Task T001: Create StripeService
45
+
46
+ **Agent**: nodejs-backend
47
+ **Skills**: stripe-integration, api-design
48
+
49
+ **Description**: Create Stripe service class for payment processing
50
+
51
+ **File**: src/services/stripe-service.ts
52
+
53
+ **Implementation**:
54
+ ```typescript
55
+ export class StripeService {
56
+ async createSubscription(params) {
57
+ // Implementation
58
+ }
59
+ }
60
+ ```
61
+
62
+ **Acceptance Criteria**:
63
+ - [ ] StripeService class exists in src/services/stripe-service.ts
64
+ - [ ] createSubscription method implemented
65
+ - [ ] Error handling added
66
+ - [ ] Unit tests passing
67
+
68
+ **Documentation Updates**:
69
+ - [ ] .specweave/docs/api/payments.md [DRAFT]
70
+ ```
71
+
72
+ ## Integration
73
+
74
+ - Called by: increment-planner (after spec.md created)
75
+ - Calls: docs-updater (to update documentation)
76
+ - Output: tasks.md in .specweave/increments/####-feature/
77
+
78
+ ## Configuration
79
+
80
+ ```yaml
81
+ # .specweave/config.yaml
82
+ task_builder:
83
+ structure: "auto-detect" # user-stories | jira | ado
84
+ detail_level: "high" # Include code snippets
85
+ agent_references: true # Specify which agent for each task
86
+ ```
87
+
88
+ ---
89
+
90
+ **To implement**: See task in .specweave/increments/
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: "Placeholder Test"
3
+ description: "TODO: Add actual test case for this skill"
4
+ input:
5
+ prompt: "Test prompt"
6
+ expected_output:
7
+ type: "validation"
8
+ validation:
9
+ - "Placeholder validation"
10
+ success_criteria:
11
+ - "Test passes"
12
+ ---