specweave 0.1.8 → 0.3.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 (294) hide show
  1. package/CLAUDE.md +600 -0
  2. package/README.md +263 -88
  3. package/bin/install-all.sh +1 -1
  4. package/bin/install-commands.sh +3 -3
  5. package/bin/specweave.js +39 -9
  6. package/dist/adapters/adapter-base.d.ts +1 -1
  7. package/dist/adapters/adapter-base.d.ts.map +1 -1
  8. package/dist/adapters/adapter-base.js +6 -41
  9. package/dist/adapters/adapter-base.js.map +1 -1
  10. package/dist/adapters/adapter-interface.js +1 -2
  11. package/dist/adapters/adapter-interface.js.map +1 -1
  12. package/dist/adapters/adapter-loader.d.ts +86 -0
  13. package/dist/adapters/adapter-loader.d.ts.map +1 -0
  14. package/dist/adapters/adapter-loader.js +216 -0
  15. package/dist/adapters/adapter-loader.js.map +1 -0
  16. package/dist/adapters/agents-md-generator.d.ts +48 -0
  17. package/dist/adapters/agents-md-generator.d.ts.map +1 -0
  18. package/dist/adapters/agents-md-generator.js +132 -0
  19. package/dist/adapters/agents-md-generator.js.map +1 -0
  20. package/dist/adapters/claude/adapter.d.ts +2 -2
  21. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  22. package/dist/adapters/claude/adapter.js +5 -42
  23. package/dist/adapters/claude/adapter.js.map +1 -1
  24. package/dist/adapters/claude-md-generator.d.ts +78 -0
  25. package/dist/adapters/claude-md-generator.d.ts.map +1 -0
  26. package/dist/adapters/claude-md-generator.js +246 -0
  27. package/dist/adapters/claude-md-generator.js.map +1 -0
  28. package/dist/adapters/codex/adapter.d.ts +50 -0
  29. package/dist/adapters/codex/adapter.d.ts.map +1 -0
  30. package/dist/adapters/codex/adapter.js +316 -0
  31. package/dist/adapters/codex/adapter.js.map +1 -0
  32. package/dist/adapters/copilot/adapter.d.ts +10 -9
  33. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  34. package/dist/adapters/copilot/adapter.js +35 -100
  35. package/dist/adapters/copilot/adapter.js.map +1 -1
  36. package/dist/adapters/cursor/adapter.d.ts +8 -6
  37. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  38. package/dist/adapters/cursor/adapter.js +47 -130
  39. package/dist/adapters/cursor/adapter.js.map +1 -1
  40. package/dist/adapters/doc-generator.d.ts +69 -0
  41. package/dist/adapters/doc-generator.d.ts.map +1 -0
  42. package/dist/adapters/doc-generator.js +247 -0
  43. package/dist/adapters/doc-generator.js.map +1 -0
  44. package/dist/adapters/gemini/adapter.d.ts +50 -0
  45. package/dist/adapters/gemini/adapter.d.ts.map +1 -0
  46. package/dist/adapters/gemini/adapter.js +281 -0
  47. package/dist/adapters/gemini/adapter.js.map +1 -0
  48. package/dist/adapters/generic/adapter.d.ts +7 -4
  49. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  50. package/dist/adapters/generic/adapter.js +60 -59
  51. package/dist/adapters/generic/adapter.js.map +1 -1
  52. package/dist/cli/commands/init.d.ts +3 -1
  53. package/dist/cli/commands/init.d.ts.map +1 -1
  54. package/dist/cli/commands/init.js +272 -170
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/install.d.ts.map +1 -1
  57. package/dist/cli/commands/install.js +22 -58
  58. package/dist/cli/commands/install.js.map +1 -1
  59. package/dist/cli/commands/list.d.ts.map +1 -1
  60. package/dist/cli/commands/list.js +27 -64
  61. package/dist/cli/commands/list.js.map +1 -1
  62. package/dist/core/credentials-manager.d.ts +90 -0
  63. package/dist/core/credentials-manager.d.ts.map +1 -0
  64. package/dist/core/credentials-manager.js +271 -0
  65. package/dist/core/credentials-manager.js.map +1 -0
  66. package/dist/core/project-structure-detector.d.ts +92 -0
  67. package/dist/core/project-structure-detector.d.ts.map +1 -0
  68. package/dist/core/project-structure-detector.js +289 -0
  69. package/dist/core/project-structure-detector.js.map +1 -0
  70. package/dist/core/rfc-generator-v2.d.ts +149 -0
  71. package/dist/core/rfc-generator-v2.d.ts.map +1 -0
  72. package/dist/core/rfc-generator-v2.js +399 -0
  73. package/dist/core/rfc-generator-v2.js.map +1 -0
  74. package/dist/core/rfc-generator.d.ts +147 -0
  75. package/dist/core/rfc-generator.d.ts.map +1 -0
  76. package/dist/core/rfc-generator.js +434 -0
  77. package/dist/core/rfc-generator.js.map +1 -0
  78. package/dist/integrations/ado/ado-client.d.ts +123 -0
  79. package/dist/integrations/ado/ado-client.d.ts.map +1 -0
  80. package/dist/integrations/ado/ado-client.js +398 -0
  81. package/dist/integrations/ado/ado-client.js.map +1 -0
  82. package/dist/integrations/jira/jira-client.d.ts +139 -0
  83. package/dist/integrations/jira/jira-client.d.ts.map +1 -0
  84. package/dist/integrations/jira/jira-client.js +386 -0
  85. package/dist/integrations/jira/jira-client.js.map +1 -0
  86. package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
  87. package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
  88. package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
  89. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
  90. package/dist/integrations/jira/jira-mapper.d.ts +105 -0
  91. package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
  92. package/dist/integrations/jira/jira-mapper.js +494 -0
  93. package/dist/integrations/jira/jira-mapper.js.map +1 -0
  94. package/dist/testing/test-generator.d.ts +117 -0
  95. package/dist/testing/test-generator.d.ts.map +1 -0
  96. package/dist/testing/test-generator.js +370 -0
  97. package/dist/testing/test-generator.js.map +1 -0
  98. package/dist/utils/auto-install.d.ts +3 -0
  99. package/dist/utils/auto-install.d.ts.map +1 -1
  100. package/dist/utils/auto-install.js +16 -82
  101. package/dist/utils/auto-install.js.map +1 -1
  102. package/dist/utils/esm-helpers.d.ts +50 -0
  103. package/dist/utils/esm-helpers.d.ts.map +1 -0
  104. package/dist/utils/esm-helpers.js +57 -0
  105. package/dist/utils/esm-helpers.js.map +1 -0
  106. package/package.json +16 -7
  107. package/src/adapters/README.md +1 -2
  108. package/src/adapters/adapter-base.ts +6 -3
  109. package/src/adapters/adapter-loader.ts +261 -0
  110. package/src/adapters/agents-md-generator.ts +162 -0
  111. package/src/adapters/claude/README.md +6 -14
  112. package/src/adapters/claude/adapter.ts +4 -4
  113. package/src/adapters/claude-md-generator.ts +311 -0
  114. package/src/adapters/codex/README.md +105 -0
  115. package/src/adapters/codex/adapter.ts +333 -0
  116. package/src/adapters/copilot/adapter.ts +36 -65
  117. package/src/adapters/cursor/README.md +0 -2
  118. package/src/adapters/cursor/adapter.ts +46 -92
  119. package/src/adapters/doc-generator.ts +331 -0
  120. package/src/adapters/gemini/README.md +97 -0
  121. package/src/adapters/gemini/adapter.ts +298 -0
  122. package/src/adapters/generic/adapter.ts +61 -57
  123. package/src/adapters/registry.yaml +86 -25
  124. package/src/agents/devops/AGENT.md +16 -18
  125. package/src/agents/docs-writer/AGENT.md +2 -2
  126. package/src/agents/pm/AGENT.md +1 -50
  127. package/src/commands/README.md +134 -111
  128. package/src/commands/{build.md → specweave.do.md} +185 -72
  129. package/src/commands/{done.md → specweave.done.md} +3 -3
  130. package/src/commands/{inc.md → specweave.inc.md} +4 -4
  131. package/src/commands/specweave.increment.md +383 -0
  132. package/src/commands/specweave.md +430 -0
  133. package/src/commands/specweave.next.md +495 -0
  134. package/src/commands/specweave.progress.md +258 -0
  135. package/src/commands/specweave.sync-docs.md +665 -0
  136. package/src/commands/specweave.sync-github.md +269 -0
  137. package/src/commands/specweave.sync-jira.md +197 -0
  138. package/src/commands/{validate.md → specweave.validate.md} +4 -4
  139. package/src/hooks/README.md +19 -29
  140. package/src/hooks/post-task-completion.sh +25 -30
  141. package/src/skills/ado-sync/README.md +1 -36
  142. package/src/skills/bmad-method-expert/SKILL.md +1 -3
  143. package/src/skills/brownfield-analyzer/SKILL.md +429 -23
  144. package/src/skills/brownfield-onboarder/SKILL.md +221 -8
  145. package/src/skills/context-loader/SKILL.md +239 -617
  146. package/src/skills/context-optimizer/SKILL.md +0 -30
  147. package/src/skills/github-sync/SKILL.md +1 -19
  148. package/src/skills/increment-planner/SKILL.md +64 -18
  149. package/src/skills/increment-quality-judge/SKILL.md +1 -36
  150. package/src/skills/jira-sync/README.md +1 -38
  151. package/src/skills/role-orchestrator/README.md +1 -22
  152. package/src/skills/role-orchestrator/SKILL.md +1 -59
  153. package/src/skills/skill-router/SKILL.md +0 -18
  154. package/src/skills/spec-kit-expert/SKILL.md +1 -3
  155. package/src/skills/specweave-detector/SKILL.md +225 -275
  156. package/src/skills/task-builder/README.md +1 -7
  157. package/src/templates/AGENTS.md.template +334 -0
  158. package/src/templates/CLAUDE.md.template +131 -297
  159. package/src/templates/README.md.template +115 -23
  160. package/src/templates/environments/minimal/README.md +0 -1
  161. package/INSTALL.md +0 -848
  162. package/SPECWEAVE.md +0 -711
  163. package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
  164. package/src/adapters/cursor/.cursorrules +0 -325
  165. package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
  166. package/src/commands/create-project.md +0 -528
  167. package/src/commands/generate-docs.md +0 -623
  168. package/src/commands/increment.md +0 -223
  169. package/src/commands/review-docs.md +0 -331
  170. package/src/commands/sync-github.md +0 -115
  171. package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
  172. package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
  173. package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
  174. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
  175. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
  176. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
  177. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
  178. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
  179. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
  180. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
  181. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
  182. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
  183. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
  184. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
  185. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
  186. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
  187. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
  188. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
  189. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
  190. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
  191. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
  192. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
  193. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
  194. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
  195. package/src/skills/cost-optimizer/test-results/README.md +0 -46
  196. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
  197. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
  198. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
  199. package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
  200. package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
  201. package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
  202. package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
  203. package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
  204. package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
  205. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
  206. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
  207. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
  208. package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
  209. package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
  210. package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
  211. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
  212. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
  213. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
  214. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
  215. package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
  216. package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
  217. package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
  218. package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
  219. package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
  220. package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
  221. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
  222. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
  223. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
  224. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
  225. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
  226. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
  227. package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
  228. package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
  229. package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
  230. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
  231. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
  232. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
  233. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
  234. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
  235. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
  236. package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
  237. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
  238. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
  239. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
  240. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
  241. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
  242. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
  243. package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
  244. package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
  245. package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
  246. package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
  247. package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
  248. package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
  249. package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
  250. package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
  251. package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
  252. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
  253. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
  254. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
  255. package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
  256. package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
  257. package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
  258. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
  259. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
  260. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
  261. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
  262. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
  263. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
  264. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
  265. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
  266. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
  267. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
  268. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
  269. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
  270. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
  271. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
  272. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
  273. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
  274. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
  275. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
  276. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
  277. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
  278. package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
  279. package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
  280. package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
  281. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
  282. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
  283. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
  284. package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
  285. package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
  286. package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
  287. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
  288. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
  289. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
  290. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
  291. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
  292. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
  293. package/src/templates/config.yaml +0 -351
  294. /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
