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,126 +0,0 @@
1
- ---
2
- name: "Hetzner Provisioning with SSL (Let's Encrypt)"
3
- description: "Provision infrastructure with automatic SSL certificate setup using Let's Encrypt"
4
- skill: hetzner-provisioner
5
- priority: P1
6
- estimated_time: "15-20 minutes"
7
-
8
- input:
9
- prompt: "Deploy my NextJS app on Hetzner with Postgres and SSL for my-saas.com"
10
- requirements:
11
- app_type: nextjs
12
- instance_type: cx11
13
- database: postgres
14
- ssl: true
15
- domain: "my-saas.com"
16
- budget: "$15/month"
17
-
18
- expected_output:
19
- terraform_files_generated:
20
- - main.tf
21
- - variables.tf
22
- - outputs.tf
23
- - cloud-init.yaml
24
- - database.tf
25
-
26
- terraform_resources:
27
- - type: hcloud_server
28
- name: app
29
- server_type: cx11
30
-
31
- - type: hcloud_database
32
- name: postgres
33
-
34
- - type: hcloud_firewall
35
- name: app
36
- rules:
37
- - port: 80 # HTTP (redirects to HTTPS)
38
- - port: 443 # HTTPS
39
- - port: 22 # SSH
40
-
41
- nginx_config_generated: true
42
- nginx_config_path: "nginx/nginx.conf"
43
-
44
- certbot_setup: true
45
- certbot_commands:
46
- - "certbot --nginx -d my-saas.com -d www.my-saas.com"
47
- - "certbot renew --dry-run" # Auto-renewal test
48
-
49
- ssl_configuration:
50
- provider: "Let's Encrypt"
51
- auto_renewal: true
52
- renewal_schedule: "Monthly via cron"
53
- cert_path: "/etc/letsencrypt/live/my-saas.com/fullchain.pem"
54
- key_path: "/etc/letsencrypt/live/my-saas.com/privkey.pem"
55
-
56
- cloud_init_yaml:
57
- packages:
58
- - nginx
59
- - certbot
60
- - python3-certbot-nginx
61
- runcmd:
62
- - "systemctl enable nginx"
63
- - "systemctl start nginx"
64
-
65
- dns_configuration_guide: true
66
- dns_records_required:
67
- - type: A
68
- name: "@"
69
- value: "[SERVER_IP]"
70
- ttl: 3600
71
-
72
- - type: A
73
- name: "www"
74
- value: "[SERVER_IP]"
75
- ttl: 3600
76
-
77
- cost_estimate:
78
- monthly: "$11.33"
79
- breakdown:
80
- - "CX11 instance: $5.83/month"
81
- - "Managed Postgres (2GB): $5.00/month"
82
- - "Storage (20GB): $0.50/month"
83
- - "SSL (Let's Encrypt): Free"
84
- total: "$11.33/month"
85
- within_budget: true
86
-
87
- deployment_guide:
88
- prerequisites:
89
- - "Domain registered (my-saas.com)"
90
- - "DNS access to create A records"
91
-
92
- steps:
93
- - "1. Run terraform apply to provision infrastructure"
94
- - "2. Note the server IP from terraform output"
95
- - "3. Create DNS A records pointing to server IP"
96
- - "4. Wait for DNS propagation (5-30 minutes)"
97
- - "5. SSH into server and run certbot command"
98
- - "6. Verify SSL: https://my-saas.com"
99
-
100
- post_deployment:
101
- - "SSL auto-renews via certbot cron job"
102
- - "Force HTTPS redirect configured"
103
- - "SSL certificate expires in 90 days, renews automatically"
104
-
105
- validation:
106
- - "nginx.conf exists and contains SSL configuration"
107
- - "certbot setup script exists"
108
- - "cloud-init includes nginx and certbot packages"
109
- - "DNS configuration guide provided"
110
- - "HTTPS redirect configured (port 80 → 443)"
111
- - "Cost remains under $15/month"
112
-
113
- expected_errors:
114
- - possible: "DNS not propagated yet"
115
- solution: "Wait for DNS propagation (check with dig my-saas.com)"
116
-
117
- - possible: "Certbot fails - port 80 not accessible"
118
- solution: "Check firewall rules allow port 80"
119
-
120
- success_criteria:
121
- - "SSL certificate obtained successfully"
122
- - "HTTPS working: https://my-saas.com"
123
- - "HTTP redirects to HTTPS"
124
- - "Auto-renewal configured"
125
- - "All deployment steps documented"
126
- ---
@@ -1,259 +0,0 @@
1
- # Test Results: hetzner-provisioner
2
-
3
- This directory contains test execution results for the hetzner-provisioner skill.
4
-
5
- ## How to Run Tests
6
-
7
- ### Prerequisites
8
- 1. Hetzner Cloud account (sign up at https://www.hetzner.com/cloud)
9
- 2. Hetzner API token (create in Hetzner Cloud Console)
10
- 3. Terraform installed (`brew install terraform` on macOS)
11
- 4. Optional: Domain name for SSL test
12
-
13
- ### Running Test 1: Basic Provision
14
-
15
- **Prompt to Claude Code**:
16
- ```
17
- Deploy my NextJS app on Hetzner as cheaply as possible
18
- ```
19
-
20
- **Expected Behavior**:
21
- 1. hetzner-provisioner skill activates
22
- 2. Generates Terraform files in `terraform/` directory
23
- 3. Outputs cost estimate: ~$6-7/month
24
- 4. Provides deployment guide
25
-
26
- **Verification Steps**:
27
- ```bash
28
- # 1. Check generated files
29
- ls terraform/
30
- # Should see: main.tf, variables.tf, outputs.tf
31
-
32
- # 2. Validate Terraform
33
- cd terraform
34
- terraform init
35
- terraform validate
36
- # Should output: "Success! The configuration is valid."
37
-
38
- # 3. Check cost estimate
39
- terraform plan
40
- # Should show estimated costs
41
-
42
- # 4. (Optional) Apply infrastructure
43
- export TF_VAR_hcloud_token="your-hetzner-api-token"
44
- terraform apply
45
- # Review plan, type 'yes' to provision
46
-
47
- # 5. Verify server is running
48
- # Check Hetzner Cloud Console for new server
49
- ```
50
-
51
- **Expected Output**:
52
- - `terraform validate` succeeds
53
- - Cost in `terraform plan` is under $10/month
54
- - Server provisions successfully (if applied)
55
-
56
- ---
57
-
58
- ### Running Test 2: Postgres Provision
59
-
60
- **Prompt to Claude Code**:
61
- ```
62
- Deploy my NextJS app on Hetzner with Postgres database
63
- ```
64
-
65
- **Expected Behavior**:
66
- 1. Generates Terraform with both server + database
67
- 2. Cost estimate: ~$11-12/month
68
- 3. Outputs database connection string
69
-
70
- **Verification Steps**:
71
- ```bash
72
- # 1. Validate Terraform
73
- cd terraform
74
- terraform init
75
- terraform validate
76
-
77
- # 2. Check resources
78
- terraform plan | grep "hcloud_database"
79
- # Should see Postgres database resource
80
-
81
- # 3. Check cost
82
- terraform plan | grep "cost"
83
- # Should be under $15/month
84
-
85
- # 4. (Optional) Apply and test connection
86
- terraform apply
87
- # Wait for database to provision (~5-10 minutes)
88
-
89
- # 5. Test database connection
90
- psql "$(terraform output -raw database_url)"
91
- # Should connect successfully
92
- ```
93
-
94
- **Expected Output**:
95
- - Database resource in Terraform plan
96
- - Connection string in `terraform output`
97
- - Can connect to database via psql
98
-
99
- ---
100
-
101
- ### Running Test 3: SSL Configuration
102
-
103
- **Prompt to Claude Code**:
104
- ```
105
- Deploy my NextJS app on Hetzner with Postgres and SSL for my-saas.com
106
- ```
107
-
108
- **Prerequisites**:
109
- - Domain name (e.g., my-saas.com)
110
- - DNS access to create A records
111
-
112
- **Expected Behavior**:
113
- 1. Generates Terraform with Nginx + Certbot
114
- 2. Provides DNS configuration guide
115
- 3. Outputs SSL setup commands
116
-
117
- **Verification Steps**:
118
- ```bash
119
- # 1. Apply infrastructure
120
- cd terraform
121
- terraform apply
122
-
123
- # 2. Get server IP
124
- SERVER_IP=$(terraform output -raw server_ip)
125
- echo "Server IP: $SERVER_IP"
126
-
127
- # 3. Configure DNS (in your DNS provider)
128
- # Create A record: my-saas.com → $SERVER_IP
129
- # Create A record: www.my-saas.com → $SERVER_IP
130
-
131
- # 4. Wait for DNS propagation
132
- dig my-saas.com +short
133
- # Should return $SERVER_IP
134
-
135
- # 5. SSH into server
136
- ssh root@$SERVER_IP
137
-
138
- # 6. Run certbot (on server)
139
- certbot --nginx -d my-saas.com -d www.my-saas.com
140
- # Follow prompts, enter email
141
-
142
- # 7. Test HTTPS
143
- curl -I https://my-saas.com
144
- # Should return HTTP/2 200 with valid SSL
145
-
146
- # 8. Test HTTP redirect
147
- curl -I http://my-saas.com
148
- # Should return 301 redirect to HTTPS
149
-
150
- # 9. Check SSL certificate
151
- echo | openssl s_client -connect my-saas.com:443 | grep "Verify return code"
152
- # Should output: "Verify return code: 0 (ok)"
153
- ```
154
-
155
- **Expected Output**:
156
- - SSL certificate obtained successfully
157
- - HTTPS works: `https://my-saas.com`
158
- - HTTP redirects to HTTPS
159
- - SSL Labs test: A or A+ rating
160
-
161
- ---
162
-
163
- ## Test Execution Log
164
-
165
- ### Test 1: Basic Provision
166
- **Date**: [When you run this]
167
- **Status**: ⏳ Pending | ✅ Passed | ❌ Failed
168
- **Result**:
169
- ```
170
- [Paste terraform validate output here]
171
- [Paste cost estimate here]
172
- [Paste any errors encountered]
173
- ```
174
-
175
- ### Test 2: Postgres Provision
176
- **Date**: [When you run this]
177
- **Status**: ⏳ Pending | ✅ Passed | ❌ Failed
178
- **Result**:
179
- ```
180
- [Paste terraform plan output showing database]
181
- [Paste database connection test result]
182
- ```
183
-
184
- ### Test 3: SSL Configuration
185
- **Date**: [When you run this]
186
- **Status**: ⏳ Pending | ✅ Passed | ❌ Failed
187
- **Result**:
188
- ```
189
- [Paste certbot output]
190
- [Paste curl -I https://my-saas.com output]
191
- [Paste SSL test result]
192
- ```
193
-
194
- ---
195
-
196
- ## Screenshots
197
-
198
- ### Successful Deployment
199
- (Add screenshot of Hetzner Cloud Console showing provisioned resources)
200
-
201
- ### SSL Certificate
202
- (Add screenshot of browser showing valid HTTPS)
203
-
204
- ### Cost Breakdown
205
- (Add screenshot of Hetzner billing showing monthly costs)
206
-
207
- ---
208
-
209
- ## Troubleshooting
210
-
211
- ### Issue: "terraform validate" fails
212
- **Solution**:
213
- ```bash
214
- # Check Terraform syntax
215
- terraform fmt
216
- terraform validate
217
- # Review error messages and fix syntax
218
- ```
219
-
220
- ### Issue: Database won't connect
221
- **Solution**:
222
- ```bash
223
- # Check database is running
224
- terraform output database_host
225
- # Verify firewall rules allow connection
226
- # Check DATABASE_URL format
227
- ```
228
-
229
- ### Issue: Certbot fails
230
- **Solutions**:
231
- - DNS not propagated: Wait 30 minutes, try again
232
- - Port 80 blocked: Check firewall allows port 80
233
- - Email required: Provide valid email to certbot
234
-
235
- ---
236
-
237
- ## Cleanup
238
-
239
- To destroy test infrastructure and avoid charges:
240
-
241
- ```bash
242
- cd terraform
243
- terraform destroy
244
- # Type 'yes' to confirm
245
-
246
- # Verify in Hetzner Cloud Console that resources are deleted
247
- ```
248
-
249
- **Important**: Hetzner charges by the hour, so destroy resources when done testing.
250
-
251
- ---
252
-
253
- ## Success Criteria Summary
254
-
255
- ✅ Test 1: Terraform validates, cost <$10/month
256
- ✅ Test 2: Database provisions, can connect
257
- ✅ Test 3: SSL works, HTTPS redirects
258
-
259
- **All tests must pass before skill is considered production-ready.**
@@ -1,27 +0,0 @@
1
- ---
2
- name: "Basic Feature Planning"
3
- description: "Tests if increment-planner can create a basic feature from a simple description"
4
- input:
5
- prompt: "Plan a feature for user authentication with email and password"
6
- files: []
7
- expected_output:
8
- type: "files_generated"
9
- files:
10
- - "features/001-user-authentication/spec.md"
11
- - "features/001-user-authentication/plan.md"
12
- - "features/001-user-authentication/tasks.md"
13
- - "features/001-user-authentication/tests.md"
14
- - "features/001-user-authentication/context-manifest.yaml"
15
- contains:
16
- - "User authentication"
17
- - "P1"
18
- - "Acceptance Criteria"
19
- - "Test-First"
20
- validation:
21
- - "All files exist in correct directory"
22
- - "spec.md is technology-agnostic"
23
- - "plan.md contains technical decisions"
24
- - "tasks.md has test-first sequencing"
25
- - "tests.md covers P1 user stories"
26
- - "context-manifest.yaml has token budget"
27
- ---
@@ -1,30 +0,0 @@
1
- ---
2
- name: "Complex Feature with Multiple User Stories"
3
- description: "Tests feature planning for a complex feature with multiple priorities"
4
- input:
5
- prompt: "Plan a feature for Stripe payment integration including subscriptions, one-time payments, and webhooks"
6
- files: []
7
- expected_output:
8
- type: "files_generated"
9
- files:
10
- - "features/002-stripe-payment-integration/spec.md"
11
- - "features/002-stripe-payment-integration/plan.md"
12
- - "features/002-stripe-payment-integration/tasks.md"
13
- - "features/002-stripe-payment-integration/tests.md"
14
- - "features/002-stripe-payment-integration/context-manifest.yaml"
15
- contains:
16
- - "US1"
17
- - "US2"
18
- - "US3"
19
- - "P1"
20
- - "P2"
21
- - "Stripe"
22
- - "subscriptions"
23
- - "webhooks"
24
- validation:
25
- - "Multiple user stories with different priorities"
26
- - "P1/P2/P3 prioritization present"
27
- - "tasks.md organized by user story"
28
- - "tests.md has integration tests"
29
- - "context-manifest.yaml references payment specs"
30
- ---
@@ -1,24 +0,0 @@
1
- ---
2
- name: "Auto-Numbering Feature Test"
3
- description: "Tests that features are correctly auto-numbered when previous features exist"
4
- input:
5
- prompt: "Plan a feature for email notifications"
6
- files:
7
- - "features/001-user-authentication/"
8
- - "features/002-stripe-payment-integration/"
9
- expected_output:
10
- type: "files_generated"
11
- files:
12
- - "features/003-email-notifications/spec.md"
13
- - "features/003-email-notifications/plan.md"
14
- - "features/003-email-notifications/tasks.md"
15
- - "features/003-email-notifications/tests.md"
16
- - "features/003-email-notifications/context-manifest.yaml"
17
- contains:
18
- - "feature: 003-email-notifications"
19
- - "003"
20
- validation:
21
- - "Feature number is 003 (incremented from 002)"
22
- - "No conflicts with existing features"
23
- - "features/README.md updated with new feature"
24
- ---
@@ -1,95 +0,0 @@
1
- ---
2
- name: "Basic Quality Assessment - Good Spec"
3
- description: "Evaluate a well-written specification with clear acceptance criteria"
4
- skill: increment-quality-judge
5
- priority: P1
6
- estimated_time: "2-3 minutes"
7
-
8
- input:
9
- prompt: "Assess the quality of the authentication spec"
10
- spec_content: |
11
- # Authentication Feature
12
-
13
- ## Overview
14
- Implement JWT-based authentication with refresh tokens for secure user access.
15
-
16
- ## Acceptance Criteria
17
- - AC-001: User can log in with email/password, receiving JWT token within 2 seconds
18
- - AC-002: JWT token expires after 1 hour, requires refresh
19
- - AC-003: Failed login attempts (>5) lock account for 15 minutes
20
- - AC-004: Password must be 8+ characters with uppercase, lowercase, number, special char
21
-
22
- ## Security
23
- - Passwords hashed with bcrypt (cost factor: 12)
24
- - JWTs signed with RS256 (private key rotation every 90 days)
25
- - Rate limiting: 5 login attempts per 15 minutes per IP
26
-
27
- ## Performance
28
- - Login latency: p95 < 500ms, p99 < 1000ms
29
- - Concurrent logins: Support 100 logins/second
30
-
31
- ## Error Handling
32
- - Invalid credentials: Return 401 with error code AUTH_001
33
- - Account locked: Return 403 with error code AUTH_002
34
- - Rate limit exceeded: Return 429 with retry-after header
35
-
36
- expected_output:
37
- overall_score: 0.85-0.95
38
- score_range: "excellent" # 85-100
39
-
40
- dimension_scores:
41
- clarity:
42
- min: 0.90
43
- rationale: "Clear problem statement, well-defined objectives"
44
-
45
- testability:
46
- min: 0.90
47
- rationale: "All acceptance criteria measurable with specific metrics"
48
-
49
- completeness:
50
- min: 0.85
51
- rationale: "Functional and non-functional requirements covered"
52
-
53
- feasibility:
54
- min: 0.85
55
- rationale: "Realistic timeline and technical constraints"
56
-
57
- maintainability:
58
- min: 0.80
59
- rationale: "Good structure, some room for modularity improvement"
60
-
61
- edge_cases:
62
- min: 0.85
63
- rationale: "Error scenarios and rate limiting specified"
64
-
65
- issues_found:
66
- count: 0-2
67
- severity_breakdown:
68
- critical: 0
69
- major: 0
70
- minor: 0-2
71
-
72
- suggestions:
73
- count: 0-3
74
- priority_breakdown:
75
- high: 0-1
76
- medium: 0-2
77
- low: 0-1
78
-
79
- confidence: 0.85-0.95
80
-
81
- validation:
82
- - "Overall score >= 0.85"
83
- - "Clarity dimension >= 0.90"
84
- - "Testability dimension >= 0.90"
85
- - "No critical or major issues"
86
- - "Confidence >= 0.85"
87
- - "All 6 dimensions evaluated"
88
-
89
- success_criteria:
90
- - "Score reflects high-quality specification"
91
- - "Detailed dimension breakdown provided"
92
- - "Minimal or no issues found"
93
- - "High confidence in assessment"
94
- - "Clear rationale for each dimension"
95
- ---
@@ -1,108 +0,0 @@
1
- ---
2
- name: "Quality Assessment - Poor Spec Needing Improvement"
3
- description: "Evaluate a vague specification with untestable criteria, triggering feedback loop"
4
- skill: increment-quality-judge
5
- priority: P1
6
- estimated_time: "2-3 minutes"
7
-
8
- input:
9
- prompt: "Assess the quality of the payment processing spec"
10
- spec_content: |
11
- # Payment Processing
12
-
13
- ## Overview
14
- Add payment feature to the app.
15
-
16
- ## Requirements
17
- - Users can make payments
18
- - System should be secure
19
- - Payments should be fast
20
- - Handle errors properly
21
-
22
- ## Technical Details
23
- - Use some payment provider
24
- - Store payment info
25
- - Send receipts
26
-
27
- expected_output:
28
- overall_score: 0.50-0.70
29
- score_range: "needs_work" # Below 70
30
-
31
- dimension_scores:
32
- clarity:
33
- max: 0.65
34
- rationale: "Vague problem statement, objectives unclear"
35
-
36
- testability:
37
- max: 0.55
38
- rationale: "Acceptance criteria not measurable (no metrics, thresholds)"
39
-
40
- completeness:
41
- max: 0.60
42
- rationale: "Missing error handling details, security specs, performance targets"
43
-
44
- feasibility:
45
- max: 0.70
46
- rationale: "No timeline, resource requirements unclear"
47
-
48
- maintainability:
49
- max: 0.65
50
- rationale: "Lacks modularity, extension points undefined"
51
-
52
- edge_cases:
53
- max: 0.50
54
- rationale: "No failure scenarios, retry logic, or edge case handling"
55
-
56
- issues_found:
57
- count: 5-8
58
- severity_breakdown:
59
- critical: 0-1
60
- major: 3-5
61
- minor: 2-3
62
-
63
- typical_issues:
64
- - severity: "major"
65
- description: "Acceptance criteria not testable"
66
- location: "Requirements section"
67
- suggestion: "Add measurable metrics (e.g., 'Payment completes in <3s')"
68
-
69
- - severity: "major"
70
- description: "Security requirements too vague"
71
- location: "Technical Details"
72
- suggestion: "Specify: PCI-DSS compliance, encryption standards (TLS 1.3), tokenization"
73
-
74
- - severity: "major"
75
- description: "No error handling specification"
76
- location: "Requirements"
77
- suggestion: "Define error scenarios: payment declined, timeout, network failure"
78
-
79
- - severity: "minor"
80
- description: "Payment provider not specified"
81
- location: "Technical Details"
82
- suggestion: "Choose provider: Stripe, PayPal, or Square"
83
-
84
- suggestions:
85
- count: 5-8
86
- priority_breakdown:
87
- high: 3-5
88
- medium: 2-3
89
- low: 0-1
90
-
91
- confidence: 0.85-0.95 # High confidence even for poor spec
92
-
93
- validation:
94
- - "Overall score < 0.70"
95
- - "Testability dimension < 0.60"
96
- - "At least 5 issues found"
97
- - "At least 3 major issues"
98
- - "At least 5 suggestions provided"
99
- - "High priority suggestions >= 3"
100
- - "Confidence >= 0.85"
101
-
102
- success_criteria:
103
- - "Score accurately reflects poor quality"
104
- - "All 6 dimensions show low scores"
105
- - "Issues clearly documented with locations"
106
- - "Actionable suggestions with examples"
107
- - "Would trigger feedback loop (score < 0.80)"
108
- ---