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,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,501 @@
1
+ ---
2
+ name: specweave-ado-mapper
3
+ description: Expert in bidirectional conversion between SpecWeave increments and Azure DevOps (ADO) Epics/Features/User Stories/Tasks. Handles export (increment → ADO), import (ADO → increment), and bidirectional sync with conflict resolution. Activates for ADO sync, Azure DevOps sync, work item creation, import from ADO.
4
+ tools: Read, Write, Edit, Bash
5
+ model: claude-sonnet-4-5-20250929
6
+ ---
7
+
8
+ # Specweave Ado Mapper Skill
9
+
10
+ You are an expert in mapping SpecWeave concepts to Azure DevOps (ADO) and vice versa with precision and traceability.
11
+
12
+ ## Core Responsibilities
13
+
14
+ 1. **Export SpecWeave increments to ADO** (Increment → Epic + Features + User Stories + Tasks)
15
+ 2. **Import ADO Epics as SpecWeave increments** (Epic → Increment structure)
16
+ 3. **Bidirectional sync** with conflict detection and resolution
17
+ 4. **Maintain traceability** (store IDs, URLs, timestamps)
18
+ 5. **Validate mapping accuracy** using test cases
19
+ 6. **Handle edge cases** (missing fields, custom workflows, API errors)
20
+
21
+ ---
22
+
23
+ ## Azure DevOps Work Item Hierarchy
24
+
25
+ ADO uses a **4-level hierarchy** (one more level than JIRA):
26
+
27
+ ```
28
+ Epic
29
+ └── Feature
30
+ └── User Story
31
+ └── Task
32
+ ```
33
+
34
+ **Key Difference from JIRA**: ADO has **Feature** between Epic and User Story.
35
+
36
+ ---
37
+
38
+ ## Concept Mappings
39
+
40
+ ### SpecWeave → ADO
41
+
42
+ | SpecWeave Concept | ADO Concept | Mapping Rules |
43
+ |-------------------|-------------|---------------|
44
+ | **Increment** | Epic | Title: `[Increment ###] [Title]` |
45
+ | **User Story** (from spec.md) | Feature (if large) OR User Story | Decision based on size |
46
+ | **Task** (from tasks.md) | Task | Work Item Type: Task |
47
+ | **Acceptance Criteria** (TC-0001) | Acceptance Criteria field | Formatted as checkboxes |
48
+ | **Priority P1** | Priority: 1 | Highest priority |
49
+ | **Priority P2** | Priority: 2 | High priority |
50
+ | **Priority P3** | Priority: 3 | Medium priority |
51
+ | **Status: planned** | State: New | Not started |
52
+ | **Status: in-progress** | State: Active | Active work |
53
+ | **Status: completed** | State: Closed | Finished |
54
+ | **spec.md** | Epic Description | Summary + link to spec (if repo) |
55
+
56
+ ### ADO → SpecWeave
57
+
58
+ | ADO Concept | SpecWeave Concept | Import Rules |
59
+ |-------------|-------------------|--------------|
60
+ | **Epic** | Increment | Auto-number next available |
61
+ | **Feature** | User Story (large) | Extract title, description |
62
+ | **User Story** | User Story (small) | Extract acceptance criteria |
63
+ | **Task** | Task | Map to tasks.md checklist |
64
+ | **Acceptance Criteria** | TC-0001 format | Parse as test cases |
65
+ | **Priority 1** | Priority P1 | Critical |
66
+ | **Priority 2** | Priority P2 | Important |
67
+ | **Priority 3/4** | Priority P3 | Nice to have |
68
+ | **State: New** | Status: planned | Not started |
69
+ | **State: Active** | Status: in-progress | Active |
70
+ | **State: Closed** | Status: completed | Finished |
71
+ | **Area Path** | Context metadata | Store in frontmatter |
72
+ | **Iteration** | Context metadata | Store in frontmatter |
73
+
74
+ ---
75
+
76
+ ## Conversion Workflows
77
+
78
+ ### 1. Export: Increment → ADO Epic
79
+
80
+ **Input**: `.specweave/increments/0001-feature-name/`
81
+
82
+ **Prerequisites**:
83
+ - Increment folder exists
84
+ - `spec.md` exists with valid frontmatter
85
+ - `tasks.md` exists
86
+ - ADO connection configured (PAT, organization, project)
87
+
88
+ **Process**:
89
+
90
+ 1. **Read increment files**:
91
+ ```bash
92
+ # Read spec.md
93
+ - Extract frontmatter (title, description, priority)
94
+ - Extract user stories (US1-001, US1-002)
95
+ - Extract acceptance criteria (TC-0001, TC-0002)
96
+
97
+ # Read tasks.md
98
+ - Extract task checklist
99
+ - Group tasks by user story
100
+ ```
101
+
102
+ 2. **Create ADO Epic**:
103
+ ```
104
+ Title: [Increment 0001] Feature Name
105
+ Description:
106
+ {spec.md summary}
107
+
108
+ Specification: {link to spec.md if Azure Repos}
109
+
110
+ Work Item Type: Epic
111
+ Priority: 1 (P1) / 2 (P2) / 3 (P3)
112
+ State: New
113
+ Area Path: {project_area}
114
+ Iteration: {current_iteration}
115
+ Tags: specweave, increment-0001
116
+ Custom Fields:
117
+ - SpecWeave.IncrementID: 0001-feature-name
118
+ - SpecWeave.SpecURL: https://dev.azure.com/.../spec.md
119
+ ```
120
+
121
+ 3. **Create ADO Features OR User Stories**:
122
+
123
+ **Decision Logic**:
124
+ - If user story has >5 acceptance criteria → Create as Feature (large work)
125
+ - If user story has ≤5 acceptance criteria → Create as User Story (small work)
126
+
127
+ **Feature (large user story)**:
128
+ ```
129
+ Title: {User Story title}
130
+ Description:
131
+ **As a** {role}
132
+ **I want to** {goal}
133
+ **So that** {benefit}
134
+
135
+ Acceptance Criteria:
136
+ - TC-0001: {criteria}
137
+ - TC-0002: {criteria}
138
+ ...
139
+
140
+ Work Item Type: Feature
141
+ Parent: {Epic ID}
142
+ Tags: specweave, user-story
143
+ Custom Fields:
144
+ - SpecWeave.UserStoryID: US1-001
145
+ - SpecWeave.TestCaseIDs: TC-0001, TC-0002
146
+ ```
147
+
148
+ **User Story (small user story)**:
149
+ ```
150
+ (Same structure as Feature, but Work Item Type: User Story)
151
+ ```
152
+
153
+ 4. **Create ADO Tasks**:
154
+ ```
155
+ Title: {Task description}
156
+ Work Item Type: Task
157
+ Parent: {Feature or User Story ID}
158
+ State: New
159
+ Tags: specweave, task
160
+ ```
161
+
162
+ 5. **Update increment frontmatter**:
163
+ ```yaml
164
+ ado:
165
+ epic_id: "12345"
166
+ epic_url: "https://dev.azure.com/{org}/{project}/_workitems/edit/12345"
167
+ features:
168
+ - id: "12346"
169
+ user_story_id: "US1-001"
170
+ - id: "12347"
171
+ user_story_id: "US1-002"
172
+ area_path: "MyProject\\TeamA"
173
+ iteration: "Sprint 24"
174
+ last_sync: "2025-10-26T14:00:00Z"
175
+ sync_direction: "export"
176
+ ```
177
+
178
+ **Output**:
179
+ ```
180
+ ✅ Exported to Azure DevOps!
181
+
182
+ Epic: 12345
183
+ URL: https://dev.azure.com/{org}/{project}/_workitems/edit/12345
184
+ Features: 3 created
185
+ User Stories: 2 created
186
+ Tasks: 12 created
187
+ Area Path: MyProject\TeamA
188
+ Iteration: Sprint 24
189
+ Last Sync: 2025-10-26T14:00:00Z
190
+ ```
191
+
192
+ ---
193
+
194
+ ### 2. Import: ADO Epic → Increment
195
+
196
+ **Input**: ADO Epic ID (e.g., `12345`)
197
+
198
+ **Prerequisites**:
199
+ - Valid ADO Epic ID
200
+ - Epic exists and is accessible
201
+ - ADO connection configured
202
+
203
+ **Process**:
204
+
205
+ 1. **Fetch Epic details** (via ADO REST API):
206
+ ```
207
+ - Epic title, description, tags
208
+ - Epic custom fields (if SpecWeave ID exists)
209
+ - Priority, state, area path, iteration
210
+ ```
211
+
212
+ 2. **Fetch hierarchy** (Epic → Features → User Stories → Tasks):
213
+ ```
214
+ - All Features/User Stories linked to Epic
215
+ - All Tasks linked to each Feature/User Story
216
+ - Acceptance criteria fields
217
+ ```
218
+
219
+ 3. **Auto-number next increment**:
220
+ ```bash
221
+ # Scan .specweave/increments/ for highest number
222
+ ls .specweave/increments/ | grep -E '^[0-9]{4}' | sort -n | tail -1
223
+ # Increment by 1 → 0003
224
+ ```
225
+
226
+ 4. **Create increment folder**:
227
+ ```
228
+ .specweave/increments/0003-imported-feature/
229
+ ```
230
+
231
+ 5. **Generate spec.md**:
232
+ ```yaml
233
+ ---
234
+ increment_id: "0003"
235
+ title: "{Epic title}"
236
+ status: "{mapped from ADO state}"
237
+ priority: "{mapped from ADO priority}"
238
+ created_at: "{Epic created date}"
239
+ ado:
240
+ epic_id: "12345"
241
+ epic_url: "https://dev.azure.com/{org}/{project}/_workitems/edit/12345"
242
+ features:
243
+ - id: "12346"
244
+ user_story_id: "US3-001"
245
+ area_path: "{area path}"
246
+ iteration: "{iteration}"
247
+ imported_at: "2025-10-26T14:00:00Z"
248
+ sync_direction: "import"
249
+ ---
250
+
251
+ # {Epic title}
252
+
253
+ {Epic description}
254
+
255
+ ## Context
256
+
257
+ - **Area Path**: {area_path}
258
+ - **Iteration**: {iteration}
259
+ - **ADO Epic**: [12345](https://dev.azure.com/.../12345)
260
+
261
+ ## User Stories
262
+
263
+ ### US3-001: {Feature/User Story title}
264
+
265
+ **As a** {extracted from description}
266
+ **I want to** {extracted}
267
+ **So that** {extracted}
268
+
269
+ **Acceptance Criteria**:
270
+ - [ ] TC-0001: {parsed from Acceptance Criteria field}
271
+ - [ ] TC-0002: {parsed}
272
+
273
+ **ADO Feature**: [12346](https://dev.azure.com/.../12346)
274
+ ```
275
+
276
+ 6. **Generate tasks.md**:
277
+ ```markdown
278
+ # Tasks: {Increment title}
279
+
280
+ ## User Story: US3-001
281
+
282
+ - [ ] {Task 1 title} (ADO: 12350)
283
+ - [ ] {Task 2 title} (ADO: 12351)
284
+ ```
285
+
286
+ 7. **Generate context-manifest.yaml** (default)
287
+
288
+ 8. **Update ADO Epic** (add custom field):
289
+ ```
290
+ Custom Field: SpecWeave.IncrementID = 0003-imported-feature
291
+ ```
292
+
293
+ **Output**:
294
+ ```
295
+ ✅ Imported from Azure DevOps!
296
+
297
+ Increment: 0003-imported-feature
298
+ Location: .specweave/increments/0003-imported-feature/
299
+ User Stories: 5 imported
300
+ Tasks: 12 imported
301
+ ADO Epic: 12345
302
+ Area Path: MyProject\TeamA
303
+ Iteration: Sprint 24
304
+ ```
305
+
306
+ ---
307
+
308
+ ### 3. Bidirectional Sync
309
+
310
+ **Process**: Similar to JIRA sync, with ADO-specific fields:
311
+
312
+ - Sync Area Path changes
313
+ - Sync Iteration changes
314
+ - Handle ADO-specific states (New, Active, Resolved, Closed)
315
+ - Sync Acceptance Criteria field
316
+
317
+ ---
318
+
319
+ ## ADO-Specific Concepts
320
+
321
+ ### Area Path
322
+
323
+ **Definition**: Organizational hierarchy (e.g., `MyProject\TeamA\Backend`)
324
+
325
+ **Mapping**:
326
+ - Store in increment frontmatter: `ado.area_path`
327
+ - Not a direct SpecWeave concept
328
+ - Used for organizational context
329
+
330
+ ### Iteration
331
+
332
+ **Definition**: Sprint/time period (e.g., `Sprint 24`)
333
+
334
+ **Mapping**:
335
+ - Store in increment frontmatter: `ado.iteration`
336
+ - Not a direct SpecWeave concept
337
+ - Used for planning context
338
+
339
+ ### Work Item States
340
+
341
+ ADO uses **State** (not Status):
342
+
343
+ | ADO State | SpecWeave Status |
344
+ |-----------|------------------|
345
+ | New | planned |
346
+ | Active | in-progress |
347
+ | Resolved | in-progress (testing) |
348
+ | Closed | completed |
349
+
350
+ ### Priority Values
351
+
352
+ ADO uses numeric priorities:
353
+
354
+ | ADO Priority | SpecWeave Priority |
355
+ |--------------|-------------------|
356
+ | 1 | P1 |
357
+ | 2 | P2 |
358
+ | 3 | P3 |
359
+ | 4 | P3 |
360
+
361
+ ---
362
+
363
+ ## Edge Cases and Error Handling
364
+
365
+ ### Feature vs User Story Decision
366
+
367
+ **Problem**: SpecWeave user story → Should it be ADO Feature or User Story?
368
+
369
+ **Solution**:
370
+ ```
371
+ Decision Logic:
372
+ - User story has >5 acceptance criteria → Feature (large work)
373
+ - User story has ≤5 acceptance criteria → User Story (small work)
374
+ - User can override with flag: --force-feature or --force-user-story
375
+ ```
376
+
377
+ ### Custom Area Paths
378
+
379
+ **Problem**: Project has custom Area Path structure
380
+
381
+ **Solution**:
382
+ ```
383
+ Ask user:
384
+ "Select Area Path for this increment:
385
+ [1] MyProject\TeamA
386
+ [2] MyProject\TeamB
387
+ [3] Custom (enter path)"
388
+ ```
389
+
390
+ ### Custom Iterations
391
+
392
+ **Problem**: Sprint naming varies
393
+
394
+ **Solution**:
395
+ ```
396
+ Ask user:
397
+ "Select Iteration for this increment:
398
+ [1] Sprint 24 (current)
399
+ [2] Sprint 25 (next)
400
+ [3] Backlog
401
+ [4] Custom (enter iteration)"
402
+ ```
403
+
404
+ ### ADO API Errors
405
+
406
+ **Problem**: Rate limit, authentication failure, network error
407
+
408
+ **Solution**:
409
+ ```
410
+ ❌ ADO API Error: Unauthorized (401)
411
+
412
+ Check your Personal Access Token (PAT):
413
+ 1. Go to https://dev.azure.com/{org}/_usersSettings/tokens
414
+ 2. Create new PAT with Work Items (Read, Write) scope
415
+ 3. Update .env: ADO_PAT=your-token
416
+ ```
417
+
418
+ ---
419
+
420
+ ## Templates
421
+
422
+ Use templates in `templates/` folder:
423
+
424
+ - `epic-from-increment.md` - Epic creation template
425
+ - `feature-from-user-story.md` - Feature creation template
426
+ - `user-story-from-small-story.md` - User Story creation template
427
+ - `increment-from-epic.md` - Increment import template
428
+
429
+ ---
430
+
431
+ ## References
432
+
433
+ Consult references in `references/` folder:
434
+
435
+ - `ado-concepts.md` - ADO structure (Epic, Feature, User Story, Task)
436
+ - `specweave-concepts.md` - SpecWeave structure
437
+ - `mapping-examples.md` - Real-world conversions with Area Paths and Iterations
438
+
439
+ ---
440
+
441
+ ## Test Cases
442
+
443
+ Validate all conversions using test cases in `test-cases/`:
444
+
445
+ 1. **test-1-increment-to-epic.yaml** - Export with Feature/User Story decision
446
+ 2. **test-2-epic-to-increment.yaml** - Import with Area Path and Iteration
447
+ 3. **test-3-bidirectional-sync.yaml** - Sync with ADO-specific fields
448
+
449
+ **Run tests**:
450
+ ```bash
451
+ npm run test:agents:specweave-ado-mapper
452
+ ```
453
+
454
+ ---
455
+
456
+ ## Best Practices
457
+
458
+ 1. **Respect ADO hierarchy** - Use Feature for large work, User Story for small
459
+ 2. **Store Area Path and Iteration** - Important for organizational context
460
+ 3. **Handle custom workflows** - Many ADO projects customize states
461
+ 4. **Use PAT securely** - Store in .env, never commit
462
+ 5. **Preserve traceability** - Store ADO IDs in frontmatter, SpecWeave IDs in ADO
463
+
464
+ ---
465
+
466
+ ## Usage Examples
467
+
468
+ ### Export to ADO
469
+
470
+ ```
471
+ User: "Export increment 0001 to Azure DevOps"
472
+
473
+ You:
474
+ 1. Read increment files
475
+ 2. Ask: "Area Path? [TeamA] [TeamB] [Custom]"
476
+ 3. Ask: "Iteration? [Sprint 24] [Sprint 25] [Backlog]"
477
+ 4. Create Epic
478
+ 5. Decide Feature vs User Story (based on size)
479
+ 6. Create Work Items
480
+ 7. Update frontmatter
481
+ 8. Present summary
482
+ ```
483
+
484
+ ### Import from ADO
485
+
486
+ ```
487
+ User: "Import ADO epic 12345"
488
+
489
+ You:
490
+ 1. Fetch Epic + hierarchy
491
+ 2. Extract Area Path and Iteration
492
+ 3. Auto-number increment
493
+ 4. Generate spec.md with ADO metadata
494
+ 5. Generate tasks.md
495
+ 6. Update ADO Epic with SpecWeave ID
496
+ 7. Present summary
497
+ ```
498
+
499
+ ---
500
+
501
+ **You are the authoritative mapper between SpecWeave and Azure DevOps. Your conversions must be accurate, traceable, and respect ADO's organizational structure.**