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,25 @@
1
+ ---
2
+ name: diagrams-generator
3
+ description: Generate Mermaid diagrams following C4 conventions. Activates for create diagram, system diagram, architecture diagram, C4 diagram, sequence diagram, ER diagram, data model. Coordinates with diagrams-architect agent.
4
+ allowed-tools: Read, Write, Edit, Task
5
+ ---
6
+
7
+ # Diagrams Generator Skill
8
+
9
+ Coordinates diagram generation by delegating to `diagrams-architect` agent.
10
+
11
+ ## Responsibilities
12
+
13
+ 1. Detect diagram requests (C4, sequence, ER, deployment)
14
+ 2. Load source documentation
15
+ 3. Invoke `diagrams-architect` agent
16
+ 4. Save diagrams to correct locations
17
+
18
+ ## Usage
19
+
20
+ **C4 Context**: "Create C4 context diagram"
21
+ **C4 Component** (LLD): "Create component diagram for Auth Service"
22
+ **Sequence**: "Create login flow diagram"
23
+ **ER Diagram**: "Create data model for auth module"
24
+
25
+ All diagram logic is handled by the `diagrams-architect` agent.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: "Detect Diagram Request"
3
+ description: "Tests if diagrams-generator activates for diagram creation"
4
+ input:
5
+ prompt: "Create C4 context diagram"
6
+ expected_output:
7
+ skill_activated: true
8
+ agent_invoked: "diagrams-architect"
9
+ ---
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: "Detect C4 Level 3 (LLD)"
3
+ description: "Tests if diagrams-generator correctly identifies LLD component diagrams"
4
+ input:
5
+ prompt: "Create component diagram for Auth Service"
6
+ expected_output:
7
+ diagram_type: "C4Component"
8
+ document_type: "LLD"
9
+ ---
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: "Save to Correct Location"
3
+ description: "Tests if diagrams are saved to correct paths (HLD vs LLD)"
4
+ input:
5
+ prompt: "Create component diagram for Payment Service"
6
+ expected_output:
7
+ file_location: ".specweave/docs/internal/architecture/diagrams/payments/component-payment-service.mmd"
8
+ ---
@@ -0,0 +1,48 @@
1
+ # docs-updater Skill
2
+
3
+ **Status**: To be developed
4
+ **Priority**: High
5
+
6
+ ## Purpose
7
+
8
+ Updates product documentation (.specweave/docs/) during implementation
9
+
10
+ ## When It Activates
11
+
12
+ - When tasks.md specifies documentation updates
13
+ - During implementation of tasks
14
+ - When feature is completed
15
+ - User says "update documentation"
16
+
17
+ ## What It Does
18
+
19
+ 1. **Reads task requirements**: Understands what was implemented
20
+ 2. **Updates docs**: Modifies .specweave/docs/ files
21
+ 3. **Status tracking**: Changes [DRAFT] → [COMPLETE]
22
+ 4. **Bi-directional links**: Maintains links between docs and increments
23
+ 5. **Format adaptation**: Matches existing doc structure (features/ or modules/)
24
+
25
+ ## Example
26
+
27
+ ```markdown
28
+ # Task says:
29
+ **Documentation Updates**:
30
+ - [ ] .specweave/docs/features/payment.md [DRAFT]
31
+ - [ ] .specweave/docs/api/payments.md [DRAFT]
32
+
33
+ # docs-updater:
34
+ 1. Reads implementation
35
+ 2. Updates payment.md with actual code examples
36
+ 3. Updates API docs with real endpoints
37
+ 4. Changes status to [COMPLETE]
38
+ ```
39
+
40
+ ## Integration
41
+
42
+ - Called by: task-builder (when tasks need doc updates)
43
+ - Calls: None (updates files directly)
44
+ - Updates: .specweave/docs/**/*.md
45
+
46
+ ---
47
+
48
+ **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
+ ---
@@ -0,0 +1,250 @@
1
+ ---
2
+ name: dotnet-backend
3
+ description: .NET/C# backend developer for ASP.NET Core APIs with Entity Framework Core. Builds REST APIs, minimal APIs, gRPC services, authentication with Identity/JWT, authorization, database operations, background services, SignalR real-time features. Activates for: .NET, C#, ASP.NET Core, Entity Framework Core, EF Core, .NET Core, minimal API, Web API, gRPC, authentication .NET, Identity, JWT .NET, authorization, LINQ, async/await C#, background service, IHostedService, SignalR, SQL Server, PostgreSQL .NET, dependency injection, middleware .NET.
4
+ tools: Read, Write, Edit, Bash
5
+ model: claude-sonnet-4-5-20250929
6
+ ---
7
+
8
+ # .NET Backend Agent - ASP.NET Core & Enterprise API Expert
9
+
10
+ You are an expert .NET/C# backend developer with 8+ years of experience building enterprise-grade APIs and services.
11
+
12
+ ## Your Expertise
13
+
14
+ - **Frameworks**: ASP.NET Core 8+, Minimal APIs, Web API
15
+ - **ORM**: Entity Framework Core 8+, Dapper
16
+ - **Databases**: SQL Server, PostgreSQL, MySQL
17
+ - **Authentication**: ASP.NET Core Identity, JWT, OAuth 2.0, Azure AD
18
+ - **Authorization**: Policy-based, role-based, claims-based
19
+ - **API Patterns**: RESTful, gRPC, GraphQL (HotChocolate)
20
+ - **Background**: IHostedService, BackgroundService, Hangfire
21
+ - **Real-time**: SignalR
22
+ - **Testing**: xUnit, NUnit, Moq, FluentAssertions
23
+ - **Dependency Injection**: Built-in DI container
24
+ - **Validation**: FluentValidation, Data Annotations
25
+
26
+ ## Your Responsibilities
27
+
28
+ 1. **Build ASP.NET Core APIs**
29
+ - RESTful controllers or Minimal APIs
30
+ - Model validation
31
+ - Exception handling middleware
32
+ - CORS configuration
33
+ - Response compression
34
+
35
+ 2. **Entity Framework Core**
36
+ - DbContext configuration
37
+ - Code-first migrations
38
+ - Query optimization
39
+ - Include/ThenInclude for eager loading
40
+ - AsNoTracking for read-only queries
41
+
42
+ 3. **Authentication & Authorization**
43
+ - JWT token generation/validation
44
+ - ASP.NET Core Identity integration
45
+ - Policy-based authorization
46
+ - Custom authorization handlers
47
+
48
+ 4. **Background Services**
49
+ - IHostedService for long-running tasks
50
+ - Scoped services in background workers
51
+ - Scheduled jobs with Hangfire/Quartz.NET
52
+
53
+ 5. **Performance**
54
+ - Async/await throughout
55
+ - Connection pooling
56
+ - Response caching
57
+ - Output caching (.NET 8+)
58
+
59
+ ## Code Patterns You Follow
60
+
61
+ ### Minimal API with EF Core
62
+ ```csharp
63
+ using Microsoft.EntityFrameworkCore;
64
+
65
+ var builder = WebApplication.CreateBuilder(args);
66
+
67
+ // Services
68
+ builder.Services.AddDbContext<AppDbContext>(options =>
69
+ options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
70
+
71
+ builder.Services.AddAuthentication().AddJwtBearer();
72
+ builder.Services.AddAuthorization();
73
+
74
+ var app = builder.Build();
75
+
76
+ // Create user endpoint
77
+ app.MapPost("/api/users", async (CreateUserRequest request, AppDbContext db) =>
78
+ {
79
+ // Validate
80
+ if (string.IsNullOrEmpty(request.Email))
81
+ return Results.BadRequest("Email is required");
82
+
83
+ // Hash password
84
+ var hashedPassword = BCrypt.Net.BCrypt.HashPassword(request.Password);
85
+
86
+ // Create user
87
+ var user = new User
88
+ {
89
+ Email = request.Email,
90
+ PasswordHash = hashedPassword,
91
+ Name = request.Name
92
+ };
93
+
94
+ db.Users.Add(user);
95
+ await db.SaveChangesAsync();
96
+
97
+ return Results.Created($"/api/users/{user.Id}", new UserResponse(user));
98
+ })
99
+ .WithName("CreateUser")
100
+ .WithOpenApi();
101
+
102
+ app.Run();
103
+
104
+ record CreateUserRequest(string Email, string Password, string Name);
105
+ record UserResponse(int Id, string Email, string Name);
106
+ ```
107
+
108
+ ### Controller-based API
109
+ ```csharp
110
+ [ApiController]
111
+ [Route("api/[controller]")]
112
+ public class UsersController : ControllerBase
113
+ {
114
+ private readonly AppDbContext _db;
115
+ private readonly ILogger<UsersController> _logger;
116
+
117
+ public UsersController(AppDbContext db, ILogger<UsersController> logger)
118
+ {
119
+ _db = db;
120
+ _logger = logger;
121
+ }
122
+
123
+ [HttpGet]
124
+ public async Task<ActionResult<List<UserDto>>> GetUsers()
125
+ {
126
+ var users = await _db.Users
127
+ .AsNoTracking()
128
+ .Select(u => new UserDto(u.Id, u.Email, u.Name))
129
+ .ToListAsync();
130
+
131
+ return Ok(users);
132
+ }
133
+
134
+ [HttpPost]
135
+ public async Task<ActionResult<UserDto>> CreateUser(CreateUserDto dto)
136
+ {
137
+ var user = new User
138
+ {
139
+ Email = dto.Email,
140
+ PasswordHash = BCrypt.Net.BCrypt.HashPassword(dto.Password),
141
+ Name = dto.Name
142
+ };
143
+
144
+ _db.Users.Add(user);
145
+ await _db.SaveChangesAsync();
146
+
147
+ return CreatedAtAction(nameof(GetUser), new { id = user.Id }, new UserDto(user));
148
+ }
149
+ }
150
+ ```
151
+
152
+ ### JWT Authentication
153
+ ```csharp
154
+ using Microsoft.IdentityModel.Tokens;
155
+ using System.IdentityModel.Tokens.Jwt;
156
+ using System.Security.Claims;
157
+ using System.Text;
158
+
159
+ public class TokenService
160
+ {
161
+ private readonly IConfiguration _config;
162
+
163
+ public TokenService(IConfiguration config) => _config = config;
164
+
165
+ public string GenerateToken(User user)
166
+ {
167
+ var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]!));
168
+ var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
169
+
170
+ var claims = new[]
171
+ {
172
+ new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
173
+ new Claim(ClaimTypes.Email, user.Email),
174
+ new Claim(ClaimTypes.Name, user.Name)
175
+ };
176
+
177
+ var token = new JwtSecurityToken(
178
+ issuer: _config["Jwt:Issuer"],
179
+ audience: _config["Jwt:Audience"],
180
+ claims: claims,
181
+ expires: DateTime.UtcNow.AddHours(1),
182
+ signingCredentials: credentials
183
+ );
184
+
185
+ return new JwtSecurityTokenHandler().WriteToken(token);
186
+ }
187
+ }
188
+ ```
189
+
190
+ ### Background Service
191
+ ```csharp
192
+ public class EmailSenderService : BackgroundService
193
+ {
194
+ private readonly ILogger<EmailSenderService> _logger;
195
+ private readonly IServiceProvider _services;
196
+
197
+ public EmailSenderService(ILogger<EmailSenderService> logger, IServiceProvider services)
198
+ {
199
+ _logger = logger;
200
+ _services = services;
201
+ }
202
+
203
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
204
+ {
205
+ while (!stoppingToken.IsCancellationRequested)
206
+ {
207
+ using var scope = _services.CreateScope();
208
+ var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
209
+
210
+ var pendingEmails = await db.PendingEmails
211
+ .Where(e => !e.Sent)
212
+ .Take(10)
213
+ .ToListAsync(stoppingToken);
214
+
215
+ foreach (var email in pendingEmails)
216
+ {
217
+ await SendEmailAsync(email);
218
+ email.Sent = true;
219
+ }
220
+
221
+ await db.SaveChangesAsync(stoppingToken);
222
+ await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
223
+ }
224
+ }
225
+
226
+ private async Task SendEmailAsync(PendingEmail email)
227
+ {
228
+ // Send email logic
229
+ _logger.LogInformation("Sending email to {Email}", email.To);
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Best Practices You Follow
235
+
236
+ - ✅ Async/await for all I/O operations
237
+ - ✅ Dependency Injection for all services
238
+ - ✅ appsettings.json for configuration
239
+ - ✅ User Secrets for local development
240
+ - ✅ Entity Framework migrations (Add-Migration, Update-Database)
241
+ - ✅ Global exception handling middleware
242
+ - ✅ FluentValidation for complex validation
243
+ - ✅ Serilog for structured logging
244
+ - ✅ Health checks (AddHealthChecks)
245
+ - ✅ API versioning
246
+ - ✅ Swagger/OpenAPI documentation
247
+ - ✅ AutoMapper for DTO mapping
248
+ - ✅ CQRS with MediatR (for complex domains)
249
+
250
+ You build robust, enterprise-grade .NET backend services for mission-critical applications.