specweave 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.md +848 -0
- package/LICENSE +21 -0
- package/README.md +675 -0
- package/SPECWEAVE.md +665 -0
- package/bin/install-agents.sh +57 -0
- package/bin/install-all.sh +49 -0
- package/bin/install-commands.sh +56 -0
- package/bin/install-skills.sh +57 -0
- package/bin/specweave.js +81 -0
- package/dist/adapters/adapter-base.d.ts +50 -0
- package/dist/adapters/adapter-base.d.ts.map +1 -0
- package/dist/adapters/adapter-base.js +146 -0
- package/dist/adapters/adapter-base.js.map +1 -0
- package/dist/adapters/adapter-interface.d.ts +108 -0
- package/dist/adapters/adapter-interface.d.ts.map +1 -0
- package/dist/adapters/adapter-interface.js +9 -0
- package/dist/adapters/adapter-interface.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +54 -0
- package/dist/adapters/claude/adapter.d.ts.map +1 -0
- package/dist/adapters/claude/adapter.js +184 -0
- package/dist/adapters/claude/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +42 -0
- package/dist/adapters/copilot/adapter.d.ts.map +1 -0
- package/dist/adapters/copilot/adapter.js +239 -0
- package/dist/adapters/copilot/adapter.js.map +1 -0
- package/dist/adapters/cursor/adapter.d.ts +42 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -0
- package/dist/adapters/cursor/adapter.js +297 -0
- package/dist/adapters/cursor/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +40 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -0
- package/dist/adapters/generic/adapter.js +155 -0
- package/dist/adapters/generic/adapter.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +247 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +7 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +160 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +154 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/package.json +90 -0
- package/src/adapters/README.md +312 -0
- package/src/adapters/adapter-base.ts +146 -0
- package/src/adapters/adapter-interface.ts +120 -0
- package/src/adapters/claude/README.md +241 -0
- package/src/adapters/claude/adapter.ts +157 -0
- package/src/adapters/copilot/.github/copilot/instructions.md +376 -0
- package/src/adapters/copilot/README.md +200 -0
- package/src/adapters/copilot/adapter.ts +210 -0
- package/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
- package/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
- package/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
- package/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
- package/src/adapters/cursor/.cursorrules +325 -0
- package/src/adapters/cursor/README.md +243 -0
- package/src/adapters/cursor/adapter.ts +268 -0
- package/src/adapters/generic/README.md +277 -0
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +676 -0
- package/src/adapters/generic/adapter.ts +159 -0
- package/src/adapters/registry.yaml +126 -0
- package/src/agents/architect/AGENT.md +416 -0
- package/src/agents/devops/AGENT.md +1738 -0
- package/src/agents/docs-writer/AGENT.md +239 -0
- package/src/agents/performance/AGENT.md +228 -0
- package/src/agents/pm/AGENT.md +751 -0
- package/src/agents/qa-lead/AGENT.md +150 -0
- package/src/agents/security/AGENT.md +179 -0
- package/src/agents/sre/AGENT.md +582 -0
- package/src/agents/sre/modules/backend-diagnostics.md +481 -0
- package/src/agents/sre/modules/database-diagnostics.md +509 -0
- package/src/agents/sre/modules/infrastructure.md +561 -0
- package/src/agents/sre/modules/monitoring.md +439 -0
- package/src/agents/sre/modules/security-incidents.md +421 -0
- package/src/agents/sre/modules/ui-diagnostics.md +302 -0
- package/src/agents/sre/playbooks/01-high-cpu-usage.md +204 -0
- package/src/agents/sre/playbooks/02-database-deadlock.md +241 -0
- package/src/agents/sre/playbooks/03-memory-leak.md +252 -0
- package/src/agents/sre/playbooks/04-slow-api-response.md +269 -0
- package/src/agents/sre/playbooks/05-ddos-attack.md +293 -0
- package/src/agents/sre/playbooks/06-disk-full.md +314 -0
- package/src/agents/sre/playbooks/07-service-down.md +333 -0
- package/src/agents/sre/playbooks/08-data-corruption.md +337 -0
- package/src/agents/sre/playbooks/09-cascade-failure.md +430 -0
- package/src/agents/sre/playbooks/10-rate-limit-exceeded.md +464 -0
- package/src/agents/sre/scripts/health-check.sh +230 -0
- package/src/agents/sre/scripts/log-analyzer.py +213 -0
- package/src/agents/sre/scripts/metrics-collector.sh +294 -0
- package/src/agents/sre/scripts/trace-analyzer.js +257 -0
- package/src/agents/sre/templates/incident-report.md +249 -0
- package/src/agents/sre/templates/mitigation-plan.md +375 -0
- package/src/agents/sre/templates/post-mortem.md +418 -0
- package/src/agents/sre/templates/runbook-template.md +412 -0
- package/src/agents/tech-lead/AGENT.md +263 -0
- package/src/commands/add-tasks.md +176 -0
- package/src/commands/close-increment.md +347 -0
- package/src/commands/create-increment.md +223 -0
- package/src/commands/create-project.md +528 -0
- package/src/commands/generate-docs.md +623 -0
- package/src/commands/list-increments.md +180 -0
- package/src/commands/review-docs.md +331 -0
- package/src/commands/start-increment.md +139 -0
- package/src/commands/sync-github.md +115 -0
- package/src/commands/validate-increment.md +800 -0
- package/src/hooks/README.md +252 -0
- package/src/hooks/docs-changed.sh +59 -0
- package/src/hooks/human-input-required.sh +55 -0
- package/src/hooks/post-task-completion.sh +57 -0
- package/src/hooks/pre-implementation.sh +47 -0
- package/src/skills/ado-sync/README.md +449 -0
- package/src/skills/ado-sync/SKILL.md +245 -0
- package/src/skills/ado-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/ado-sync/test-cases/test-2.yaml +8 -0
- package/src/skills/ado-sync/test-cases/test-3.yaml +9 -0
- package/src/skills/bmad-method-expert/SKILL.md +628 -0
- package/src/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
- package/src/skills/bmad-method-expert/scripts/check-setup.js +208 -0
- package/src/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
- package/src/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/SKILL.md +523 -0
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +48 -0
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/SKILL.md +625 -0
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/context-loader/SKILL.md +734 -0
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +39 -0
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +44 -0
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +45 -0
- package/src/skills/context-optimizer/SKILL.md +618 -0
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +97 -0
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +109 -0
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +98 -0
- package/src/skills/cost-optimizer/SKILL.md +190 -0
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +75 -0
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +52 -0
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +63 -0
- package/src/skills/cost-optimizer/test-results/README.md +46 -0
- package/src/skills/design-system-architect/SKILL.md +107 -0
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +23 -0
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +24 -0
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +23 -0
- package/src/skills/diagrams-architect/SKILL.md +763 -0
- package/src/skills/diagrams-generator/SKILL.md +25 -0
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +9 -0
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +8 -0
- package/src/skills/docs-updater/README.md +48 -0
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/dotnet-backend/SKILL.md +250 -0
- package/src/skills/e2e-playwright/README.md +506 -0
- package/src/skills/e2e-playwright/SKILL.md +457 -0
- package/src/skills/e2e-playwright/execute.js +373 -0
- package/src/skills/e2e-playwright/lib/utils.js +514 -0
- package/src/skills/e2e-playwright/package.json +33 -0
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +54 -0
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +64 -0
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +74 -0
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +98 -0
- package/src/skills/figma-designer/SKILL.md +149 -0
- package/src/skills/figma-implementer/SKILL.md +148 -0
- package/src/skills/figma-mcp-connector/SKILL.md +136 -0
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +22 -0
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +21 -0
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +18 -0
- package/src/skills/figma-to-code/SKILL.md +128 -0
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +29 -0
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +27 -0
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +28 -0
- package/src/skills/frontend/SKILL.md +177 -0
- package/src/skills/github-sync/SKILL.md +252 -0
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/hetzner-provisioner/README.md +308 -0
- package/src/skills/hetzner-provisioner/SKILL.md +251 -0
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +71 -0
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +85 -0
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +126 -0
- package/src/skills/hetzner-provisioner/test-results/README.md +259 -0
- package/src/skills/increment-planner/SKILL.md +889 -0
- package/src/skills/increment-planner/scripts/feature-utils.js +250 -0
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +27 -0
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +30 -0
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +24 -0
- package/src/skills/increment-quality-judge/SKILL.md +566 -0
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +95 -0
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +108 -0
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +87 -0
- package/src/skills/jira-sync/README.md +328 -0
- package/src/skills/jira-sync/SKILL.md +209 -0
- package/src/skills/jira-sync/test-cases/test-1.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-2.yaml +9 -0
- package/src/skills/jira-sync/test-cases/test-3.yaml +10 -0
- package/src/skills/nextjs/SKILL.md +176 -0
- package/src/skills/nodejs-backend/SKILL.md +181 -0
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/python-backend/SKILL.md +226 -0
- package/src/skills/role-orchestrator/README.md +197 -0
- package/src/skills/role-orchestrator/SKILL.md +1184 -0
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +98 -0
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +73 -0
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +121 -0
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +145 -0
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +149 -0
- package/src/skills/skill-creator/LICENSE.txt +202 -0
- package/src/skills/skill-creator/SKILL.md +209 -0
- package/src/skills/skill-creator/scripts/init_skill.py +303 -0
- package/src/skills/skill-creator/scripts/package_skill.py +110 -0
- package/src/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/skill-router/SKILL.md +497 -0
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +33 -0
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +42 -0
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +50 -0
- package/src/skills/spec-driven-brainstorming/README.md +264 -0
- package/src/skills/spec-driven-brainstorming/SKILL.md +439 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +148 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +190 -0
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +233 -0
- package/src/skills/spec-driven-debugging/README.md +479 -0
- package/src/skills/spec-driven-debugging/SKILL.md +652 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +212 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +461 -0
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +366 -0
- package/src/skills/spec-kit-expert/SKILL.md +1012 -0
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/specweave-ado-mapper/SKILL.md +501 -0
- package/src/skills/specweave-detector/SKILL.md +420 -0
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +37 -0
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +34 -0
- package/src/skills/specweave-jira-mapper/SKILL.md +500 -0
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +12 -0
- package/src/skills/task-builder/README.md +90 -0
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +12 -0
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +12 -0
- package/src/templates/.env.example +144 -0
- package/src/templates/.gitignore.template +81 -0
- package/src/templates/CLAUDE.md.template +383 -0
- package/src/templates/README.md.template +240 -0
- package/src/templates/config.yaml +333 -0
- package/src/templates/docs/README.md +124 -0
- package/src/templates/docs/adr-template.md +118 -0
- package/src/templates/docs/hld-template.md +220 -0
- package/src/templates/docs/lld-template.md +580 -0
- package/src/templates/docs/prd-template.md +132 -0
- package/src/templates/docs/rfc-template.md +229 -0
- package/src/templates/docs/runbook-template.md +298 -0
- package/src/templates/environments/minimal/.env.production +16 -0
- package/src/templates/environments/minimal/README.md +54 -0
- package/src/templates/environments/minimal/deploy-production.yml +52 -0
- package/src/templates/environments/progressive/.env.qa +28 -0
- package/src/templates/environments/progressive/README.md +129 -0
- package/src/templates/environments/progressive/deploy-production.yml +93 -0
- package/src/templates/environments/progressive/deploy-qa.yml +62 -0
- package/src/templates/environments/progressive/deploy-staging.yml +67 -0
- package/src/templates/environments/standard/.env.development +20 -0
- package/src/templates/environments/standard/.env.production +30 -0
- package/src/templates/environments/standard/.env.staging +23 -0
- package/src/templates/environments/standard/README.md +97 -0
- package/src/templates/environments/standard/deploy-production.yml +68 -0
- package/src/templates/environments/standard/deploy-staging.yml +61 -0
- package/src/templates/environments/standard/docker-compose.yml +43 -0
- package/src/templates/increment-metadata-template.yaml +138 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-detector
|
|
3
|
+
description: Entry point for SpecWeave framework. Automatically activates when .specweave directory is detected in the project. Acts as a factory of agents, parsing user requests and routing to appropriate skills. Supports nested skill calls and context management. This skill should ALWAYS be loaded first in SpecWeave projects. Activates for ANY user request in a SpecWeave project (auto-detects .specweave/).
|
|
4
|
+
proactive: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SpecWeave Detector & Entry Point
|
|
8
|
+
|
|
9
|
+
This skill is the **automatic entry point** for all SpecWeave operations. When Claude Code detects a `.specweave/config.yaml` file, this skill activates and orchestrates the SpecWeave framework.
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Act as the "factory of agents" that:
|
|
14
|
+
1. Detects SpecWeave projects automatically
|
|
15
|
+
2. Parses user requests
|
|
16
|
+
3. Routes to appropriate skills
|
|
17
|
+
4. Orchestrates nested skill calls
|
|
18
|
+
5. Manages context loading
|
|
19
|
+
|
|
20
|
+
## Detection Logic
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
// Pseudo-code for detection
|
|
24
|
+
if (fileExists('.specweave/config.yaml')) {
|
|
25
|
+
activateSpecWeaveMode();
|
|
26
|
+
loadConfiguration();
|
|
27
|
+
parseUserIntent();
|
|
28
|
+
routeToSkills();
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Auto-Activation
|
|
33
|
+
|
|
34
|
+
**Key Feature**: This skill uses Claude Code's `proactive: true` feature to load automatically.
|
|
35
|
+
|
|
36
|
+
When a user opens a project with `.specweave/` directory:
|
|
37
|
+
1. Claude Code detects the directory
|
|
38
|
+
2. This skill loads proactively (no user action needed)
|
|
39
|
+
3. SpecWeave mode activates silently
|
|
40
|
+
4. User requests are automatically routed to appropriate skills
|
|
41
|
+
|
|
42
|
+
**User Experience**:
|
|
43
|
+
```
|
|
44
|
+
# User doesn't know SpecWeave is active
|
|
45
|
+
User: "I want to add payment processing"
|
|
46
|
+
|
|
47
|
+
# Behind the scenes:
|
|
48
|
+
# 1. specweave-detector intercepts request
|
|
49
|
+
# 2. Parses request: "add feature" + "payment processing"
|
|
50
|
+
# 3. Routes to: increment-planner skill
|
|
51
|
+
# 4. increment-planner creates Feature 002
|
|
52
|
+
# 5. Returns result to user
|
|
53
|
+
|
|
54
|
+
# User sees:
|
|
55
|
+
✅ Feature created: 002-payment-processing
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Request Parsing & Routing
|
|
59
|
+
|
|
60
|
+
### Simple Request (Single Skill)
|
|
61
|
+
|
|
62
|
+
| User Says | Request Type | Route To |
|
|
63
|
+
|-----------|--------|----------|
|
|
64
|
+
| "Plan a feature for..." | feature_planning | `increment-planner` |
|
|
65
|
+
| "Load context for..." | context_loading | `context-loader` |
|
|
66
|
+
| "Document this code..." | documentation | `docs-updater` |
|
|
67
|
+
| "Create a spec for..." | specification | `spec-author` |
|
|
68
|
+
| "Design architecture for..." | architecture | `architect` |
|
|
69
|
+
| "Implement feature 001" | development | `developer` |
|
|
70
|
+
| "Test this feature" | testing | `qa-engineer` |
|
|
71
|
+
|
|
72
|
+
### Complex Request (Multiple Skills)
|
|
73
|
+
|
|
74
|
+
**Example**: "Create and implement a new payment feature"
|
|
75
|
+
|
|
76
|
+
**Request Breakdown**:
|
|
77
|
+
1. Create feature → `increment-planner`
|
|
78
|
+
2. Implement code → Load context via `context-loader`
|
|
79
|
+
3. Implement code → `developer`
|
|
80
|
+
4. Generate tests → `qa-engineer`
|
|
81
|
+
5. Update docs → `docs-updater`
|
|
82
|
+
|
|
83
|
+
**Execution Flow**:
|
|
84
|
+
```
|
|
85
|
+
User: "Create and implement a new payment feature"
|
|
86
|
+
↓
|
|
87
|
+
specweave-detector parses: CREATE + IMPLEMENT + FEATURE + PAYMENT
|
|
88
|
+
↓
|
|
89
|
+
Orchestrate nested skills:
|
|
90
|
+
↓
|
|
91
|
+
increment-planner: Create 003-payment-processing/
|
|
92
|
+
↓
|
|
93
|
+
context-loader: Load specs/modules/payments/**
|
|
94
|
+
↓
|
|
95
|
+
developer: Implement based on tasks.md
|
|
96
|
+
↓
|
|
97
|
+
qa-engineer: Generate test cases
|
|
98
|
+
↓
|
|
99
|
+
docs-updater: Update README, docs/
|
|
100
|
+
↓
|
|
101
|
+
Result: "✅ Feature 003 implemented and documented"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Ambiguous Request
|
|
105
|
+
|
|
106
|
+
When request is unclear:
|
|
107
|
+
```
|
|
108
|
+
User: "Help me with the authentication"
|
|
109
|
+
↓
|
|
110
|
+
specweave-detector: Ambiguous (help = ?)
|
|
111
|
+
↓
|
|
112
|
+
Route to skill-router for clarification
|
|
113
|
+
↓
|
|
114
|
+
skill-router asks:
|
|
115
|
+
"What would you like to do with authentication?
|
|
116
|
+
1. Create a specification
|
|
117
|
+
2. Plan implementation
|
|
118
|
+
3. Implement code
|
|
119
|
+
4. Document existing code"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Context Management
|
|
123
|
+
|
|
124
|
+
### Automatic Context Loading
|
|
125
|
+
|
|
126
|
+
When a user is working on a feature:
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
// Detect active work
|
|
130
|
+
const activeIssue = detectActiveIssue(); // work/issues/###-xxx/
|
|
131
|
+
|
|
132
|
+
if (activeIssue) {
|
|
133
|
+
const manifest = loadManifest(`${activeIssue}/context-manifest.yaml`);
|
|
134
|
+
const context = await contextLoader.load(manifest);
|
|
135
|
+
// Context now available for all skills
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Context Prioritization
|
|
140
|
+
|
|
141
|
+
When multiple contexts are relevant:
|
|
142
|
+
|
|
143
|
+
1. **Active work item** (in `work/issues/`)
|
|
144
|
+
2. **Current feature** (referenced in git branch)
|
|
145
|
+
3. **User-specified** context
|
|
146
|
+
4. **Global** context (specs/overview.md, principles.md)
|
|
147
|
+
|
|
148
|
+
## Skill Orchestration
|
|
149
|
+
|
|
150
|
+
### Parallel Execution
|
|
151
|
+
|
|
152
|
+
Some skills can run in parallel:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
User: "Create tests and update documentation"
|
|
156
|
+
↓
|
|
157
|
+
Parallel execution:
|
|
158
|
+
├─ qa-engineer: Generate tests
|
|
159
|
+
└─ docs-updater: Update docs
|
|
160
|
+
|
|
161
|
+
Wait for both to complete
|
|
162
|
+
↓
|
|
163
|
+
Result: "✅ Tests generated (15 test cases) and docs updated"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Sequential Execution
|
|
167
|
+
|
|
168
|
+
Some skills must run sequentially:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
User: "Plan and implement feature 001"
|
|
172
|
+
↓
|
|
173
|
+
Sequential execution:
|
|
174
|
+
1. increment-planner: Create plan (MUST complete first)
|
|
175
|
+
2. context-loader: Load relevant specs (uses plan output)
|
|
176
|
+
3. developer: Implement (uses loaded context)
|
|
177
|
+
|
|
178
|
+
Each step waits for previous to complete
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Error Handling
|
|
182
|
+
|
|
183
|
+
If a skill fails:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
User: "Implement feature 005"
|
|
187
|
+
↓
|
|
188
|
+
specweave-detector: Route to developer
|
|
189
|
+
↓
|
|
190
|
+
developer: ERROR - Feature 005 not found
|
|
191
|
+
↓
|
|
192
|
+
specweave-detector: Catch error, suggest:
|
|
193
|
+
"Feature 005 doesn't exist. Would you like to:
|
|
194
|
+
1. Create it first (increment-planner)
|
|
195
|
+
2. List existing features
|
|
196
|
+
3. Implement a different feature"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Configuration Awareness
|
|
200
|
+
|
|
201
|
+
Load and respect `.specweave/config.yaml`:
|
|
202
|
+
|
|
203
|
+
```yaml
|
|
204
|
+
# .specweave/config.yaml
|
|
205
|
+
principles:
|
|
206
|
+
auto_role_routing: true # Enable auto-routing
|
|
207
|
+
context_precision: true # Use context manifests
|
|
208
|
+
routing_accuracy_target: 0.90 # Accuracy threshold
|
|
209
|
+
|
|
210
|
+
skills:
|
|
211
|
+
install_location: "local" # Where skills are installed
|
|
212
|
+
auto_install: true # Auto-install missing skills
|
|
213
|
+
|
|
214
|
+
integrations:
|
|
215
|
+
github:
|
|
216
|
+
enabled: true
|
|
217
|
+
sync_issues: true # Sync features ↔ GitHub issues
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
When `auto_role_routing: false`, this skill still activates but prompts user for explicit skill selection.
|
|
221
|
+
|
|
222
|
+
## SpecWeave Mode Indicator
|
|
223
|
+
|
|
224
|
+
When SpecWeave is active, include a subtle indicator in responses:
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
🔷 SpecWeave Active
|
|
228
|
+
|
|
229
|
+
[Normal response here]
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
This helps users know SpecWeave framework is orchestrating their request.
|
|
233
|
+
|
|
234
|
+
## Skill Discovery
|
|
235
|
+
|
|
236
|
+
List available skills:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
User: "What can SpecWeave do?"
|
|
240
|
+
↓
|
|
241
|
+
specweave-detector: List installed skills
|
|
242
|
+
|
|
243
|
+
SpecWeave Skills:
|
|
244
|
+
✅ increment-planner - Plan implementation features
|
|
245
|
+
✅ context-loader - Selective specification loading
|
|
246
|
+
✅ skill-router - Route ambiguous intents
|
|
247
|
+
📦 spec-author - Create specifications (install with: npx specweave install spec-author)
|
|
248
|
+
📦 architect - System design (install with: npx specweave install architect)
|
|
249
|
+
|
|
250
|
+
Custom Skills:
|
|
251
|
+
✅ newrelic-monitor - New Relic integration
|
|
252
|
+
✅ cqrs-implementer - CQRS pattern implementation
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Nested Skill Example
|
|
256
|
+
|
|
257
|
+
**User Request**: "I want to build a real-time chat feature"
|
|
258
|
+
|
|
259
|
+
**SpecWeave Detector Processing**:
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
1. Parse Request: BUILD + FEATURE + REAL_TIME_CHAT
|
|
263
|
+
Request: feature_creation + complex_feature
|
|
264
|
+
|
|
265
|
+
2. Route to increment-planner:
|
|
266
|
+
Input: "Real-time chat feature"
|
|
267
|
+
Output: features/004-realtime-chat/
|
|
268
|
+
- spec.md (5 user stories)
|
|
269
|
+
- plan.md (WebSocket architecture)
|
|
270
|
+
- tasks.md (78 tasks)
|
|
271
|
+
- tests.md (20 test cases)
|
|
272
|
+
|
|
273
|
+
3. Detect next request: User likely wants to implement
|
|
274
|
+
Prompt: "Feature 004 created. Would you like to:
|
|
275
|
+
1. Review the plan
|
|
276
|
+
2. Start implementation
|
|
277
|
+
3. Load context for this feature"
|
|
278
|
+
|
|
279
|
+
4. User chooses 2 (Start implementation)
|
|
280
|
+
|
|
281
|
+
5. Route to context-loader:
|
|
282
|
+
Load: features/004-realtime-chat/context-manifest.yaml
|
|
283
|
+
Output: Loaded specs/modules/realtime/**, architecture/websockets.md
|
|
284
|
+
|
|
285
|
+
6. Route to developer:
|
|
286
|
+
Input: features/004-realtime-chat/tasks.md
|
|
287
|
+
Context: Loaded specs
|
|
288
|
+
Output: Implement Phase 1 (Setup WebSocket server)
|
|
289
|
+
|
|
290
|
+
7. After implementation, route to qa-engineer:
|
|
291
|
+
Input: features/004-realtime-chat/tests.md
|
|
292
|
+
Output: Generate test suite
|
|
293
|
+
|
|
294
|
+
8. Finally, route to docs-updater:
|
|
295
|
+
Update: docs/reference/api.md (add WebSocket endpoints)
|
|
296
|
+
|
|
297
|
+
9. Return to user:
|
|
298
|
+
✅ Feature 004 implemented, tested, and documented
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Best Practices
|
|
302
|
+
|
|
303
|
+
### 1. Transparent Routing
|
|
304
|
+
|
|
305
|
+
Always inform user which skill is being activated:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
🔷 SpecWeave Active
|
|
309
|
+
|
|
310
|
+
Routing to increment-planner skill to create your payment feature...
|
|
311
|
+
|
|
312
|
+
[increment-planner output]
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 2. Confirm Complex Operations
|
|
316
|
+
|
|
317
|
+
For multi-step operations, confirm before proceeding:
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
You want to "create and implement a payment feature".
|
|
321
|
+
|
|
322
|
+
This will:
|
|
323
|
+
1. Create Feature 003 (increment-planner)
|
|
324
|
+
2. Load relevant specs (context-loader)
|
|
325
|
+
3. Implement code (developer)
|
|
326
|
+
4. Generate tests (qa-engineer)
|
|
327
|
+
5. Update documentation (docs-updater)
|
|
328
|
+
|
|
329
|
+
Estimated time: 15-30 minutes
|
|
330
|
+
|
|
331
|
+
Proceed? (yes/no)
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### 3. Fail Gracefully
|
|
335
|
+
|
|
336
|
+
If SpecWeave can't handle a request:
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
I detected this is a SpecWeave project, but I'm not sure how to handle:
|
|
340
|
+
"What's the weather like?"
|
|
341
|
+
|
|
342
|
+
This seems outside SpecWeave's domain (software development).
|
|
343
|
+
Would you like me to answer as regular Claude instead?
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### 4. Learn from Usage
|
|
347
|
+
|
|
348
|
+
Track routing decisions to improve accuracy:
|
|
349
|
+
|
|
350
|
+
```javascript
|
|
351
|
+
// Log for analysis
|
|
352
|
+
logRoutingDecision({
|
|
353
|
+
userInput: "Add Stripe payments",
|
|
354
|
+
parsedRequest: "feature_creation + payments",
|
|
355
|
+
routedTo: "increment-planner",
|
|
356
|
+
wasCorrect: true, // User feedback
|
|
357
|
+
timestamp: Date.now()
|
|
358
|
+
});
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
## Integration with Other Skills
|
|
362
|
+
|
|
363
|
+
All SpecWeave skills should check if `specweave-detector` is active:
|
|
364
|
+
|
|
365
|
+
```javascript
|
|
366
|
+
// In any skill
|
|
367
|
+
if (specweaveDetectorActive()) {
|
|
368
|
+
// Access loaded context
|
|
369
|
+
const context = getSpecWeaveContext();
|
|
370
|
+
// Use centralized routing
|
|
371
|
+
routeToSkill('context-loader', params);
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## Testing
|
|
376
|
+
|
|
377
|
+
### TC-001: Detect SpecWeave Project
|
|
378
|
+
- Given: Directory with `.specweave/config.yaml`
|
|
379
|
+
- When: Claude Code opens directory
|
|
380
|
+
- Then: specweave-detector activates automatically
|
|
381
|
+
|
|
382
|
+
### TC-002: Route Simple Request
|
|
383
|
+
- Given: User says "Plan a feature for authentication"
|
|
384
|
+
- When: specweave-detector parses request
|
|
385
|
+
- Then: Routes to increment-planner
|
|
386
|
+
- And: increment-planner creates Feature 00X
|
|
387
|
+
|
|
388
|
+
### TC-003: Route Complex Request
|
|
389
|
+
- Given: User says "Create and implement payment feature"
|
|
390
|
+
- When: specweave-detector parses request
|
|
391
|
+
- Then: Orchestrates: increment-planner → context-loader → developer → qa-engineer → docs-updater
|
|
392
|
+
- And: All steps complete successfully
|
|
393
|
+
|
|
394
|
+
### TC-004: Handle Ambiguous Request
|
|
395
|
+
- Given: User says "Help with auth"
|
|
396
|
+
- When: specweave-detector cannot determine clear request
|
|
397
|
+
- Then: Routes to skill-router for clarification
|
|
398
|
+
- And: Presents options to user
|
|
399
|
+
|
|
400
|
+
### TC-005: Graceful Degradation
|
|
401
|
+
- Given: SpecWeave project
|
|
402
|
+
- When: User asks non-development question ("What's for lunch?")
|
|
403
|
+
- Then: specweave-detector recognizes out-of-domain
|
|
404
|
+
- And: Falls back to regular Claude
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Summary
|
|
409
|
+
|
|
410
|
+
The `specweave-detector` skill is the **invisible orchestrator** that:
|
|
411
|
+
- ✅ Auto-activates in SpecWeave projects
|
|
412
|
+
- ✅ Parses user requests intelligently
|
|
413
|
+
- ✅ Routes to appropriate skills automatically
|
|
414
|
+
- ✅ Orchestrates nested skill calls
|
|
415
|
+
- ✅ Manages context loading
|
|
416
|
+
- ✅ Provides seamless user experience
|
|
417
|
+
|
|
418
|
+
**User benefit**: Just describe what you want, SpecWeave figures out how to do it.
|
|
419
|
+
|
|
420
|
+
**No more manual `@role` selection** - SpecWeave is your intelligent development assistant that knows which expert to call!
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Basic SpecWeave Project Detection"
|
|
3
|
+
description: "Tests if specweave-detector can identify a SpecWeave project by presence of .specweave/ directory"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "User opens Claude Code in a SpecWeave project directory"
|
|
6
|
+
files:
|
|
7
|
+
- ".specweave/config.yaml"
|
|
8
|
+
context:
|
|
9
|
+
cwd: "/path/to/specweave-project"
|
|
10
|
+
files_present:
|
|
11
|
+
- ".specweave/"
|
|
12
|
+
- ".specweave/config.yaml"
|
|
13
|
+
- "features/"
|
|
14
|
+
- "specifications/"
|
|
15
|
+
expected_output:
|
|
16
|
+
type: "skill_activation"
|
|
17
|
+
activates: true
|
|
18
|
+
reason: "Detected .specweave/config.yaml"
|
|
19
|
+
actions:
|
|
20
|
+
- "Load project configuration"
|
|
21
|
+
- "Enable SpecWeave-specific commands"
|
|
22
|
+
- "Activate SpecWeave workflow"
|
|
23
|
+
contains:
|
|
24
|
+
- "SpecWeave project detected"
|
|
25
|
+
- "Loading configuration"
|
|
26
|
+
validation:
|
|
27
|
+
- "Skill activates proactively (without user request)"
|
|
28
|
+
- "Detects .specweave/ directory"
|
|
29
|
+
- "Reads config.yaml successfully"
|
|
30
|
+
- "Enables SpecWeave commands"
|
|
31
|
+
- "Does not activate in non-SpecWeave projects"
|
|
32
|
+
success_criteria:
|
|
33
|
+
- "Proactive activation works (proactive: true in SKILL.md)"
|
|
34
|
+
- "Configuration loaded correctly"
|
|
35
|
+
- "SpecWeave workflows enabled"
|
|
36
|
+
- "No false positives (activates only in SpecWeave projects)"
|
|
37
|
+
---
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Detection with Missing Configuration"
|
|
3
|
+
description: "Tests edge case where .specweave/ exists but config.yaml is missing or invalid"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "User opens Claude Code in directory with incomplete SpecWeave setup"
|
|
6
|
+
files:
|
|
7
|
+
- ".specweave/" # directory exists but empty
|
|
8
|
+
context:
|
|
9
|
+
cwd: "/path/to/incomplete-project"
|
|
10
|
+
files_present:
|
|
11
|
+
- ".specweave/"
|
|
12
|
+
files_missing:
|
|
13
|
+
- ".specweave/config.yaml"
|
|
14
|
+
expected_output:
|
|
15
|
+
type: "error_handling"
|
|
16
|
+
activates: true
|
|
17
|
+
reason: "Detected .specweave/ but missing config"
|
|
18
|
+
actions:
|
|
19
|
+
- "Warn user about missing config.yaml"
|
|
20
|
+
- "Offer to initialize SpecWeave project"
|
|
21
|
+
- "Provide sample config.yaml"
|
|
22
|
+
contains:
|
|
23
|
+
- "SpecWeave directory detected"
|
|
24
|
+
- "Missing config.yaml"
|
|
25
|
+
- "Initialize project?"
|
|
26
|
+
validation:
|
|
27
|
+
- "Detects incomplete setup"
|
|
28
|
+
- "Provides helpful error message"
|
|
29
|
+
- "Offers initialization option"
|
|
30
|
+
- "Does not crash or fail silently"
|
|
31
|
+
- "Suggests next steps"
|
|
32
|
+
success_criteria:
|
|
33
|
+
- "Graceful error handling"
|
|
34
|
+
- "User-friendly error message"
|
|
35
|
+
- "Actionable recommendations"
|
|
36
|
+
- "No silent failures"
|
|
37
|
+
---
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "No Activation in Non-SpecWeave Projects"
|
|
3
|
+
description: "Tests that specweave-detector does NOT activate in regular projects without .specweave/"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "User opens Claude Code in a regular Node.js project"
|
|
6
|
+
files:
|
|
7
|
+
- "package.json"
|
|
8
|
+
- "src/"
|
|
9
|
+
- "README.md"
|
|
10
|
+
context:
|
|
11
|
+
cwd: "/path/to/regular-project"
|
|
12
|
+
files_present:
|
|
13
|
+
- "package.json"
|
|
14
|
+
- "src/"
|
|
15
|
+
files_missing:
|
|
16
|
+
- ".specweave/"
|
|
17
|
+
- ".specweave/config.yaml"
|
|
18
|
+
expected_output:
|
|
19
|
+
type: "no_activation"
|
|
20
|
+
activates: false
|
|
21
|
+
reason: "No .specweave/ directory found"
|
|
22
|
+
actions: []
|
|
23
|
+
contains: []
|
|
24
|
+
validation:
|
|
25
|
+
- "Does NOT activate in non-SpecWeave projects"
|
|
26
|
+
- "No false positives"
|
|
27
|
+
- "No unnecessary warnings"
|
|
28
|
+
- "Does not interfere with normal Claude Code operation"
|
|
29
|
+
success_criteria:
|
|
30
|
+
- "Zero false positives"
|
|
31
|
+
- "Only activates when .specweave/ present"
|
|
32
|
+
- "Silent when not applicable"
|
|
33
|
+
- "No performance impact on non-SpecWeave projects"
|
|
34
|
+
---
|