@@ -1,75 +0,0 @@
1
- ---
2
- name: "Basic Platform Cost Comparison"
3
- description: "Compare platforms for small NextJS SaaS with 1000 users"
4
- skill: cost-optimizer
5
- priority: P1
6
- estimated_time: "2-3 minutes"
7
-
8
- input:
9
- prompt: "What's the cheapest way to host my NextJS SaaS with Postgres for 1000 users?"
10
- requirements:
11
- app_type: nextjs
12
- users: 1000
13
- database: postgres
14
- database_size: 2GB
15
- storage: 20GB
16
- traffic: "10k requests/day"
17
-
18
- expected_output:
19
- platforms_compared:
20
- - hetzner
21
- - vercel
22
- - aws
23
- - railway
24
- - fly_io
25
- - digitalocean
26
-
27
- recommendation:
28
- platform: hetzner
29
- monthly_cost: "$11-12"
30
- confidence: "high"
31
-
32
- cost_breakdown:
33
- hetzner:
34
- server: "$5.83"
35
- database: "$5.00"
36
- storage: "$0.50"
37
- total: "$11.33"
38
-
39
- vercel:
40
- hosting: "$0 (hobby) or $60 (production)"
41
- database: "$0 (planetscale hobby) or $39 (scaler)"
42
- total: "$0 or $60-99"
43
-
44
- aws:
45
- ec2: "$10"
46
- rds: "$15"
47
- total: "$25"
48
-
49
- savings_vs_alternatives:
50
- vs_vercel: "$48.67/month (production)"
51
- vs_aws: "$13.67/month"
52
- annual_savings: "$584/year (vs Vercel)"
53
-
54
- rationale:
55
- pros:
56
- - "Lowest cost"
57
- - "Predictable pricing"
58
- - "Managed database included"
59
-
60
- cons:
61
- - "EU-only"
62
- - "No auto-scaling"
63
-
64
- validation:
65
- - "Hetzner recommended for budget scenario"
66
- - "Cost under $15/month"
67
- - "At least 3 platforms compared"
68
- - "Savings calculation accurate"
69
- - "Pros and cons listed"
70
-
71
- success_criteria:
72
- - "Recommendation matches requirements"
73
- - "Cost estimate accurate within 10%"
74
- - "Clear rationale provided"
75
- ---
@@ -1,52 +0,0 @@
1
- ---
2
- name: "Budget Constraint Optimization"
3
- description: "Find platform that stays under $20/month budget"
4
- skill: cost-optimizer
5
- priority: P1
6
-
7
- input:
8
- prompt: "I need to deploy my app with database, budget is max $20/month"
9
- requirements:
10
- budget_max: "$20/month"
11
- app_type: fullstack
12
- database: postgres
13
- users: 2000
14
- strict_budget: true
15
-
16
- expected_output:
17
- recommendation:
18
- platform: hetzner
19
- monthly_cost: "$11.33"
20
- within_budget: true
21
- headroom: "$8.67"
22
-
23
- alternatives_within_budget:
24
- - platform: digitalocean
25
- cost: "$18"
26
- within_budget: true
27
-
28
- - platform: railway
29
- cost: "$20"
30
- within_budget: true
31
-
32
- excluded_platforms:
33
- - platform: vercel_production
34
- cost: "$60+"
35
- reason: "Exceeds budget"
36
-
37
- budget_analysis:
38
- recommended_cost: "$11.33"
39
- budget_limit: "$20"
40
- utilization: "56.6%"
41
- savings: "$8.67/month buffer"
42
-
43
- validation:
44
- - "Recommendation under $20/month"
45
- - "All alternatives under budget"
46
- - "Excluded expensive options"
47
- - "Budget utilization calculated"
48
-
49
- success_criteria:
50
- - "Stays within budget"
51
- - "Maximizes value for budget"
52
- ---
@@ -1,63 +0,0 @@
1
- ---
2
- name: "Scale Requirement - 10k Users"
3
- description: "Recommend platform for scaling to 10,000 users"
4
- skill: cost-optimizer
5
- priority: P2
6
-
7
- input:
8
- prompt: "I need to host my SaaS for 10,000 users with high availability"
9
- requirements:
10
- users: 10000
11
- traffic: "100k requests/day"
12
- database: postgres
13
- database_size: 8GB
14
- high_availability: true
15
- global_audience: false
16
-
17
- expected_output:
18
- recommendation:
19
- platform: hetzner
20
- instance: cx21_or_cx31
21
- monthly_cost: "$18-36"
22
-
23
- cost_breakdown:
24
- hetzner_cx21:
25
- server: "$6.90"
26
- database_8gb: "$20"
27
- total: "$26.90"
28
-
29
- hetzner_cx31:
30
- server: "$14.28"
31
- database_8gb: "$20"
32
- total: "$34.28"
33
-
34
- alternatives:
35
- aws:
36
- ec2_t3_medium: "$35"
37
- rds_8gb: "$45"
38
- total: "$80"
39
-
40
- vercel:
41
- pro_plan: "$120"
42
-
43
- recommendation_rationale:
44
- - "CX21 handles 10k users efficiently"
45
- - "Can upgrade to CX31 if needed"
46
- - "$53/month savings vs AWS"
47
- - "$93/month savings vs Vercel"
48
-
49
- scaling_path:
50
- current: "CX21 ($27/mo)"
51
- if_growth: "CX31 ($34/mo)"
52
- enterprise: "Multiple instances + load balancer ($60/mo)"
53
-
54
- validation:
55
- - "Handles 10k users"
56
- - "High availability considered"
57
- - "Scaling path provided"
58
- - "Cost competitive"
59
-
60
- success_criteria:
61
- - "Can handle stated scale"
62
- - "Recommendation appropriate for load"
63
- ---
@@ -1,46 +0,0 @@
1
- # Test Results: cost-optimizer
2
-
3
- ## How to Run Tests
4
-
5
- ### Test 1: Basic Comparison
6
- **Prompt**: "What's the cheapest way to host my NextJS SaaS with Postgres for 1000 users?"
7
-
8
- **Expected**: Hetzner recommended at ~$11/month
9
-
10
- **Verification**:
11
- - [ ] Hetzner recommended
12
- - [ ] Cost under $15/month
13
- - [ ] At least 3 platforms compared
14
- - [ ] Savings shown vs alternatives
15
-
16
- ### Test 2: Budget Constraint
17
- **Prompt**: "I need to deploy my app with database, budget is max $20/month"
18
-
19
- **Expected**: Recommendation stays under $20
20
-
21
- **Verification**:
22
- - [ ] Recommended cost < $20
23
- - [ ] Budget utilization shown
24
- - [ ] Expensive options excluded
25
-
26
- ### Test 3: Scale Requirement
27
- **Prompt**: "I need to host my SaaS for 10,000 users with high availability"
28
-
29
- **Expected**: Hetzner CX21/CX31 recommended at $27-34/month
30
-
31
- **Verification**:
32
- - [ ] Handles 10k users
33
- - [ ] Scaling path provided
34
- - [ ] Cost competitive with alternatives
35
-
36
- ## Test Execution
37
-
38
- **Status**: ⏳ Pending
39
-
40
- Mark tests as ✅ Passed or ❌ Failed after execution.
41
-
42
- ## Success Criteria
43
-
44
- ✅ All 3 tests recommend appropriate platform
45
- ✅ Cost estimates accurate within 10%
46
- ✅ Savings calculations correct
@@ -1,23 +0,0 @@
1
- ---
2
- name: "Token Structure Validation"
3
- description: "Test validation of design token structure"
4
- input:
5
- tokens:
6
- colors:
7
- primary:
8
- 500: "#3b82f6"
9
- typography:
10
- heading1:
11
- fontSize: "2.25rem"
12
- expected_output:
13
- type: "validation_result"
14
- valid: true
15
- issues: []
16
- validation:
17
- - "Naming convention followed"
18
- - "All required categories present"
19
- - "Values in correct format"
20
- success_criteria:
21
- - "Validation passes"
22
- - "No issues reported"
23
- ---
@@ -1,24 +0,0 @@
1
- ---
2
- name: "Component Hierarchy Validation"
3
- description: "Test validation of Atomic Design hierarchy"
4
- input:
5
- components:
6
- atoms:
7
- - "Button"
8
- - "Input"
9
- molecules:
10
- - "FormField"
11
- organisms:
12
- - "Navigation"
13
- expected_output:
14
- type: "validation_result"
15
- valid: true
16
- hierarchy_correct: true
17
- validation:
18
- - "Atoms are smallest components"
19
- - "Molecules compose atoms"
20
- - "Organisms compose molecules/atoms"
21
- success_criteria:
22
- - "Hierarchy follows Atomic Design"
23
- - "No circular dependencies"
24
- ---
@@ -1,23 +0,0 @@
1
- ---
2
- name: "Accessibility Checklist Validation"
3
- description: "Test validation of accessibility requirements"
4
- input:
5
- component: "Button"
6
- accessibility:
7
- aria_label: true
8
- keyboard_navigation: true
9
- color_contrast: 4.6
10
- touch_target: "44x44"
11
- expected_output:
12
- type: "validation_result"
13
- valid: true
14
- wcag_compliant: true
15
- validation:
16
- - "ARIA labels present"
17
- - "Keyboard navigation supported"
18
- - "Color contrast >= 4.5:1"
19
- - "Touch targets >= 44x44px"
20
- success_criteria:
21
- - "WCAG 2.1 AA compliance"
22
- - "No accessibility violations"
23
- ---
@@ -1,13 +0,0 @@
1
- name: "Create C4 Context Diagram"
2
- description: "Test creating a C4 Level 1 context diagram for a system"
3
- user_input: "Create a C4 context diagram for an e-commerce platform"
4
- expected_behavior:
5
- - Generates valid Mermaid C4Context diagram
6
- - Includes system boundary
7
- - Shows external actors (users, external systems)
8
- - Shows relationships and dependencies
9
- validation:
10
- - Diagram starts with C4Context keyword
11
- - Contains Person/System elements
12
- - Includes Boundary definition
13
- - Has BiRel or Rel relationship arrows
@@ -1,13 +0,0 @@
1
- name: "Create Sequence Diagram"
2
- description: "Test creating a sequence diagram for API authentication flow"
3
- user_input: "Create a sequence diagram for OAuth 2.0 authentication flow"
4
- expected_behavior:
5
- - Generates valid Mermaid sequence diagram
6
- - Shows participants (client, auth server, resource server)
7
- - Includes authentication steps in correct order
8
- - Shows token exchange flow
9
- validation:
10
- - Diagram starts with sequenceDiagram keyword
11
- - Contains participant declarations
12
- - Has sequential messages (->>, -->)
13
- - Includes notes for clarity
@@ -1,13 +0,0 @@
1
- name: "Create Entity Relationship Diagram"
2
- description: "Test creating an ER diagram for database schema"
3
- user_input: "Create an ER diagram for a multi-tenant SaaS database"
4
- expected_behavior:
5
- - Generates valid Mermaid ER diagram
6
- - Shows entities (tables)
7
- - Shows relationships with cardinality
8
- - Includes key attributes
9
- validation:
10
- - Diagram starts with erDiagram keyword
11
- - Contains entity definitions
12
- - Has relationships (||--o{, etc.)
13
- - Shows primary/foreign key fields
@@ -1,9 +0,0 @@
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
- ---
@@ -1,9 +0,0 @@
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
- ---
@@ -1,8 +0,0 @@
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
- ---
@@ -1,12 +0,0 @@
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
- ---
@@ -1,12 +0,0 @@
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
- ---
@@ -1,12 +0,0 @@
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
- ---
@@ -1,14 +0,0 @@
1
- name: "Create ASP.NET Core REST API"
2
- description: "Test creating a REST API controller with Entity Framework"
3
- user_input: "Create a REST API for managing products with CRUD operations"
4
- expected_behavior:
5
- - Generates ASP.NET Core controller with appropriate attributes
6
- - Includes Entity Framework DbContext integration
7
- - Implements CRUD endpoints (GET, POST, PUT, DELETE)
8
- - Includes async/await pattern
9
- - Adds proper HTTP status codes
10
- validation:
11
- - Uses [ApiController] and [Route] attributes
12
- - Controller inherits from ControllerBase
13
- - Methods use async Task<ActionResult> pattern
14
- - Includes dependency injection for DbContext
@@ -1,13 +0,0 @@
1
- name: "Implement JWT Authentication"
2
- description: "Test implementing JWT authentication in ASP.NET Core"
3
- user_input: "Add JWT token-based authentication to my API"
4
- expected_behavior:
5
- - Configures JWT authentication in Program.cs/Startup.cs
6
- - Creates login endpoint that generates JWT tokens
7
- - Includes claims-based authorization
8
- - Protects endpoints with [Authorize] attribute
9
- validation:
10
- - Uses Microsoft.AspNetCore.Authentication.JwtBearer
11
- - Configures token validation parameters
12
- - Generates tokens with claims
13
- - Implements token refresh logic
@@ -1,13 +0,0 @@
1
- name: "Create Minimal API"
2
- description: "Test creating .NET 6+ minimal API endpoints"
3
- user_input: "Create a minimal API for user management"
4
- expected_behavior:
5
- - Uses app.MapGet/MapPost/MapPut/MapDelete
6
- - Implements endpoints in Program.cs
7
- - Includes route parameters and query strings
8
- - Uses dependency injection
9
- validation:
10
- - No controller classes needed
11
- - Uses lambda expressions for endpoints
12
- - Implements proper HTTP verbs
13
- - Includes validation and error handling
@@ -1,54 +0,0 @@
1
- id: TC-001
2
- name: Basic Navigation Test
3
- description: Verify that the skill can navigate to a webpage and capture a screenshot
4
- priority: high
5
- category: functional
6
-
7
- preconditions:
8
- - Playwright is installed
9
- - Chromium browser is available
10
- - Development server is running on localhost:3000
11
-
12
- test_steps:
13
- - step: 1
14
- action: Create test script that navigates to localhost:3000
15
- expected: Test script is created in /tmp/
16
-
17
- - step: 2
18
- action: Execute test script via execute.js
19
- expected: Browser launches and navigates to homepage
20
-
21
- - step: 3
22
- action: Capture full-page screenshot
23
- expected: Screenshot is saved to /tmp/ with timestamp
24
-
25
- - step: 4
26
- action: Verify page title
27
- expected: Page title is captured and logged to console
28
-
29
- - step: 5
30
- action: Close browser
31
- expected: Browser closes cleanly without errors
32
-
33
- acceptance_criteria:
34
- - Browser launches in visible mode (headless: false)
35
- - Navigation completes successfully
36
- - Screenshot file is created with correct naming pattern
37
- - Console output shows execution steps
38
- - No errors are thrown during execution
39
-
40
- test_data:
41
- url: http://localhost:3000
42
- expected_title: SpecWeave
43
- screenshot_pattern: /tmp/homepage-*.png
44
-
45
- expected_results:
46
- - Browser opens visibly
47
- - Page loads within 10 seconds
48
- - Screenshot file exists and is valid PNG
49
- - Console shows "✅ Test passed" message
50
- - Process exits with code 0
51
-
52
- notes: |
53
- This is the most basic test case to verify core functionality.
54
- All other tests depend on this working correctly.
@@ -1,64 +0,0 @@
1
- id: TC-002
2
- name: Form Interaction Test
3
- description: Verify that the skill can interact with form elements using helper utilities
4
- priority: high
5
- category: functional
6
-
7
- preconditions:
8
- - TC-001 passes
9
- - Test page has a login form with email and password fields
10
- - safeType and safeClick utilities are available
11
-
12
- test_steps:
13
- - step: 1
14
- action: Navigate to login page
15
- expected: Login form is visible
16
-
17
- - step: 2
18
- action: Use safeType() to enter email address
19
- expected: Email field is filled with test email
20
-
21
- - step: 3
22
- action: Use safeType() to enter password
23
- expected: Password field is filled (masked)
24
-
25
- - step: 4
26
- action: Use safeClick() to submit form
27
- expected: Form submission is triggered
28
-
29
- - step: 5
30
- action: Wait for navigation or success message
31
- expected: User is redirected or sees success state
32
-
33
- - step: 6
34
- action: Capture screenshot of result
35
- expected: Screenshot shows post-login state
36
-
37
- acceptance_criteria:
38
- - safeType() handles focus and clearing automatically
39
- - safeType() verifies text was entered correctly
40
- - safeClick() waits for element to be visible
41
- - Form submission completes without timeout
42
- - Screenshots capture both pre and post submission states
43
-
44
- test_data:
45
- email: test@example.com
46
- password: testpassword123
47
- login_url: http://localhost:3000/login
48
- expected_redirect: /dashboard
49
-
50
- expected_results:
51
- - Email field contains entered value
52
- - Password field is masked
53
- - Form submits successfully
54
- - Navigation completes within 10 seconds
55
- - Success state is reached
56
-
57
- error_scenarios:
58
- - If email field not found: Error message with selector details
59
- - If click times out: Retry up to 3 times
60
- - If verification fails: Clear error about mismatch
61
-
62
- notes: |
63
- Tests the core interaction utilities that make Playwright easier to use.
64
- safeType() and safeClick() should handle common edge cases automatically.
@@ -1,74 +0,0 @@
1
- id: TC-003
2
- name: SpecWeave Integration Test
3
- description: Verify that the skill detects SpecWeave context and generates test reports in increment folders
4
- priority: medium
5
- category: integration
6
-
7
- preconditions:
8
- - TC-001 and TC-002 pass
9
- - Running in a SpecWeave project (.specweave/ directory exists)
10
- - Active increment with in-progress status exists
11
- - Increment has reports/ directory
12
-
13
- test_steps:
14
- - step: 1
15
- action: Execute test from within SpecWeave project
16
- expected: Executor detects SpecWeave context
17
-
18
- - step: 2
19
- action: Check console output for SpecWeave detection message
20
- expected: "🔷 SpecWeave project detected" is logged
21
-
22
- - step: 3
23
- action: Verify active increment detection
24
- expected: "📦 Active increment: 0001-feature-name" is logged
25
-
26
- - step: 4
27
- action: Run test that generates results
28
- expected: Test executes and collects results
29
-
30
- - step: 5
31
- action: Generate test report using generateTestReport()
32
- expected: Markdown report is created
33
-
34
- - step: 6
35
- action: Save report using saveTestReport()
36
- expected: Report is saved to .specweave/increments/{id}/reports/
37
-
38
- acceptance_criteria:
39
- - detectSpecWeaveContext() correctly identifies SpecWeave projects
40
- - Active increment is detected by checking tasks.md status
41
- - Test reports follow SpecWeave format (see SKILL.md)
42
- - Reports are saved to correct increment folder
43
- - Report includes all sections (summary, results, performance, accessibility)
44
-
45
- test_data:
46
- project_root: /path/to/specweave-project
47
- increment_id: "0001-test-feature"
48
- increment_status: in-progress
49
- report_filename: e2e-test-report.md
50
-
51
- expected_results:
52
- - isSpecweaveProject: true
53
- - activeIncrement: "0001-test-feature"
54
- - Report file exists at: .specweave/increments/0001-test-feature/reports/e2e-test-report.md
55
- - Report contains proper Markdown formatting
56
- - Report includes timestamp and test results
57
-
58
- report_sections_required:
59
- - Test Summary (total, passed, failed, skipped)
60
- - Test Results (individual test details)
61
- - Performance Metrics (page load, interactions)
62
- - Accessibility Issues (grouped by type)
63
- - Recommendations (actionable items)
64
-
65
- edge_cases:
66
- - No active increment: Should still work, just without increment context
67
- - Multiple in-progress increments: Use the first one found
68
- - reports/ directory missing: Create it automatically
69
- - Running outside SpecWeave: Should work normally without SpecWeave features
70
-
71
- notes: |
72
- This test verifies the SpecWeave-specific enhancements that differentiate
73
- this skill from the original playwright-skill. The ability to automatically
74
- detect context and generate reports in the right place is a key feature.