specweave 0.1.9 → 0.3.1
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.
- package/CLAUDE.md +600 -0
- package/README.md +263 -81
- package/bin/install-all.sh +1 -1
- package/bin/install-commands.sh +3 -3
- package/bin/specweave.js +39 -9
- package/dist/adapters/adapter-base.d.ts +1 -1
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +6 -41
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.js +1 -2
- package/dist/adapters/adapter-interface.js.map +1 -1
- package/dist/adapters/adapter-loader.d.ts +86 -0
- package/dist/adapters/adapter-loader.d.ts.map +1 -0
- package/dist/adapters/adapter-loader.js +216 -0
- package/dist/adapters/adapter-loader.js.map +1 -0
- package/dist/adapters/agents-md-generator.d.ts +48 -0
- package/dist/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/adapters/agents-md-generator.js +132 -0
- package/dist/adapters/agents-md-generator.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +2 -2
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +5 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/claude-md-generator.d.ts +78 -0
- package/dist/adapters/claude-md-generator.d.ts.map +1 -0
- package/dist/adapters/claude-md-generator.js +246 -0
- package/dist/adapters/claude-md-generator.js.map +1 -0
- package/dist/adapters/codex/adapter.d.ts +50 -0
- package/dist/adapters/codex/adapter.d.ts.map +1 -0
- package/dist/adapters/codex/adapter.js +316 -0
- package/dist/adapters/codex/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +10 -9
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +35 -100
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +8 -6
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +47 -130
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/doc-generator.d.ts +69 -0
- package/dist/adapters/doc-generator.d.ts.map +1 -0
- package/dist/adapters/doc-generator.js +247 -0
- package/dist/adapters/doc-generator.js.map +1 -0
- package/dist/adapters/gemini/adapter.d.ts +50 -0
- package/dist/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/adapters/gemini/adapter.js +281 -0
- package/dist/adapters/gemini/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +7 -4
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +60 -59
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +327 -177
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +22 -58
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +27 -64
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/core/credentials-manager.d.ts +90 -0
- package/dist/core/credentials-manager.d.ts.map +1 -0
- package/dist/core/credentials-manager.js +271 -0
- package/dist/core/credentials-manager.js.map +1 -0
- package/dist/core/project-structure-detector.d.ts +92 -0
- package/dist/core/project-structure-detector.d.ts.map +1 -0
- package/dist/core/project-structure-detector.js +289 -0
- package/dist/core/project-structure-detector.js.map +1 -0
- package/dist/core/rfc-generator-v2.d.ts +149 -0
- package/dist/core/rfc-generator-v2.d.ts.map +1 -0
- package/dist/core/rfc-generator-v2.js +399 -0
- package/dist/core/rfc-generator-v2.js.map +1 -0
- package/dist/core/rfc-generator.d.ts +147 -0
- package/dist/core/rfc-generator.d.ts.map +1 -0
- package/dist/core/rfc-generator.js +434 -0
- package/dist/core/rfc-generator.js.map +1 -0
- package/dist/integrations/ado/ado-client.d.ts +123 -0
- package/dist/integrations/ado/ado-client.d.ts.map +1 -0
- package/dist/integrations/ado/ado-client.js +398 -0
- package/dist/integrations/ado/ado-client.js.map +1 -0
- package/dist/integrations/jira/jira-client.d.ts +139 -0
- package/dist/integrations/jira/jira-client.d.ts.map +1 -0
- package/dist/integrations/jira/jira-client.js +386 -0
- package/dist/integrations/jira/jira-client.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
- package/dist/integrations/jira/jira-mapper.d.ts +105 -0
- package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-mapper.js +494 -0
- package/dist/integrations/jira/jira-mapper.js.map +1 -0
- package/dist/testing/test-generator.d.ts +117 -0
- package/dist/testing/test-generator.d.ts.map +1 -0
- package/dist/testing/test-generator.js +370 -0
- package/dist/testing/test-generator.js.map +1 -0
- package/dist/utils/auto-install.d.ts +3 -0
- package/dist/utils/auto-install.d.ts.map +1 -1
- package/dist/utils/auto-install.js +16 -82
- package/dist/utils/auto-install.js.map +1 -1
- package/dist/utils/esm-helpers.d.ts +50 -0
- package/dist/utils/esm-helpers.d.ts.map +1 -0
- package/dist/utils/esm-helpers.js +57 -0
- package/dist/utils/esm-helpers.js.map +1 -0
- package/package.json +16 -7
- package/src/adapters/README.md +1 -2
- package/src/adapters/adapter-base.ts +6 -3
- package/src/adapters/adapter-loader.ts +261 -0
- package/src/adapters/agents-md-generator.ts +162 -0
- package/src/adapters/claude/README.md +6 -14
- package/src/adapters/claude/adapter.ts +4 -4
- package/src/adapters/claude-md-generator.ts +311 -0
- package/src/adapters/codex/README.md +105 -0
- package/src/adapters/codex/adapter.ts +333 -0
- package/src/adapters/copilot/adapter.ts +36 -65
- package/src/adapters/cursor/README.md +0 -2
- package/src/adapters/cursor/adapter.ts +46 -92
- package/src/adapters/doc-generator.ts +331 -0
- package/src/adapters/gemini/README.md +97 -0
- package/src/adapters/gemini/adapter.ts +298 -0
- package/src/adapters/generic/adapter.ts +61 -57
- package/src/adapters/registry.yaml +86 -25
- package/src/agents/devops/AGENT.md +16 -18
- package/src/agents/docs-writer/AGENT.md +2 -2
- package/src/agents/pm/AGENT.md +1 -50
- package/src/commands/README.md +134 -111
- package/src/commands/{build.md → specweave.do.md} +141 -69
- package/src/commands/{done.md → specweave.done.md} +3 -3
- package/src/commands/{inc.md → specweave.inc.md} +4 -4
- package/src/commands/{increment.md → specweave.increment.md} +143 -76
- package/src/commands/specweave.md +430 -0
- package/src/commands/specweave.next.md +495 -0
- package/src/commands/{progress.md → specweave.progress.md} +12 -12
- package/src/commands/specweave.sync-docs.md +665 -0
- package/src/commands/specweave.sync-github.md +269 -0
- package/src/commands/specweave.sync-jira.md +197 -0
- package/src/commands/{validate.md → specweave.validate.md} +4 -4
- package/src/hooks/README.md +19 -29
- package/src/hooks/post-task-completion.sh +25 -30
- package/src/skills/ado-sync/README.md +1 -36
- package/src/skills/bmad-method-expert/SKILL.md +1 -3
- package/src/skills/brownfield-analyzer/SKILL.md +429 -23
- package/src/skills/brownfield-onboarder/SKILL.md +221 -8
- package/src/skills/context-loader/SKILL.md +239 -617
- package/src/skills/context-optimizer/SKILL.md +0 -30
- package/src/skills/github-sync/SKILL.md +1 -19
- package/src/skills/increment-planner/SKILL.md +64 -18
- package/src/skills/increment-quality-judge/SKILL.md +1 -36
- package/src/skills/jira-sync/README.md +1 -38
- package/src/skills/role-orchestrator/README.md +1 -22
- package/src/skills/role-orchestrator/SKILL.md +1 -59
- package/src/skills/skill-router/SKILL.md +0 -18
- package/src/skills/spec-kit-expert/SKILL.md +1 -3
- package/src/skills/specweave-detector/SKILL.md +225 -275
- package/src/skills/task-builder/README.md +1 -7
- package/src/templates/AGENTS.md.template +334 -0
- package/src/templates/CLAUDE.md.template +131 -298
- package/src/templates/README.md.template +115 -23
- package/src/templates/environments/minimal/README.md +0 -1
- package/INSTALL.md +0 -848
- package/SPECWEAVE.md +0 -743
- package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
- package/src/adapters/cursor/.cursorrules +0 -325
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
- package/src/commands/create-project.md +0 -528
- package/src/commands/generate-docs.md +0 -623
- package/src/commands/review-docs.md +0 -331
- package/src/commands/sync-github.md +0 -115
- package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
- package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
- package/src/skills/cost-optimizer/test-results/README.md +0 -46
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
- package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
- package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
- package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
- package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
- package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
- package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
- package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
- package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
- package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
- package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
- package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/templates/config.yaml +0 -351
- /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
|
@@ -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
|
-
---
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Export Suggestions to Tasks"
|
|
3
|
-
description: "Quality assessment with suggestions exported to tasks.md"
|
|
4
|
-
skill: increment-quality-judge
|
|
5
|
-
priority: P2
|
|
6
|
-
estimated_time: "2-3 minutes"
|
|
7
|
-
|
|
8
|
-
input:
|
|
9
|
-
prompt: "Assess quality and export suggestions to tasks"
|
|
10
|
-
spec_content: |
|
|
11
|
-
# User Profile Management
|
|
12
|
-
|
|
13
|
-
## Overview
|
|
14
|
-
Allow users to manage their profile information.
|
|
15
|
-
|
|
16
|
-
## Acceptance Criteria
|
|
17
|
-
- User can update profile (name, email, avatar)
|
|
18
|
-
- Changes saved successfully
|
|
19
|
-
- Validation for email format
|
|
20
|
-
|
|
21
|
-
## Security
|
|
22
|
-
- Email verification required for email changes
|
|
23
|
-
|
|
24
|
-
export_to_tasks: true
|
|
25
|
-
increment_id: "0025-user-profile"
|
|
26
|
-
|
|
27
|
-
expected_output:
|
|
28
|
-
overall_score: 0.70-0.80
|
|
29
|
-
score_range: "acceptable" # 70-79
|
|
30
|
-
|
|
31
|
-
issues_found:
|
|
32
|
-
count: 3-5
|
|
33
|
-
typical_issues:
|
|
34
|
-
- "Performance requirements not specified"
|
|
35
|
-
- "Avatar upload constraints unclear (size, format)"
|
|
36
|
-
- "Concurrent edit conflict resolution not defined"
|
|
37
|
-
|
|
38
|
-
suggestions:
|
|
39
|
-
count: 3-5
|
|
40
|
-
typical_suggestions:
|
|
41
|
-
- priority: "high"
|
|
42
|
-
description: "Add performance requirements"
|
|
43
|
-
example: "Profile update completes in <1s, avatar upload <5s"
|
|
44
|
-
|
|
45
|
-
- priority: "high"
|
|
46
|
-
description: "Specify avatar constraints"
|
|
47
|
-
example: "Max size: 5MB, formats: JPG/PNG/WebP, dimensions: 512x512"
|
|
48
|
-
|
|
49
|
-
- priority: "medium"
|
|
50
|
-
description: "Define edit conflict resolution"
|
|
51
|
-
example: "Last-write-wins or optimistic locking with version field"
|
|
52
|
-
|
|
53
|
-
export_result:
|
|
54
|
-
file_path: ".specweave/increments/0025-user-profile/tasks.md"
|
|
55
|
-
tasks_added: 3-5
|
|
56
|
-
format: "markdown checklist"
|
|
57
|
-
|
|
58
|
-
tasks_content: |
|
|
59
|
-
## Quality Improvements (from AI assessment)
|
|
60
|
-
|
|
61
|
-
- [ ] Add performance requirements (HIGH)
|
|
62
|
-
- Profile update: <1s
|
|
63
|
-
- Avatar upload: <5s
|
|
64
|
-
|
|
65
|
-
- [ ] Specify avatar upload constraints (HIGH)
|
|
66
|
-
- Max size: 5MB
|
|
67
|
-
- Formats: JPG, PNG, WebP
|
|
68
|
-
- Dimensions: 512x512
|
|
69
|
-
|
|
70
|
-
- [ ] Define edit conflict resolution (MEDIUM)
|
|
71
|
-
- Strategy: Last-write-wins or optimistic locking
|
|
72
|
-
|
|
73
|
-
validation:
|
|
74
|
-
- "Suggestions exported to tasks.md"
|
|
75
|
-
- "Tasks in markdown checklist format"
|
|
76
|
-
- "Each task labeled with priority (HIGH/MEDIUM/LOW)"
|
|
77
|
-
- "Tasks include specific details, not vague"
|
|
78
|
-
- "File created at correct path"
|
|
79
|
-
- "At least 3 tasks added"
|
|
80
|
-
|
|
81
|
-
success_criteria:
|
|
82
|
-
- "Export completes without errors"
|
|
83
|
-
- "Tasks are actionable with clear details"
|
|
84
|
-
- "Priority labels match suggestion priorities"
|
|
85
|
-
- "Tasks integrate cleanly with existing tasks.md"
|
|
86
|
-
- "Can check off tasks as they're completed"
|
|
87
|
-
---
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Coordinate with Agent"
|
|
3
|
-
description: "Tests if jira-sync properly delegates to specweave-jira-mapper agent"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Export increment 0001 to JIRA"
|
|
6
|
-
expected_output:
|
|
7
|
-
agent_invoked: "specweave-jira-mapper"
|
|
8
|
-
parameters_passed: true
|
|
9
|
-
---
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Handle Missing Credentials"
|
|
3
|
-
description: "Tests error handling when JIRA credentials are missing"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Sync to JIRA"
|
|
6
|
-
jira_configured: false
|
|
7
|
-
expected_output:
|
|
8
|
-
error: "JIRA credentials not configured"
|
|
9
|
-
setup_instructions_provided: true
|
|
10
|
-
---
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Create Next.js App Router Page"
|
|
2
|
-
description: "Test creating a page using Next.js 14+ App Router"
|
|
3
|
-
user_input: "Create a products listing page using App Router"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Creates app/products/page.tsx
|
|
6
|
-
- Uses Server Components by default
|
|
7
|
-
- Implements async data fetching
|
|
8
|
-
- Includes proper metadata export
|
|
9
|
-
validation:
|
|
10
|
-
- File located in app directory
|
|
11
|
-
- Uses default export function
|
|
12
|
-
- Implements async component if needed
|
|
13
|
-
- Exports metadata object
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Implement Server Actions"
|
|
2
|
-
description: "Test creating server actions for form handling"
|
|
3
|
-
user_input: "Create a contact form using server actions"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Creates server action with 'use server' directive
|
|
6
|
-
- Implements form submission handler
|
|
7
|
-
- Uses FormData for input
|
|
8
|
-
- Includes validation with Zod
|
|
9
|
-
validation:
|
|
10
|
-
- Uses 'use server' at top of action file
|
|
11
|
-
- Accepts FormData parameter
|
|
12
|
-
- Returns appropriate response
|
|
13
|
-
- Implements revalidatePath or redirect
|