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,497 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-router
|
|
3
|
+
description: Intelligent routing system that parses ambiguous user requests and routes them to appropriate SpecWeave skills with >90% accuracy. Acts as the "traffic controller" for all skill invocations. Activates when user intent is unclear or when multiple skills could handle a request. Keywords: route, clarify, ambiguous, which skill, help me decide.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill Router - Intelligent Request Routing
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
The skill-router is SpecWeave's **intelligent routing system** that:
|
|
11
|
+
1. Parses ambiguous or complex user requests
|
|
12
|
+
2. Determines which skill(s) should handle the request
|
|
13
|
+
3. Routes with >90% accuracy (target from constitution)
|
|
14
|
+
4. Learns from user feedback to improve routing
|
|
15
|
+
5. Handles multi-skill orchestration
|
|
16
|
+
|
|
17
|
+
## When to Activate
|
|
18
|
+
|
|
19
|
+
This skill activates when:
|
|
20
|
+
- User request is ambiguous ("Help me with payments")
|
|
21
|
+
- Multiple skills could handle the request
|
|
22
|
+
- specweave-detector needs clarification
|
|
23
|
+
- User explicitly asks "which skill should I use?"
|
|
24
|
+
- Request parsing confidence is <90%
|
|
25
|
+
|
|
26
|
+
## Routing Algorithm
|
|
27
|
+
|
|
28
|
+
### Phase 1: Intent Classification
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
interface UserIntent {
|
|
32
|
+
primary_action: 'create' | 'plan' | 'implement' | 'test' | 'document' | 'analyze' | 'sync' | 'optimize';
|
|
33
|
+
domain: string[]; // ['payment', 'authentication', 'api']
|
|
34
|
+
complexity: 'simple' | 'moderate' | 'complex';
|
|
35
|
+
scope: 'greenfield' | 'brownfield' | 'unknown';
|
|
36
|
+
confidence: number; // 0.0 to 1.0
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Intent Extraction Examples**:
|
|
41
|
+
|
|
42
|
+
| User Says | Primary Action | Domain | Complexity | Confidence |
|
|
43
|
+
|-----------|---------------|--------|------------|-----------|
|
|
44
|
+
| "Add Stripe payments" | create | ['payment', 'stripe'] | moderate | 0.95 |
|
|
45
|
+
| "Help with auth" | unknown | ['authentication'] | unknown | 0.40 |
|
|
46
|
+
| "Build a SaaS" | create | ['saas', 'product'] | complex | 0.85 |
|
|
47
|
+
| "Optimize slow queries" | optimize | ['performance', 'database'] | moderate | 0.90 |
|
|
48
|
+
| "Document the API" | document | ['api', 'documentation'] | simple | 0.98 |
|
|
49
|
+
|
|
50
|
+
### Phase 2: Skill Mapping
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const skillMap = {
|
|
54
|
+
// Core planning and specification
|
|
55
|
+
'create + spec': 'spec-author',
|
|
56
|
+
'create + plan': 'increment-planner',
|
|
57
|
+
'create + architecture': 'architect-agent',
|
|
58
|
+
|
|
59
|
+
// Implementation
|
|
60
|
+
'implement + nodejs': 'nodejs-backend',
|
|
61
|
+
'implement + python': 'python-backend',
|
|
62
|
+
'implement + dotnet': 'dotnet-backend',
|
|
63
|
+
'implement + frontend': 'frontend-agent',
|
|
64
|
+
|
|
65
|
+
// Testing and quality
|
|
66
|
+
'test + e2e': 'playwright-tester',
|
|
67
|
+
'test + unit': 'qa-engineer',
|
|
68
|
+
'analyze + quality': 'qa-lead-agent',
|
|
69
|
+
|
|
70
|
+
// Operations
|
|
71
|
+
'deploy + infrastructure': 'devops-agent',
|
|
72
|
+
'optimize + performance': 'performance-agent',
|
|
73
|
+
'secure + security': 'security-agent',
|
|
74
|
+
|
|
75
|
+
// Sync and integration
|
|
76
|
+
'sync + jira': 'jira-sync',
|
|
77
|
+
'sync + ado': 'ado-sync',
|
|
78
|
+
'sync + github': 'github-sync',
|
|
79
|
+
|
|
80
|
+
// Documentation
|
|
81
|
+
'document + code': 'docs-writer-agent',
|
|
82
|
+
'update + docs': 'docs-updater',
|
|
83
|
+
|
|
84
|
+
// Analysis
|
|
85
|
+
'analyze + brownfield': 'brownfield-analyzer',
|
|
86
|
+
'analyze + code': 'tech-lead-agent',
|
|
87
|
+
|
|
88
|
+
// Orchestration
|
|
89
|
+
'complex + multi-role': 'role-orchestrator',
|
|
90
|
+
'create + tasks': 'task-builder'
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Phase 3: Confidence Assessment
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
function assessConfidence(intent: UserIntent, matchedSkills: string[]): RoutingDecision {
|
|
98
|
+
let confidence = 0.0;
|
|
99
|
+
|
|
100
|
+
// Single skill match with high intent confidence
|
|
101
|
+
if (matchedSkills.length === 1 && intent.confidence > 0.85) {
|
|
102
|
+
confidence = intent.confidence;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Multiple skills but clear priority
|
|
106
|
+
else if (matchedSkills.length > 1) {
|
|
107
|
+
const prioritySkill = determinePriority(matchedSkills, intent);
|
|
108
|
+
confidence = 0.7; // Multi-skill always has some ambiguity
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// No clear match
|
|
112
|
+
else {
|
|
113
|
+
confidence = 0.3;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
skill: matchedSkills[0] || 'unknown',
|
|
118
|
+
confidence,
|
|
119
|
+
alternatives: matchedSkills.slice(1),
|
|
120
|
+
needsClarification: confidence < 0.90
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Phase 4: Clarification (if needed)
|
|
126
|
+
|
|
127
|
+
When confidence < 0.90, ask user for clarification:
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
Your request: "Help me with authentication"
|
|
131
|
+
|
|
132
|
+
I can route this to several skills. What would you like to do?
|
|
133
|
+
|
|
134
|
+
1. **Create specification** - Define authentication requirements (spec-author)
|
|
135
|
+
2. **Plan implementation** - Design auth architecture (architect-agent)
|
|
136
|
+
3. **Implement auth** - Build authentication system (backend skill)
|
|
137
|
+
4. **Secure existing auth** - Security review and hardening (security-agent)
|
|
138
|
+
5. **Test authentication** - E2E auth testing (playwright-tester)
|
|
139
|
+
|
|
140
|
+
Please select (1-5) or describe in more detail.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Routing Workflows
|
|
144
|
+
|
|
145
|
+
### Simple Routing (High Confidence)
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
User: "Create a feature plan for payment processing"
|
|
149
|
+
↓
|
|
150
|
+
skill-router analyzes:
|
|
151
|
+
Primary action: create + plan
|
|
152
|
+
Domain: payment
|
|
153
|
+
Complexity: moderate
|
|
154
|
+
Confidence: 0.95
|
|
155
|
+
↓
|
|
156
|
+
Route to: increment-planner (direct)
|
|
157
|
+
↓
|
|
158
|
+
No clarification needed
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Ambiguous Routing (Low Confidence)
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
User: "Help with payments"
|
|
165
|
+
↓
|
|
166
|
+
skill-router analyzes:
|
|
167
|
+
Primary action: unknown
|
|
168
|
+
Domain: payment
|
|
169
|
+
Complexity: unknown
|
|
170
|
+
Confidence: 0.40
|
|
171
|
+
↓
|
|
172
|
+
Needs clarification
|
|
173
|
+
↓
|
|
174
|
+
Present options:
|
|
175
|
+
1. spec-author (create spec)
|
|
176
|
+
2. increment-planner (plan feature)
|
|
177
|
+
3. architect-agent (design architecture)
|
|
178
|
+
4. nodejs-backend (implement)
|
|
179
|
+
5. security-agent (PCI compliance)
|
|
180
|
+
↓
|
|
181
|
+
User selects: 2
|
|
182
|
+
↓
|
|
183
|
+
Route to: increment-planner
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Multi-Skill Routing (Complex Request)
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
User: "Build a SaaS for project management"
|
|
190
|
+
↓
|
|
191
|
+
skill-router analyzes:
|
|
192
|
+
Primary action: create
|
|
193
|
+
Domain: saas, product, project-management
|
|
194
|
+
Complexity: complex
|
|
195
|
+
Confidence: 0.85 (high but complex)
|
|
196
|
+
↓
|
|
197
|
+
Route to: role-orchestrator
|
|
198
|
+
↓
|
|
199
|
+
role-orchestrator determines needed roles:
|
|
200
|
+
- pm-agent (product strategy)
|
|
201
|
+
- architect-agent (system design)
|
|
202
|
+
- qa-lead-agent (test strategy)
|
|
203
|
+
- devops-agent (infrastructure)
|
|
204
|
+
↓
|
|
205
|
+
Orchestrated execution
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Machine Learning Enhancement
|
|
209
|
+
|
|
210
|
+
### Training Data Collection
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
interface RoutingFeedback {
|
|
214
|
+
userInput: string;
|
|
215
|
+
parsedIntent: UserIntent;
|
|
216
|
+
routedSkill: string;
|
|
217
|
+
userAccepted: boolean; // Did user accept this routing?
|
|
218
|
+
userSelectedInstead?: string; // If rejected, what did user choose?
|
|
219
|
+
timestamp: number;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Store in .specweave/cache/routing-feedback.json
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Improvement Cycle
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
1. Collect routing decisions and user feedback
|
|
229
|
+
2. Analyze patterns:
|
|
230
|
+
- Which phrases consistently map to which skills?
|
|
231
|
+
- Which ambiguous cases were resolved by users?
|
|
232
|
+
- What keywords are strong indicators?
|
|
233
|
+
3. Update routing confidence thresholds
|
|
234
|
+
4. Refine intent classification rules
|
|
235
|
+
5. Achieve >90% accuracy target
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Success Metrics
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// Stored in .specweave/cache/routing-metrics.json
|
|
242
|
+
interface RoutingMetrics {
|
|
243
|
+
total_routings: number;
|
|
244
|
+
correct_routings: number; // User accepted
|
|
245
|
+
accuracy: number; // correct / total
|
|
246
|
+
average_confidence: number;
|
|
247
|
+
clarifications_needed: number;
|
|
248
|
+
multi_skill_routes: number;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Target: accuracy > 0.90 (90% from constitution)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Skill Priority Matrix
|
|
255
|
+
|
|
256
|
+
When multiple skills could handle a request, use priority:
|
|
257
|
+
|
|
258
|
+
| Context | Priority Order |
|
|
259
|
+
|---------|---------------|
|
|
260
|
+
| **New Product/Feature** | pm-agent → architect-agent → increment-planner → implementation |
|
|
261
|
+
| **Brownfield Modification** | brownfield-analyzer → increment-planner → implementation |
|
|
262
|
+
| **Bug Fix** | tech-lead-agent → implementation → qa-engineer |
|
|
263
|
+
| **Performance Issue** | performance-agent → tech-lead-agent → implementation |
|
|
264
|
+
| **Security Issue** | security-agent → implementation → qa-engineer |
|
|
265
|
+
| **Documentation** | docs-writer-agent → docs-updater |
|
|
266
|
+
| **Testing** | qa-lead-agent → playwright-tester or qa-engineer |
|
|
267
|
+
|
|
268
|
+
## Integration Points
|
|
269
|
+
|
|
270
|
+
### 1. Called By
|
|
271
|
+
|
|
272
|
+
- **specweave-detector**: When initial parsing is ambiguous
|
|
273
|
+
- **Users**: Explicit routing questions
|
|
274
|
+
- **role-orchestrator**: For sub-routing within complex workflows
|
|
275
|
+
|
|
276
|
+
### 2. Calls
|
|
277
|
+
|
|
278
|
+
- Any SpecWeave skill based on routing decision
|
|
279
|
+
- **role-orchestrator**: For complex multi-skill requests
|
|
280
|
+
|
|
281
|
+
### 3. Updates
|
|
282
|
+
|
|
283
|
+
- `.specweave/cache/routing-feedback.json`: Training data
|
|
284
|
+
- `.specweave/cache/routing-metrics.json`: Performance metrics
|
|
285
|
+
|
|
286
|
+
## Configuration
|
|
287
|
+
|
|
288
|
+
```yaml
|
|
289
|
+
# .specweave/config.yaml
|
|
290
|
+
skill_router:
|
|
291
|
+
enabled: true
|
|
292
|
+
|
|
293
|
+
# Accuracy target (constitution requirement)
|
|
294
|
+
accuracy_target: 0.90
|
|
295
|
+
|
|
296
|
+
# Clarification threshold
|
|
297
|
+
clarification_threshold: 0.90 # Ask when confidence < 0.90
|
|
298
|
+
|
|
299
|
+
# Learning
|
|
300
|
+
collect_feedback: true
|
|
301
|
+
feedback_file: ".specweave/cache/routing-feedback.json"
|
|
302
|
+
|
|
303
|
+
# Routing preferences
|
|
304
|
+
prefer_multi_skill: false # For complex requests, prefer orchestrator
|
|
305
|
+
auto_route_high_confidence: true # Route immediately if confidence > 0.90
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Examples
|
|
309
|
+
|
|
310
|
+
### Example 1: Stripe Integration
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
User: "I want to integrate Stripe for subscription billing"
|
|
314
|
+
|
|
315
|
+
skill-router analysis:
|
|
316
|
+
Action: create + integrate
|
|
317
|
+
Domain: stripe, payment, subscription
|
|
318
|
+
Keywords: integrate (suggests implementation)
|
|
319
|
+
Confidence: 0.88 (just below threshold)
|
|
320
|
+
|
|
321
|
+
Clarification:
|
|
322
|
+
"I see you want to integrate Stripe for subscriptions.
|
|
323
|
+
|
|
324
|
+
Would you like to:
|
|
325
|
+
1. Plan the integration (increment-planner)
|
|
326
|
+
2. Design the architecture (architect-agent)
|
|
327
|
+
3. Start implementation (nodejs-backend)
|
|
328
|
+
|
|
329
|
+
Recommendation: Start with #1 (Plan) for best practice."
|
|
330
|
+
|
|
331
|
+
User: "Yes, plan it first"
|
|
332
|
+
|
|
333
|
+
Route to: increment-planner
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Example 2: Performance Optimization
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
User: "The app is slow, especially the dashboard"
|
|
340
|
+
|
|
341
|
+
skill-router analysis:
|
|
342
|
+
Action: optimize
|
|
343
|
+
Domain: performance, dashboard, frontend
|
|
344
|
+
Confidence: 0.92 (above threshold!)
|
|
345
|
+
|
|
346
|
+
Route to: performance-agent (direct, no clarification)
|
|
347
|
+
|
|
348
|
+
performance-agent:
|
|
349
|
+
"I'll analyze the dashboard performance.
|
|
350
|
+
[runs profiling, identifies issues]
|
|
351
|
+
|
|
352
|
+
Found 3 issues:
|
|
353
|
+
1. Unnecessary re-renders (React)
|
|
354
|
+
2. Unoptimized database queries
|
|
355
|
+
3. Large bundle size
|
|
356
|
+
|
|
357
|
+
Routing optimization tasks:
|
|
358
|
+
- Issue 1 → frontend-agent
|
|
359
|
+
- Issue 2 → nodejs-backend
|
|
360
|
+
- Issue 3 → tech-lead-agent (code splitting)"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Example 3: Brownfield Documentation
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
User: "Document the existing payment processing code"
|
|
367
|
+
|
|
368
|
+
skill-router analysis:
|
|
369
|
+
Action: document
|
|
370
|
+
Domain: payment, existing-code
|
|
371
|
+
Scope: brownfield
|
|
372
|
+
Confidence: 0.75 (brownfield detection uncertain)
|
|
373
|
+
|
|
374
|
+
Clarification:
|
|
375
|
+
"You want to document existing payment code.
|
|
376
|
+
|
|
377
|
+
Options:
|
|
378
|
+
1. Analyze & document current implementation (brownfield-analyzer)
|
|
379
|
+
2. Update existing documentation (docs-updater)
|
|
380
|
+
3. Write new developer guide (docs-writer-agent)
|
|
381
|
+
|
|
382
|
+
If the code isn't documented yet, I recommend #1."
|
|
383
|
+
|
|
384
|
+
User: "1"
|
|
385
|
+
|
|
386
|
+
Route to: brownfield-analyzer
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
## Error Handling
|
|
390
|
+
|
|
391
|
+
### Unknown Domain
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
User: "What's for lunch?"
|
|
395
|
+
|
|
396
|
+
skill-router:
|
|
397
|
+
Domain: food, lunch
|
|
398
|
+
No matching SpecWeave skills
|
|
399
|
+
|
|
400
|
+
"This seems outside SpecWeave's domain (software development).
|
|
401
|
+
SpecWeave handles:
|
|
402
|
+
- Feature planning
|
|
403
|
+
- Code implementation
|
|
404
|
+
- Testing and QA
|
|
405
|
+
- Documentation
|
|
406
|
+
- DevOps and deployment
|
|
407
|
+
|
|
408
|
+
Would you like me to answer as regular Claude instead?"
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Confidence Collapse
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
If 5+ consecutive routings have confidence < 0.50:
|
|
415
|
+
"I'm having trouble understanding your requests.
|
|
416
|
+
|
|
417
|
+
Available SpecWeave skills:
|
|
418
|
+
[list all installed skills with descriptions]
|
|
419
|
+
|
|
420
|
+
Please try:
|
|
421
|
+
1. Being more specific ("create a spec" vs "help")
|
|
422
|
+
2. Including action keywords (plan, implement, test, etc.)
|
|
423
|
+
3. Mentioning technology (Node.js, Python, React, etc.)"
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
## Testing
|
|
427
|
+
|
|
428
|
+
### Test Cases
|
|
429
|
+
|
|
430
|
+
**TC-001: High Confidence Routing**
|
|
431
|
+
- Given: "Create a plan for Stripe payment integration"
|
|
432
|
+
- When: skill-router parses request
|
|
433
|
+
- Then: Confidence > 0.90
|
|
434
|
+
- And: Routes to increment-planner without clarification
|
|
435
|
+
|
|
436
|
+
**TC-002: Low Confidence Clarification**
|
|
437
|
+
- Given: "Help with auth"
|
|
438
|
+
- When: skill-router parses request
|
|
439
|
+
- Then: Confidence < 0.90
|
|
440
|
+
- And: Asks user for clarification
|
|
441
|
+
- And: Presents 3-5 options
|
|
442
|
+
|
|
443
|
+
**TC-003: Multi-Skill Complex Request**
|
|
444
|
+
- Given: "Build a real-time collaboration SaaS"
|
|
445
|
+
- When: skill-router parses request
|
|
446
|
+
- Then: Recognizes complexity
|
|
447
|
+
- And: Routes to role-orchestrator
|
|
448
|
+
- And: Confidence recorded
|
|
449
|
+
|
|
450
|
+
**TC-004: Accuracy Tracking**
|
|
451
|
+
- Given: 100 routing decisions
|
|
452
|
+
- When: Users provide feedback (accept/reject)
|
|
453
|
+
- Then: Accuracy calculated correctly
|
|
454
|
+
- And: Metrics stored in cache
|
|
455
|
+
- And: Accuracy > 90% target
|
|
456
|
+
|
|
457
|
+
**TC-005: Learning from Feedback**
|
|
458
|
+
- Given: User rejects routing 3 times for "help with payments"
|
|
459
|
+
- When: User always selects "increment-planner"
|
|
460
|
+
- Then: Pattern learned
|
|
461
|
+
- And: Future "help with payments" routes to increment-planner
|
|
462
|
+
- And: Confidence increases
|
|
463
|
+
|
|
464
|
+
## Resources
|
|
465
|
+
|
|
466
|
+
### Natural Language Processing
|
|
467
|
+
- [spaCy](https://spacy.io/) - Industrial-strength NLP
|
|
468
|
+
- [compromise](https://github.com/spencermountain/compromise) - Natural language processing in JavaScript
|
|
469
|
+
- [natural](https://github.com/NaturalNode/natural) - Natural language facilities for Node.js
|
|
470
|
+
|
|
471
|
+
### Intent Classification
|
|
472
|
+
- [Rasa NLU](https://rasa.com/docs/rasa/nlu-training-data/) - Intent classification and entity extraction
|
|
473
|
+
- [Dialogflow](https://cloud.google.com/dialogflow/docs/intents) - Google's intent classification
|
|
474
|
+
- [LUIS](https://www.luis.ai/) - Microsoft Language Understanding
|
|
475
|
+
|
|
476
|
+
### Pattern Matching
|
|
477
|
+
- [string-similarity](https://github.com/aceakash/string-similarity) - Find similarity between strings
|
|
478
|
+
- [fuzzyset.js](https://github.com/Glench/fuzzyset.js) - Fuzzy string matching
|
|
479
|
+
|
|
480
|
+
### Machine Learning (Optional Enhancement)
|
|
481
|
+
- [TensorFlow.js](https://www.tensorflow.org/js) - ML in JavaScript
|
|
482
|
+
- [brain.js](https://brain.js.org/) - Neural networks in JavaScript
|
|
483
|
+
- [ml.js](https://github.com/mljs/ml) - Machine learning tools
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## Summary
|
|
488
|
+
|
|
489
|
+
The skill-router is SpecWeave's **intelligent traffic controller** that:
|
|
490
|
+
- ✅ Parses user requests with intent classification
|
|
491
|
+
- ✅ Routes to appropriate skills with >90% accuracy (constitution target)
|
|
492
|
+
- ✅ Provides clarification when needed (confidence < 0.90)
|
|
493
|
+
- ✅ Learns from user feedback to improve over time
|
|
494
|
+
- ✅ Handles multi-skill orchestration for complex requests
|
|
495
|
+
- ✅ Tracks metrics for continuous improvement
|
|
496
|
+
|
|
497
|
+
**User benefit**: Natural language requests are intelligently routed to the right skill, making SpecWeave feel like a unified development assistant instead of fragmented tools.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Basic Request Routing"
|
|
3
|
+
description: "Tests if skill-router correctly routes user request to appropriate skill"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "Plan a new feature for user authentication"
|
|
6
|
+
context:
|
|
7
|
+
available_skills:
|
|
8
|
+
- "increment-planner"
|
|
9
|
+
- "spec-author"
|
|
10
|
+
- "developer"
|
|
11
|
+
user_intent: "plan feature"
|
|
12
|
+
expected_output:
|
|
13
|
+
type: "skill_routing"
|
|
14
|
+
routes_to: "increment-planner"
|
|
15
|
+
confidence: "high"
|
|
16
|
+
reason: "User request contains 'plan' and 'feature' keywords"
|
|
17
|
+
alternatives: []
|
|
18
|
+
actions:
|
|
19
|
+
- "Activate increment-planner skill"
|
|
20
|
+
- "Pass user request to increment-planner"
|
|
21
|
+
- "Log routing decision"
|
|
22
|
+
validation:
|
|
23
|
+
- "Routes to correct skill (increment-planner)"
|
|
24
|
+
- "Confidence level is high (>0.9)"
|
|
25
|
+
- "No ambiguity detected"
|
|
26
|
+
- "Logs routing decision"
|
|
27
|
+
- "Activates target skill"
|
|
28
|
+
success_criteria:
|
|
29
|
+
- "Correct skill selected"
|
|
30
|
+
- ">90% routing accuracy"
|
|
31
|
+
- "Fast routing (<100ms)"
|
|
32
|
+
- "Logging works"
|
|
33
|
+
---
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Ambiguous Request Handling"
|
|
3
|
+
description: "Tests how skill-router handles requests that could match multiple skills"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "Create documentation for the API"
|
|
6
|
+
context:
|
|
7
|
+
available_skills:
|
|
8
|
+
- "spec-author" # Could create API specification
|
|
9
|
+
- "architect" # Could document API architecture
|
|
10
|
+
- "docs-updater" # Could update API docs
|
|
11
|
+
user_intent: "create documentation"
|
|
12
|
+
expected_output:
|
|
13
|
+
type: "clarification_required"
|
|
14
|
+
routes_to: null
|
|
15
|
+
confidence: "low"
|
|
16
|
+
reason: "Multiple skills match: spec-author, architect, docs-updater"
|
|
17
|
+
alternatives:
|
|
18
|
+
- skill: "spec-author"
|
|
19
|
+
match_score: 0.65
|
|
20
|
+
reason: "Can create API specifications"
|
|
21
|
+
- skill: "architect"
|
|
22
|
+
match_score: 0.60
|
|
23
|
+
reason: "Can document API architecture"
|
|
24
|
+
- skill: "docs-updater"
|
|
25
|
+
match_score: 0.55
|
|
26
|
+
reason: "Can update API documentation"
|
|
27
|
+
actions:
|
|
28
|
+
- "Ask user for clarification"
|
|
29
|
+
- "Present alternatives with descriptions"
|
|
30
|
+
- "Wait for user selection"
|
|
31
|
+
validation:
|
|
32
|
+
- "Detects ambiguity (confidence <0.7)"
|
|
33
|
+
- "Lists all matching skills"
|
|
34
|
+
- "Provides match scores"
|
|
35
|
+
- "Asks user to clarify"
|
|
36
|
+
- "Does not make incorrect assumption"
|
|
37
|
+
success_criteria:
|
|
38
|
+
- "Ambiguity detected"
|
|
39
|
+
- "User presented with options"
|
|
40
|
+
- "No forced routing when uncertain"
|
|
41
|
+
- "Helpful context for each option"
|
|
42
|
+
---
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Nested Skill Orchestration"
|
|
3
|
+
description: "Tests skill-router's ability to handle one skill calling another skill"
|
|
4
|
+
input:
|
|
5
|
+
prompt: "Implement the user authentication feature"
|
|
6
|
+
context:
|
|
7
|
+
available_skills:
|
|
8
|
+
- "developer"
|
|
9
|
+
- "context-loader"
|
|
10
|
+
- "spec-author"
|
|
11
|
+
current_skill: "developer"
|
|
12
|
+
workflow:
|
|
13
|
+
- step: 1
|
|
14
|
+
skill: "developer"
|
|
15
|
+
action: "Needs to load context from specification"
|
|
16
|
+
calls: "context-loader"
|
|
17
|
+
- step: 2
|
|
18
|
+
skill: "context-loader"
|
|
19
|
+
action: "Load authentication spec"
|
|
20
|
+
returns_to: "developer"
|
|
21
|
+
- step: 3
|
|
22
|
+
skill: "developer"
|
|
23
|
+
action: "Implement based on loaded context"
|
|
24
|
+
expected_output:
|
|
25
|
+
type: "nested_routing"
|
|
26
|
+
primary_skill: "developer"
|
|
27
|
+
sub_skills:
|
|
28
|
+
- "context-loader"
|
|
29
|
+
orchestration:
|
|
30
|
+
- "developer activates"
|
|
31
|
+
- "developer calls context-loader"
|
|
32
|
+
- "context-loader loads spec"
|
|
33
|
+
- "context returns to developer"
|
|
34
|
+
- "developer implements"
|
|
35
|
+
contains:
|
|
36
|
+
- "Orchestrating skills: developer -> context-loader"
|
|
37
|
+
- "Context loaded successfully"
|
|
38
|
+
- "Returning to developer"
|
|
39
|
+
validation:
|
|
40
|
+
- "Primary skill (developer) activated correctly"
|
|
41
|
+
- "Sub-skill (context-loader) called when needed"
|
|
42
|
+
- "Context passed between skills"
|
|
43
|
+
- "Control returns to primary skill"
|
|
44
|
+
- "Workflow completes successfully"
|
|
45
|
+
success_criteria:
|
|
46
|
+
- "Nested skill calls work"
|
|
47
|
+
- "Context preserved across skills"
|
|
48
|
+
- "No infinite loops"
|
|
49
|
+
- "Proper error handling in chain"
|
|
50
|
+
---
|