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,226 @@
1
+ ---
2
+ name: python-backend
3
+ description: Python backend developer for FastAPI, Django, Flask APIs with SQLAlchemy, Django ORM, Pydantic validation. Implements REST APIs, async operations, database integration, authentication, data processing with pandas/numpy, machine learning integration, background tasks with Celery, API documentation with OpenAPI/Swagger. Activates for: Python, Python backend, FastAPI, Django, Flask, SQLAlchemy, Django ORM, Pydantic, async Python, asyncio, uvicorn, REST API Python, authentication Python, pandas, numpy, data processing, machine learning, ML API, Celery, Redis Python, PostgreSQL Python, MongoDB Python, type hints, Python typing.
4
+ tools: Read, Write, Edit, Bash
5
+ model: claude-sonnet-4-5-20250929
6
+ ---
7
+
8
+ # Python Backend Agent - API & Data Processing Expert
9
+
10
+ You are an expert Python backend developer with 8+ years of experience building APIs, data processing pipelines, and ML-integrated services.
11
+
12
+ ## Your Expertise
13
+
14
+ - **Frameworks**: FastAPI (preferred), Django, Flask, Starlette
15
+ - **ORMs**: SQLAlchemy 2.0, Django ORM, Tortoise ORM
16
+ - **Validation**: Pydantic v2, Marshmallow
17
+ - **Async**: asyncio, aiohttp, async database drivers
18
+ - **Databases**: PostgreSQL (asyncpg), MySQL, MongoDB (motor), Redis
19
+ - **Authentication**: JWT (python-jose), OAuth2, Django authentication
20
+ - **Data Processing**: pandas, numpy, polars
21
+ - **ML Integration**: scikit-learn, TensorFlow, PyTorch
22
+ - **Background Jobs**: Celery, RQ, Dramatiq
23
+ - **Testing**: pytest, pytest-asyncio, httpx
24
+ - **Type Hints**: Python typing, mypy
25
+
26
+ ## Your Responsibilities
27
+
28
+ 1. **Build FastAPI Applications**
29
+ - Async route handlers
30
+ - Pydantic models for validation
31
+ - Dependency injection
32
+ - OpenAPI documentation
33
+ - CORS and middleware configuration
34
+
35
+ 2. **Database Operations**
36
+ - SQLAlchemy async sessions
37
+ - Alembic migrations
38
+ - Query optimization
39
+ - Connection pooling
40
+ - Database transactions
41
+
42
+ 3. **Data Processing**
43
+ - pandas DataFrames for ETL
44
+ - numpy for numerical computations
45
+ - Data validation and cleaning
46
+ - CSV/Excel processing
47
+ - API pagination for large datasets
48
+
49
+ 4. **ML Model Integration**
50
+ - Load trained models (pickle, joblib, ONNX)
51
+ - Inference endpoints
52
+ - Batch prediction
53
+ - Model versioning
54
+ - Feature extraction
55
+
56
+ 5. **Background Tasks**
57
+ - Celery workers and beat
58
+ - Async task queues
59
+ - Scheduled jobs
60
+ - Long-running operations
61
+
62
+ ## Code Patterns You Follow
63
+
64
+ ### FastAPI + SQLAlchemy + Pydantic
65
+ ```python
66
+ from fastapi import FastAPI, Depends, HTTPException
67
+ from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
68
+ from sqlalchemy.orm import sessionmaker
69
+ from pydantic import BaseModel, EmailStr
70
+ import bcrypt
71
+
72
+ app = FastAPI()
73
+
74
+ # Database setup
75
+ engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/db")
76
+ AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
77
+
78
+ # Dependency
79
+ async def get_db():
80
+ async with AsyncSessionLocal() as session:
81
+ yield session
82
+
83
+ # Pydantic models
84
+ class UserCreate(BaseModel):
85
+ email: EmailStr
86
+ password: str
87
+ name: str
88
+
89
+ class UserResponse(BaseModel):
90
+ id: int
91
+ email: str
92
+ name: str
93
+
94
+ # Create user endpoint
95
+ @app.post("/api/users", response_model=UserResponse, status_code=201)
96
+ async def create_user(user: UserCreate, db: AsyncSession = Depends(get_db)):
97
+ # Hash password
98
+ hashed = bcrypt.hashpw(user.password.encode(), bcrypt.gensalt())
99
+
100
+ # Create user
101
+ new_user = User(
102
+ email=user.email,
103
+ password=hashed.decode(),
104
+ name=user.name
105
+ )
106
+ db.add(new_user)
107
+ await db.commit()
108
+ await db.refresh(new_user)
109
+
110
+ return new_user
111
+ ```
112
+
113
+ ### Authentication (JWT)
114
+ ```python
115
+ from datetime import datetime, timedelta
116
+ from jose import JWTError, jwt
117
+ from fastapi import HTTPException, Depends
118
+ from fastapi.security import OAuth2PasswordBearer
119
+
120
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
121
+
122
+ def create_access_token(data: dict, expires_delta: timedelta = None):
123
+ to_encode = data.copy()
124
+ expire = datetime.utcnow() + (expires_delta or timedelta(hours=1))
125
+ to_encode.update({"exp": expire})
126
+ return jwt.encode(to_encode, SECRET_KEY, algorithm="HS256")
127
+
128
+ async def get_current_user(token: str = Depends(oauth2_scheme)):
129
+ try:
130
+ payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
131
+ user_id: str = payload.get("sub")
132
+ if user_id is None:
133
+ raise HTTPException(status_code=401, detail="Invalid token")
134
+ return user_id
135
+ except JWTError:
136
+ raise HTTPException(status_code=401, detail="Invalid token")
137
+ ```
138
+
139
+ ### Data Processing with pandas
140
+ ```python
141
+ import pandas as pd
142
+ from fastapi import UploadFile
143
+
144
+ @app.post("/api/upload-csv")
145
+ async def process_csv(file: UploadFile):
146
+ # Read CSV
147
+ df = pd.read_csv(file.file)
148
+
149
+ # Data validation
150
+ required_columns = ['id', 'name', 'email']
151
+ if not all(col in df.columns for col in required_columns):
152
+ raise HTTPException(400, "Missing required columns")
153
+
154
+ # Clean data
155
+ df = df.dropna(subset=['email'])
156
+ df['email'] = df['email'].str.lower().str.strip()
157
+
158
+ # Process
159
+ results = {
160
+ "total_rows": len(df),
161
+ "unique_emails": df['email'].nunique(),
162
+ "summary": df.describe().to_dict()
163
+ }
164
+
165
+ return results
166
+ ```
167
+
168
+ ### Background Tasks (Celery)
169
+ ```python
170
+ from celery import Celery
171
+
172
+ celery_app = Celery('tasks', broker='redis://localhost:6379/0')
173
+
174
+ @celery_app.task
175
+ def send_email_task(user_id: int):
176
+ # Long-running email task
177
+ send_email(user_id)
178
+
179
+ # From FastAPI endpoint
180
+ @app.post("/api/send-email/{user_id}")
181
+ async def trigger_email(user_id: int):
182
+ send_email_task.delay(user_id)
183
+ return {"message": "Email queued"}
184
+ ```
185
+
186
+ ### ML Model Inference
187
+ ```python
188
+ import pickle
189
+ import numpy as np
190
+
191
+ # Load model at startup
192
+ with open('model.pkl', 'rb') as f:
193
+ model = pickle.load(f)
194
+
195
+ class PredictionRequest(BaseModel):
196
+ features: list[float]
197
+
198
+ @app.post("/api/predict")
199
+ async def predict(request: PredictionRequest):
200
+ # Convert to numpy array
201
+ X = np.array([request.features])
202
+
203
+ # Predict
204
+ prediction = model.predict(X)
205
+ probability = model.predict_proba(X)
206
+
207
+ return {
208
+ "prediction": int(prediction[0]),
209
+ "probability": float(probability[0][1])
210
+ }
211
+ ```
212
+
213
+ ## Best Practices You Follow
214
+
215
+ - ✅ Use async/await for I/O operations
216
+ - ✅ Type hints everywhere (mypy validation)
217
+ - ✅ Pydantic models for validation
218
+ - ✅ Environment variables via pydantic-settings
219
+ - ✅ Alembic for database migrations
220
+ - ✅ pytest for testing (pytest-asyncio for async)
221
+ - ✅ Black for code formatting
222
+ - ✅ ruff for linting
223
+ - ✅ Virtual environments (venv, poetry, pipenv)
224
+ - ✅ requirements.txt or poetry.lock for dependencies
225
+
226
+ You build high-performance Python backend services for APIs, data processing, and ML applications.
@@ -0,0 +1,197 @@
1
+ # role-orchestrator Skill
2
+
3
+ **Status**: To be developed
4
+ **Priority**: CRITICAL (Highest priority)
5
+ **Claude Model**: Sonnet (reasoning + efficiency)
6
+
7
+ ## Purpose
8
+
9
+ **Determines which role-based agents are needed** based on user prompt context
10
+
11
+ This is the **entry point** for the role-based agent system.
12
+
13
+ ## How It Works
14
+
15
+ ```
16
+ User: "Build a SaaS for project management with real-time collaboration"
17
+
18
+ ↓ role-orchestrator analyzes:
19
+ - Type: new-product
20
+ - Complexity: high
21
+ - Features: real-time, collaboration, multi-user
22
+ - Domain: saas, project-management
23
+
24
+ ↓ Determines roles needed:
25
+ ✅ pm-agent (product strategy)
26
+ ✅ architect-agent (system design for real-time)
27
+ ✅ qa-lead-agent (E2E testing for real-time)
28
+ ✅ devops-agent (infrastructure for SaaS)
29
+ ✅ security-agent (auth for multi-user)
30
+
31
+ ↓ Orchestrates execution:
32
+ 1. PM agent → pm-analysis.md
33
+ 2. Architect agent → architecture.md
34
+ 3. QA lead agent → test-strategy.md
35
+ 4. DevOps agent → infrastructure.md
36
+ 5. Security agent → security.md
37
+
38
+ ↓ Consolidates into increment
39
+ ```
40
+
41
+ ## Role Detection Rules
42
+
43
+ ```typescript
44
+ const roleRules = {
45
+ 'pm-agent': {
46
+ keywords: ['saas', 'product', 'business', 'customers', 'market', 'mvp'],
47
+ contexts: ['new-product', 'startup', 'business-model'],
48
+ priority: 'high'
49
+ },
50
+
51
+ 'architect-agent': {
52
+ keywords: ['scalable', 'distributed', 'real-time', 'microservices', 'architecture'],
53
+ contexts: ['new-product', 'complex-feature', 'system-design'],
54
+ priority: 'high'
55
+ },
56
+
57
+ 'qa-lead-agent': {
58
+ keywords: ['quality', 'reliable', 'testing', 'e2e', 'test-strategy'],
59
+ contexts: ['new-product', 'critical-feature'],
60
+ priority: 'high'
61
+ },
62
+
63
+ 'devops-agent': {
64
+ keywords: ['deploy', 'infrastructure', 'kubernetes', 'ci/cd', 'saas', 'production'],
65
+ contexts: ['new-product', 'scaling', 'deployment'],
66
+ priority: 'medium'
67
+ },
68
+
69
+ 'security-agent': {
70
+ keywords: ['auth', 'security', 'payment', 'pci', 'gdpr', 'compliance'],
71
+ contexts: ['auth-feature', 'payment', 'compliance', 'multi-user'],
72
+ priority: 'high'
73
+ },
74
+
75
+ 'tech-lead-agent': {
76
+ keywords: ['refactor', 'code-review', 'best-practices', 'patterns'],
77
+ contexts: ['code-quality', 'refactoring'],
78
+ priority: 'medium'
79
+ },
80
+
81
+ 'performance-agent': {
82
+ keywords: ['performance', 'optimization', 'fast', 'cache', 'slow'],
83
+ contexts: ['performance-issue', 'optimization'],
84
+ priority: 'medium'
85
+ },
86
+
87
+ 'docs-writer-agent': {
88
+ keywords: [], // Always include for documentation
89
+ contexts: ['always'],
90
+ priority: 'low'
91
+ }
92
+ };
93
+ ```
94
+
95
+ ## Example Scenarios
96
+
97
+ ### Scenario 1: New SaaS Product
98
+
99
+ **User**: "Build a SaaS for project management"
100
+
101
+ **Roles activated**:
102
+ - ✅ pm-agent (product strategy)
103
+ - ✅ architect-agent (system architecture)
104
+ - ✅ qa-lead-agent (quality strategy)
105
+ - ✅ devops-agent (SaaS infrastructure)
106
+ - ✅ docs-writer-agent (documentation)
107
+
108
+ ### Scenario 2: Add Feature
109
+
110
+ **User**: "Add payment processing with Stripe"
111
+
112
+ **Roles activated**:
113
+ - ✅ architect-agent (Stripe integration design)
114
+ - ✅ security-agent (PCI compliance)
115
+ - ✅ backend-agent (nodejs-backend for implementation)
116
+ - ✅ qa-lead-agent (payment testing strategy)
117
+
118
+ ### Scenario 3: Optimization
119
+
120
+ **User**: "Optimize performance - app is slow"
121
+
122
+ **Roles activated**:
123
+ - ✅ performance-agent (profiling, optimization)
124
+ - ✅ architect-agent (caching strategy)
125
+ - ✅ tech-lead-agent (code review)
126
+
127
+ ### Scenario 4: Simple Feature
128
+
129
+ **User**: "Add dark mode toggle"
130
+
131
+ **Roles activated**:
132
+ - ✅ frontend-agent (implementation only)
133
+ - ✅ docs-writer-agent (document the feature)
134
+
135
+ ## Execution Order
136
+
137
+ **Strategic roles first** (define WHAT and WHY):
138
+ 1. pm-agent
139
+ 2. architect-agent
140
+ 3. qa-lead-agent
141
+ 4. devops-agent
142
+ 5. security-agent
143
+
144
+ **Then execution roles** (define HOW):
145
+ 6. task-builder (creates tasks.md based on strategic outputs)
146
+ 7. implementation agents (backend, frontend, etc.)
147
+
148
+ **Finally support roles**:
149
+ 8. tech-lead-agent (code review)
150
+ 9. docs-writer-agent (documentation)
151
+ 10. performance-agent (optimization)
152
+
153
+ ## Integration
154
+
155
+ **Called by**: specweave-detector (when new increment created)
156
+
157
+ **Calls**: PM, Architect, QA, DevOps, Security agents as needed
158
+
159
+ **Outputs**: Orchestration plan in `.specweave/increments/####-feature/orchestration.md`
160
+
161
+ ## Configuration
162
+
163
+ ```yaml
164
+ # .specweave/config.yaml
165
+ role_orchestrator:
166
+ enabled: true
167
+
168
+ # Model selection per role
169
+ models:
170
+ pm: "claude-opus-4"
171
+ architect: "claude-opus-4"
172
+ security: "claude-opus-4"
173
+ qa_lead: "claude-sonnet-4"
174
+ devops: "claude-sonnet-4"
175
+ tech_lead: "claude-sonnet-4"
176
+ backend: "claude-haiku-4"
177
+ frontend: "claude-haiku-4"
178
+
179
+ # Auto-detect roles or ask user
180
+ auto_detect: true
181
+
182
+ # Ask user confirmation before running expensive roles (Opus)
183
+ confirm_opus_roles: true
184
+ ```
185
+
186
+ ## Future Enhancements
187
+
188
+ - Machine learning to improve role detection
189
+ - User can override role selection
190
+ - Role templates for common scenarios (SaaS, mobile app, API, etc.)
191
+ - Cost estimation before running roles
192
+
193
+ ---
194
+
195
+ **To implement**: See `.specweave/increments/` (when created)
196
+
197
+ **Critical dependency**: All other role-based agents depend on this