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.
- package/CLAUDE.md +600 -0
- package/README.md +263 -88
- 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 +272 -170
- 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} +185 -72
- package/src/commands/{done.md → specweave.done.md} +3 -3
- package/src/commands/{inc.md → specweave.inc.md} +4 -4
- package/src/commands/specweave.increment.md +383 -0
- package/src/commands/specweave.md +430 -0
- package/src/commands/specweave.next.md +495 -0
- package/src/commands/specweave.progress.md +258 -0
- 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 -297
- 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 -711
- 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/increment.md +0 -223
- 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
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave
|
|
3
|
+
description: SpecWeave master command - routes to increment lifecycle subcommands (inc, build, next, done, progress, validate, sync-github, sync-jira). Namespaced to avoid collisions in brownfield projects.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SpecWeave Master Command
|
|
7
|
+
|
|
8
|
+
**Namespace Protection**: All SpecWeave commands are prefixed with `specweave` to avoid collisions with existing project commands.
|
|
9
|
+
|
|
10
|
+
This master command routes to SpecWeave increment lifecycle subcommands.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
/specweave <subcommand> [arguments]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Available Subcommands
|
|
23
|
+
|
|
24
|
+
### Increment Lifecycle
|
|
25
|
+
|
|
26
|
+
| Subcommand | Description | Example |
|
|
27
|
+
|------------|-------------|---------|
|
|
28
|
+
| **inc** | Create new increment (PM-led) | `/specweave inc "User auth"` |
|
|
29
|
+
| **build** | Execute tasks (auto-resumes) | `/specweave do` or `/specweave do 0001` |
|
|
30
|
+
| **next** | Smart transition (close + suggest) | `/specweave next` |
|
|
31
|
+
| **done** | Manual closure with PM validation | `/specweave done 0001` |
|
|
32
|
+
| **progress** | Check status and next action | `/specweave progress` |
|
|
33
|
+
| **validate** | Validate increment quality | `/specweave validate 0001` |
|
|
34
|
+
|
|
35
|
+
### Integrations
|
|
36
|
+
|
|
37
|
+
| Subcommand | Description | Example |
|
|
38
|
+
|------------|-------------|---------|
|
|
39
|
+
| **sync-github** | Sync increment to GitHub issues | `/specweave sync-github 0001` |
|
|
40
|
+
| **sync-jira** | Sync increment to Jira epics/stories | `/specweave sync-jira import SCRUM-123` |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Subcommand Routing
|
|
45
|
+
|
|
46
|
+
**IMPORTANT**: This command acts as a router. When invoked, it:
|
|
47
|
+
|
|
48
|
+
1. **Parses the subcommand** from the first argument
|
|
49
|
+
2. **Routes to the corresponding command** file
|
|
50
|
+
3. **Passes remaining arguments** to the subcommand
|
|
51
|
+
|
|
52
|
+
### Routing Table
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
subcommands:
|
|
56
|
+
inc: .claude/commands/specweave.inc.md
|
|
57
|
+
build: .claude/commands/specweave.do.md
|
|
58
|
+
next: .claude/commands/specweave.next.md
|
|
59
|
+
done: .claude/commands/specweave.done.md
|
|
60
|
+
progress: .claude/commands/specweave.progress.md
|
|
61
|
+
validate: .claude/commands/specweave.validate.md
|
|
62
|
+
sync-github: .claude/commands/specweave.sync-github.md
|
|
63
|
+
sync-jira: .claude/commands/specweave.sync-jira.md
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Routing Logic
|
|
69
|
+
|
|
70
|
+
### Step 1: Parse Subcommand
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Input: /specweave inc "User authentication"
|
|
74
|
+
↓
|
|
75
|
+
Parse: subcommand = "inc"
|
|
76
|
+
arguments = ["User authentication"]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Step 2: Validate Subcommand
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Known subcommands: [inc, build, next, done, progress, validate, sync-github, sync-jira]
|
|
83
|
+
|
|
84
|
+
If subcommand in known_subcommands:
|
|
85
|
+
Route to corresponding command
|
|
86
|
+
Else:
|
|
87
|
+
Show error with available subcommands
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Step 3: Route to Command
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Read file: .claude/commands/specweave.inc.md
|
|
94
|
+
Execute: Command content with arguments
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Examples
|
|
100
|
+
|
|
101
|
+
### Example 1: Create Increment
|
|
102
|
+
|
|
103
|
+
**Input**:
|
|
104
|
+
```bash
|
|
105
|
+
/specweave inc "User authentication"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Routing**:
|
|
109
|
+
```
|
|
110
|
+
Parse: subcommand = "inc", args = ["User authentication"]
|
|
111
|
+
Route to: .claude/commands/specweave.inc.md
|
|
112
|
+
Execute: /specweave.inc "User authentication"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Example 2: Build Current Increment
|
|
116
|
+
|
|
117
|
+
**Input**:
|
|
118
|
+
```bash
|
|
119
|
+
/specweave do
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Routing**:
|
|
123
|
+
```
|
|
124
|
+
Parse: subcommand = "build", args = []
|
|
125
|
+
Route to: .claude/commands/specweave.do.md
|
|
126
|
+
Execute: /specweave.do (auto-finds active increment)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Example 3: Smart Transition
|
|
130
|
+
|
|
131
|
+
**Input**:
|
|
132
|
+
```bash
|
|
133
|
+
/specweave next
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Routing**:
|
|
137
|
+
```
|
|
138
|
+
Parse: subcommand = "next", args = []
|
|
139
|
+
Route to: .claude/commands/specweave.next.md
|
|
140
|
+
Execute: /specweave.next (validates, closes, suggests)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Example 4: Invalid Subcommand
|
|
144
|
+
|
|
145
|
+
**Input**:
|
|
146
|
+
```bash
|
|
147
|
+
/specweave invalid-command
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Output**:
|
|
151
|
+
```
|
|
152
|
+
❌ Error: Unknown subcommand "invalid-command"
|
|
153
|
+
|
|
154
|
+
Available subcommands:
|
|
155
|
+
Increment Lifecycle:
|
|
156
|
+
inc - Create new increment
|
|
157
|
+
build - Execute tasks
|
|
158
|
+
next - Smart transition
|
|
159
|
+
done - Manual closure
|
|
160
|
+
progress - Check status
|
|
161
|
+
validate - Validate quality
|
|
162
|
+
|
|
163
|
+
Project Setup:
|
|
164
|
+
# Project initialization: use `specweave init` CLI command
|
|
165
|
+
sync-github - Sync to GitHub
|
|
166
|
+
sync-docs - Sync documentation (review/update)
|
|
167
|
+
|
|
168
|
+
Usage: /specweave <subcommand> [arguments]
|
|
169
|
+
Example: /specweave inc "User authentication"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Implementation (For Command Processor)
|
|
175
|
+
|
|
176
|
+
### Pseudocode
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
function handleSpecweaveCommand(rawInput) {
|
|
180
|
+
// Parse input
|
|
181
|
+
const parts = rawInput.split(' ');
|
|
182
|
+
const subcommand = parts[1]; // First arg after /specweave
|
|
183
|
+
const args = parts.slice(2); // Remaining args
|
|
184
|
+
|
|
185
|
+
// Routing table
|
|
186
|
+
const routes = {
|
|
187
|
+
'inc': 'specweave.inc.md',
|
|
188
|
+
'do': 'specweave.do.md',
|
|
189
|
+
'next': 'specweave.next.md',
|
|
190
|
+
'done': 'specweave.done.md',
|
|
191
|
+
'progress': 'specweave.progress.md',
|
|
192
|
+
'validate': 'specweave.validate.md',
|
|
193
|
+
'sync-github': 'specweave.sync-github.md',
|
|
194
|
+
'sync-docs': 'specweave.sync-docs.md'
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// Validate subcommand
|
|
198
|
+
if (!routes[subcommand]) {
|
|
199
|
+
return showError(`Unknown subcommand "${subcommand}"`);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Route to command
|
|
203
|
+
const commandFile = `.claude/commands/${routes[subcommand]}`;
|
|
204
|
+
return executeCommand(commandFile, args);
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Why Namespacing?
|
|
211
|
+
|
|
212
|
+
### Problem: Brownfield Collision
|
|
213
|
+
|
|
214
|
+
**Without namespacing**:
|
|
215
|
+
```
|
|
216
|
+
User's project:
|
|
217
|
+
.claude/commands/do.md (their own build command)
|
|
218
|
+
|
|
219
|
+
SpecWeave installation:
|
|
220
|
+
.claude/commands/do.md (SpecWeave's build)
|
|
221
|
+
|
|
222
|
+
Result: ❌ COLLISION - User's command overwritten!
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**With namespacing**:
|
|
226
|
+
```
|
|
227
|
+
User's project:
|
|
228
|
+
.claude/commands/do.md (their own build command)
|
|
229
|
+
|
|
230
|
+
SpecWeave installation:
|
|
231
|
+
.claude/commands/specweave.do.md (SpecWeave's build)
|
|
232
|
+
.claude/commands/specweave.md (master router)
|
|
233
|
+
|
|
234
|
+
Result: ✅ NO COLLISION - Both coexist!
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Benefits
|
|
238
|
+
|
|
239
|
+
1. **No collisions** - SpecWeave commands never overwrite user commands
|
|
240
|
+
2. **Clear ownership** - `specweave.*` notation shows it's framework command
|
|
241
|
+
3. **Easy identification** - `/specweave` clearly indicates SpecWeave action
|
|
242
|
+
4. **Brownfield safe** - Can install in any existing project
|
|
243
|
+
5. **Uninstall clean** - Remove `specweave.*` files, user's files intact
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Backward Compatibility (Aliases)
|
|
248
|
+
|
|
249
|
+
For convenience, you can create aliases for shorter commands:
|
|
250
|
+
|
|
251
|
+
### Option 1: Shell Aliases (in user's shell profile)
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# ~/.zshrc or ~/.bashrc
|
|
255
|
+
alias sw='/specweave' # /specweave → sw
|
|
256
|
+
alias swinc='sw inc' # /specweave inc → swinc
|
|
257
|
+
alias swbuild='sw build' # /specweave do → swbuild
|
|
258
|
+
alias swnext='sw next' # /specweave next → swnext
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Usage**:
|
|
262
|
+
```bash
|
|
263
|
+
sw inc "User auth" # Instead of /specweave inc
|
|
264
|
+
swbuild # Instead of /specweave do
|
|
265
|
+
swnext # Instead of /specweave next
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Option 2: Command Aliases (in .claude/config.yaml)
|
|
269
|
+
|
|
270
|
+
```yaml
|
|
271
|
+
# .claude/config.yaml
|
|
272
|
+
command_aliases:
|
|
273
|
+
/inc: /specweave inc
|
|
274
|
+
/do: /specweave do
|
|
275
|
+
/next: /specweave next
|
|
276
|
+
/done: /specweave done
|
|
277
|
+
/progress: /specweave progress
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**Usage**:
|
|
281
|
+
```bash
|
|
282
|
+
/inc "User auth" # Automatically routes to /specweave inc
|
|
283
|
+
/do # Automatically routes to /specweave do
|
|
284
|
+
/next # Automatically routes to /specweave next
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**IMPORTANT**: Aliases are opt-in. Default is always namespaced `/specweave` to ensure brownfield safety.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Installation Behavior
|
|
292
|
+
|
|
293
|
+
### Fresh Project (Greenfield)
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# No existing .claude/ directory
|
|
297
|
+
# Use: specweave init my-project (CLI command)
|
|
298
|
+
|
|
299
|
+
Result:
|
|
300
|
+
✅ Creates .claude/commands/specweave*.md
|
|
301
|
+
✅ Creates .specweave/ structure
|
|
302
|
+
✅ No conflicts possible
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Existing Project (Brownfield)
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# Existing .claude/commands/do.md (user's)
|
|
309
|
+
# Use: specweave init my-project (CLI command)
|
|
310
|
+
|
|
311
|
+
Behavior:
|
|
312
|
+
1. Detects existing .claude/ directory
|
|
313
|
+
2. Backs up existing files:
|
|
314
|
+
.claude/commands/ → .claude/commands.backup-1698765432/
|
|
315
|
+
3. Installs SpecWeave commands:
|
|
316
|
+
.claude/commands/specweave*.md
|
|
317
|
+
4. Restores user's commands:
|
|
318
|
+
Copies non-conflicting files back
|
|
319
|
+
5. Reports:
|
|
320
|
+
✅ Installed SpecWeave commands
|
|
321
|
+
✅ Backed up your commands to .claude/commands.backup-1698765432/
|
|
322
|
+
ℹ️ Your existing commands preserved (no overwrite)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Backup Structure**:
|
|
326
|
+
```
|
|
327
|
+
.claude/
|
|
328
|
+
├── commands/
|
|
329
|
+
│ ├── build.md (user's original - preserved)
|
|
330
|
+
│ ├── specweave.do.md (SpecWeave's - new)
|
|
331
|
+
│ ├── specweave.inc.md (SpecWeave's - new)
|
|
332
|
+
│ └── specweave.md (master router - new)
|
|
333
|
+
├── commands.backup-1698765432/ (timestamped backup)
|
|
334
|
+
│ └── build.md (original backup)
|
|
335
|
+
└── skills/
|
|
336
|
+
└── ... (similar backup strategy)
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Migration from Old Commands
|
|
342
|
+
|
|
343
|
+
If you have code/docs referencing old commands:
|
|
344
|
+
|
|
345
|
+
### Find and Replace
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# Old → New
|
|
349
|
+
/inc → /specweave inc
|
|
350
|
+
/do → /specweave do
|
|
351
|
+
/next → /specweave next
|
|
352
|
+
/done → /specweave done
|
|
353
|
+
/progress → /specweave progress
|
|
354
|
+
/validate → /specweave validate
|
|
355
|
+
/sync-github → /specweave sync-github
|
|
356
|
+
/sync-docs → /specweave sync-docs
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Automated Migration Script
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
# migrate-specweave-commands.sh
|
|
363
|
+
#!/bin/bash
|
|
364
|
+
|
|
365
|
+
echo "Migrating SpecWeave commands to namespaced versions..."
|
|
366
|
+
|
|
367
|
+
# Find all markdown files
|
|
368
|
+
find .specweave -type f -name "*.md" -exec sed -i '' \
|
|
369
|
+
-e 's|`/inc |`/specweave inc |g' \
|
|
370
|
+
-e 's|`/do|`/specweave do|g' \
|
|
371
|
+
-e 's|`/next|`/specweave next|g' \
|
|
372
|
+
-e 's|`/done|`/specweave done|g' \
|
|
373
|
+
-e 's|`/progress|`/specweave progress|g' \
|
|
374
|
+
{} \;
|
|
375
|
+
|
|
376
|
+
echo "✅ Migration complete!"
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## Help Command
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
/specweave help
|
|
385
|
+
# or
|
|
386
|
+
/specweave --help
|
|
387
|
+
# or
|
|
388
|
+
/specweave (no args)
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**Output**:
|
|
392
|
+
```
|
|
393
|
+
SpecWeave - Production-Ready Development Framework
|
|
394
|
+
|
|
395
|
+
Usage: /specweave <subcommand> [arguments]
|
|
396
|
+
|
|
397
|
+
Increment Lifecycle:
|
|
398
|
+
inc "feature" - Create new increment (PM-led planning)
|
|
399
|
+
do [id] - Execute tasks (auto-resumes from last incomplete)
|
|
400
|
+
next - Smart transition (validate, close, suggest next)
|
|
401
|
+
done <id> - Manual closure with PM validation
|
|
402
|
+
progress [id] - Check status, completion %, and next action
|
|
403
|
+
validate <id> - Validate increment quality
|
|
404
|
+
|
|
405
|
+
Project Setup:
|
|
406
|
+
# Use: specweave init (CLI command)
|
|
407
|
+
sync-github <id> - Sync increment to GitHub issues
|
|
408
|
+
sync-docs [mode] [id] - Sync documentation (review/update)
|
|
409
|
+
|
|
410
|
+
Examples:
|
|
411
|
+
/specweave inc "User authentication"
|
|
412
|
+
/specweave do
|
|
413
|
+
/specweave next
|
|
414
|
+
/specweave done 0001
|
|
415
|
+
/specweave progress
|
|
416
|
+
|
|
417
|
+
Documentation: https://spec-weave.com/docs
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Related Documentation
|
|
423
|
+
|
|
424
|
+
- [Installation Guide](.specweave/docs/public/guides/getting-started/installation.md)
|
|
425
|
+
- [Brownfield Integration](.specweave/docs/internal/delivery/BROWNFIELD-INTEGRATION-STRATEGY.md)
|
|
426
|
+
- [Command Reference](.claude/commands/README.md)
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
**Important**: Always use `/specweave` prefix to ensure brownfield compatibility and avoid command collisions!
|