claude-flow-novice 2.18.5 → 2.18.7
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/FILE_MANIFEST.md +50 -0
- package/.claude/MANIFEST_INDEX.md +224 -0
- package/.claude/MANIFEST_README.md +308 -0
- package/.claude/TRIGGER_TASKS_MANIFEST.md +11 -0
- package/.claude/WORKING-SETUP.md +67 -0
- package/.claude/adaptive-context/cfn-v3-reflection.json +21 -0
- package/.claude/agent-principles/SPARSE_LANGUAGE_FINDINGS.md +991 -0
- package/.claude/agent-principles/agent-template.md +96 -0
- package/.claude/agent-principles/prompt-engineering.md +501 -0
- package/.claude/agents/cfn-dev-team/analysts/analyst.md +120 -0
- package/.claude/agents/cfn-dev-team/analysts/root-cause-analyst.md +264 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +152 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +157 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +180 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +139 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +132 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +893 -0
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +480 -0
- package/.claude/agents/cfn-dev-team/coordinators/handoff-coordinator.md +747 -0
- package/.claude/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +510 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +157 -0
- package/.claude/agents/cfn-dev-team/dev-ops/docker-specialist.md +671 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +123 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +624 -0
- package/.claude/agents/cfn-dev-team/developers/api-gateway-specialist.md +977 -0
- package/.claude/agents/cfn-dev-team/developers/backend-developer-cerebras.md +210 -0
- package/.claude/agents/cfn-dev-team/developers/backend-developer.md +206 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +672 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +376 -0
- package/.claude/agents/cfn-dev-team/developers/database/supabase-specialist.md +746 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +247 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +272 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +396 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/ui-designer.md +221 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +707 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +228 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +476 -0
- package/.claude/agents/cfn-dev-team/documentation/api-documentation.md +111 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +144 -0
- package/.claude/agents/cfn-dev-team/documentation/specification-agent.md +152 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +119 -0
- package/.claude/agents/cfn-dev-team/product-owners/cto-agent.md +138 -0
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +151 -0
- package/.claude/agents/cfn-dev-team/product-owners/product-owner.md +483 -0
- package/.claude/agents/cfn-dev-team/reviewers/code-reviewer.md +303 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +220 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +334 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +257 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +160 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +386 -0
- package/.claude/agents/cfn-dev-team/testers/api-testing-specialist.md +757 -0
- package/.claude/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +944 -0
- package/.claude/agents/cfn-dev-team/testers/contract-tester.md +687 -0
- package/.claude/agents/cfn-dev-team/testers/e2e/playwright-tester.md +124 -0
- package/.claude/agents/cfn-dev-team/testers/integration-tester.md +785 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +188 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +505 -0
- package/.claude/agents/cfn-dev-team/testers/mutation-testing-specialist.md +643 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +253 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +224 -0
- package/.claude/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +37 -0
- package/.claude/agents/cfn-dev-team/testers/validation/validation-production-validator.md +27 -0
- package/.claude/agents/cfn-dev-team/testing/test-validation-agent.md +280 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +487 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +69 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.md +2 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator.md +7 -0
- package/.claude/agents/cfn-dev-team/utility/memory-leak-specialist.md +177 -0
- package/.claude/agents/cfn-dev-team/utility/researcher.md +116 -0
- package/.claude/agents/cfn-dev-team/utility/z-ai-specialist.md +218 -0
- package/.claude/agents/custom/cfn-docker-expert.md +132 -0
- package/.claude/agents/custom/cfn-loops-cli-expert.md +9 -0
- package/.claude/agents/custom/cfn-redis-operations.md +538 -0
- package/.claude/agents/custom/cfn-system-expert.md +489 -0
- package/.claude/agents/custom/claude-code-expert.md +298 -0
- package/.claude/agents/custom/mdap-trigger-specialist.md +82 -0
- package/.claude/agents/custom/trigger-dev-expert.md +386 -0
- package/.claude/agents/docker-coordinators/cfn-docker-v3-coordinator.md +1101 -0
- package/.claude/agents/docker-ts-fixer.md +65 -0
- package/.claude/agents/project-only-agents/npm-package-specialist.md +334 -0
- package/.claude/cfn-config/team-providers.json +102 -0
- package/.claude/commands/README.md +204 -0
- package/.claude/commands/cfn-check-errors.md +34 -0
- package/.claude/commands/cfn-detect-stale-docs.md +26 -0
- package/.claude/commands/cfn-epic-creator-v2.md +10 -0
- package/.claude/commands/cfn-loop/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn-loop/cfn-loop-cli.md +273 -0
- package/.claude/commands/cfn-loop/cfn-loop-task.md +490 -0
- package/.claude/commands/cfn-loop/cfn-loop-trigger.md +56 -0
- package/.claude/commands/cfn-ruvector-search.md +46 -0
- package/.claude/commands/cfn-test-framework +5 -0
- package/.claude/commands/cfn-update-search-index.md +31 -0
- package/.claude/coordinator-feedback-pattern.md +326 -0
- package/.claude/coordinator-patterns.md +126 -0
- package/.claude/core/agent-manager.js +80 -0
- package/.claude/core/agent-manager.js.map +1 -0
- package/.claude/core/cfn-agent-manager.js +80 -0
- package/.claude/core/cfn-agent-manager.js.map +1 -0
- package/.claude/core/cfn-config.js +1241 -0
- package/.claude/core/cfn-config.js.map +1 -0
- package/.claude/core/cfn-event-bus.js +136 -0
- package/.claude/core/cfn-event-bus.js.map +1 -0
- package/.claude/core/cfn-index.js +6 -0
- package/.claude/core/cfn-index.js.map +1 -0
- package/.claude/core/cfn-json-persistence.js +112 -0
- package/.claude/core/cfn-json-persistence.js.map +1 -0
- package/.claude/core/cfn-logger.js +245 -0
- package/.claude/core/cfn-logger.js.map +1 -0
- package/.claude/core/cfn-orchestrator-fixed.js +236 -0
- package/.claude/core/cfn-orchestrator-fixed.js.map +1 -0
- package/.claude/core/cfn-orchestrator.js +1136 -0
- package/.claude/core/cfn-orchestrator.js.map +1 -0
- package/.claude/core/cfn-persistence.js +185 -0
- package/.claude/core/cfn-persistence.js.map +1 -0
- package/.claude/core/cfn-project-manager.js +80 -0
- package/.claude/core/cfn-project-manager.js.map +1 -0
- package/.claude/core/cfn-slash-command.js +24 -0
- package/.claude/core/cfn-version.js +35 -0
- package/.claude/core/cfn-version.js.map +1 -0
- package/.claude/core/config.js +1241 -0
- package/.claude/core/config.js.map +1 -0
- package/.claude/core/event-bus.js +136 -0
- package/.claude/core/event-bus.js.map +1 -0
- package/.claude/core/index.js +6 -0
- package/.claude/core/index.js.map +1 -0
- package/.claude/core/json-persistence.js +112 -0
- package/.claude/core/json-persistence.js.map +1 -0
- package/.claude/core/logger.js +245 -0
- package/.claude/core/logger.js.map +1 -0
- package/.claude/core/orchestrator-fixed.js +236 -0
- package/.claude/core/orchestrator-fixed.js.map +1 -0
- package/.claude/core/orchestrator.js +1136 -0
- package/.claude/core/orchestrator.js.map +1 -0
- package/.claude/core/persistence.js +185 -0
- package/.claude/core/persistence.js.map +1 -0
- package/.claude/core/project-manager.js +80 -0
- package/.claude/core/project-manager.js.map +1 -0
- package/.claude/core/slash-command.js +24 -0
- package/.claude/core/version.js +35 -0
- package/.claude/core/version.js.map +1 -0
- package/.claude/helpers/cfn-checkpoint-manager.sh +251 -0
- package/.claude/helpers/cfn-github-safe.js +106 -0
- package/.claude/helpers/cfn-github-setup.sh +28 -0
- package/.claude/helpers/cfn-quick-start.sh +19 -0
- package/.claude/helpers/cfn-setup-mcp.sh +18 -0
- package/.claude/helpers/cfn-standard-checkpoint-hooks.sh +179 -0
- package/.claude/helpers/checkpoint-manager.sh +251 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
- package/.claude/hooks/SKILL.md +518 -0
- package/.claude/hooks/cfn-post-edit.config.json +51 -0
- package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/.claude/hooks/cfn-subagent-start.sh +98 -0
- package/.claude/hooks/cfn-subagent-stop.sh +129 -0
- package/.claude/hooks.json +33 -0
- package/.claude/logs/sprint1-hybrid-routing-v2-decision.json +18 -0
- package/.claude/prompts/cfn-loop-context.md +115 -0
- package/.claude/prompts/loop-specific/loop2.md +50 -0
- package/.claude/prompts/loop-specific/loop3.md +43 -0
- package/.claude/prompts/loop-specific/loop4.md +54 -0
- package/.claude/settings.json +172 -0
- package/.claude/settings.local.json +41 -0
- package/.claude/settings.playwright.json +198 -0
- package/.claude/skills/.cfn/task-configs/task-test-123.json +48 -0
- package/.claude/skills/bulk-add-ruvector-instructions.sh +89 -0
- package/.claude/skills/cfn-agent-lifecycle/SKILL.md +290 -0
- package/.claude/skills/cfn-agent-lifecycle/cli/lifecycle-hook.sh +5 -0
- package/.claude/skills/cfn-agent-lifecycle/cli/select-agents.sh +5 -0
- package/.claude/skills/cfn-agent-lifecycle/cli/spawn-agent.sh +5 -0
- package/.claude/skills/cfn-agent-lifecycle/execute.sh +355 -0
- package/.claude/skills/cfn-agent-lifecycle/lib/audit/execute-lifecycle-hook.sh +544 -0
- package/.claude/skills/cfn-agent-lifecycle/lib/selection/src/agent-selector.ts +350 -0
- package/.claude/skills/cfn-agent-lifecycle/lib/selection/src/cli.ts +74 -0
- package/.claude/skills/cfn-agent-lifecycle/lib/spawning/spawn-agent-wrapper.sh +63 -0
- package/.claude/skills/cfn-agent-selector +1 -0
- package/.claude/skills/cfn-agent-spawning +1 -0
- package/.claude/skills/cfn-cerebras-code-generator/SKILL.md +53 -0
- package/.claude/skills/cfn-cerebras-code-generator/context-analyzer.sh +96 -0
- package/.claude/skills/cfn-cerebras-code-generator/generate-code.sh +205 -0
- package/.claude/skills/cfn-cerebras-coordinator/SKILL.md +103 -0
- package/.claude/skills/cfn-cerebras-coordinator/TEST_RESULTS.md +98 -0
- package/.claude/skills/cfn-cerebras-coordinator/coordinate-generation.sh +381 -0
- package/.claude/skills/cfn-cerebras-coordinator/example-fix-scenario.md +254 -0
- package/.claude/skills/cfn-cerebras-coordinator/example-workflow.md +142 -0
- package/.claude/skills/cfn-cerebras-coordinator/feedback-logger.sh +254 -0
- package/.claude/skills/cfn-cerebras-coordinator/fix-existing-code-v2.sh +443 -0
- package/.claude/skills/cfn-cerebras-coordinator/fix-existing-code.sh +519 -0
- package/.claude/skills/cfn-cerebras-coordinator/pattern-examples.md +317 -0
- package/.claude/skills/cfn-cerebras-coordinator/query-patterns.sh +182 -0
- package/.claude/skills/cfn-cerebras-coordinator/tdd-coordinator.sh +638 -0
- package/.claude/skills/cfn-cerebras-coordinator/test-runner.sh +335 -0
- package/.claude/skills/cfn-cerebras-mcp/SKILL.md +64 -0
- package/.claude/skills/cfn-compilation-error-fixer/HANDOFF.md +29 -0
- package/.claude/skills/cfn-compilation-error-fixer/README.md +202 -0
- package/.claude/skills/cfn-compilation-error-fixer/SKILL.md +426 -0
- package/.claude/skills/cfn-compilation-error-fixer/bin/fix-errors.sh +75 -0
- package/.claude/skills/cfn-compilation-error-fixer/index.js +81 -0
- package/.claude/skills/cfn-compilation-error-fixer/install.sh +60 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/README-TypeScript.md +164 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-gated-fixer-v2.ts +1475 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-gated-fixer-v2.ts.bak +1475 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-sdk.d.ts +30 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-wrapper.ts +93 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/package.json +30 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/package.json.bak +23 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/typescript-gated-fixer-v2.ts +977 -0
- package/.claude/skills/cfn-compilation-error-fixer/lib/gates/typescript-gates.ts +704 -0
- package/.claude/skills/cfn-compilation-error-fixer/package.json +47 -0
- package/.claude/skills/cfn-compilation-error-fixer/test-fixer-logic.sh +96 -0
- package/.claude/skills/cfn-compilation-error-fixer/test-installation.sh +97 -0
- package/.claude/skills/cfn-compilation-error-fixer/test-rust-fixer-validation.sh +54 -0
- package/.claude/skills/cfn-compilation-error-fixer/test-rust-fixer.sh +380 -0
- package/.claude/skills/cfn-compilation-error-fixer/test-typescript-fixer.sh +278 -0
- package/.claude/skills/cfn-compilation-error-fixer/validate-setup.md +70 -0
- package/.claude/skills/cfn-config/lib/management/manage-config.sh +115 -0
- package/.claude/skills/cfn-dependency-management/SKILL.md +118 -0
- package/.claude/skills/cfn-dependency-management/cfn-dependency-management.sh +18 -0
- package/.claude/skills/cfn-dependency-management/execute.sh +306 -0
- package/.claude/skills/cfn-dependency-management/lib/ingestion/src/ingest-dependencies.ts +563 -0
- package/.claude/skills/cfn-docker-runtime/execute.sh +386 -0
- package/.claude/skills/cfn-docker-wave-execution +1 -0
- package/.claude/skills/cfn-edit-safety/README.md +160 -0
- package/.claude/skills/cfn-edit-safety/cli/edit-safety-cli.sh +337 -0
- package/.claude/skills/cfn-edit-safety/edit-safety.sh +375 -0
- package/.claude/skills/cfn-edit-safety/lib/hooks/post-edit-handler.sh +155 -0
- package/.claude/skills/cfn-epic-parser/SKILL.md +220 -0
- package/.claude/skills/cfn-epic-parser/example-epic.md +49 -0
- package/.claude/skills/cfn-epic-parser/parse.sh +517 -0
- package/.claude/skills/cfn-epic-parser/test-parser.sh +299 -0
- package/.claude/skills/cfn-error-management/cli/batch-errors.sh +4 -0
- package/.claude/skills/cfn-error-management/cli/capture-error.sh +4 -0
- package/.claude/skills/cfn-error-management/cli/log-error.sh +4 -0
- package/.claude/skills/cfn-error-management/lib/logging/src/error-logger.ts +1042 -0
- package/.claude/skills/cfn-error-management/lib/logging/src/index.ts +12 -0
- package/.claude/skills/cfn-error-management/lib/logging/src/types.ts +456 -0
- package/.claude/skills/cfn-expert-update/SKILL.md +149 -0
- package/.claude/skills/cfn-expert-update/test-expert-update.sh +254 -0
- package/.claude/skills/cfn-expert-update/update-expert.sh +484 -0
- package/.claude/skills/cfn-hybrid-routing +1 -0
- package/.claude/skills/cfn-intervention-system/lib/detector/detect-intervention.sh +106 -0
- package/.claude/skills/cfn-knowledge-base/SKILL.md +109 -0
- package/.claude/skills/cfn-knowledge-base/cli/knowledge-base.sh +435 -0
- package/.claude/skills/cfn-knowledge-base/execute.sh +163 -0
- package/.claude/skills/cfn-knowledge-base/lib/playbook/SKILL.md +153 -0
- package/.claude/skills/cfn-knowledge-base/lib/playbook/init-playbook.sh +54 -0
- package/.claude/skills/cfn-knowledge-base/lib/playbook/query-playbook.sh +89 -0
- package/.claude/skills/cfn-knowledge-base/lib/playbook/update-playbook.sh +67 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/COST_TRACKING.md +637 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/EDGE_CASE_TRACKING.md +404 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/README_PHASE4.md +457 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/SKILL.md +110 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/generate-skill-update.sh +525 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/propagate-skill-update.sh +654 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/src/index.ts +24 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/src/pattern-analyzer.ts +537 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/src/types.ts +180 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/track-cost-savings.sh +486 -0
- package/.claude/skills/cfn-knowledge-base/lib/workflow/track-edge-case.sh +290 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/AGENT_LIFECYCLE_INTEGRATION.md +341 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml +40 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/README.md +563 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/SKILL.md +343 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/analyze-agent-failures.sh +275 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/cfn-integration.sh +179 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/embeddings_manager.py +289 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh +234 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/ingest-agent-transcript.sh +255 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/init-local-ruvector.sh +112 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/project-structure.md +53 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/query-agent-patterns.sh +197 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/query-local.sh +169 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/requirements.txt +2 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/search_engine.py +200 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/search_engine_v2.py +238 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/sqlite_store.py +220 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/cleanup.rs +134 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/export.rs +40 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index.rs +301 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/init.rs +127 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/migration.rs +74 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/mod.rs +18 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/query.rs +222 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/reset.rs +37 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/stats.rs +133 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/embeddings.rs +121 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs +359 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration.rs +318 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/search_engine.rs +281 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/sqlite_store.rs +211 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test-agent-lifecycle-integration.sh +254 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test-local-ruvector.sh +250 -0
- package/.claude/skills/cfn-loop-orchestration +1 -0
- package/.claude/skills/cfn-loop-orchestration-v2/cli/cfn-orchestrator.cjs +49 -0
- package/.claude/skills/cfn-loop-orchestration-v2/cli/orchestrate.sh +21 -0
- package/.claude/skills/cfn-loop-orchestration-v2/cli/resolve-provider-model.cjs +69 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/agent-spawner/agent-spawner.ts +34 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/cli/orchestrator-cli.ts +396 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/gate-checker/gate-checker.ts +36 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/CONFIDENCE_AGGREGATOR.md +564 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/CONFIDENCE_AGGREGATOR_QUICK_REF.md +241 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/CONTEXT_INJECTOR_QUICK_REFERENCE.md +362 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/CONTEXT_INJECTOR_README.md +307 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/CONTEXT_INJECTOR_USAGE_GUIDE.md +508 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/confidence-aggregator.ts +473 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/consensus.ts +87 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/context-injector.ts +349 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/context-lookup.ts +486 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/deliverable-verifier.ts +107 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/gate-check.ts +115 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/iteration-manager.ts +45 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/parse-test-results.ts +372 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/product-owner-decision.ts +316 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/spawn-agents.ts +357 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/timeout-calculator.ts +41 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/helpers/validator.ts +276 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/index.ts +16 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/orchestrate.ts +1389 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/orchestrator/orchestrator.ts +31 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/redis/redis-coordinator.ts +72 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/types.ts +244 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/src/utils/logger.ts +32 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/index.ts +6 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/output-processor.ts +183 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/src/cli/process-loop2.ts +195 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/src/cli/process-loop3.ts +157 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/src/output-processor.ts +632 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/detect-vapor.sh +59 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/index.ts +12 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/src/cli/detect-vapor.ts +177 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/src/cli/validate-deliverables.ts +161 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/src/cli/validate-gate.ts +139 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/src/types.ts +215 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/src/validator.ts +503 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/validate-deliverables.sh +59 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/validate-gate.sh +63 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/validation-framework.ts +237 -0
- package/.claude/skills/cfn-mdap-context-injection/SKILL.md +14 -0
- package/.claude/skills/cfn-mdap-context-injection/inject.sh +348 -0
- package/.claude/skills/cfn-mdap-error-fixer/HANDOFF.md +383 -0
- package/.claude/skills/cfn-mdap-error-fixer/lib/fixer/cerebras-gated-fixer-v2.ts +1500 -0
- package/.claude/skills/cfn-mdap-error-fixer/lib/fixer/package.json +20 -0
- package/.claude/skills/cfn-mdap-error-fixer/skill.md +205 -0
- package/.claude/skills/cfn-memory-persistence/lib/auto/test-memory-persistence.sh +230 -0
- package/.claude/skills/cfn-memory-persistence/lib/sqlite/memory-cli.sh +74 -0
- package/.claude/skills/cfn-memory-persistence/lib/sqlite/ttl-cleanup.sh +266 -0
- package/.claude/skills/cfn-node-heap-sizer/SKILL.md +313 -0
- package/.claude/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +326 -0
- package/.claude/skills/cfn-operations/execute.sh +175 -0
- package/.claude/skills/cfn-operations/lib/file/lib/lock.sh +361 -0
- package/.claude/skills/cfn-operations/lib/file/test.sh +373 -0
- package/.claude/skills/cfn-operations/lib/log/test.sh +400 -0
- package/.claude/skills/cfn-parameterized-queries/SKILL.md +368 -0
- package/.claude/skills/cfn-parameterized-queries/parameterized-queries.sh +249 -0
- package/.claude/skills/cfn-parameterized-queries/test-implementation.sh +237 -0
- package/.claude/skills/cfn-planning/execute.sh +159 -0
- package/.claude/skills/cfn-process-management/cfn-process +16 -0
- package/.claude/skills/cfn-process-management/cli/process-manager +186 -0
- package/.claude/skills/cfn-process-management/lib/lifecycle/process-manager.sh +334 -0
- package/.claude/skills/cfn-project-management/SKILL.md +60 -0
- package/.claude/skills/cfn-provider-routing +1 -0
- package/.claude/skills/cfn-redis-coordination +1 -0
- package/.claude/skills/cfn-routing-config/lib/provider/resolve-provider-model.ts +252 -0
- package/.claude/skills/cfn-session-handoff/SKILL.md +53 -0
- package/.claude/skills/cfn-skill-management/FIXES_APPLIED.md +80 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/package.json +56 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/cli.ts +75 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/database-adapter.ts +239 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/file-system-adapter.ts +113 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/index.ts +72 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/logger.ts +43 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/metadata-parser.ts +154 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/skill-propagator.ts +274 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/skill-validator.ts +179 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/types.ts +143 -0
- package/.claude/skills/cfn-skill-management/lib/propagation/src/version-manager.ts +118 -0
- package/.claude/skills/cfn-skill-management/src/cli/skill-loader.ts +364 -0
- package/.claude/skills/cfn-skill-management/src/lib/database-service.ts +313 -0
- package/.claude/skills/cfn-sprint-execution/execute.sh +257 -0
- package/.claude/skills/cfn-sprint-execution/lib/execution/execute-sprint-task.sh +68 -0
- package/.claude/skills/cfn-task-decomposition/explore-123-subtasks.json +27 -0
- package/.claude/skills/cfn-task-decomposition/prompts/explore-123-analyze-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/prompts/explore-123-scan-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/prompts/test-final-fix-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/prompts/test-final-pattern-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/prompts/test-final-recon-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/prompts/test-final-validate-prompt.md +36 -0
- package/.claude/skills/cfn-task-decomposition/test-456-subtasks.json +60 -0
- package/.claude/skills/cfn-task-decomposition/test-789-subtasks.json +60 -0
- package/.claude/skills/cfn-task-decomposition/test-999-subtasks.json +27 -0
- package/.claude/skills/cfn-task-decomposition/test-debug-subtasks.json +60 -0
- package/.claude/skills/cfn-task-decomposition/test-debug2-subtasks.json +60 -0
- package/.claude/skills/cfn-task-decomposition/test-final-subtasks.json +60 -0
- package/.claude/skills/cfn-task-decomposition/test-simple-subtasks.json +60 -0
- package/.claude/skills/cfn-task-intelligence/SKILL.md +18 -0
- package/.claude/skills/cfn-task-intelligence/cfn-task-intelligence.sh +158 -0
- package/.claude/skills/cfn-task-intelligence/lib/integration/SKILL.md +339 -0
- package/.claude/skills/cfn-task-intelligence/lib/integration/learning-loop.sh +127 -0
- package/.claude/skills/cfn-task-intelligence/lib/integration/post-feedback-hook.sh +124 -0
- package/.claude/skills/cfn-task-intelligence/lib/integration/pre-execution-hook.sh +59 -0
- package/.claude/skills/cfn-task-planning/SKILL.md +15 -0
- package/.claude/skills/cfn-task-planning/cli/classify-task.sh +4 -0
- package/.claude/skills/cfn-task-planning/cli/decompose-task.sh +4 -0
- package/.claude/skills/cfn-task-planning/cli/init-config.sh +4 -0
- package/.claude/skills/cfn-task-planning/lib/audit/get-audit-data.sh +397 -0
- package/.claude/skills/cfn-task-planning/lib/audit/store-task-audit.sh +191 -0
- package/.claude/skills/cfn-task-planning/lib/decomposition/task-decomposer.sh +415 -0
- package/.claude/skills/cfn-test-framework/CLI.md +191 -0
- package/.claude/skills/cfn-test-framework/execute.sh +386 -0
- package/.claude/skills/cfn-transparency-middleware/CACHE_MANAGER.md +98 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.lock +2358 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +20 -0
- package/.claude/skills/cfn-transparency-middleware/README.md +327 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +327 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +23 -0
- package/.claude/skills/cfn-transparency-middleware/fix_redact.sh +12 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/src/agent_metrics.rs +480 -0
- package/.claude/skills/cfn-transparency-middleware/src/api_handler.rs +318 -0
- package/.claude/skills/cfn-transparency-middleware/src/cache_manager.rs +219 -0
- package/.claude/skills/cfn-transparency-middleware/src/fix_regex.rs +9 -0
- package/.claude/skills/cfn-transparency-middleware/src/lib.rs +391 -0
- package/.claude/skills/cfn-transparency-middleware/src/main.rs +205 -0
- package/.claude/skills/cfn-transparency-middleware/src/memory_query.rs +93 -0
- package/.claude/skills/cfn-transparency-middleware/src/memory_repository.rs +169 -0
- package/.claude/skills/cfn-transparency-middleware/src/memory_schema.rs +154 -0
- package/.claude/skills/cfn-transparency-middleware/src/test_fix.txt +2 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-utilities/lib/logging.sh +77 -0
- package/.claude/skills/cfn-validation-framework/execute.sh +223 -0
- package/.claude/skills/equation-solver/solve.sh +352 -0
- package/.claude/skills/equation-solver/test.cjs +25 -0
- package/.claude/skills/shared/bootstrap/sqlite-params.sh +156 -0
- package/.claude/skills/shared/lib/path-utils.sh +139 -0
- package/.claude/skills-database/APPROVAL_CRITERIA.md +925 -0
- package/.claude/skills-database/APPROVAL_WORKFLOW.md +1482 -0
- package/.claude/skills-database/ARCHITECTURE_DECISIONS.md +456 -0
- package/.claude/skills-database/IMPLEMENTATION_GUIDE.md +763 -0
- package/.claude/skills-database/README.md +564 -0
- package/.claude/skills-database/TDD_SKILLS_DB_INTEGRATION.md +2286 -0
- package/.claude/skills-database/schema-v2.sql +587 -0
- package/.claude/slash-commands.json +92 -0
- package/.claude/spawn-pattern-examples.md +500 -0
- package/.claude/sprint-configs/cfn-naming-standardization.json +729 -0
- package/.claude/state/cfn-expert-last-commit +2 -0
- package/.claude/tooling/jq +0 -0
- package/fix-node_modules.md +68 -0
- package/package.json +44 -40
- package/readme/COMPONENT_NPM_STATUS.md +1 -1
- package/readme/installation-process.md +1 -1
- package/scripts/cfn-init.js +377 -0
- package/scripts/postinstall.js +144 -0
- package/trigger.config.ts +9 -0
- package/claude-assets/agents/cfn-dev-team/analysts/analyst.md +0 -113
- package/claude-assets/agents/cfn-dev-team/analysts/root-cause-analyst.md +0 -257
- package/claude-assets/agents/cfn-dev-team/architecture/api-designer-persona.md +0 -145
- package/claude-assets/agents/cfn-dev-team/architecture/base-template-generator.md +0 -150
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +0 -173
- package/claude-assets/agents/cfn-dev-team/architecture/planner.md +0 -132
- package/claude-assets/agents/cfn-dev-team/architecture/system-architect.md +0 -125
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +0 -886
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +0 -473
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +0 -740
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +0 -503
- package/claude-assets/agents/cfn-dev-team/dev-ops/devops-engineer.md +0 -150
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +0 -664
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +0 -116
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +0 -617
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +0 -970
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +0 -192
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +0 -665
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +0 -369
- package/claude-assets/agents/cfn-dev-team/developers/database/supabase-specialist.md +0 -739
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +0 -240
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +0 -256
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +0 -389
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +0 -214
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +0 -700
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +0 -221
- package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +0 -469
- package/claude-assets/agents/cfn-dev-team/documentation/api-documentation.md +0 -104
- package/claude-assets/agents/cfn-dev-team/documentation/pseudocode.md +0 -137
- package/claude-assets/agents/cfn-dev-team/documentation/specification-agent.md +0 -145
- package/claude-assets/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +0 -112
- package/claude-assets/agents/cfn-dev-team/product-owners/cto-agent.md +0 -131
- package/claude-assets/agents/cfn-dev-team/product-owners/power-user-persona.md +0 -144
- package/claude-assets/agents/cfn-dev-team/product-owners/product-owner.md +0 -476
- package/claude-assets/agents/cfn-dev-team/reviewers/code-reviewer.md +0 -287
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +0 -213
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +0 -327
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +0 -250
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +0 -153
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +0 -379
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +0 -750
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +0 -937
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +0 -680
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +0 -117
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +0 -778
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +0 -181
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +0 -498
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +0 -636
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +0 -246
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +0 -208
- package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +0 -30
- package/claude-assets/agents/cfn-dev-team/testers/validation/validation-production-validator.md +0 -20
- package/claude-assets/agents/cfn-dev-team/testing/test-validation-agent.md +0 -273
- package/claude-assets/agents/cfn-dev-team/utility/agent-builder.md +0 -480
- package/claude-assets/agents/cfn-dev-team/utility/context-curator.md +0 -62
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +0 -132
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +0 -170
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +0 -109
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +0 -211
- package/claude-assets/agents/custom/cfn-docker-expert.md +0 -104
- package/claude-assets/agents/custom/cfn-loops-cli-expert.md +0 -455
- package/claude-assets/agents/custom/cfn-redis-operations.md +0 -531
- package/claude-assets/agents/custom/cfn-system-expert.md +0 -337
- package/claude-assets/agents/custom/claude-code-expert.md +0 -291
- package/claude-assets/agents/custom/mdap-trigger-specialist.md +0 -437
- package/claude-assets/agents/custom/trigger-dev-expert.md +0 -370
- package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +0 -1094
- package/claude-assets/agents/docker-ts-fixer.md +0 -58
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +0 -327
- package/claude-assets/commands/README.md +0 -205
- package/claude-assets/commands/cfn-loop/CFN_LOOP_FRONTEND.md +0 -741
- package/claude-assets/commands/cfn-loop/CFN_LOOP_TASK_MODE.md +0 -608
- package/claude-assets/commands/cfn-loop/cfn-loop-cli.md +0 -308
- package/claude-assets/commands/cfn-loop/cfn-loop-trigger.md +0 -132
- package/claude-assets/commands/deprecated/README.md +0 -24
- package/claude-assets/hooks/SKILL.md +0 -518
- package/claude-assets/hooks/SKILL.md.backup +0 -471
- package/claude-assets/hooks/cfn-invoke-post-edit-ts.sh.backup +0 -78
- package/claude-assets/hooks/cfn-invoke-post-edit.sh.backup +0 -87
- package/claude-assets/hooks/cfn-invoke-pre-edit-ts.sh.backup +0 -94
- package/claude-assets/hooks/cfn-invoke-pre-edit.sh.backup +0 -88
- package/claude-assets/hooks/cfn-post-edit.config.json +0 -51
- package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +0 -20
- package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +0 -40
- package/claude-assets/hooks/cfn-pre-execution/SESSION_START_README.md +0 -87
- package/claude-assets/hooks/cfn-pre-execution/TEST_SESSION_START.md +0 -128
- package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +0 -20
- package/claude-assets/hooks/cfn-pre-execution/session-start-context.sh +0 -111
- package/claude-assets/hooks/subagent-start.sh +0 -98
- package/claude-assets/hooks/subagent-stop.sh +0 -93
- package/claude-assets/skills/cfn-agent-lifecycle/SKILL.md +0 -290
- package/claude-assets/skills/cfn-agent-lifecycle/cli/lifecycle-hook.sh +0 -5
- package/claude-assets/skills/cfn-agent-lifecycle/cli/select-agents.sh +0 -5
- package/claude-assets/skills/cfn-agent-lifecycle/cli/spawn-agent.sh +0 -5
- package/claude-assets/skills/cfn-agent-lifecycle/lib/audit/execute-lifecycle-hook.sh +0 -544
- package/claude-assets/skills/cfn-agent-lifecycle/lib/selection/dist/agent-selector.cjs +0 -297
- package/claude-assets/skills/cfn-agent-lifecycle/lib/selection/dist/agent-selector.js +0 -297
- package/claude-assets/skills/cfn-agent-lifecycle/lib/selection/dist/cli.cjs +0 -96
- package/claude-assets/skills/cfn-agent-lifecycle/lib/selection/dist/cli.js +0 -96
- package/claude-assets/skills/cfn-agent-lifecycle/lib/spawning/spawn-agent-wrapper.sh +0 -63
- package/claude-assets/skills/cfn-cerebras-mcp/SKILL.md +0 -58
- package/claude-assets/skills/cfn-config/lib/management/manage-config.sh +0 -113
- package/claude-assets/skills/cfn-dependency-management/SKILL.md +0 -60
- package/claude-assets/skills/cfn-dependency-management/lib/ingestion/dist/ingest-dependencies.js +0 -478
- package/claude-assets/skills/cfn-docker-runtime/lib/build/SKILL.md +0 -96
- package/claude-assets/skills/cfn-docker-runtime/lib/build/build.sh +0 -73
- package/claude-assets/skills/cfn-docker-runtime/lib/coordination/README.md +0 -349
- package/claude-assets/skills/cfn-docker-runtime/lib/coordination/docker-helpers.sh +0 -433
- package/claude-assets/skills/cfn-docker-runtime/lib/coordination/package.json +0 -38
- package/claude-assets/skills/cfn-edit-safety/lib/backup/SKILL.md.backup +0 -277
- package/claude-assets/skills/cfn-edit-safety/lib/backup/backup.sh.backup +0 -107
- package/claude-assets/skills/cfn-edit-safety/lib/hooks/post-edit-handler.sh +0 -154
- package/claude-assets/skills/cfn-epic-parser/SKILL.md +0 -55
- package/claude-assets/skills/cfn-error-management/cli/batch-errors.sh +0 -4
- package/claude-assets/skills/cfn-error-management/cli/capture-error.sh +0 -4
- package/claude-assets/skills/cfn-error-management/cli/log-error.sh +0 -4
- package/claude-assets/skills/cfn-expert-update/SKILL.md +0 -24
- package/claude-assets/skills/cfn-expert-update/update-expert.sh +0 -346
- package/claude-assets/skills/cfn-github-workflow/SKILL.md +0 -70
- package/claude-assets/skills/cfn-intervention-system/lib/detector/detect-intervention.sh +0 -111
- package/claude-assets/skills/cfn-knowledge-base/SKILL.md +0 -61
- package/claude-assets/skills/cfn-knowledge-base/lib/playbook/SKILL.md +0 -153
- package/claude-assets/skills/cfn-knowledge-base/lib/playbook/init-playbook.sh +0 -54
- package/claude-assets/skills/cfn-knowledge-base/lib/playbook/query-playbook.sh +0 -83
- package/claude-assets/skills/cfn-knowledge-base/lib/playbook/update-playbook.sh +0 -80
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/COST_TRACKING.md +0 -637
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/EDGE_CASE_TRACKING.md +0 -404
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/README_PHASE4.md +0 -457
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/SKILL.md +0 -110
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/generate-skill-update.sh +0 -525
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/propagate-skill-update.sh +0 -648
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/track-cost-savings.sh +0 -486
- package/claude-assets/skills/cfn-knowledge-base/lib/workflow/track-edge-case.sh +0 -290
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/coordination/agent-completion.sh.backup +0 -36
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/coordination/coordination-signal.sh.backup +0 -36
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/coordination/coordination-wait.sh.backup +0 -36
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/agent-spawner/agent-spawner.d.ts +0 -15
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/agent-spawner/agent-spawner.js +0 -29
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/cli/orchestrator-cli.d.ts +0 -49
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/cli/orchestrator-cli.js +0 -339
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/gate-checker/gate-checker.d.ts +0 -15
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/gate-checker/gate-checker.js +0 -32
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/confidence-aggregator.d.ts +0 -115
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/confidence-aggregator.js +0 -359
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/consensus.d.ts +0 -36
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/consensus.js +0 -62
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/context-injector.d.ts +0 -135
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/context-injector.js +0 -257
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/context-lookup.d.ts +0 -179
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/context-lookup.js +0 -388
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/deliverable-verifier.d.ts +0 -26
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/deliverable-verifier.js +0 -116
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/gate-check.d.ts +0 -27
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/gate-check.js +0 -92
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/iteration-manager.d.ts +0 -28
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/iteration-manager.js +0 -34
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/parse-test-results.d.ts +0 -21
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/parse-test-results.js +0 -323
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/product-owner-decision.d.ts +0 -86
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/product-owner-decision.js +0 -272
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/spawn-agents.d.ts +0 -61
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/spawn-agents.js +0 -280
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/timeout-calculator.d.ts +0 -15
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/timeout-calculator.js +0 -34
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/validator.d.ts +0 -83
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/helpers/validator.js +0 -222
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/index.d.ts +0 -14
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/index.js +0 -32
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/orchestrate.d.ts +0 -325
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/orchestrate.js +0 -1083
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/orchestrator/orchestrator.d.ts +0 -17
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/orchestrator/orchestrator.js +0 -31
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/redis/redis-coordinator.d.ts +0 -46
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/redis/redis-coordinator.js +0 -68
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/types.d.ts +0 -166
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/types.js +0 -101
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/utils/logger.d.ts +0 -16
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/dist/utils/logger.js +0 -29
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/orchestrate.sh.backup2 +0 -959
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/orchestrator/orchestrate.sh.clean +0 -949
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/SKILL.md.backup +0 -353
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/check-dependencies.sh.backup +0 -31
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/detect-vapor.sh +0 -59
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/detect-vapor.sh.backup +0 -37
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/.tsbuildinfo +0 -1
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/detect-vapor.d.ts +0 -14
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/detect-vapor.js +0 -185
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/validate-deliverables.d.ts +0 -14
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/validate-deliverables.js +0 -176
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/validate-gate.d.ts +0 -19
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/cli/validate-gate.js +0 -123
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/types.d.ts +0 -156
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/types.js +0 -66
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/validator.d.ts +0 -85
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/dist/validator.js +0 -411
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/orchestrate-cfn-loop.sh.backup +0 -252
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/validate-deliverables.sh +0 -59
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/validate-deliverables.sh.backup +0 -37
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/validate-gate.sh +0 -63
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/validate-gate.sh.backup +0 -41
- package/claude-assets/skills/cfn-loop-orchestration-v2/lib/validation/validate-iteration.sh.backup +0 -134
- package/claude-assets/skills/cfn-mdap-context-injection/SKILL.md +0 -176
- package/claude-assets/skills/cfn-mdap-context-injection/inject.sh +0 -284
- package/claude-assets/skills/cfn-memory-persistence/lib/auto/test-memory-persistence.sh +0 -236
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/agent-log.sh.backup +0 -128
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/agent-recovery.sh.backup +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/analyze-task-complexity.sh.backup +0 -277
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/bash-wrappers/store-context.sh.backup +0 -23
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/cancel-swarm.sh.backup +0 -221
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/cfn-loop-exec.sh.backup +0 -468
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/cfn-loop-relaunch.sh.backup +0 -29
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/collect-confidence-scores.sh.backup +0 -209
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/collect-results.sh.backup +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/complete-swarm.sh.backup +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/agent-logger.d.ts +0 -92
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/agent-logger.js +0 -329
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/agent-recovery.d.ts +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/agent-recovery.js +0 -302
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/completion-reporter.d.ts +0 -58
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/completion-reporter.js +0 -237
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/context-manager.d.ts +0 -63
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/context-manager.js +0 -230
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/index.d.ts +0 -45
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/index.js +0 -114
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/mode-detector.d.ts +0 -31
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/mode-detector.js +0 -185
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/redis-client.d.ts +0 -191
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/redis-client.js +0 -509
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/result-collector.d.ts +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/result-collector.js +0 -281
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/swarm-manager.d.ts +0 -75
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/swarm-manager.js +0 -354
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/task-analyzer.d.ts +0 -62
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/task-analyzer.js +0 -305
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/task-executor.d.ts +0 -97
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/task-executor.js +0 -283
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/types.d.ts +0 -176
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/types.js +0 -81
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/waiting-coordinator.d.ts +0 -86
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/dist/waiting-coordinator.js +0 -419
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/get-context.sh.backup +0 -146
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/get-success-criteria.sh.backup +0 -54
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/invoke-waiting-mode.sh.backup +0 -225
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/redis-cli-wrapper.sh.backup +0 -43
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/redis-functions.sh.backup +0 -34
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/report-completion.sh.backup +0 -134
- package/claude-assets/skills/cfn-memory-persistence/lib/redis/store-context.sh.backup +0 -123
- package/claude-assets/skills/cfn-memory-persistence/lib/sqlite/memory-cli.sh +0 -88
- package/claude-assets/skills/cfn-memory-persistence/lib/sqlite/ttl-cleanup.sh +0 -266
- package/claude-assets/skills/cfn-node-heap-sizer/SKILL.md +0 -23
- package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +0 -326
- package/claude-assets/skills/cfn-operations/lib/file/lib/lock.sh +0 -361
- package/claude-assets/skills/cfn-operations/lib/file/test.sh +0 -369
- package/claude-assets/skills/cfn-operations/lib/log/test.sh +0 -394
- package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +0 -347
- package/claude-assets/skills/cfn-process-management/lib/lifecycle/process-manager.sh +0 -144
- package/claude-assets/skills/cfn-project-analysis/SKILL.md +0 -113
- package/claude-assets/skills/cfn-project-management/SKILL.md +0 -52
- package/claude-assets/skills/cfn-routing-config/lib/provider/resolve-provider-model.ts +0 -223
- package/claude-assets/skills/cfn-ruvector-codebase-index/.cfn-manifest.json +0 -37
- package/claude-assets/skills/cfn-ruvector-codebase-index/SKILL.md +0 -830
- package/claude-assets/skills/cfn-ruvector-codebase-index/batch-indexer.js +0 -185
- package/claude-assets/skills/cfn-ruvector-codebase-index/check-db.js +0 -8
- package/claude-assets/skills/cfn-ruvector-codebase-index/clean-orphaned-entries.sh +0 -206
- package/claude-assets/skills/cfn-ruvector-codebase-index/config.json +0 -65
- package/claude-assets/skills/cfn-ruvector-codebase-index/debug-search.js +0 -19
- package/claude-assets/skills/cfn-ruvector-codebase-index/detect-stale-docs.sh +0 -325
- package/claude-assets/skills/cfn-ruvector-codebase-index/embeddings.js +0 -181
- package/claude-assets/skills/cfn-ruvector-codebase-index/get-embedding-text.js +0 -26
- package/claude-assets/skills/cfn-ruvector-codebase-index/handle-file-moves.sh +0 -147
- package/claude-assets/skills/cfn-ruvector-codebase-index/index.sh +0 -324
- package/claude-assets/skills/cfn-ruvector-codebase-index/indexer.js +0 -53
- package/claude-assets/skills/cfn-ruvector-codebase-index/init-db.js +0 -27
- package/claude-assets/skills/cfn-ruvector-codebase-index/install-hook.sh +0 -51
- package/claude-assets/skills/cfn-ruvector-codebase-index/package.json +0 -30
- package/claude-assets/skills/cfn-ruvector-codebase-index/parser.js +0 -264
- package/claude-assets/skills/cfn-ruvector-codebase-index/query-error-patterns.sh +0 -42
- package/claude-assets/skills/cfn-ruvector-codebase-index/query-learnings.sh +0 -44
- package/claude-assets/skills/cfn-ruvector-codebase-index/ruvector-learning.js +0 -316
- package/claude-assets/skills/cfn-ruvector-codebase-index/search.js +0 -55
- package/claude-assets/skills/cfn-ruvector-codebase-index/search.sh +0 -137
- package/claude-assets/skills/cfn-ruvector-codebase-index/standalone-indexer.js +0 -129
- package/claude-assets/skills/cfn-ruvector-codebase-index/store-error-pattern.sh +0 -54
- package/claude-assets/skills/cfn-ruvector-codebase-index/store-learning.sh +0 -64
- package/claude-assets/skills/cfn-ruvector-codebase-index/test-comprehensive.js +0 -120
- package/claude-assets/skills/cfn-ruvector-codebase-index/test-db-structure.js +0 -40
- package/claude-assets/skills/cfn-ruvector-codebase-index/test-integration.js +0 -56
- package/claude-assets/skills/cfn-ruvector-codebase-index/test-metadata-fetch.js +0 -57
- package/claude-assets/skills/cfn-ruvector-codebase-index/test-search-debug.js +0 -48
- package/claude-assets/skills/cfn-session-handoff/SKILL.md +0 -273
- package/claude-assets/skills/cfn-skill-management/lib/propagation/package.json +0 -52
- package/claude-assets/skills/cfn-sprint-execution/lib/execution/execute-sprint-task.sh +0 -59
- package/claude-assets/skills/cfn-task-intelligence/SKILL.md +0 -64
- package/claude-assets/skills/cfn-task-planning/SKILL.md +0 -193
- package/claude-assets/skills/cfn-task-planning/cli/classify-task.sh +0 -4
- package/claude-assets/skills/cfn-task-planning/cli/decompose-task.sh +0 -4
- package/claude-assets/skills/cfn-task-planning/cli/init-config.sh +0 -4
- package/claude-assets/skills/cfn-task-planning/lib/audit/get-audit-data.sh +0 -397
- package/claude-assets/skills/cfn-task-planning/lib/audit/store-task-audit.sh +0 -191
- package/claude-assets/skills/cfn-task-planning/lib/decomposition/task-decomposer.sh +0 -279
- package/claude-assets/skills/cfn-transparency-middleware/Cargo.toml +0 -18
- package/claude-assets/skills/cfn-transparency-middleware/README.md +0 -74
- package/claude-assets/skills/cfn-transparency-middleware/SKILL.md +0 -99
- package/claude-assets/skills/cfn-transparency-middleware/config.json +0 -31
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +0 -98
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-init.sh +0 -224
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-level.sh +0 -333
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +0 -345
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +0 -140
- package/claude-assets/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +0 -235
- package/claude-assets/skills/cfn-transparency-middleware/memory_query.rs +0 -85
- package/claude-assets/skills/cfn-transparency-middleware/memory_repository.rs +0 -140
- package/claude-assets/skills/cfn-transparency-middleware/memory_schema.rs +0 -64
- package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +0 -162
- package/claude-assets/skills/cfn-utilities/lib/logging.sh +0 -77
- package/claude-assets/skills/equation-solver/solve.sh +0 -348
- package/scripts/init-project.js +0 -455
- /package/{claude-assets → .claude}/agents/AGENT_LIFECYCLE.md +0 -0
- /package/{claude-assets → .claude}/agents/README-AGENT_LIFECYCLE.md +0 -0
- /package/{claude-assets → .claude}/agents/README-VALIDATION.md +0 -0
- /package/{claude-assets → .claude}/agents/SHARED_PROTOCOL.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/CLAUDE.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/README.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/coordinators/README.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/developers/README.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/documentation/README-VALIDATION.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/reviewers/README.md +0 -0
- /package/{claude-assets → .claude}/agents/cfn-dev-team/testers/README.md +0 -0
- /package/{claude-assets → .claude}/agents/csuite/cto-agent.md +0 -0
- /package/{claude-assets → .claude}/agents/validate-agent.js +0 -0
- /package/{claude-assets → .claude}/cfn-extras/.gs-api-quota.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/.gs-progress-state.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cfn-coordinator-enterprise.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cfn-coordinator-mvp.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cfn-coordinator-standard.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cfn-loop-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cfn-v3-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/code-booster.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/cost-savings-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/docker-team/csuite/c-suite-template.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/docker-team/infrastructure/team-coordinator-template.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/docker-team/micro-sprint-planner.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/README.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-generalist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/agents/google-sheets-specialist.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/cfn-docker/CFN_DOCKER_CLI.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/cfn-docker/CFN_DOCKER_LOOP.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/cfn-docker/CFN_DOCKER_NATIVE.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/cfn-docker/CFN_DOCKER_TASK.md +0 -0
- /package/{claude-assets/commands/testing → .claude/cfn-extras/commands/cfn-docker}/cfn-docker-core-test-suite.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/CFN_EXPERT_UPDATE.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/README.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/cfn-loop-epic.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/cfn-loop-single.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/cfn-loop-sprints.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/context-curate.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/context-inject.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/context-query.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/context-stats.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/cost-savings-off.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/cost-savings-on.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/custom-routing-activate.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/custom-routing-deactivate.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/github-commit.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/deprecated/github.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/deprecated/hello-world-tests.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/parse-epic.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/deprecated/run-tests.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/commands/deprecated/suggest-improvements.md +0 -0
- /package/{claude-assets → .claude/cfn-extras}/commands/google-sheets/google-sheets-loop.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-agent-swap/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-api-validation/test-endpoints.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-context-pruner/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-context-pruner/prune-context.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/README.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/config.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/eventbus-wrapper.cjs +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/invoke-event-publish.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/invoke-event-subscribe.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-event-bus/test-event-bus.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/README.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/config.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-fleet-manager/test-fleet-manager.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-task-mode-safety/cli-coordination.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-task-mode-safety/mode-detection.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/advanced-features/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/agents-registry-clean.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/agents-registry-fixed.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/agents-registry.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/discover-agents.py +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/discover-agents.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/invoke-registry.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-discovery/temp_script.py +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-selector/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-agent-selector/select-agents.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/DESIGN.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-api-coordinator/test.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-decomposition/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-decomposition/decompose.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-formula-builder/test.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-formula-builder/validate.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-progress/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-progress/test.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-progress/track-progress.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-progress/validate.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-validation/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-validation/test.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-validation/validate-state.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/google-sheets-validation/validate.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-ad-performance.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-email-performance.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-social-engagement.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-website-traffic.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/add-to-segment.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/create-contact.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/get-contact.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/update-contact.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/create-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/list-templates.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/send-test-email.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-ab-test.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-landing-page.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/get-page-performance.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/publish-page.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/unpublish-page.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/export-report.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/search-mentions.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-outreach/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/search-journalists.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/send-pitch.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/submit-haro-response.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-press-distribution/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/distribute-press-release.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-distribution-status.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/list-templates.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/create-post.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/delete-post.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/get-post-stats.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/schedule-post.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/upload-media.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/DESIGN.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-agents.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-dashboard.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-events.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-metrics.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-start.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-stop.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/utility/cfn-environment-sanitization/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/utility/cfn-process-instrumentation/SKILL.md +0 -0
- /package/{claude-assets → .claude}/cfn-extras/skills/utility/cfn-process-instrumentation/instrument-process.sh +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-ad-campaigns.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-analytics-data.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-chatbot-conversations.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-competitive-intel.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-crm-contacts.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-email-campaigns.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-landing-pages.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-media-outreach.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-press-distribution.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-sms-campaigns.json +0 -0
- /package/{claude-assets → .claude}/cfn-extras/workflows/marketing-social-publishing.json +0 -0
- /package/{claude-assets/commands/cfn-loop/list-agents-rebuild.md → .claude/commands/cfn-loop/cfn-list-agents-rebuild.md} +0 -0
- /package/{claude-assets → .claude}/commands/cfn-loop/cfn-loop-document.md +0 -0
- /package/{claude-assets → .claude}/commands/cfn-loop/cfn-mode.md +0 -0
- /package/{claude-assets → .claude}/commands/cfn-loop/cfn-optimize-agents.md +0 -0
- /package/{claude-assets/commands/cfn-ruvector/codebase-reindex.md → .claude/commands/cfn-ruvector/cfn-codebase-reindex.md} +0 -0
- /package/{claude-assets/commands/cfn-ruvector/codebase-search.md → .claude/commands/cfn-ruvector/cfn-codebase-search.md} +0 -0
- /package/{claude-assets/commands/cfn-ruvector/detect-stale-docs.md → .claude/commands/cfn-ruvector/cfn-detect-stale-docs.md} +0 -0
- /package/{claude-assets/commands/cost-routing/switch-api.md → .claude/commands/cost-routing/cfn-switch-api.md} +0 -0
- /package/{claude-assets → .claude}/commands/sparc.md +0 -0
- /package/{claude-assets → .claude}/commands/workflow.md +0 -0
- /package/{claude-assets → .claude}/commands/write-plan.md +0 -0
- /package/{claude-assets → .claude}/hooks/GIT-HOOKS-USAGE-EXAMPLES.md +0 -0
- /package/{claude-assets → .claude}/hooks/README-GIT-HOOKS.md +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-BACKUP_USAGE.md +0 -0
- /package/{claude-assets/hooks/validators/credential-scanner.sh → .claude/hooks/cfn-credential-scanner.sh} +0 -0
- /package/{claude-assets/hooks/detect-hardcoded-credentials.sh → .claude/hooks/cfn-detect-hardcoded-credentials.sh} +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-invoke-post-edit-ts.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-invoke-post-edit.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-invoke-pre-edit-ts.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-invoke-pre-edit.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-invoke-security-validation.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-lint-sql-injection.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-post-edit-cfn-retrospective.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-post-edit.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-pre-edit-backup.sh +0 -0
- /package/{claude-assets → .claude}/hooks/cfn-restore-from-backup.sh +0 -0
- /package/{claude-assets → .claude}/hooks/install-git-hooks.sh +0 -0
- /package/{claude-assets → .claude}/hooks/post-commit-codebase-index +0 -0
- /package/{claude-assets → .claude}/root-claude-distribute/CFN-CLAUDE.md +0 -0
- /package/{claude-assets → .claude}/skills/SKILL_TEMPLATE.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/audit/simple-audit.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/output/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/selection/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/selection/agent-mappings.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/selection/select-agents-with-fallback.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/selection/select-agents.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/selection/task-classifier.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/execute-agent.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/get-agent-provider-env.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/parse-agent-provider.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/spawn-agent.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/spawn-templates.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-lifecycle/lib/spawning/spawn-worker.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-tooling/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-tooling/lib/generator/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-tooling/lib/generator/generate-agent.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-tooling/lib/linter/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-agent-tooling/lib/linter/lint-agents.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/lib/management/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/lib/management/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/lib/management/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/lib/management/config.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-config/lib/sanitization/sanitize-environment.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-conversation-sync/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-conversation-sync/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-conversation-sync/sync-conversations.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/extractor/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/extractor/extract-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/build.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/ingest-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/ingest.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/manifests/cli-mode-dependencies.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/manifests/shared-dependencies.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/manifests/trigger-dev-dependencies.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-dependency-management/lib/ingestion/manifests/trigger-mode-dependencies.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-deployment-lifecycle/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-deployment-lifecycle/lib/deployment/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-deployment-lifecycle/lib/deployment/execute.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-deployment-lifecycle/lib/promotion/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/INTEGRATION.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/SAMPLE_OUTPUTS.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/capture-container-logs.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/enable-logging.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/init-hybrid-logging.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/analytics-summary.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/query-agent-timeline.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/query-consensus-history.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/query-coordination-timeline.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/query-failed-containers.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/queries/query-gate-checks.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/schema.sql +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/sqlite-helpers.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/logging/test-hybrid-logging.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/mcp/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/mcp/skill-mcp-selector.js +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/orchestration/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/orchestration/orchestrate.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/spawning/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/spawning/spawn-agent.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/waves/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/waves/cleanup-wave.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/waves/lib/docker-helpers.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/waves/monitor-wave.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-docker-runtime/lib/waves/spawn-wave.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/backup/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/backup/backup.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/auto-resolve.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/feedback-resolver.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/security-scan.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/security-scanner.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-edit-safety/lib/hooks/test-root-warning-resolution.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/analyze-errors.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/calculate-waves.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/cli.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/cluster-files.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/batching/create-batches.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/capture/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/capture/capture-agent-error.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/cleanup-error-logs.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/integrate-cli.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/integrate-docker.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/invoke-error-logging.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-error-management/lib/logging/test-error-logging.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-intervention-system/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-intervention-system/lib/detector/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-intervention-system/lib/orchestrator/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-intervention-system/lib/orchestrator/execute-intervention.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/playbook/lib/auto-update/auto-update-playbook.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/APPROVAL_WORKFLOW.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/DEPLOY_QUICK_REFERENCE.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/PROPAGATE_UPDATE_QUICK_REFERENCE.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/approval-workflow.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/deploy-approved-skill.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/deploy-approved-skill.sh.backup-1763392820 +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/lib/security-utils.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/package.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/propagate-skill-update.sh.backup-1763392820 +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/review-skill.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/test-integration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/test-metadata-update.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-knowledge-base/lib/workflow/track-cost-savings.sh.backup-1763392821 +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/decision/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/decision/TYPESCRIPT_IMPLEMENTATION.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/decision/parse-decision.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/decision/test-backlog-integration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/decision/validate-deliverables.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/CONFIGURATION_IMPROVEMENTS.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/CONTEXT_LOOKUP_QUICK_START.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/NORTH_STAR_INDEX.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/ORCHESTRATOR_IMPLEMENTATION.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/ORCHESTRATOR_QUICK_START.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/SPAWN_AGENTS_IMPLEMENTATION.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/VALIDATION_SUMMARY.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/VALIDATOR_MODULE_GUIDE.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/e2e-validation-fixed.js +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/e2e-validation.js +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/package.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/run-north-star-e2e.ts +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/security_utils.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/test-cfn-orchestration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/test-cli.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/test-edge-cases.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/test-iteration-context-injection.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/orchestrator/test-typescript-integration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/DELIVERY_SUMMARY.txt +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/EXAMPLES.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/INDEX.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/output/package.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/INDEX.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/README_TYPESCRIPT.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/SKILL_TYPESCRIPT.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/VAPOR_DETECTION_EXAMPLES.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/config.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/consensus-calculator.js +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/evidence-chain.sql +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/orchestrate-cfn-loop.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/package.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-loop-orchestration-v2/lib/validation/validate-iteration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/auto/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/auto/persist-agent-output.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/auto/query-agent-history.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/management/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/management/check-memory.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/management/cleanup-memory.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/redis/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/QUICK_REFERENCE.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/acl-queries.sql +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/config.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-memory-persistence/lib/sqlite/test-state-persistence.js +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/file/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/file/execute.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/file/lib/atomic-write.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/log/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/log/execute.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/log/lib/rotate.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-operations/lib/log/lib/search.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/map-dependencies-conflicts.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/plan-coordinator-resources.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/plan-multi-coordinator-work.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/plan-risk-rollout.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/test-multi-coordinator-planning.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/coordinator/validate-task-planning.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/epic/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/epic/decompose-epic.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/scope/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-planning/lib/scope/simplify-scope.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/lib/instrumentation/instrument-process.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/lib/lifecycle/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/lib/lifecycle/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/lib/lifecycle/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-process-management/lib/lifecycle/config.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/backlog/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/backlog/add-backlog-item.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/changelog/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/changelog/add-changelog-entry.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/changelog/bulk-import.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/changelog/lib/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-project-management/lib/changelog/lib/validation.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/hybrid/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/hybrid/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/hybrid/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/hybrid/config.json +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/hybrid/spawn-worker.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/provider/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-routing-config/lib/provider/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/lib/builder/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/lib/loader/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/lib/loader/execute.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/lib/propagation/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-skill-management/lib/propagation/propagate-skill-update.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/checkpoint/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/checkpoint/cleanup-orphans.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/checkpoint/resume-wave.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/checkpoint/save-checkpoint.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/execution/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-sprint-execution/lib/execution/execute-sprint.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/classifier/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/classifier/classify-task.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/complexity/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/complexity/estimate-complexity.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/specialist/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-intelligence/lib/specialist/recommend-specialist.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-planning/lib/classifier/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-task-planning/lib/classifier/classify-task.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/check-dependencies.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/test-cache-reader.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/test-concurrent-conflicts.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/execution/test-coordinator-pattern.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/detect-regressions.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/detect-regressions.sh.backup-1763392821 +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/init-benchmark-db.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/run-all-tests.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/store-benchmarks.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/runner/validate-redis-keys.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/README.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/SCREENSHOT_NAMING_CONVENTION.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/capture-screenshot.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/cfn-loop-integration.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/compare-screenshots.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/init-storage.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/set-baseline.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-test-framework/lib/webapp/test-webapp-testing.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/SECURITY.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/TEST_RESULTS.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/middleware-config.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/performance-benchmark.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/test-e2e.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/test-transparency-skill.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +0 -0
- /package/{claude-assets → .claude}/skills/cfn-transparency-middleware/wrap-agent.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/execute.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/lib/errors.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/lib/file-ops.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/lib/retry.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-utilities/test.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/deliverables/confidence-calculator.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/instrumentation/wrapped-executor.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/json/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/json/test-validate-success-criteria.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/json/validate-success-criteria.sh +0 -0
- /package/{claude-assets → .claude}/skills/cfn-validation-framework/lib/layers/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/cfn-vision-analysis/SKILL.md +0 -0
- /package/{claude-assets/skills/cfn-knowledge-base/lib/workflow → .claude/skills/deprecated}/analyze-patterns.sh +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/README.md +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/SECURITY.md +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/SKILL.md +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/package.json +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/test-equation-solver-minimal.sh +0 -0
- /package/{claude-assets → .claude}/skills/equation-solver/test-equation-solver.sh +0 -0
|
@@ -0,0 +1,2286 @@
|
|
|
1
|
+
# TDD and Skills Database Integration
|
|
2
|
+
## Complete Bridge Between Test-Driven Development and Skill Management
|
|
3
|
+
|
|
4
|
+
**Version:** 1.0.0
|
|
5
|
+
**Date:** 2025-11-16
|
|
6
|
+
**Status:** Production Ready
|
|
7
|
+
**Audience:** Architects, backend engineers, test engineers, system administrators
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Table of Contents
|
|
12
|
+
|
|
13
|
+
1. [Integration Overview](#section-1-integration-overview)
|
|
14
|
+
2. [TDD-Aware Skill Schema](#section-2-tdd-aware-skill-schema)
|
|
15
|
+
3. [Bootstrap Skills for TDD](#section-3-bootstrap-skills-for-tdd)
|
|
16
|
+
4. [Agent Skill Mappings for TDD](#section-4-agent-skill-mappings-for-tdd)
|
|
17
|
+
5. [Success Criteria as Skills](#section-5-success-criteria-as-skills)
|
|
18
|
+
6. [Approval Workflow + TDD Requirements](#section-6-approval-workflow-tdd-requirements)
|
|
19
|
+
7. [Test Result Storage & Analytics](#section-7-test-result-storage--analytics)
|
|
20
|
+
8. [Phase 4 + TDD Integration](#section-8-phase-4-tdd-integration)
|
|
21
|
+
9. [Implementation Examples](#section-9-implementation-examples)
|
|
22
|
+
10. [Migration Path](#section-10-migration-path)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Section 1: Integration Overview
|
|
27
|
+
|
|
28
|
+
### The Problem: Confidence vs. Correctness
|
|
29
|
+
|
|
30
|
+
The CFN Loop previously used **agent confidence scores** (subjective) to gate code approval:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Current Pipeline:
|
|
34
|
+
Agent Confidence 0.82 → Gate Pass → Production Deployment
|
|
35
|
+
(No validation)
|
|
36
|
+
|
|
37
|
+
Real Outcome: 0.45 correctness (37% gap between confidence and reality)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The Skills Database + TDD Integration solves this by **replacing subjective confidence with objective test execution**:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
New Pipeline:
|
|
44
|
+
Skill Execution
|
|
45
|
+
↓
|
|
46
|
+
Test Suite Run (from test_suite_path)
|
|
47
|
+
↓
|
|
48
|
+
Parse Results → Calculate Pass Rate
|
|
49
|
+
↓
|
|
50
|
+
Validate Against required_test_pass_rate
|
|
51
|
+
↓
|
|
52
|
+
Gate Decision (Auto/Escalate/Human)
|
|
53
|
+
↓
|
|
54
|
+
Approval with Audit Trail → Production Deployment
|
|
55
|
+
|
|
56
|
+
Real Outcome: 0.93 correctness (2% gap - test-driven accuracy)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### How Skills DB Supports TDD Gates
|
|
60
|
+
|
|
61
|
+
The Skills Database schema (`schema-v2.sql`) **natively embeds TDD requirements** in five areas:
|
|
62
|
+
|
|
63
|
+
#### 1. Skill-Level Test Metadata
|
|
64
|
+
```sql
|
|
65
|
+
-- In skills table
|
|
66
|
+
test_coverage REAL, -- 0.0-1.0: code coverage %
|
|
67
|
+
test_suite_path TEXT, -- '.claude/skills/coordination/test.sh'
|
|
68
|
+
required_test_pass_rate REAL, -- 0.95 (95% of tests must pass)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### 2. Approval Criteria Linked to TDD
|
|
72
|
+
```sql
|
|
73
|
+
-- In approval_history table
|
|
74
|
+
approval_criteria_check TEXT, -- JSON with test_results validation
|
|
75
|
+
test_results TEXT, -- JSON: {"pass_count": 45, "fail_count": 0, "pass_rate": 1.0}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### 3. Agent-Skill TDD Conditions
|
|
79
|
+
```sql
|
|
80
|
+
-- In agent_skill_mappings table
|
|
81
|
+
tdd_condition TEXT, -- JSON: {"require_tests": true, "min_coverage": 0.9, "min_pass_rate": 0.95}
|
|
82
|
+
conditions TEXT, -- JSON: {"phase": ["loop3"], "test_context": true}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### 4. Test Execution Tracking
|
|
86
|
+
```sql
|
|
87
|
+
-- In skill_usage_log table
|
|
88
|
+
confidence_before REAL, -- Before test execution
|
|
89
|
+
confidence_after REAL, -- After test results known
|
|
90
|
+
success_indicator BOOLEAN, -- 1 if tests passed, 0 if failed
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### 5. Bootstrap Skills for Test Operations
|
|
94
|
+
```sql
|
|
95
|
+
-- In bootstrap_skills table
|
|
96
|
+
skill_name TEXT PRIMARY KEY, -- 'test-result-parser', 'test-runner-jest'
|
|
97
|
+
file_path TEXT, -- Bootstrap skill location
|
|
98
|
+
required BOOLEAN, -- 1 if always loaded at startup
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Section 2: TDD-Aware Skill Schema
|
|
104
|
+
|
|
105
|
+
### Complete TDD-Integrated Schema
|
|
106
|
+
|
|
107
|
+
The Skills Database schema v2 already implements **complete TDD support** through these key tables:
|
|
108
|
+
|
|
109
|
+
#### Core Skills Table (Test-Aware Fields)
|
|
110
|
+
|
|
111
|
+
```sql
|
|
112
|
+
CREATE TABLE IF NOT EXISTS skills (
|
|
113
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
114
|
+
name TEXT UNIQUE NOT NULL,
|
|
115
|
+
category TEXT NOT NULL, -- Category determines TDD requirements
|
|
116
|
+
team TEXT,
|
|
117
|
+
content_path TEXT NOT NULL,
|
|
118
|
+
content_hash TEXT NOT NULL,
|
|
119
|
+
tags TEXT,
|
|
120
|
+
version TEXT NOT NULL,
|
|
121
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
122
|
+
|
|
123
|
+
-- TDD Integration (CRITICAL)
|
|
124
|
+
test_coverage REAL, -- [0.0-1.0] % of code covered by tests
|
|
125
|
+
test_suite_path TEXT, -- Path to skill's test suite: '.claude/skills/coordination/test.sh'
|
|
126
|
+
required_test_pass_rate REAL DEFAULT 0.95, -- [0.0-1.0] % of tests that must pass for approval
|
|
127
|
+
|
|
128
|
+
-- Approval Integration
|
|
129
|
+
approval_level TEXT NOT NULL DEFAULT 'human'
|
|
130
|
+
CHECK(approval_level IN ('auto', 'escalate', 'human')),
|
|
131
|
+
approval_criteria TEXT, -- JSON with TDD requirements
|
|
132
|
+
last_approved_by TEXT,
|
|
133
|
+
last_approval_date TEXT,
|
|
134
|
+
|
|
135
|
+
-- Phase 4 Integration
|
|
136
|
+
phase4_pattern_id INTEGER,
|
|
137
|
+
generated_by TEXT, -- 'phase4' | 'manual' | 'imported'
|
|
138
|
+
is_auto_generated BOOLEAN DEFAULT 0,
|
|
139
|
+
|
|
140
|
+
-- Lifecycle
|
|
141
|
+
deprecation_note TEXT,
|
|
142
|
+
replacement_id INTEGER,
|
|
143
|
+
owner TEXT,
|
|
144
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
145
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
146
|
+
|
|
147
|
+
FOREIGN KEY (replacement_id) REFERENCES skills(id) ON DELETE SET NULL
|
|
148
|
+
);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Approval History with Test Results
|
|
152
|
+
|
|
153
|
+
```sql
|
|
154
|
+
CREATE TABLE IF NOT EXISTS approval_history (
|
|
155
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
156
|
+
skill_id INTEGER NOT NULL,
|
|
157
|
+
version TEXT NOT NULL,
|
|
158
|
+
approval_level TEXT NOT NULL
|
|
159
|
+
CHECK(approval_level IN ('auto', 'escalate', 'human')),
|
|
160
|
+
|
|
161
|
+
-- TDD Validation Results (CRITICAL)
|
|
162
|
+
test_results TEXT, -- JSON: {
|
|
163
|
+
-- "framework": "jest",
|
|
164
|
+
-- "pass_count": 45,
|
|
165
|
+
-- "fail_count": 0,
|
|
166
|
+
-- "skipped_count": 2,
|
|
167
|
+
-- "pass_rate": 0.95,
|
|
168
|
+
-- "duration_ms": 3400,
|
|
169
|
+
-- "timestamp": "2025-11-16T14:30:00Z"
|
|
170
|
+
-- }
|
|
171
|
+
approval_criteria_check TEXT, -- JSON validation of each criterion
|
|
172
|
+
|
|
173
|
+
-- Decision Metadata
|
|
174
|
+
approver TEXT, -- 'system' | 'expert-email@example.com'
|
|
175
|
+
decision TEXT NOT NULL
|
|
176
|
+
CHECK(decision IN ('approved', 'rejected', 'escalated', 'needs_correction')),
|
|
177
|
+
reasoning TEXT,
|
|
178
|
+
|
|
179
|
+
risk_assessment TEXT, -- JSON: {"security": "low", "complexity": "medium"}
|
|
180
|
+
escalation_reason TEXT,
|
|
181
|
+
escalated_to TEXT,
|
|
182
|
+
escalation_timestamp TEXT,
|
|
183
|
+
|
|
184
|
+
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
|
|
185
|
+
review_duration_minutes INTEGER,
|
|
186
|
+
|
|
187
|
+
FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
CREATE INDEX IF NOT EXISTS idx_approval_history_skill ON approval_history(skill_id);
|
|
191
|
+
CREATE INDEX IF NOT EXISTS idx_approval_history_timestamp ON approval_history(timestamp);
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Agent-Skill Mappings with TDD Conditions
|
|
195
|
+
|
|
196
|
+
```sql
|
|
197
|
+
CREATE TABLE IF NOT EXISTS agent_skill_mappings (
|
|
198
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
199
|
+
agent_type TEXT NOT NULL, -- 'backend-developer', 'tester', etc.
|
|
200
|
+
skill_id INTEGER NOT NULL,
|
|
201
|
+
|
|
202
|
+
-- Priority and Requirements
|
|
203
|
+
priority INTEGER NOT NULL DEFAULT 5, -- 1-10 (lower = loaded first)
|
|
204
|
+
required BOOLEAN NOT NULL DEFAULT 0, -- 1 = always loaded
|
|
205
|
+
|
|
206
|
+
-- TDD-Aware Conditional Loading
|
|
207
|
+
tdd_condition TEXT, -- JSON: {
|
|
208
|
+
-- "require_tests": true,
|
|
209
|
+
-- "min_coverage": 0.90,
|
|
210
|
+
-- "min_pass_rate": 0.95,
|
|
211
|
+
-- "test_framework": "jest",
|
|
212
|
+
-- "skip_if_coverage_below": 0.80
|
|
213
|
+
-- }
|
|
214
|
+
conditions TEXT, -- JSON: {
|
|
215
|
+
-- "taskContext": ["auth", "database"],
|
|
216
|
+
-- "phase": ["loop3", "loop2"],
|
|
217
|
+
-- "test_context": true,
|
|
218
|
+
-- "approval_level": ["auto", "escalate"]
|
|
219
|
+
-- }
|
|
220
|
+
|
|
221
|
+
notes TEXT,
|
|
222
|
+
enabled BOOLEAN NOT NULL DEFAULT 1,
|
|
223
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
224
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
225
|
+
|
|
226
|
+
FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE,
|
|
227
|
+
UNIQUE(agent_type, skill_id)
|
|
228
|
+
);
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Skill Usage Log with Test Correlation
|
|
232
|
+
|
|
233
|
+
```sql
|
|
234
|
+
CREATE TABLE IF NOT EXISTS skill_usage_log (
|
|
235
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
236
|
+
|
|
237
|
+
-- Identifiers
|
|
238
|
+
agent_id TEXT NOT NULL,
|
|
239
|
+
agent_type TEXT NOT NULL,
|
|
240
|
+
skill_id INTEGER NOT NULL,
|
|
241
|
+
|
|
242
|
+
-- Context
|
|
243
|
+
task_id TEXT,
|
|
244
|
+
phase TEXT, -- 'loop1', 'loop2', 'loop3', 'loop4'
|
|
245
|
+
|
|
246
|
+
-- Timing
|
|
247
|
+
loaded_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
248
|
+
execution_time_ms INTEGER,
|
|
249
|
+
|
|
250
|
+
-- TDD Effectiveness Metrics (CRITICAL)
|
|
251
|
+
confidence_before REAL, -- [0.0-1.0] Before test execution
|
|
252
|
+
confidence_after REAL, -- [0.0-1.0] After test results
|
|
253
|
+
|
|
254
|
+
test_execution_result TEXT, -- JSON: {
|
|
255
|
+
-- "pass_rate": 0.95,
|
|
256
|
+
-- "pass_count": 45,
|
|
257
|
+
-- "fail_count": 0,
|
|
258
|
+
-- "framework": "jest",
|
|
259
|
+
-- "duration_ms": 3400
|
|
260
|
+
-- }
|
|
261
|
+
|
|
262
|
+
success_indicator BOOLEAN, -- 1=skill helped, 0=didn't help
|
|
263
|
+
|
|
264
|
+
-- Correlation Metrics
|
|
265
|
+
confidence_delta REAL, -- confidence_after - confidence_before
|
|
266
|
+
test_pass_rate_delta REAL, -- Improvement in pass rate
|
|
267
|
+
|
|
268
|
+
feedback TEXT, -- Agent notes on skill effectiveness
|
|
269
|
+
|
|
270
|
+
FOREIGN KEY (skill_id) REFERENCES skills(id) ON DELETE CASCADE
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
CREATE INDEX IF NOT EXISTS idx_usage_agent_type ON skill_usage_log(agent_type);
|
|
274
|
+
CREATE INDEX IF NOT EXISTS idx_usage_skill ON skill_usage_log(skill_id);
|
|
275
|
+
CREATE INDEX IF NOT EXISTS idx_usage_task ON skill_usage_log(task_id);
|
|
276
|
+
CREATE INDEX IF NOT EXISTS idx_usage_phase ON skill_usage_log(phase);
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Bootstrap Skills Registry
|
|
280
|
+
|
|
281
|
+
```sql
|
|
282
|
+
CREATE TABLE IF NOT EXISTS bootstrap_skills (
|
|
283
|
+
skill_name TEXT PRIMARY KEY,
|
|
284
|
+
file_path TEXT NOT NULL, -- Location on filesystem
|
|
285
|
+
loaded_priority INTEGER DEFAULT 100, -- Order of bootstrap loading
|
|
286
|
+
required BOOLEAN DEFAULT 1, -- 1 = must load before any skills
|
|
287
|
+
|
|
288
|
+
-- Test-Aware Bootstrap
|
|
289
|
+
has_test_suite BOOLEAN DEFAULT 0,
|
|
290
|
+
test_path TEXT, -- Test file for bootstrap skill itself
|
|
291
|
+
pre_bootstrap_test BOOLEAN DEFAULT 0,-- 1 = run tests before loading
|
|
292
|
+
|
|
293
|
+
-- Metadata
|
|
294
|
+
description TEXT,
|
|
295
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
296
|
+
);
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Section 3: Bootstrap Skills for TDD
|
|
302
|
+
|
|
303
|
+
### Five Bootstrap Skills Foundation
|
|
304
|
+
|
|
305
|
+
Bootstrap skills are **foundational, always-loaded skills** that enable TDD operations. They load before the main Skills Database, so they're bootstrapped using basic shell scripts, not database queries.
|
|
306
|
+
|
|
307
|
+
#### Bootstrap Skill 1: bash-fundamentals.md
|
|
308
|
+
**Purpose:** Foundational shell scripting for test result parsing
|
|
309
|
+
|
|
310
|
+
**Location:** `.claude/skills/bootstrap/bash-fundamentals.md`
|
|
311
|
+
|
|
312
|
+
**Core Functions:**
|
|
313
|
+
```bash
|
|
314
|
+
# Parse test framework output into JSON
|
|
315
|
+
parse_test_results()
|
|
316
|
+
parse_jest_output() # JavaScript/TypeScript
|
|
317
|
+
parse_mocha_output() # JavaScript
|
|
318
|
+
parse_pytest_output() # Python
|
|
319
|
+
parse_tap_output() # Generic TAP format
|
|
320
|
+
parse_junit_xml() # Java/XML format
|
|
321
|
+
parse_go_test() # Go test format
|
|
322
|
+
|
|
323
|
+
# Extract metrics
|
|
324
|
+
extract_pass_count()
|
|
325
|
+
extract_fail_count()
|
|
326
|
+
extract_skip_count()
|
|
327
|
+
extract_total_count()
|
|
328
|
+
calculate_pass_rate() # pass_count / total_count
|
|
329
|
+
extract_coverage_percent() # 0.0-1.0 from coverage output
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**TDD Integration:**
|
|
333
|
+
```bash
|
|
334
|
+
# Part of approval gate check pipeline
|
|
335
|
+
./.claude/skills/bootstrap/bash-fundamentals.md parse_jest_output \
|
|
336
|
+
"$TEST_OUTPUT_FILE" > /tmp/test_results.json
|
|
337
|
+
|
|
338
|
+
# Return: {"pass_count": 45, "fail_count": 0, "pass_rate": 0.95, "framework": "jest"}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Example - Parse Jest Output:**
|
|
342
|
+
```javascript
|
|
343
|
+
// test.results.json (jest output)
|
|
344
|
+
{
|
|
345
|
+
"numPassedTests": 45,
|
|
346
|
+
"numFailedTests": 0,
|
|
347
|
+
"numSkippedTests": 2,
|
|
348
|
+
"testResults": [...]
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// After bash-fundamentals parsing
|
|
352
|
+
{
|
|
353
|
+
"framework": "jest",
|
|
354
|
+
"pass_count": 45,
|
|
355
|
+
"fail_count": 0,
|
|
356
|
+
"skip_count": 2,
|
|
357
|
+
"total_count": 47,
|
|
358
|
+
"pass_rate": 0.957, // 45/47
|
|
359
|
+
"coverage": "88%"
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
#### Bootstrap Skill 2: error-handling.md
|
|
366
|
+
**Purpose:** Handle test failures and retry logic
|
|
367
|
+
|
|
368
|
+
**Location:** `.claude/skills/bootstrap/error-handling.md`
|
|
369
|
+
|
|
370
|
+
**Core Functions:**
|
|
371
|
+
```bash
|
|
372
|
+
# Test failure handling
|
|
373
|
+
handle_test_failure() # Process individual test failure
|
|
374
|
+
classify_failure_type() # 'assertion' | 'timeout' | 'syntax' | 'dependency'
|
|
375
|
+
extract_failure_stacktrace() # Parse error messages
|
|
376
|
+
categorize_failures() # Group by type
|
|
377
|
+
|
|
378
|
+
# Retry logic for flaky tests
|
|
379
|
+
retry_flaky_tests() # Re-run tests that failed
|
|
380
|
+
detect_flaky_test() # Is failure intermittent?
|
|
381
|
+
apply_retry_threshold() # How many retries? Default: 3
|
|
382
|
+
|
|
383
|
+
# Escalation decisions
|
|
384
|
+
determine_escalation_reason() # Why is approval escalated?
|
|
385
|
+
generate_failure_context() # Context for next iteration
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**TDD Integration:**
|
|
389
|
+
```bash
|
|
390
|
+
# Used in approval workflow
|
|
391
|
+
if [[ $TEST_PASS_RATE -lt 0.95 ]]; then
|
|
392
|
+
error-handling classify_failure_type "$FAILED_TEST_LIST"
|
|
393
|
+
# Returns: "3 assertion failures, 1 timeout, 0 syntax errors"
|
|
394
|
+
|
|
395
|
+
# Retry flaky tests
|
|
396
|
+
error-handling retry_flaky_tests --max-retries 3
|
|
397
|
+
|
|
398
|
+
# Generate escalation context
|
|
399
|
+
error-handling generate_failure_context > approval_feedback.json
|
|
400
|
+
fi
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Example - Failure Classification:**
|
|
404
|
+
```bash
|
|
405
|
+
# Input: Failed tests output
|
|
406
|
+
Test Suite Failed:
|
|
407
|
+
✗ auth/login.test.js
|
|
408
|
+
Expected value to equal: true
|
|
409
|
+
Received: false
|
|
410
|
+
✗ database/connection.test.js
|
|
411
|
+
Timeout: 30000ms exceeded
|
|
412
|
+
|
|
413
|
+
# After error-handling classification
|
|
414
|
+
{
|
|
415
|
+
"failure_types": {
|
|
416
|
+
"assertion": 1,
|
|
417
|
+
"timeout": 1,
|
|
418
|
+
"syntax": 0,
|
|
419
|
+
"dependency": 0
|
|
420
|
+
},
|
|
421
|
+
"total_failures": 2,
|
|
422
|
+
"flaky_tests": ["database/connection.test.js"],
|
|
423
|
+
"retry_eligible": true,
|
|
424
|
+
"escalation_category": "medium"
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
#### Bootstrap Skill 3: file-operations.md
|
|
431
|
+
**Purpose:** Manage test files, suites, and results storage
|
|
432
|
+
|
|
433
|
+
**Location:** `.claude/skills/bootstrap/file-operations.md`
|
|
434
|
+
|
|
435
|
+
**Core Functions:**
|
|
436
|
+
```bash
|
|
437
|
+
# Test file management
|
|
438
|
+
find_test_files() # Locate test suites in project
|
|
439
|
+
locate_test_results() # Find test output files
|
|
440
|
+
backup_test_results() # Archive test runs for history
|
|
441
|
+
cleanup_test_artifacts() # Remove temporary test files
|
|
442
|
+
|
|
443
|
+
# Suite management
|
|
444
|
+
validate_test_suite_exists() # Verify test_suite_path is valid
|
|
445
|
+
parse_test_suite_metadata() # Extract framework, timeout, etc.
|
|
446
|
+
extract_test_names() # List all tests in suite
|
|
447
|
+
|
|
448
|
+
# Results persistence
|
|
449
|
+
store_test_results() # Save results to filesystem
|
|
450
|
+
archive_test_history() # Keep historical test results
|
|
451
|
+
retrieve_test_baseline() # Get previous pass rates for comparison
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**TDD Integration:**
|
|
455
|
+
```bash
|
|
456
|
+
# Used to manage test suite lifecycle
|
|
457
|
+
file-operations validate_test_suite_exists "$TEST_SUITE_PATH"
|
|
458
|
+
if [[ $? -ne 0 ]]; then
|
|
459
|
+
echo "ERROR: test_suite_path not found: $TEST_SUITE_PATH"
|
|
460
|
+
exit 1
|
|
461
|
+
fi
|
|
462
|
+
|
|
463
|
+
# Store results for audit trail
|
|
464
|
+
file-operations store_test_results \
|
|
465
|
+
--skill-id "$SKILL_ID" \
|
|
466
|
+
--results "$TEST_RESULTS_JSON" \
|
|
467
|
+
--timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
**Example - Test Suite Validation:**
|
|
471
|
+
```bash
|
|
472
|
+
# Validate test suite path
|
|
473
|
+
file-operations validate_test_suite_exists \
|
|
474
|
+
--path "./.claude/skills/coordination/test.sh"
|
|
475
|
+
|
|
476
|
+
# Return
|
|
477
|
+
{
|
|
478
|
+
"exists": true,
|
|
479
|
+
"is_executable": true,
|
|
480
|
+
"framework": "bash",
|
|
481
|
+
"test_count": 8,
|
|
482
|
+
"last_run": "2025-11-16T12:30:00Z",
|
|
483
|
+
"last_pass_rate": 1.0
|
|
484
|
+
}
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
#### Bootstrap Skill 4: database-connection.md
|
|
490
|
+
**Purpose:** Store test results in Skills Database
|
|
491
|
+
|
|
492
|
+
**Location:** `.claude/skills/bootstrap/database-connection.md`
|
|
493
|
+
|
|
494
|
+
**Core Functions:**
|
|
495
|
+
```bash
|
|
496
|
+
# Database operations
|
|
497
|
+
init_skills_database() # Create/migrate schema-v2.sql
|
|
498
|
+
insert_test_results() # Write test results to approval_history
|
|
499
|
+
update_skill_coverage() # Update test_coverage in skills table
|
|
500
|
+
query_approval_criteria() # Fetch approval rules for category
|
|
501
|
+
|
|
502
|
+
# Transactional writes
|
|
503
|
+
begin_approval_transaction() # Start atomic approval process
|
|
504
|
+
commit_approval_tx() # Finalize approval decision
|
|
505
|
+
rollback_approval_tx() # Revert failed approval attempt
|
|
506
|
+
|
|
507
|
+
# Query patterns (see Section 9)
|
|
508
|
+
get_skill_by_name()
|
|
509
|
+
get_approval_history()
|
|
510
|
+
calculate_approval_level()
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**TDD Integration:**
|
|
514
|
+
```bash
|
|
515
|
+
# Store test results in Skills DB
|
|
516
|
+
database-connection insert_test_results \
|
|
517
|
+
--skill-id 42 \
|
|
518
|
+
--test-results '{
|
|
519
|
+
"pass_count": 45,
|
|
520
|
+
"fail_count": 0,
|
|
521
|
+
"pass_rate": 0.95,
|
|
522
|
+
"framework": "jest"
|
|
523
|
+
}' \
|
|
524
|
+
--approver "system"
|
|
525
|
+
|
|
526
|
+
# Begin approval transaction
|
|
527
|
+
database-connection begin_approval_transaction --skill-id 42
|
|
528
|
+
|
|
529
|
+
# Update skill coverage
|
|
530
|
+
database-connection update_skill_coverage \
|
|
531
|
+
--skill-id 42 \
|
|
532
|
+
--coverage 0.88
|
|
533
|
+
|
|
534
|
+
# Query approval rules
|
|
535
|
+
database-connection query_approval_criteria \
|
|
536
|
+
--category "coordination" \
|
|
537
|
+
--approval-level "auto"
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Example - Transactional Approval:**
|
|
541
|
+
```sql
|
|
542
|
+
-- Result of database-connection insert_test_results
|
|
543
|
+
INSERT INTO approval_history (
|
|
544
|
+
skill_id, version, approval_level, test_results,
|
|
545
|
+
approval_criteria_check, approver, decision, reasoning, timestamp
|
|
546
|
+
) VALUES (
|
|
547
|
+
42, '2.1.0', 'auto',
|
|
548
|
+
'{"pass_count": 45, "fail_count": 0, "pass_rate": 0.95}',
|
|
549
|
+
'{"test_coverage": {"required": 0.95, "actual": 0.88, "passed": false}}',
|
|
550
|
+
'system',
|
|
551
|
+
'approved',
|
|
552
|
+
'Auto-approved: risk score 0.25 < 0.30, tests 95% pass rate >= 95%',
|
|
553
|
+
datetime('now')
|
|
554
|
+
);
|
|
555
|
+
|
|
556
|
+
-- Returns audit trail entry for approval decision
|
|
557
|
+
{
|
|
558
|
+
"id": 1023,
|
|
559
|
+
"skill_id": 42,
|
|
560
|
+
"decision": "approved",
|
|
561
|
+
"approver": "system",
|
|
562
|
+
"timestamp": "2025-11-16T14:30:00Z"
|
|
563
|
+
}
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
---
|
|
567
|
+
|
|
568
|
+
#### Bootstrap Skill 5: skill-loader.md
|
|
569
|
+
**Purpose:** Load test-aware skills dynamically
|
|
570
|
+
|
|
571
|
+
**Location:** `.claude/skills/bootstrap/skill-loader.md`
|
|
572
|
+
|
|
573
|
+
**Core Functions:**
|
|
574
|
+
```bash
|
|
575
|
+
# Skill loading
|
|
576
|
+
load_skill() # Load individual skill with test checks
|
|
577
|
+
load_agent_skills() # Load all skills for agent type
|
|
578
|
+
filter_skills_by_tdd() # Include only skills with passing tests
|
|
579
|
+
validate_loaded_skill() # Verify skill loaded correctly
|
|
580
|
+
|
|
581
|
+
# TDD-Aware conditional loading
|
|
582
|
+
should_load_skill() # Check tdd_condition JSON in mappings
|
|
583
|
+
check_test_prerequisites() # Verify tests pass before loading
|
|
584
|
+
load_with_test_validation() # Load + validate tests
|
|
585
|
+
|
|
586
|
+
# Skill registrations
|
|
587
|
+
register_loaded_skill() # Add to skill_usage_log
|
|
588
|
+
unload_skill() # Unload if tests fail
|
|
589
|
+
report_skill_effectiveness() # Log confidence impact
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
**TDD Integration:**
|
|
593
|
+
```bash
|
|
594
|
+
# Load skills with TDD conditions checked
|
|
595
|
+
skill-loader load_agent_skills \
|
|
596
|
+
--agent-type "backend-developer" \
|
|
597
|
+
--phase "loop3" \
|
|
598
|
+
--require-tests true
|
|
599
|
+
|
|
600
|
+
# Internally:
|
|
601
|
+
# 1. Query agent_skill_mappings for backend-developer
|
|
602
|
+
# 2. For each skill, check tdd_condition:
|
|
603
|
+
# {"require_tests": true, "min_coverage": 0.90, "min_pass_rate": 0.95}
|
|
604
|
+
# 3. Run test suite if require_tests=true
|
|
605
|
+
# 4. Skip loading if pass_rate < 0.95
|
|
606
|
+
# 5. Log effectiveness to skill_usage_log
|
|
607
|
+
|
|
608
|
+
# Result: Only load skills that pass all tests
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Example - Conditional Skill Loading:**
|
|
612
|
+
```bash
|
|
613
|
+
# Load skills for backend-developer in loop3
|
|
614
|
+
skill-loader load_agent_skills \
|
|
615
|
+
--agent-type "backend-developer" \
|
|
616
|
+
--phase "loop3"
|
|
617
|
+
|
|
618
|
+
# Processing:
|
|
619
|
+
# 1. backend-developer:test-runner-jest (priority 1)
|
|
620
|
+
# - TDD condition: require_tests=true, min_pass_rate=0.95
|
|
621
|
+
# - Run tests: 47 passed, 0 failed (pass_rate=1.0)
|
|
622
|
+
# - ✓ Load skill
|
|
623
|
+
#
|
|
624
|
+
# 2. backend-developer:test-coverage-validator (priority 2)
|
|
625
|
+
# - TDD condition: require_tests=true, min_pass_rate=0.95
|
|
626
|
+
# - Run tests: 8 passed, 2 failed (pass_rate=0.8)
|
|
627
|
+
# - ✗ SKIP skill (pass_rate 0.8 < 0.95)
|
|
628
|
+
# - Log: "Test coverage validator skipped due to low test pass rate"
|
|
629
|
+
#
|
|
630
|
+
# 3. backend-developer:api-security-checker (priority 3)
|
|
631
|
+
# - TDD condition: require_tests=false, min_coverage=0.85
|
|
632
|
+
# - Coverage check: 88% (meets 0.85 requirement)
|
|
633
|
+
# - ✓ Load skill
|
|
634
|
+
|
|
635
|
+
# skill_usage_log entry
|
|
636
|
+
{
|
|
637
|
+
"agent_type": "backend-developer",
|
|
638
|
+
"phase": "loop3",
|
|
639
|
+
"loaded_skills": 2, // test-runner-jest, api-security-checker
|
|
640
|
+
"skipped_skills": 1, // test-coverage-validator
|
|
641
|
+
"total_expected": 3
|
|
642
|
+
}
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
---
|
|
646
|
+
|
|
647
|
+
### Bootstrap Skills Registration
|
|
648
|
+
|
|
649
|
+
Bootstrap skills are registered in `bootstrap_skills` table:
|
|
650
|
+
|
|
651
|
+
```sql
|
|
652
|
+
INSERT INTO bootstrap_skills (
|
|
653
|
+
skill_name, file_path, loaded_priority, required,
|
|
654
|
+
has_test_suite, test_path, pre_bootstrap_test
|
|
655
|
+
) VALUES
|
|
656
|
+
('bash-fundamentals', './.claude/skills/bootstrap/bash-fundamentals.md',
|
|
657
|
+
1, 1, 1, './.claude/skills/bootstrap/test/bash-fundamentals.sh', 1),
|
|
658
|
+
('error-handling', './.claude/skills/bootstrap/error-handling.md',
|
|
659
|
+
2, 1, 1, './.claude/skills/bootstrap/test/error-handling.sh', 1),
|
|
660
|
+
('file-operations', './.claude/skills/bootstrap/file-operations.md',
|
|
661
|
+
3, 1, 1, './.claude/skills/bootstrap/test/file-operations.sh', 1),
|
|
662
|
+
('database-connection', './.claude/skills/bootstrap/database-connection.md',
|
|
663
|
+
4, 1, 1, './.claude/skills/bootstrap/test/database-connection.sh', 1),
|
|
664
|
+
('skill-loader', './.claude/skills/bootstrap/skill-loader.md',
|
|
665
|
+
5, 1, 1, './.claude/skills/bootstrap/test/skill-loader.sh', 1);
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**Startup Sequence:**
|
|
669
|
+
```
|
|
670
|
+
1. Load bash-fundamentals (priority 1)
|
|
671
|
+
2. Load error-handling (priority 2)
|
|
672
|
+
3. Load file-operations (priority 3)
|
|
673
|
+
4. Load database-connection (priority 4)
|
|
674
|
+
↓ Now SQLite database is accessible ↓
|
|
675
|
+
5. Load skill-loader (priority 5)
|
|
676
|
+
↓ Now can load skills from database ↓
|
|
677
|
+
6. Load remaining skills based on agent_skill_mappings
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
---
|
|
681
|
+
|
|
682
|
+
## Section 4: Agent Skill Mappings for TDD
|
|
683
|
+
|
|
684
|
+
### Agent Types in CFN Loop
|
|
685
|
+
|
|
686
|
+
The CFN Loop uses these agent types across its three-loop validation framework:
|
|
687
|
+
|
|
688
|
+
| Agent Type | Loop | Role | TDD Requirements |
|
|
689
|
+
|------------|------|------|------------------|
|
|
690
|
+
| **backend-developer** | Loop 3 | Implement features | Unit tests ≥90%, coverage ≥85% |
|
|
691
|
+
| **tester** | Loop 3 | Validate features | E2E tests ≥90%, integration tests ≥80% |
|
|
692
|
+
| **frontend-developer** | Loop 3 | UI implementation | Component tests ≥85%, E2E ≥75% |
|
|
693
|
+
| **reviewer** | Loop 2 | Code quality | Test quality review ≥0.90 |
|
|
694
|
+
| **security-specialist** | Loop 2 | Security validation | Security test coverage ≥95% |
|
|
695
|
+
| **architect** | Loop 4 | Design decisions | No direct tests, governance only |
|
|
696
|
+
|
|
697
|
+
### Skill Mapping: backend-developer (Loop 3)
|
|
698
|
+
|
|
699
|
+
```sql
|
|
700
|
+
INSERT INTO agent_skill_mappings (
|
|
701
|
+
agent_type, skill_id, priority, required,
|
|
702
|
+
tdd_condition, conditions, notes
|
|
703
|
+
) VALUES
|
|
704
|
+
(
|
|
705
|
+
'backend-developer',
|
|
706
|
+
(SELECT id FROM skills WHERE name='cfn-test-runner-jest'),
|
|
707
|
+
1, 1,
|
|
708
|
+
'{"require_tests": true, "min_pass_rate": 0.95, "test_framework": "jest"}',
|
|
709
|
+
'{"phase": ["loop3"], "test_context": true}',
|
|
710
|
+
'REQUIRED: Load Jest test runner for unit tests'
|
|
711
|
+
),
|
|
712
|
+
(
|
|
713
|
+
'backend-developer',
|
|
714
|
+
(SELECT id FROM skills WHERE name='cfn-test-result-parser'),
|
|
715
|
+
2, 1,
|
|
716
|
+
'{"require_tests": true, "min_pass_rate": 0.90, "apply_to_framework": "jest"}',
|
|
717
|
+
'{"phase": ["loop3", "loop2"], "test_context": true}',
|
|
718
|
+
'REQUIRED: Parse and validate Jest output'
|
|
719
|
+
),
|
|
720
|
+
(
|
|
721
|
+
'backend-developer',
|
|
722
|
+
(SELECT id FROM skills WHERE name='cfn-api-security-checker'),
|
|
723
|
+
3, 0,
|
|
724
|
+
'{"require_tests": true, "min_coverage": 0.85, "min_pass_rate": 0.85}',
|
|
725
|
+
'{"phase": ["loop3"], "test_context": true, "taskContext": ["auth", "api"]}',
|
|
726
|
+
'OPTIONAL: Load if task involves authentication/API'
|
|
727
|
+
),
|
|
728
|
+
(
|
|
729
|
+
'backend-developer',
|
|
730
|
+
(SELECT id FROM skills WHERE name='cfn-database-integrity-validator'),
|
|
731
|
+
4, 0,
|
|
732
|
+
'{"require_tests": true, "min_pass_rate": 0.90, "min_coverage": 0.90}',
|
|
733
|
+
'{"phase": ["loop3"], "test_context": true, "taskContext": ["database"]}',
|
|
734
|
+
'OPTIONAL: Load if task involves database changes'
|
|
735
|
+
),
|
|
736
|
+
(
|
|
737
|
+
'backend-developer',
|
|
738
|
+
(SELECT id FROM skills WHERE name='cfn-error-recovery-patterns'),
|
|
739
|
+
5, 0,
|
|
740
|
+
'{"require_tests": true, "min_coverage": 0.80, "min_pass_rate": 0.90}',
|
|
741
|
+
'{"phase": ["loop3"], "test_context": true}',
|
|
742
|
+
'OPTIONAL: Load if error handling required'
|
|
743
|
+
);
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
**Loading Behavior for backend-developer:**
|
|
747
|
+
|
|
748
|
+
```javascript
|
|
749
|
+
// When backend-developer agent spawns:
|
|
750
|
+
const skillsToLoad = await loadAgentSkills({
|
|
751
|
+
agentType: 'backend-developer',
|
|
752
|
+
phase: 'loop3',
|
|
753
|
+
testContext: true
|
|
754
|
+
});
|
|
755
|
+
|
|
756
|
+
// Processing order (by priority):
|
|
757
|
+
// 1. cfn-test-runner-jest (REQUIRED)
|
|
758
|
+
// - Run: npm test -- --json
|
|
759
|
+
// - Pass rate: 47/50 = 0.94
|
|
760
|
+
// - Requirement: 0.95
|
|
761
|
+
// - Decision: SKIP (0.94 < 0.95)
|
|
762
|
+
// - Action: Log failure, escalate approval
|
|
763
|
+
//
|
|
764
|
+
// 2. cfn-test-result-parser (REQUIRED)
|
|
765
|
+
// - Not loaded (depends on test-runner-jest success)
|
|
766
|
+
//
|
|
767
|
+
// 3. cfn-api-security-checker (OPTIONAL)
|
|
768
|
+
// - taskContext: ["auth", "api"] not in task
|
|
769
|
+
// - Decision: SKIP (conditional not met)
|
|
770
|
+
//
|
|
771
|
+
// 4. cfn-database-integrity-validator (OPTIONAL)
|
|
772
|
+
// - taskContext: ["database"] not in task
|
|
773
|
+
// - Decision: SKIP
|
|
774
|
+
//
|
|
775
|
+
// 5. cfn-error-recovery-patterns (OPTIONAL)
|
|
776
|
+
// - TDD condition met (coverage 0.85 >= 0.80, pass_rate 0.95 >= 0.90)
|
|
777
|
+
// - Decision: LOAD
|
|
778
|
+
//
|
|
779
|
+
// Result: 1 skill loaded (error-recovery-patterns), 2 required failed
|
|
780
|
+
```
|
|
781
|
+
|
|
782
|
+
---
|
|
783
|
+
|
|
784
|
+
### Skill Mapping: tester (Loop 3)
|
|
785
|
+
|
|
786
|
+
```sql
|
|
787
|
+
INSERT INTO agent_skill_mappings (
|
|
788
|
+
agent_type, skill_id, priority, required,
|
|
789
|
+
tdd_condition, conditions, notes
|
|
790
|
+
) VALUES
|
|
791
|
+
(
|
|
792
|
+
'tester',
|
|
793
|
+
(SELECT id FROM skills WHERE name='cfn-e2e-test-runner'),
|
|
794
|
+
1, 1,
|
|
795
|
+
'{"require_tests": true, "min_pass_rate": 0.90, "test_framework": "playwright"}',
|
|
796
|
+
'{"phase": ["loop3"], "test_context": true}',
|
|
797
|
+
'REQUIRED: Execute E2E tests with Playwright'
|
|
798
|
+
),
|
|
799
|
+
(
|
|
800
|
+
'tester',
|
|
801
|
+
(SELECT id FROM skills WHERE name='cfn-integration-test-validator'),
|
|
802
|
+
2, 1,
|
|
803
|
+
'{"require_tests": true, "min_pass_rate": 0.90, "min_coverage": 0.85}',
|
|
804
|
+
'{"phase": ["loop3"], "test_context": true}',
|
|
805
|
+
'REQUIRED: Validate integration test coverage'
|
|
806
|
+
),
|
|
807
|
+
(
|
|
808
|
+
'tester',
|
|
809
|
+
(SELECT id FROM skills WHERE name='cfn-contract-test-runner'),
|
|
810
|
+
3, 0,
|
|
811
|
+
'{"require_tests": true, "min_pass_rate": 0.95, "test_framework": "pact"}',
|
|
812
|
+
'{"phase": ["loop3"], "test_context": true, "taskContext": ["api", "microservice"]}',
|
|
813
|
+
'OPTIONAL: Contract testing for API integrations'
|
|
814
|
+
),
|
|
815
|
+
(
|
|
816
|
+
'tester',
|
|
817
|
+
(SELECT id FROM skills WHERE name='cfn-performance-test-runner'),
|
|
818
|
+
4, 0,
|
|
819
|
+
'{"require_tests": true, "min_pass_rate": 0.85}',
|
|
820
|
+
'{"phase": ["loop3"], "test_context": true, "taskContext": ["performance", "scale"]}',
|
|
821
|
+
'OPTIONAL: Performance/load testing'
|
|
822
|
+
),
|
|
823
|
+
(
|
|
824
|
+
'tester',
|
|
825
|
+
(SELECT id FROM skills WHERE name='cfn-test-coverage-reporter'),
|
|
826
|
+
5, 0,
|
|
827
|
+
'{"require_tests": true, "min_coverage": 0.80, "min_pass_rate": 0.90}',
|
|
828
|
+
'{"phase": ["loop3", "loop2"], "test_context": true}',
|
|
829
|
+
'OPTIONAL: Generate coverage reports for Loop 2 reviewers'
|
|
830
|
+
);
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
---
|
|
834
|
+
|
|
835
|
+
### Skill Mapping: reviewer (Loop 2)
|
|
836
|
+
|
|
837
|
+
Loop 2 reviewers validate test quality and coverage:
|
|
838
|
+
|
|
839
|
+
```sql
|
|
840
|
+
INSERT INTO agent_skill_mappings (
|
|
841
|
+
agent_type, skill_id, priority, required,
|
|
842
|
+
tdd_condition, conditions, notes
|
|
843
|
+
) VALUES
|
|
844
|
+
(
|
|
845
|
+
'reviewer',
|
|
846
|
+
(SELECT id FROM skills WHERE name='cfn-test-coverage-validator'),
|
|
847
|
+
1, 1,
|
|
848
|
+
'{"require_tests": true, "min_pass_rate": 0.90, "min_coverage": 0.90}',
|
|
849
|
+
'{"phase": ["loop2"], "test_context": true}',
|
|
850
|
+
'REQUIRED: Validate test coverage meets approval threshold'
|
|
851
|
+
),
|
|
852
|
+
(
|
|
853
|
+
'reviewer',
|
|
854
|
+
(SELECT id FROM skills WHERE name='cfn-test-quality-analyzer'),
|
|
855
|
+
2, 1,
|
|
856
|
+
'{"require_tests": true, "min_pass_rate": 0.95, "min_coverage": 0.95}',
|
|
857
|
+
'{"phase": ["loop2"], "test_context": true}',
|
|
858
|
+
'REQUIRED: Analyze test quality patterns'
|
|
859
|
+
),
|
|
860
|
+
(
|
|
861
|
+
'reviewer',
|
|
862
|
+
(SELECT id FROM skills WHERE name='cfn-edge-case-validator'),
|
|
863
|
+
3, 0,
|
|
864
|
+
'{"require_tests": true, "min_coverage": 0.85, "min_pass_rate": 0.90}',
|
|
865
|
+
'{"phase": ["loop2"], "test_context": true, "taskContext": ["complex", "edge-case"]}',
|
|
866
|
+
'OPTIONAL: Validate edge case coverage'
|
|
867
|
+
),
|
|
868
|
+
(
|
|
869
|
+
'reviewer',
|
|
870
|
+
(SELECT id FROM skills WHERE name='cfn-security-test-validator'),
|
|
871
|
+
4, 0,
|
|
872
|
+
'{"require_tests": true, "min_pass_rate": 0.95}',
|
|
873
|
+
'{"phase": ["loop2"], "test_context": true, "taskContext": ["auth", "security", "crypto"]}',
|
|
874
|
+
'OPTIONAL: Validate security test coverage'
|
|
875
|
+
);
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
---
|
|
879
|
+
|
|
880
|
+
## Section 5: Success Criteria as Skills
|
|
881
|
+
|
|
882
|
+
### Mapping Success Criteria to Skills
|
|
883
|
+
|
|
884
|
+
The TDD gate plan defines **success criteria templates** (from COMPREHENSIVE_TDD_GATE_IMPLEMENTATION_PLAN.md). These can be **codified as reusable skills** in the Skills Database:
|
|
885
|
+
|
|
886
|
+
### Success Criteria Template → Skill Conversion
|
|
887
|
+
|
|
888
|
+
```sql
|
|
889
|
+
-- Example: Backend API Success Criteria → Skill
|
|
890
|
+
|
|
891
|
+
-- First, create the success criteria in approval_criteria_templates table
|
|
892
|
+
INSERT INTO approval_criteria_templates (
|
|
893
|
+
name, category, approval_level, criteria_json, created_at
|
|
894
|
+
) VALUES (
|
|
895
|
+
'Backend API Service - Auto Approval',
|
|
896
|
+
'backend',
|
|
897
|
+
'auto',
|
|
898
|
+
'{
|
|
899
|
+
"unit_test_pass_rate": {"min": 0.95, "framework": "jest"},
|
|
900
|
+
"coverage": {"min": 0.90, "type": "statement"},
|
|
901
|
+
"risk_score": {"max": 0.30},
|
|
902
|
+
"cyclomatic_complexity": {"max": 10},
|
|
903
|
+
"security_review_required": false,
|
|
904
|
+
"integration_tests": {"min": 0.85}
|
|
905
|
+
}',
|
|
906
|
+
datetime('now')
|
|
907
|
+
);
|
|
908
|
+
|
|
909
|
+
-- Then create corresponding skill to validate these criteria
|
|
910
|
+
INSERT INTO skills (
|
|
911
|
+
name, category, team, content_path, content_hash, version, status,
|
|
912
|
+
test_coverage, test_suite_path, required_test_pass_rate,
|
|
913
|
+
approval_level, approval_criteria
|
|
914
|
+
) VALUES (
|
|
915
|
+
'backend-api-auto-approval-validator',
|
|
916
|
+
'testing',
|
|
917
|
+
'cfn',
|
|
918
|
+
'./.claude/skills/validators/backend-api-auto-approval-validator.md',
|
|
919
|
+
'sha256_hash_of_content',
|
|
920
|
+
'1.0.0',
|
|
921
|
+
'active',
|
|
922
|
+
0.95,
|
|
923
|
+
'./.claude/skills/validators/test/backend-api-validator.sh',
|
|
924
|
+
0.95,
|
|
925
|
+
'auto',
|
|
926
|
+
'{
|
|
927
|
+
"criteria_template": "Backend API Service - Auto Approval",
|
|
928
|
+
"validates": {
|
|
929
|
+
"unit_test_pass_rate": true,
|
|
930
|
+
"coverage": true,
|
|
931
|
+
"risk_score": true,
|
|
932
|
+
"cyclomatic_complexity": true,
|
|
933
|
+
"integration_tests": true
|
|
934
|
+
}
|
|
935
|
+
}'
|
|
936
|
+
);
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
### Success Criteria Codification Pattern
|
|
940
|
+
|
|
941
|
+
#### Backend API Service (Category: backend)
|
|
942
|
+
|
|
943
|
+
**Success Criteria Template:**
|
|
944
|
+
```yaml
|
|
945
|
+
Name: Backend API Service - Auto Approval
|
|
946
|
+
Approval Level: auto
|
|
947
|
+
Requirements:
|
|
948
|
+
- Unit tests: ≥95% pass rate (Jest)
|
|
949
|
+
- Coverage: ≥90% statement coverage
|
|
950
|
+
- Risk score: ≤0.30
|
|
951
|
+
- Cyclomatic complexity: ≤10
|
|
952
|
+
- Integration tests: ≥85% pass rate
|
|
953
|
+
- No security review needed
|
|
954
|
+
- No hardcoded secrets
|
|
955
|
+
- No external API dependencies
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
**Corresponding Skill:**
|
|
959
|
+
```markdown
|
|
960
|
+
# Backend API Auto-Approval Validator
|
|
961
|
+
|
|
962
|
+
Validates backend API services meet auto-approval criteria.
|
|
963
|
+
|
|
964
|
+
## Validation Process
|
|
965
|
+
1. Execute Jest unit tests
|
|
966
|
+
2. Check coverage ≥90%
|
|
967
|
+
3. Analyze complexity metrics
|
|
968
|
+
4. Scan for security issues
|
|
969
|
+
5. Validate integration tests
|
|
970
|
+
6. Generate approval decision
|
|
971
|
+
|
|
972
|
+
## Success Criteria (from template)
|
|
973
|
+
- ✓ Unit test pass rate ≥95%
|
|
974
|
+
- ✓ Coverage ≥90%
|
|
975
|
+
- ✓ Risk score ≤0.30
|
|
976
|
+
- ✓ Complexity ≤10
|
|
977
|
+
- ✓ Integration tests ≥85%
|
|
978
|
+
|
|
979
|
+
## Test Suite
|
|
980
|
+
- test/backend-api-validator.sh (8 test cases)
|
|
981
|
+
```
|
|
982
|
+
|
|
983
|
+
**SQL Query to Extract Success Criteria:**
|
|
984
|
+
```sql
|
|
985
|
+
SELECT
|
|
986
|
+
s.id,
|
|
987
|
+
s.name,
|
|
988
|
+
s.category,
|
|
989
|
+
act.criteria_json,
|
|
990
|
+
s.test_coverage,
|
|
991
|
+
s.required_test_pass_rate
|
|
992
|
+
FROM skills s
|
|
993
|
+
LEFT JOIN approval_criteria_templates act
|
|
994
|
+
ON act.name LIKE s.name || '%'
|
|
995
|
+
WHERE s.category = 'testing'
|
|
996
|
+
AND s.approval_level = 'auto';
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
#### Frontend Component (Category: frontend)
|
|
1002
|
+
|
|
1003
|
+
**Success Criteria Template:**
|
|
1004
|
+
```yaml
|
|
1005
|
+
Name: Frontend Component - Escalated Review
|
|
1006
|
+
Approval Level: escalate
|
|
1007
|
+
Requirements:
|
|
1008
|
+
- Component tests: ≥85% pass rate (Jest/Vitest)
|
|
1009
|
+
- Coverage: ≥80% statement coverage
|
|
1010
|
+
- E2E tests: ≥75% pass rate (Playwright)
|
|
1011
|
+
- Accessibility: WCAG 2.1 Level AA compliant
|
|
1012
|
+
- Performance: FCP <2.5s, LCP <4s
|
|
1013
|
+
- Visual regression: ≥90% similarity
|
|
1014
|
+
- Unit tests: ≥80% pass rate
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
**Corresponding Skill:**
|
|
1018
|
+
```sql
|
|
1019
|
+
INSERT INTO skills (...) VALUES (
|
|
1020
|
+
'frontend-component-escalate-reviewer',
|
|
1021
|
+
'testing',
|
|
1022
|
+
'cfn',
|
|
1023
|
+
'./.claude/skills/validators/frontend-component-reviewer.md',
|
|
1024
|
+
'sha256_hash',
|
|
1025
|
+
'1.0.0',
|
|
1026
|
+
'active',
|
|
1027
|
+
0.88,
|
|
1028
|
+
'./.claude/skills/validators/test/frontend-component-test.sh',
|
|
1029
|
+
0.90,
|
|
1030
|
+
'escalate',
|
|
1031
|
+
'{
|
|
1032
|
+
"criteria_template": "Frontend Component - Escalated Review",
|
|
1033
|
+
"validates": {
|
|
1034
|
+
"component_tests": true,
|
|
1035
|
+
"coverage": true,
|
|
1036
|
+
"e2e_tests": true,
|
|
1037
|
+
"accessibility": true,
|
|
1038
|
+
"performance": true
|
|
1039
|
+
}
|
|
1040
|
+
}'
|
|
1041
|
+
);
|
|
1042
|
+
```
|
|
1043
|
+
|
|
1044
|
+
---
|
|
1045
|
+
|
|
1046
|
+
## Section 6: Approval Workflow + TDD Requirements
|
|
1047
|
+
|
|
1048
|
+
### Three-Tier Approval with TDD Gates
|
|
1049
|
+
|
|
1050
|
+
The approval workflow integrates TDD requirements at each approval level:
|
|
1051
|
+
|
|
1052
|
+
### Level 1: AUTO-APPROVAL
|
|
1053
|
+
|
|
1054
|
+
**Auto-Approval Criteria (ALL must be met):**
|
|
1055
|
+
|
|
1056
|
+
```sql
|
|
1057
|
+
-- SQL Query: Should this skill auto-approve?
|
|
1058
|
+
SELECT
|
|
1059
|
+
s.id,
|
|
1060
|
+
s.name,
|
|
1061
|
+
s.test_coverage,
|
|
1062
|
+
s.required_test_pass_rate,
|
|
1063
|
+
CASE
|
|
1064
|
+
WHEN s.test_coverage >= 0.95 THEN 'Pass'
|
|
1065
|
+
ELSE 'Fail'
|
|
1066
|
+
END as coverage_check,
|
|
1067
|
+
CASE
|
|
1068
|
+
WHEN (SELECT pass_rate FROM approval_history ah
|
|
1069
|
+
WHERE ah.skill_id = s.id
|
|
1070
|
+
ORDER BY ah.timestamp DESC LIMIT 1) >= 0.95
|
|
1071
|
+
THEN 'Pass'
|
|
1072
|
+
ELSE 'Fail'
|
|
1073
|
+
END as test_pass_check
|
|
1074
|
+
FROM skills s
|
|
1075
|
+
WHERE s.approval_level = 'auto'
|
|
1076
|
+
AND s.test_coverage >= 0.95
|
|
1077
|
+
AND s.risk_score <= 0.30
|
|
1078
|
+
AND s.cyclomatic_complexity <= 5;
|
|
1079
|
+
```
|
|
1080
|
+
|
|
1081
|
+
**TDD Gate Conditions:**
|
|
1082
|
+
| Condition | Requirement | Rationale |
|
|
1083
|
+
|-----------|-------------|-----------|
|
|
1084
|
+
| Test Coverage | ≥ 95% | High confidence in code quality |
|
|
1085
|
+
| Test Pass Rate | ≥ 95% | Tests actually passing |
|
|
1086
|
+
| Framework Defined | Jest, pytest, etc. | Known test execution method |
|
|
1087
|
+
| Test Suite Path | Exists & executable | Can validate anytime |
|
|
1088
|
+
| Risk Score | ≤ 0.30 | Low business/security impact |
|
|
1089
|
+
| Cyclomatic Complexity | ≤ 5 | Simple logic, easy to test |
|
|
1090
|
+
| External Dependencies | 0 | No infrastructure coupling |
|
|
1091
|
+
| Secrets Usage | 0 | No credentials in code |
|
|
1092
|
+
|
|
1093
|
+
**Approval Decision Process:**
|
|
1094
|
+
```bash
|
|
1095
|
+
# Step 1: Check all auto-approval conditions
|
|
1096
|
+
if [[ test_coverage -ge 0.95 ]] && \
|
|
1097
|
+
[[ test_pass_rate -ge 0.95 ]] && \
|
|
1098
|
+
[[ risk_score -le 0.30 ]] && \
|
|
1099
|
+
[[ complexity -le 5 ]]; then
|
|
1100
|
+
|
|
1101
|
+
# Step 2: Execute test suite to verify
|
|
1102
|
+
PASS_RATE=$(run_test_suite "$TEST_SUITE_PATH")
|
|
1103
|
+
|
|
1104
|
+
# Step 3: Validate current pass rate
|
|
1105
|
+
if [[ $(echo "$PASS_RATE >= 0.95" | bc) -eq 1 ]]; then
|
|
1106
|
+
|
|
1107
|
+
# Step 4: Insert approval record
|
|
1108
|
+
INSERT INTO approval_history (
|
|
1109
|
+
skill_id, approval_level, test_results,
|
|
1110
|
+
approver, decision, reasoning, timestamp
|
|
1111
|
+
) VALUES (
|
|
1112
|
+
$SKILL_ID, 'auto',
|
|
1113
|
+
'{"pass_rate": '$PASS_RATE'}',
|
|
1114
|
+
'system',
|
|
1115
|
+
'approved',
|
|
1116
|
+
'Auto-approved: All criteria met, test pass rate confirmed',
|
|
1117
|
+
datetime('now')
|
|
1118
|
+
);
|
|
1119
|
+
|
|
1120
|
+
echo "✓ Auto-approved: $SKILL_ID"
|
|
1121
|
+
else
|
|
1122
|
+
echo "✗ Auto-approval rejected: test pass rate $PASS_RATE < 0.95"
|
|
1123
|
+
# Escalate to Level 2
|
|
1124
|
+
fi
|
|
1125
|
+
else
|
|
1126
|
+
echo "✗ Does not meet auto-approval criteria"
|
|
1127
|
+
# Escalate to Level 2
|
|
1128
|
+
fi
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
---
|
|
1132
|
+
|
|
1133
|
+
### Level 2: ESCALATED-REVIEW
|
|
1134
|
+
|
|
1135
|
+
**Escalation Triggers (ANY trigger escalation):**
|
|
1136
|
+
|
|
1137
|
+
```sql
|
|
1138
|
+
-- SQL Query: Which skills need escalation?
|
|
1139
|
+
SELECT
|
|
1140
|
+
s.id,
|
|
1141
|
+
s.name,
|
|
1142
|
+
CASE
|
|
1143
|
+
WHEN s.test_coverage < 0.95 THEN 'Low test coverage: ' || s.test_coverage
|
|
1144
|
+
WHEN (SELECT pass_rate FROM approval_history ah
|
|
1145
|
+
WHERE ah.skill_id = s.id
|
|
1146
|
+
ORDER BY ah.timestamp DESC LIMIT 1) < 0.95
|
|
1147
|
+
THEN 'Insufficient test pass rate'
|
|
1148
|
+
WHEN s.cyclomatic_complexity > 5 THEN 'High complexity: ' || s.cyclomatic_complexity
|
|
1149
|
+
WHEN s.risk_score > 0.30 THEN 'Elevated risk: ' || s.risk_score
|
|
1150
|
+
ELSE 'Requires expert review'
|
|
1151
|
+
END as escalation_reason
|
|
1152
|
+
FROM skills s
|
|
1153
|
+
WHERE s.approval_level = 'escalate'
|
|
1154
|
+
AND (
|
|
1155
|
+
s.test_coverage < 0.95
|
|
1156
|
+
OR s.risk_score BETWEEN 0.31 AND 0.60
|
|
1157
|
+
OR s.cyclomatic_complexity BETWEEN 6 AND 15
|
|
1158
|
+
OR external_dependencies > 0
|
|
1159
|
+
);
|
|
1160
|
+
```
|
|
1161
|
+
|
|
1162
|
+
**Escalation Categories:**
|
|
1163
|
+
|
|
1164
|
+
| Category | TDD Threshold | Action |
|
|
1165
|
+
|----------|---------------|--------|
|
|
1166
|
+
| **Medium Coverage** | 80-94% | Expert validates coverage strategy |
|
|
1167
|
+
| **Medium Risk** | 0.31-0.60 | Infrastructure specialist reviews |
|
|
1168
|
+
| **Medium Complexity** | 6-15 | Code quality reviewer assesses |
|
|
1169
|
+
| **External Dependencies** | 1-3 APIs | Integration architect approves |
|
|
1170
|
+
| **Infrastructure Changes** | Any | DevOps specialist approval required |
|
|
1171
|
+
| **Database Writes** | Any production DB | DBA approval required |
|
|
1172
|
+
|
|
1173
|
+
**Escalation Workflow:**
|
|
1174
|
+
```bash
|
|
1175
|
+
# Step 1: Detect escalation reason
|
|
1176
|
+
ESCALATION_REASON=""
|
|
1177
|
+
if [[ $TEST_COVERAGE -lt 0.95 ]]; then
|
|
1178
|
+
ESCALATION_REASON="Test coverage $TEST_COVERAGE < 0.95"
|
|
1179
|
+
elif [[ $TEST_PASS_RATE -lt 0.95 ]]; then
|
|
1180
|
+
ESCALATION_REASON="Test pass rate $TEST_PASS_RATE < 0.95"
|
|
1181
|
+
elif [[ $COMPLEXITY -gt 5 ]]; then
|
|
1182
|
+
ESCALATION_REASON="Cyclomatic complexity $COMPLEXITY > 5"
|
|
1183
|
+
fi
|
|
1184
|
+
|
|
1185
|
+
# Step 2: Escalate to expert reviewer
|
|
1186
|
+
INSERT INTO approval_history (
|
|
1187
|
+
skill_id, approval_level, escalation_reason,
|
|
1188
|
+
escalated_to, decision, timestamp
|
|
1189
|
+
) VALUES (
|
|
1190
|
+
$SKILL_ID, 'escalate',
|
|
1191
|
+
'$ESCALATION_REASON',
|
|
1192
|
+
'infrastructure-specialist@example.com',
|
|
1193
|
+
'escalated',
|
|
1194
|
+
datetime('now')
|
|
1195
|
+
);
|
|
1196
|
+
|
|
1197
|
+
# Step 3: Notify expert for 24-48 hour review window
|
|
1198
|
+
echo "Escalated to: infrastructure-specialist@example.com"
|
|
1199
|
+
echo "Reason: $ESCALATION_REASON"
|
|
1200
|
+
echo "Review window: 24-48 hours"
|
|
1201
|
+
```
|
|
1202
|
+
|
|
1203
|
+
---
|
|
1204
|
+
|
|
1205
|
+
### Level 3: HUMAN-APPROVAL
|
|
1206
|
+
|
|
1207
|
+
**Human Approval Required For:**
|
|
1208
|
+
|
|
1209
|
+
| Condition | Reason |
|
|
1210
|
+
|-----------|--------|
|
|
1211
|
+
| Test Coverage < 80% | Too low for confidence in quality |
|
|
1212
|
+
| Test Pass Rate < 80% | Tests failing, cannot proceed |
|
|
1213
|
+
| Risk Score > 0.60 | High business/security impact |
|
|
1214
|
+
| Cyclomatic Complexity > 15 | Complex logic needs expert review |
|
|
1215
|
+
| External Dependencies > 3 | Too many integration points |
|
|
1216
|
+
| No Test Suite Defined | Cannot validate automatically |
|
|
1217
|
+
| Security-Sensitive Code | Cryptography, auth, secrets |
|
|
1218
|
+
| Breaking Changes | API/schema modifications |
|
|
1219
|
+
|
|
1220
|
+
**Human Review Process:**
|
|
1221
|
+
```sql
|
|
1222
|
+
-- Human reviewers pull pending human approvals
|
|
1223
|
+
SELECT
|
|
1224
|
+
s.id,
|
|
1225
|
+
s.name,
|
|
1226
|
+
s.category,
|
|
1227
|
+
s.test_coverage,
|
|
1228
|
+
ah.approval_level,
|
|
1229
|
+
ah.escalation_reason,
|
|
1230
|
+
ah.timestamp,
|
|
1231
|
+
ah.review_duration_minutes
|
|
1232
|
+
FROM approval_history ah
|
|
1233
|
+
JOIN skills s ON ah.skill_id = s.id
|
|
1234
|
+
WHERE ah.decision = 'escalated'
|
|
1235
|
+
AND ah.approval_level = 'human'
|
|
1236
|
+
AND ah.timestamp > datetime('now', '-48 hours')
|
|
1237
|
+
ORDER BY ah.timestamp ASC;
|
|
1238
|
+
|
|
1239
|
+
-- After human review, update decision
|
|
1240
|
+
UPDATE approval_history
|
|
1241
|
+
SET
|
|
1242
|
+
decision = 'approved', -- or 'rejected' or 'needs_correction'
|
|
1243
|
+
approver = 'expert@example.com',
|
|
1244
|
+
reasoning = 'Reviewed: Test coverage acceptable for category, complexity justified',
|
|
1245
|
+
review_duration_minutes = 45
|
|
1246
|
+
WHERE skill_id = $SKILL_ID
|
|
1247
|
+
AND approval_level = 'human';
|
|
1248
|
+
```
|
|
1249
|
+
|
|
1250
|
+
---
|
|
1251
|
+
|
|
1252
|
+
### Complete Approval Decision Tree
|
|
1253
|
+
|
|
1254
|
+
```
|
|
1255
|
+
┌─────────────────────────┐
|
|
1256
|
+
│ NEW SKILL SUBMISSION │
|
|
1257
|
+
└────────────┬────────────┘
|
|
1258
|
+
│
|
|
1259
|
+
┌────────────▼────────────┐
|
|
1260
|
+
│ Extract Test Metadata │
|
|
1261
|
+
│ - test_coverage │
|
|
1262
|
+
│ - required_test_pass_rate
|
|
1263
|
+
│ - test_suite_path │
|
|
1264
|
+
└────────────┬────────────┘
|
|
1265
|
+
│
|
|
1266
|
+
┌────────────▼────────────┐
|
|
1267
|
+
│ Run Test Suite │
|
|
1268
|
+
│ → Calculate pass_rate │
|
|
1269
|
+
└────────────┬────────────┘
|
|
1270
|
+
│
|
|
1271
|
+
┌────────────▼────────────┐
|
|
1272
|
+
┌───────────┤ Pass Rate ≥ 95% & ├──────────┐
|
|
1273
|
+
│ │ Coverage ≥ 95% & │ │
|
|
1274
|
+
│ │ Complexity ≤ 5? │ │
|
|
1275
|
+
│ └────────────────────────┘ │
|
|
1276
|
+
│ │
|
|
1277
|
+
│ YES NO │
|
|
1278
|
+
▼ ▼
|
|
1279
|
+
┌────────────┐ ┌──────────────────┐
|
|
1280
|
+
│ AUTO │ │ Check Escalation │
|
|
1281
|
+
│ APPROVED │ │ Conditions │
|
|
1282
|
+
│ ✓ Safe to │ └────────┬─────────┘
|
|
1283
|
+
│ deploy │ │
|
|
1284
|
+
└────────────┘ ┌───────────────────┴─────────────────┐
|
|
1285
|
+
│ │
|
|
1286
|
+
YES (Meets escalation) NO (Needs human)
|
|
1287
|
+
▼ ▼
|
|
1288
|
+
┌──────────────────┐ ┌────────────────────┐
|
|
1289
|
+
│ ESCALATED REVIEW │ │ HUMAN APPROVAL │
|
|
1290
|
+
│ Notify experts │ │ Required │
|
|
1291
|
+
│ 24-48 hour review│ │ - High risk │
|
|
1292
|
+
│ window │ │ - Low coverage │
|
|
1293
|
+
└────────┬─────────┘ │ - Complex logic │
|
|
1294
|
+
│ └────────┬───────────┘
|
|
1295
|
+
┌──────────────┴──────────────┐ │
|
|
1296
|
+
▼ ▼ │
|
|
1297
|
+
┌───────────────┐ ┌──────────────────┐ │
|
|
1298
|
+
│ Expert │ │ Expert Rejects │ │
|
|
1299
|
+
│ Approves │ │ Requests Changes │ │
|
|
1300
|
+
└───────────────┘ └──────────────────┘ │
|
|
1301
|
+
│ │ │
|
|
1302
|
+
│ ┌───────▼───────┐ │
|
|
1303
|
+
│ │ Dev fixes & │ │
|
|
1304
|
+
│ │ resubmits │ │
|
|
1305
|
+
│ │ (Retry Loop) │ │
|
|
1306
|
+
│ └───────┬───────┘ │
|
|
1307
|
+
│ │ │
|
|
1308
|
+
└─────────────────┬───────────┴────────────────┘
|
|
1309
|
+
▼
|
|
1310
|
+
┌───────────────────────┐
|
|
1311
|
+
│ APPROVAL FINALIZED │
|
|
1312
|
+
│ - Record in DB │
|
|
1313
|
+
│ - Audit trail logged │
|
|
1314
|
+
│ - Deploy to prod │
|
|
1315
|
+
└───────────────────────┘
|
|
1316
|
+
```
|
|
1317
|
+
|
|
1318
|
+
---
|
|
1319
|
+
|
|
1320
|
+
## Section 7: Test Result Storage & Analytics
|
|
1321
|
+
|
|
1322
|
+
### Storing Test Results
|
|
1323
|
+
|
|
1324
|
+
Every test execution is stored in the `approval_history` and `skill_usage_log` tables for complete traceability:
|
|
1325
|
+
|
|
1326
|
+
#### Test Results Schema
|
|
1327
|
+
|
|
1328
|
+
```json
|
|
1329
|
+
{
|
|
1330
|
+
"framework": "jest", // Test framework used
|
|
1331
|
+
"pass_count": 45, // Number of passed tests
|
|
1332
|
+
"fail_count": 0, // Number of failed tests
|
|
1333
|
+
"skip_count": 2, // Number of skipped tests
|
|
1334
|
+
"total_count": 47, // Total tests (pass + fail + skip)
|
|
1335
|
+
"pass_rate": 0.957, // (pass_count / total_count)
|
|
1336
|
+
"duration_ms": 3400, // Time to execute all tests
|
|
1337
|
+
"timestamp": "2025-11-16T14:30:00Z",
|
|
1338
|
+
"coverage": "88%", // Code coverage percentage
|
|
1339
|
+
"coverage_delta": 2, // Change from previous run (%)
|
|
1340
|
+
"failed_tests": [ // List of failed test names
|
|
1341
|
+
{
|
|
1342
|
+
"name": "auth/login.test.js::should handle invalid credentials",
|
|
1343
|
+
"error": "Expected value to equal true, received false",
|
|
1344
|
+
"duration_ms": 45
|
|
1345
|
+
}
|
|
1346
|
+
]
|
|
1347
|
+
}
|
|
1348
|
+
```
|
|
1349
|
+
|
|
1350
|
+
#### Insert Test Results Query
|
|
1351
|
+
|
|
1352
|
+
```sql
|
|
1353
|
+
INSERT INTO approval_history (
|
|
1354
|
+
skill_id, version, approval_level, test_results,
|
|
1355
|
+
approval_criteria_check, approver, decision, reasoning, timestamp
|
|
1356
|
+
) VALUES (
|
|
1357
|
+
$SKILL_ID,
|
|
1358
|
+
(SELECT version FROM skills WHERE id = $SKILL_ID),
|
|
1359
|
+
'auto',
|
|
1360
|
+
'{"framework": "jest", "pass_count": 45, "fail_count": 0, "pass_rate": 0.957, "coverage": "88%"}',
|
|
1361
|
+
'{"test_pass_rate": {"required": 0.95, "actual": 0.957, "passed": true},
|
|
1362
|
+
"test_coverage": {"required": 0.90, "actual": 0.88, "passed": false},
|
|
1363
|
+
"complexity": {"required": "<=5", "actual": 3, "passed": true}}',
|
|
1364
|
+
'system',
|
|
1365
|
+
'approved',
|
|
1366
|
+
'Auto-approved: Test pass rate 95.7% >= 95%, complexity acceptable',
|
|
1367
|
+
datetime('now')
|
|
1368
|
+
);
|
|
1369
|
+
```
|
|
1370
|
+
|
|
1371
|
+
### Test Result Queries for Analytics
|
|
1372
|
+
|
|
1373
|
+
#### Query 1: Test Pass Rate Trends Over Time
|
|
1374
|
+
|
|
1375
|
+
```sql
|
|
1376
|
+
-- Show how test pass rates have changed over time for a skill
|
|
1377
|
+
SELECT
|
|
1378
|
+
ah.timestamp,
|
|
1379
|
+
ah.approval_level,
|
|
1380
|
+
JSON_EXTRACT(ah.test_results, '$.pass_rate') as pass_rate,
|
|
1381
|
+
JSON_EXTRACT(ah.test_results, '$.pass_count') as pass_count,
|
|
1382
|
+
JSON_EXTRACT(ah.test_results, '$.fail_count') as fail_count,
|
|
1383
|
+
JSON_EXTRACT(ah.test_results, '$.coverage') as coverage,
|
|
1384
|
+
ah.decision
|
|
1385
|
+
FROM approval_history ah
|
|
1386
|
+
WHERE ah.skill_id = $SKILL_ID
|
|
1387
|
+
ORDER BY ah.timestamp DESC
|
|
1388
|
+
LIMIT 20;
|
|
1389
|
+
|
|
1390
|
+
-- Output:
|
|
1391
|
+
-- timestamp | pass_rate | pass_count | fail_count | coverage | decision
|
|
1392
|
+
-- 2025-11-16 14:30 | 0.957 | 45 | 0 | 88% | approved
|
|
1393
|
+
-- 2025-11-15 10:15 | 0.936 | 44 | 1 | 86% | escalated
|
|
1394
|
+
-- 2025-11-14 09:00 | 1.0 | 47 | 0 | 90% | approved
|
|
1395
|
+
```
|
|
1396
|
+
|
|
1397
|
+
#### Query 2: Skills Requiring Human Approval
|
|
1398
|
+
|
|
1399
|
+
```sql
|
|
1400
|
+
-- Find skills stuck at human approval level with reasons
|
|
1401
|
+
SELECT
|
|
1402
|
+
s.id,
|
|
1403
|
+
s.name,
|
|
1404
|
+
s.category,
|
|
1405
|
+
s.test_coverage,
|
|
1406
|
+
COUNT(ah.id) as review_count,
|
|
1407
|
+
MAX(ah.timestamp) as last_review,
|
|
1408
|
+
ah.escalation_reason,
|
|
1409
|
+
ah.approval_level
|
|
1410
|
+
FROM skills s
|
|
1411
|
+
LEFT JOIN approval_history ah ON s.id = ah.skill_id
|
|
1412
|
+
WHERE ah.approval_level = 'human'
|
|
1413
|
+
AND ah.decision IN ('escalated', 'needs_correction')
|
|
1414
|
+
AND ah.timestamp > datetime('now', '-7 days')
|
|
1415
|
+
GROUP BY s.id
|
|
1416
|
+
ORDER BY last_review DESC;
|
|
1417
|
+
```
|
|
1418
|
+
|
|
1419
|
+
#### Query 3: Test Effectiveness vs Confidence Impact
|
|
1420
|
+
|
|
1421
|
+
```sql
|
|
1422
|
+
-- Correlate test pass rates with skill effectiveness (confidence delta)
|
|
1423
|
+
SELECT
|
|
1424
|
+
sl.agent_type,
|
|
1425
|
+
s.name,
|
|
1426
|
+
s.category,
|
|
1427
|
+
ROUND(JSON_EXTRACT(sl.test_execution_result, '$.pass_rate'), 3) as test_pass_rate,
|
|
1428
|
+
ROUND(sl.confidence_after - sl.confidence_before, 3) as confidence_improvement,
|
|
1429
|
+
COUNT(sl.id) as usage_count,
|
|
1430
|
+
ROUND(AVG(CAST(sl.success_indicator as FLOAT)), 3) as success_rate
|
|
1431
|
+
FROM skill_usage_log sl
|
|
1432
|
+
JOIN skills s ON sl.skill_id = s.id
|
|
1433
|
+
WHERE sl.task_id IS NOT NULL
|
|
1434
|
+
GROUP BY sl.skill_id, sl.agent_type
|
|
1435
|
+
HAVING test_pass_rate >= 0.90
|
|
1436
|
+
ORDER BY confidence_improvement DESC;
|
|
1437
|
+
|
|
1438
|
+
-- Output shows which test-passing skills actually help agents most
|
|
1439
|
+
-- Example:
|
|
1440
|
+
-- agent_type | skill_name | test_pass_rate | confidence_improvement | success_rate
|
|
1441
|
+
-- backend-developer | cfn-test-runner-jest | 0.957 | 0.125 | 0.95
|
|
1442
|
+
-- backend-developer | cfn-api-security-checker | 1.0 | 0.085 | 0.88
|
|
1443
|
+
-- tester | cfn-e2e-test-runner | 0.923 | 0.110 | 0.92
|
|
1444
|
+
```
|
|
1445
|
+
|
|
1446
|
+
#### Query 4: Coverage Trends by Category
|
|
1447
|
+
|
|
1448
|
+
```sql
|
|
1449
|
+
-- Track how test coverage is improving by skill category
|
|
1450
|
+
SELECT
|
|
1451
|
+
s.category,
|
|
1452
|
+
COUNT(s.id) as skill_count,
|
|
1453
|
+
ROUND(AVG(s.test_coverage), 3) as avg_coverage,
|
|
1454
|
+
ROUND(MIN(s.test_coverage), 3) as min_coverage,
|
|
1455
|
+
ROUND(MAX(s.test_coverage), 3) as max_coverage,
|
|
1456
|
+
SUM(CASE WHEN s.test_coverage >= 0.95 THEN 1 ELSE 0 END) as excellent_coverage_count,
|
|
1457
|
+
SUM(CASE WHEN s.test_coverage >= 0.80 AND s.test_coverage < 0.95 THEN 1 ELSE 0 END) as good_coverage_count,
|
|
1458
|
+
SUM(CASE WHEN s.test_coverage < 0.80 THEN 1 ELSE 0 END) as poor_coverage_count
|
|
1459
|
+
FROM skills s
|
|
1460
|
+
GROUP BY s.category
|
|
1461
|
+
ORDER BY avg_coverage DESC;
|
|
1462
|
+
|
|
1463
|
+
-- Output:
|
|
1464
|
+
-- category | skill_count | avg_coverage | min_coverage | max_coverage | excellent | good | poor
|
|
1465
|
+
-- testing | 12 | 0.92 | 0.85 | 0.99 | 10 | 2 | 0
|
|
1466
|
+
-- coordination | 8 | 0.88 | 0.75 | 0.96 | 6 | 2 | 0
|
|
1467
|
+
-- foundation | 5 | 0.82 | 0.70 | 0.93 | 3 | 2 | 0
|
|
1468
|
+
```
|
|
1469
|
+
|
|
1470
|
+
#### Query 5: Approval Gate Performance
|
|
1471
|
+
|
|
1472
|
+
```sql
|
|
1473
|
+
-- Measure how effective each approval level is at preventing failures
|
|
1474
|
+
SELECT
|
|
1475
|
+
ah.approval_level,
|
|
1476
|
+
COUNT(ah.id) as total_approvals,
|
|
1477
|
+
SUM(CASE WHEN ah.decision = 'approved' THEN 1 ELSE 0 END) as approved_count,
|
|
1478
|
+
SUM(CASE WHEN ah.decision = 'rejected' THEN 1 ELSE 0 END) as rejected_count,
|
|
1479
|
+
SUM(CASE WHEN ah.decision = 'needs_correction' THEN 1 ELSE 0 END) as correction_count,
|
|
1480
|
+
ROUND(100.0 * SUM(CASE WHEN ah.decision = 'approved' THEN 1 ELSE 0 END) / COUNT(ah.id), 1) as approval_rate,
|
|
1481
|
+
ROUND(AVG(CAST(ah.review_duration_minutes as FLOAT)), 1) as avg_review_time_minutes
|
|
1482
|
+
FROM approval_history ah
|
|
1483
|
+
WHERE ah.timestamp > datetime('now', '-30 days')
|
|
1484
|
+
GROUP BY ah.approval_level
|
|
1485
|
+
ORDER BY approval_rate DESC;
|
|
1486
|
+
|
|
1487
|
+
-- Output shows effectiveness of each gate level
|
|
1488
|
+
-- approval_level | total | approved | rejected | correction | approval_rate | avg_review_time
|
|
1489
|
+
-- auto | 245 | 240 | 5 | 0 | 97.96% | 0.1
|
|
1490
|
+
-- escalate | 58 | 48 | 8 | 2 | 82.76% | 4.2
|
|
1491
|
+
-- human | 12 | 8 | 3 | 1 | 66.67% | 18.5
|
|
1492
|
+
```
|
|
1493
|
+
|
|
1494
|
+
---
|
|
1495
|
+
|
|
1496
|
+
## Section 8: Phase 4 + TDD Integration
|
|
1497
|
+
|
|
1498
|
+
### Auto-Generated Skills from Phase 4
|
|
1499
|
+
|
|
1500
|
+
Phase 4 observes common patterns and **automatically generates skills** from them. When Phase 4 generates new skills, they should be **TDD-aware from the start**:
|
|
1501
|
+
|
|
1502
|
+
### Phase 4 Skill Generation Workflow
|
|
1503
|
+
|
|
1504
|
+
```
|
|
1505
|
+
Pattern Library (100 patterns collected)
|
|
1506
|
+
│
|
|
1507
|
+
▼
|
|
1508
|
+
┌─────────────────────────────────┐
|
|
1509
|
+
│ Phase 4: Pattern Recognition │
|
|
1510
|
+
│ - Edge cases observed │
|
|
1511
|
+
│ - Common failures identified │
|
|
1512
|
+
│ - Success patterns extracted │
|
|
1513
|
+
└────────────┬────────────────────┘
|
|
1514
|
+
│
|
|
1515
|
+
▼
|
|
1516
|
+
┌─────────────────────────────────┐
|
|
1517
|
+
│ Generate Skill from Pattern │
|
|
1518
|
+
│ 1. Create .md file │
|
|
1519
|
+
│ 2. Write test cases │ ← TDD-First
|
|
1520
|
+
│ 3. Generate implementation │
|
|
1521
|
+
│ 4. Calculate test coverage │
|
|
1522
|
+
└────────────┬────────────────────┘
|
|
1523
|
+
│
|
|
1524
|
+
▼
|
|
1525
|
+
┌─────────────────────────────────┐
|
|
1526
|
+
│ Insert into Skills Table │
|
|
1527
|
+
│ - test_coverage = measured │
|
|
1528
|
+
│ - test_suite_path = generated │
|
|
1529
|
+
│ - required_test_pass_rate = 0.95│
|
|
1530
|
+
│ - is_auto_generated = 1 │
|
|
1531
|
+
│ - phase4_pattern_id = ref │
|
|
1532
|
+
└────────────┬────────────────────┘
|
|
1533
|
+
│
|
|
1534
|
+
▼
|
|
1535
|
+
┌─────────────────────────────────┐
|
|
1536
|
+
│ Approval Workflow Executes │
|
|
1537
|
+
│ - Auto-approve if tests pass │
|
|
1538
|
+
│ - Escalate if coverage low │
|
|
1539
|
+
│ - Human review if needed │
|
|
1540
|
+
└────────────┬────────────────────┘
|
|
1541
|
+
│
|
|
1542
|
+
▼
|
|
1543
|
+
┌─────────────────────────────────┐
|
|
1544
|
+
│ Skill Ready for Production │
|
|
1545
|
+
│ - Available to agents │
|
|
1546
|
+
│ - Tested and validated │
|
|
1547
|
+
│ - Analytics tracking enabled │
|
|
1548
|
+
└─────────────────────────────────┘
|
|
1549
|
+
```
|
|
1550
|
+
|
|
1551
|
+
### Phase 4 Skill Metadata
|
|
1552
|
+
|
|
1553
|
+
```sql
|
|
1554
|
+
-- When Phase 4 creates a skill, include these TDD fields
|
|
1555
|
+
INSERT INTO skills (
|
|
1556
|
+
name,
|
|
1557
|
+
category,
|
|
1558
|
+
team,
|
|
1559
|
+
content_path,
|
|
1560
|
+
content_hash,
|
|
1561
|
+
version,
|
|
1562
|
+
status,
|
|
1563
|
+
|
|
1564
|
+
-- TDD Required for Generated Skills
|
|
1565
|
+
test_coverage,
|
|
1566
|
+
test_suite_path,
|
|
1567
|
+
required_test_pass_rate,
|
|
1568
|
+
|
|
1569
|
+
-- Phase 4 Tracking
|
|
1570
|
+
phase4_pattern_id,
|
|
1571
|
+
generated_by,
|
|
1572
|
+
is_auto_generated
|
|
1573
|
+
) VALUES (
|
|
1574
|
+
'cfn-token-validation-error-recovery',
|
|
1575
|
+
'error-handling',
|
|
1576
|
+
'cfn',
|
|
1577
|
+
'./.claude/skills/generated/token-validation-recovery.md',
|
|
1578
|
+
'sha256_generated_content_hash',
|
|
1579
|
+
'1.0.0',
|
|
1580
|
+
'active',
|
|
1581
|
+
|
|
1582
|
+
-- TDD metrics (from test execution)
|
|
1583
|
+
0.92, -- test_coverage: 92% statement coverage
|
|
1584
|
+
'./.claude/skills/generated/test/token-validation-recovery.sh',
|
|
1585
|
+
0.95, -- Must have 95% pass rate
|
|
1586
|
+
|
|
1587
|
+
-- Phase 4 integration
|
|
1588
|
+
487, -- phase4_pattern_id: Edge case pattern #487
|
|
1589
|
+
'phase4',
|
|
1590
|
+
1 -- is_auto_generated: true
|
|
1591
|
+
);
|
|
1592
|
+
```
|
|
1593
|
+
|
|
1594
|
+
### Edge Case Feedback Loop
|
|
1595
|
+
|
|
1596
|
+
```
|
|
1597
|
+
Phase 4 observes failures → Creates test case
|
|
1598
|
+
│
|
|
1599
|
+
▼
|
|
1600
|
+
Generates skill from pattern
|
|
1601
|
+
│
|
|
1602
|
+
▼
|
|
1603
|
+
Tests written first (TDD)
|
|
1604
|
+
│
|
|
1605
|
+
▼
|
|
1606
|
+
Implementation generated
|
|
1607
|
+
│
|
|
1608
|
+
▼
|
|
1609
|
+
Test pass rate calculated
|
|
1610
|
+
│
|
|
1611
|
+
┌─────────┴─────────┐
|
|
1612
|
+
│ │
|
|
1613
|
+
✓ ≥95% pass rate ✗ <95% pass rate
|
|
1614
|
+
│ │
|
|
1615
|
+
▼ ▼
|
|
1616
|
+
Approve skill Request improvement
|
|
1617
|
+
│ or escalate
|
|
1618
|
+
│ │
|
|
1619
|
+
├─────────┬─────────┤
|
|
1620
|
+
▼ ▼ ▼
|
|
1621
|
+
Production Backlog Human Review
|
|
1622
|
+
Deployment (Retry) (Final check)
|
|
1623
|
+
```
|
|
1624
|
+
|
|
1625
|
+
### SQL Query: Recently Generated Skills
|
|
1626
|
+
|
|
1627
|
+
```sql
|
|
1628
|
+
-- Find skills recently created by Phase 4
|
|
1629
|
+
SELECT
|
|
1630
|
+
s.id,
|
|
1631
|
+
s.name,
|
|
1632
|
+
s.category,
|
|
1633
|
+
s.test_coverage,
|
|
1634
|
+
s.required_test_pass_rate,
|
|
1635
|
+
ah.decision,
|
|
1636
|
+
ah.approval_level,
|
|
1637
|
+
ah.timestamp as approved_at
|
|
1638
|
+
FROM skills s
|
|
1639
|
+
LEFT JOIN approval_history ah ON s.id = ah.skill_id AND ah.decision = 'approved'
|
|
1640
|
+
WHERE s.is_auto_generated = 1
|
|
1641
|
+
AND s.generated_by = 'phase4'
|
|
1642
|
+
AND s.created_at > datetime('now', '-30 days')
|
|
1643
|
+
ORDER BY s.created_at DESC;
|
|
1644
|
+
```
|
|
1645
|
+
|
|
1646
|
+
---
|
|
1647
|
+
|
|
1648
|
+
## Section 9: Implementation Examples
|
|
1649
|
+
|
|
1650
|
+
### Example 1: Query Test Pass Rate by Skill
|
|
1651
|
+
|
|
1652
|
+
```sql
|
|
1653
|
+
-- Get the current test pass rate for a specific skill
|
|
1654
|
+
SELECT
|
|
1655
|
+
s.id,
|
|
1656
|
+
s.name,
|
|
1657
|
+
s.test_coverage,
|
|
1658
|
+
s.required_test_pass_rate,
|
|
1659
|
+
JSON_EXTRACT(ah.test_results, '$.pass_rate') as current_pass_rate,
|
|
1660
|
+
JSON_EXTRACT(ah.test_results, '$.pass_count') as pass_count,
|
|
1661
|
+
JSON_EXTRACT(ah.test_results, '$.fail_count') as fail_count,
|
|
1662
|
+
ah.timestamp as last_test_run
|
|
1663
|
+
FROM skills s
|
|
1664
|
+
LEFT JOIN approval_history ah ON s.id = ah.skill_id
|
|
1665
|
+
WHERE s.name = 'cfn-test-runner-jest'
|
|
1666
|
+
ORDER BY ah.timestamp DESC
|
|
1667
|
+
LIMIT 1;
|
|
1668
|
+
```
|
|
1669
|
+
|
|
1670
|
+
**Usage:**
|
|
1671
|
+
```bash
|
|
1672
|
+
sqlite3 skills.db < query_test_pass_rate.sql
|
|
1673
|
+
|
|
1674
|
+
# Output:
|
|
1675
|
+
# id | name | test_coverage | required_test_pass_rate | current_pass_rate | pass_count | fail_count | last_test_run
|
|
1676
|
+
# 15 | cfn-test-runner-jest | 0.95 | 0.95 | 0.957 | 45 | 0 | 2025-11-16 14:30:00
|
|
1677
|
+
```
|
|
1678
|
+
|
|
1679
|
+
---
|
|
1680
|
+
|
|
1681
|
+
### Example 2: Bash Script - Run Approval Gate Check
|
|
1682
|
+
|
|
1683
|
+
```bash
|
|
1684
|
+
#!/bin/bash
|
|
1685
|
+
# approval-gate-check.sh - Execute TDD gate check for skill approval
|
|
1686
|
+
|
|
1687
|
+
set -euo pipefail
|
|
1688
|
+
|
|
1689
|
+
SKILL_ID="${1:-}"
|
|
1690
|
+
SKILL_NAME="${2:-}"
|
|
1691
|
+
|
|
1692
|
+
if [[ -z "$SKILL_ID" || -z "$SKILL_NAME" ]]; then
|
|
1693
|
+
echo "Usage: $0 <skill_id> <skill_name>"
|
|
1694
|
+
exit 1
|
|
1695
|
+
fi
|
|
1696
|
+
|
|
1697
|
+
# Step 1: Fetch skill metadata from database
|
|
1698
|
+
echo "Step 1: Fetching skill metadata..."
|
|
1699
|
+
SKILL_DATA=$(sqlite3 -json skills.db "
|
|
1700
|
+
SELECT
|
|
1701
|
+
id, name, test_coverage, test_suite_path,
|
|
1702
|
+
required_test_pass_rate, approval_level, risk_score
|
|
1703
|
+
FROM skills
|
|
1704
|
+
WHERE id = $SKILL_ID
|
|
1705
|
+
")
|
|
1706
|
+
|
|
1707
|
+
TEST_SUITE_PATH=$(echo "$SKILL_DATA" | jq -r '.[0].test_suite_path')
|
|
1708
|
+
REQUIRED_PASS_RATE=$(echo "$SKILL_DATA" | jq -r '.[0].required_test_pass_rate')
|
|
1709
|
+
|
|
1710
|
+
if [[ -z "$TEST_SUITE_PATH" ]]; then
|
|
1711
|
+
echo "ERROR: Test suite path not found for skill $SKILL_ID"
|
|
1712
|
+
exit 1
|
|
1713
|
+
fi
|
|
1714
|
+
|
|
1715
|
+
# Step 2: Run test suite
|
|
1716
|
+
echo "Step 2: Executing test suite: $TEST_SUITE_PATH"
|
|
1717
|
+
if [[ ! -x "$TEST_SUITE_PATH" ]]; then
|
|
1718
|
+
chmod +x "$TEST_SUITE_PATH"
|
|
1719
|
+
fi
|
|
1720
|
+
|
|
1721
|
+
# Capture test output
|
|
1722
|
+
TEST_OUTPUT=$("$TEST_SUITE_PATH" 2>&1 || true)
|
|
1723
|
+
|
|
1724
|
+
# Step 3: Parse test results
|
|
1725
|
+
echo "Step 3: Parsing test results..."
|
|
1726
|
+
PASS_COUNT=$(echo "$TEST_OUTPUT" | grep -o "passed" | wc -l)
|
|
1727
|
+
FAIL_COUNT=$(echo "$TEST_OUTPUT" | grep -o "failed" | wc -l)
|
|
1728
|
+
TOTAL_COUNT=$((PASS_COUNT + FAIL_COUNT))
|
|
1729
|
+
|
|
1730
|
+
if [[ $TOTAL_COUNT -eq 0 ]]; then
|
|
1731
|
+
echo "ERROR: Could not parse test results"
|
|
1732
|
+
exit 1
|
|
1733
|
+
fi
|
|
1734
|
+
|
|
1735
|
+
PASS_RATE=$(echo "scale=3; $PASS_COUNT / $TOTAL_COUNT" | bc)
|
|
1736
|
+
|
|
1737
|
+
echo " Pass count: $PASS_COUNT"
|
|
1738
|
+
echo " Fail count: $FAIL_COUNT"
|
|
1739
|
+
echo " Total count: $TOTAL_COUNT"
|
|
1740
|
+
echo " Pass rate: $PASS_RATE (required: $REQUIRED_PASS_RATE)"
|
|
1741
|
+
|
|
1742
|
+
# Step 4: Make approval decision
|
|
1743
|
+
echo "Step 4: Making approval decision..."
|
|
1744
|
+
|
|
1745
|
+
if (( $(echo "$PASS_RATE >= $REQUIRED_PASS_RATE" | bc -l) )); then
|
|
1746
|
+
DECISION="approved"
|
|
1747
|
+
APPROVAL_LEVEL="auto"
|
|
1748
|
+
REASONING="Auto-approved: Test pass rate $PASS_RATE meets requirement $REQUIRED_PASS_RATE"
|
|
1749
|
+
else
|
|
1750
|
+
DECISION="escalated"
|
|
1751
|
+
APPROVAL_LEVEL="escalate"
|
|
1752
|
+
REASONING="Escalated: Test pass rate $PASS_RATE below requirement $REQUIRED_PASS_RATE"
|
|
1753
|
+
fi
|
|
1754
|
+
|
|
1755
|
+
# Step 5: Store results in database
|
|
1756
|
+
echo "Step 5: Storing results in database..."
|
|
1757
|
+
sqlite3 skills.db "
|
|
1758
|
+
INSERT INTO approval_history (
|
|
1759
|
+
skill_id, version, approval_level, test_results,
|
|
1760
|
+
approver, decision, reasoning, timestamp
|
|
1761
|
+
) VALUES (
|
|
1762
|
+
$SKILL_ID,
|
|
1763
|
+
(SELECT version FROM skills WHERE id = $SKILL_ID),
|
|
1764
|
+
'$APPROVAL_LEVEL',
|
|
1765
|
+
'{\"framework\": \"bash\", \"pass_count\": $PASS_COUNT, \"fail_count\": $FAIL_COUNT, \"pass_rate\": $PASS_RATE}',
|
|
1766
|
+
'system',
|
|
1767
|
+
'$DECISION',
|
|
1768
|
+
'$REASONING',
|
|
1769
|
+
datetime('now')
|
|
1770
|
+
);
|
|
1771
|
+
"
|
|
1772
|
+
|
|
1773
|
+
echo "✓ Decision: $DECISION ($APPROVAL_LEVEL)"
|
|
1774
|
+
echo " Reason: $REASONING"
|
|
1775
|
+
|
|
1776
|
+
# Step 6: Report result
|
|
1777
|
+
exit_code=0
|
|
1778
|
+
if [[ "$DECISION" == "escalated" ]]; then
|
|
1779
|
+
exit_code=1
|
|
1780
|
+
fi
|
|
1781
|
+
|
|
1782
|
+
exit $exit_code
|
|
1783
|
+
```
|
|
1784
|
+
|
|
1785
|
+
**Usage:**
|
|
1786
|
+
```bash
|
|
1787
|
+
./approval-gate-check.sh 15 "cfn-test-runner-jest"
|
|
1788
|
+
|
|
1789
|
+
# Output:
|
|
1790
|
+
# Step 1: Fetching skill metadata...
|
|
1791
|
+
# Step 2: Executing test suite: ./.claude/skills/cfn-test-runner/test.sh
|
|
1792
|
+
# Step 3: Parsing test results...
|
|
1793
|
+
# Pass count: 45
|
|
1794
|
+
# Fail count: 0
|
|
1795
|
+
# Total count: 45
|
|
1796
|
+
# Pass rate: 1.0 (required: 0.95)
|
|
1797
|
+
# Step 4: Making approval decision...
|
|
1798
|
+
# Step 5: Storing results in database...
|
|
1799
|
+
# ✓ Decision: approved (auto)
|
|
1800
|
+
# Reason: Auto-approved: Test pass rate 1.0 meets requirement 0.95
|
|
1801
|
+
```
|
|
1802
|
+
|
|
1803
|
+
---
|
|
1804
|
+
|
|
1805
|
+
### Example 3: Skill Loading with TDD Conditions
|
|
1806
|
+
|
|
1807
|
+
```bash
|
|
1808
|
+
#!/bin/bash
|
|
1809
|
+
# load-tdd-aware-skills.sh - Load skills with TDD validation
|
|
1810
|
+
|
|
1811
|
+
AGENT_TYPE="${1:-backend-developer}"
|
|
1812
|
+
PHASE="${2:-loop3}"
|
|
1813
|
+
TASK_ID="${3:-}"
|
|
1814
|
+
|
|
1815
|
+
echo "Loading skills for: $AGENT_TYPE (phase: $PHASE)"
|
|
1816
|
+
|
|
1817
|
+
# Query skills for this agent with TDD conditions
|
|
1818
|
+
SKILLS=$(sqlite3 -json skills.db "
|
|
1819
|
+
SELECT
|
|
1820
|
+
asm.skill_id,
|
|
1821
|
+
s.name,
|
|
1822
|
+
s.test_suite_path,
|
|
1823
|
+
s.required_test_pass_rate,
|
|
1824
|
+
asm.priority,
|
|
1825
|
+
asm.required,
|
|
1826
|
+
asm.tdd_condition,
|
|
1827
|
+
asm.conditions
|
|
1828
|
+
FROM agent_skill_mappings asm
|
|
1829
|
+
JOIN skills s ON asm.skill_id = s.id
|
|
1830
|
+
WHERE asm.agent_type = '$AGENT_TYPE'
|
|
1831
|
+
AND asm.enabled = 1
|
|
1832
|
+
ORDER BY asm.priority ASC
|
|
1833
|
+
")
|
|
1834
|
+
|
|
1835
|
+
# Load each skill
|
|
1836
|
+
LOADED=0
|
|
1837
|
+
SKIPPED=0
|
|
1838
|
+
|
|
1839
|
+
while IFS= read -r skill_json; do
|
|
1840
|
+
SKILL_ID=$(echo "$skill_json" | jq -r '.skill_id')
|
|
1841
|
+
SKILL_NAME=$(echo "$skill_json" | jq -r '.name')
|
|
1842
|
+
TEST_SUITE=$(echo "$skill_json" | jq -r '.test_suite_path')
|
|
1843
|
+
REQUIRED=$(echo "$skill_json" | jq -r '.required')
|
|
1844
|
+
TDD_CONDITION=$(echo "$skill_json" | jq -r '.tdd_condition')
|
|
1845
|
+
MIN_PASS_RATE=$(echo "$TDD_CONDITION" | jq -r '.min_pass_rate // 0.90')
|
|
1846
|
+
|
|
1847
|
+
echo -n " Loading: $SKILL_NAME... "
|
|
1848
|
+
|
|
1849
|
+
# Run test suite if TDD conditions exist
|
|
1850
|
+
if [[ "$TEST_SUITE" != "null" && -x "$TEST_SUITE" ]]; then
|
|
1851
|
+
# Execute test suite
|
|
1852
|
+
TEST_OUTPUT=$("$TEST_SUITE" 2>&1 || true)
|
|
1853
|
+
PASS_RATE=$(echo "$TEST_OUTPUT" | grep -oP 'pass_rate: \K[\d.]+' || echo "0")
|
|
1854
|
+
|
|
1855
|
+
# Check if pass rate meets requirement
|
|
1856
|
+
if (( $(echo "$PASS_RATE >= $MIN_PASS_RATE" | bc -l) )); then
|
|
1857
|
+
echo "✓ (tests: $PASS_RATE)"
|
|
1858
|
+
LOADED=$((LOADED + 1))
|
|
1859
|
+
else
|
|
1860
|
+
if [[ "$REQUIRED" == "1" ]]; then
|
|
1861
|
+
echo "✗ SKIP - REQUIRED but tests failed ($PASS_RATE < $MIN_PASS_RATE)"
|
|
1862
|
+
else
|
|
1863
|
+
echo "✗ SKIP - tests failed ($PASS_RATE < $MIN_PASS_RATE)"
|
|
1864
|
+
fi
|
|
1865
|
+
SKIPPED=$((SKIPPED + 1))
|
|
1866
|
+
fi
|
|
1867
|
+
else
|
|
1868
|
+
echo "✓ (no tests)"
|
|
1869
|
+
LOADED=$((LOADED + 1))
|
|
1870
|
+
fi
|
|
1871
|
+
|
|
1872
|
+
# Log skill loading
|
|
1873
|
+
if [[ -n "$TASK_ID" ]]; then
|
|
1874
|
+
sqlite3 skills.db "
|
|
1875
|
+
INSERT INTO skill_usage_log (
|
|
1876
|
+
agent_id, agent_type, skill_id, task_id, phase,
|
|
1877
|
+
loaded_at, success_indicator
|
|
1878
|
+
) VALUES (
|
|
1879
|
+
'${AGENT_TYPE}-1',
|
|
1880
|
+
'$AGENT_TYPE',
|
|
1881
|
+
$SKILL_ID,
|
|
1882
|
+
'$TASK_ID',
|
|
1883
|
+
'$PHASE',
|
|
1884
|
+
datetime('now'),
|
|
1885
|
+
1
|
|
1886
|
+
);
|
|
1887
|
+
"
|
|
1888
|
+
fi
|
|
1889
|
+
done < <(echo "$SKILLS" | jq -c '.[]')
|
|
1890
|
+
|
|
1891
|
+
echo "Summary: $LOADED loaded, $SKIPPED skipped"
|
|
1892
|
+
```
|
|
1893
|
+
|
|
1894
|
+
**Usage:**
|
|
1895
|
+
```bash
|
|
1896
|
+
./load-tdd-aware-skills.sh backend-developer loop3 task-12345
|
|
1897
|
+
|
|
1898
|
+
# Output:
|
|
1899
|
+
# Loading skills for: backend-developer (phase: loop3)
|
|
1900
|
+
# Loading: cfn-test-runner-jest... ✓ (tests: 0.957)
|
|
1901
|
+
# Loading: cfn-test-result-parser... ✓ (tests: 0.92)
|
|
1902
|
+
# Loading: cfn-api-security-checker... ✗ SKIP - tests failed (0.80 < 0.90)
|
|
1903
|
+
# Loading: cfn-error-recovery-patterns... ✓ (tests: 0.95)
|
|
1904
|
+
# Summary: 3 loaded, 1 skipped
|
|
1905
|
+
```
|
|
1906
|
+
|
|
1907
|
+
---
|
|
1908
|
+
|
|
1909
|
+
### Example 4: Generate Test Results JSON from Multiple Frameworks
|
|
1910
|
+
|
|
1911
|
+
```bash
|
|
1912
|
+
#!/bin/bash
|
|
1913
|
+
# parse-multi-framework-tests.sh - Parse Jest, pytest, Mocha output
|
|
1914
|
+
|
|
1915
|
+
TEST_FRAMEWORK="${1:-jest}"
|
|
1916
|
+
TEST_OUTPUT_FILE="${2:-}"
|
|
1917
|
+
|
|
1918
|
+
if [[ -z "$TEST_OUTPUT_FILE" ]]; then
|
|
1919
|
+
echo "Usage: $0 <framework> <output_file>"
|
|
1920
|
+
echo "Frameworks: jest, mocha, pytest, tap, junit"
|
|
1921
|
+
exit 1
|
|
1922
|
+
fi
|
|
1923
|
+
|
|
1924
|
+
# Function: Parse Jest output
|
|
1925
|
+
parse_jest() {
|
|
1926
|
+
local output_file="$1"
|
|
1927
|
+
|
|
1928
|
+
if [[ ! -f "$output_file" ]]; then
|
|
1929
|
+
echo "{\"error\": \"File not found: $output_file\"}"
|
|
1930
|
+
return 1
|
|
1931
|
+
fi
|
|
1932
|
+
|
|
1933
|
+
# Extract metrics from Jest JSON output
|
|
1934
|
+
local pass_count=$(jq -r '.numPassedTests' "$output_file" 2>/dev/null || echo "0")
|
|
1935
|
+
local fail_count=$(jq -r '.numFailedTests' "$output_file" 2>/dev/null || echo "0")
|
|
1936
|
+
local skip_count=$(jq -r '.numSkippedTests' "$output_file" 2>/dev/null || echo "0")
|
|
1937
|
+
local total_count=$((pass_count + fail_count))
|
|
1938
|
+
local pass_rate=$(echo "scale=3; $pass_count / $total_count" | bc 2>/dev/null || echo "0")
|
|
1939
|
+
|
|
1940
|
+
cat <<EOF
|
|
1941
|
+
{
|
|
1942
|
+
"framework": "jest",
|
|
1943
|
+
"pass_count": $pass_count,
|
|
1944
|
+
"fail_count": $fail_count,
|
|
1945
|
+
"skip_count": $skip_count,
|
|
1946
|
+
"total_count": $total_count,
|
|
1947
|
+
"pass_rate": $pass_rate,
|
|
1948
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
1949
|
+
}
|
|
1950
|
+
EOF
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
# Function: Parse pytest output
|
|
1954
|
+
parse_pytest() {
|
|
1955
|
+
local output_file="$1"
|
|
1956
|
+
|
|
1957
|
+
# Example pytest output: "45 passed, 0 failed, 2 skipped in 3.40s"
|
|
1958
|
+
local results=$(grep -oP '\d+ passed' "$output_file" | grep -oP '\d+')
|
|
1959
|
+
local passed="${results:-0}"
|
|
1960
|
+
local failed=$(grep -oP '\d+ failed' "$output_file" | grep -oP '\d+' || echo "0")
|
|
1961
|
+
local skipped=$(grep -oP '\d+ skipped' "$output_file" | grep -oP '\d+' || echo "0")
|
|
1962
|
+
local total=$((passed + failed))
|
|
1963
|
+
local pass_rate=$(echo "scale=3; $passed / $total" | bc 2>/dev/null || echo "0")
|
|
1964
|
+
|
|
1965
|
+
cat <<EOF
|
|
1966
|
+
{
|
|
1967
|
+
"framework": "pytest",
|
|
1968
|
+
"pass_count": $passed,
|
|
1969
|
+
"fail_count": $failed,
|
|
1970
|
+
"skip_count": $skipped,
|
|
1971
|
+
"total_count": $total,
|
|
1972
|
+
"pass_rate": $pass_rate,
|
|
1973
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
1974
|
+
}
|
|
1975
|
+
EOF
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
# Function: Parse TAP output
|
|
1979
|
+
parse_tap() {
|
|
1980
|
+
local output_file="$1"
|
|
1981
|
+
|
|
1982
|
+
# TAP format: "1..47" (total), "ok 1" (pass), "not ok 2" (fail)
|
|
1983
|
+
local total=$(grep -oP '^1\.\.\K\d+' "$output_file" | head -1)
|
|
1984
|
+
local passed=$(grep -c "^ok " "$output_file" || echo "0")
|
|
1985
|
+
local failed=$(grep -c "^not ok " "$output_file" || echo "0")
|
|
1986
|
+
local pass_rate=$(echo "scale=3; $passed / $total" | bc 2>/dev/null || echo "0")
|
|
1987
|
+
|
|
1988
|
+
cat <<EOF
|
|
1989
|
+
{
|
|
1990
|
+
"framework": "tap",
|
|
1991
|
+
"pass_count": $passed,
|
|
1992
|
+
"fail_count": $failed,
|
|
1993
|
+
"skip_count": 0,
|
|
1994
|
+
"total_count": $total,
|
|
1995
|
+
"pass_rate": $pass_rate,
|
|
1996
|
+
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
1997
|
+
}
|
|
1998
|
+
EOF
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
# Route to appropriate parser
|
|
2002
|
+
case "$TEST_FRAMEWORK" in
|
|
2003
|
+
jest)
|
|
2004
|
+
parse_jest "$TEST_OUTPUT_FILE"
|
|
2005
|
+
;;
|
|
2006
|
+
pytest)
|
|
2007
|
+
parse_pytest "$TEST_OUTPUT_FILE"
|
|
2008
|
+
;;
|
|
2009
|
+
tap)
|
|
2010
|
+
parse_tap "$TEST_OUTPUT_FILE"
|
|
2011
|
+
;;
|
|
2012
|
+
*)
|
|
2013
|
+
echo "{\"error\": \"Unknown framework: $TEST_FRAMEWORK\"}"
|
|
2014
|
+
exit 1
|
|
2015
|
+
;;
|
|
2016
|
+
esac
|
|
2017
|
+
```
|
|
2018
|
+
|
|
2019
|
+
**Usage:**
|
|
2020
|
+
```bash
|
|
2021
|
+
# Parse Jest output
|
|
2022
|
+
./parse-multi-framework-tests.sh jest test-results.json
|
|
2023
|
+
|
|
2024
|
+
# Output:
|
|
2025
|
+
# {
|
|
2026
|
+
# "framework": "jest",
|
|
2027
|
+
# "pass_count": 45,
|
|
2028
|
+
# "fail_count": 0,
|
|
2029
|
+
# "skip_count": 2,
|
|
2030
|
+
# "total_count": 45,
|
|
2031
|
+
# "pass_rate": 1.0,
|
|
2032
|
+
# "timestamp": "2025-11-16T14:30:00Z"
|
|
2033
|
+
# }
|
|
2034
|
+
|
|
2035
|
+
# Parse pytest output
|
|
2036
|
+
./parse-multi-framework-tests.sh pytest pytest-results.txt
|
|
2037
|
+
|
|
2038
|
+
# Parse TAP output
|
|
2039
|
+
./parse-multi-framework-tests.sh tap test-output.tap
|
|
2040
|
+
```
|
|
2041
|
+
|
|
2042
|
+
---
|
|
2043
|
+
|
|
2044
|
+
### Example 5: Approval Criteria Check
|
|
2045
|
+
|
|
2046
|
+
```sql
|
|
2047
|
+
-- Check if skill meets auto-approval criteria
|
|
2048
|
+
SELECT
|
|
2049
|
+
s.id,
|
|
2050
|
+
s.name,
|
|
2051
|
+
CASE
|
|
2052
|
+
WHEN s.test_coverage >= 0.95 THEN 'PASS'
|
|
2053
|
+
ELSE 'FAIL: coverage ' || ROUND(s.test_coverage, 2)
|
|
2054
|
+
END as coverage_check,
|
|
2055
|
+
CASE
|
|
2056
|
+
WHEN CAST(JSON_EXTRACT(
|
|
2057
|
+
(SELECT test_results FROM approval_history ah
|
|
2058
|
+
WHERE ah.skill_id = s.id
|
|
2059
|
+
ORDER BY ah.timestamp DESC LIMIT 1),
|
|
2060
|
+
'$.pass_rate'
|
|
2061
|
+
) as REAL) >= 0.95 THEN 'PASS'
|
|
2062
|
+
ELSE 'FAIL: low pass rate'
|
|
2063
|
+
END as test_check,
|
|
2064
|
+
CASE
|
|
2065
|
+
WHEN s.risk_score <= 0.30 THEN 'PASS'
|
|
2066
|
+
ELSE 'FAIL: risk ' || ROUND(s.risk_score, 2)
|
|
2067
|
+
END as risk_check,
|
|
2068
|
+
CASE
|
|
2069
|
+
WHEN s.cyclomatic_complexity <= 5 THEN 'PASS'
|
|
2070
|
+
ELSE 'FAIL: complexity ' || s.cyclomatic_complexity
|
|
2071
|
+
END as complexity_check,
|
|
2072
|
+
CASE
|
|
2073
|
+
WHEN s.test_coverage >= 0.95
|
|
2074
|
+
AND CAST(JSON_EXTRACT(
|
|
2075
|
+
(SELECT test_results FROM approval_history ah
|
|
2076
|
+
WHERE ah.skill_id = s.id
|
|
2077
|
+
ORDER BY ah.timestamp DESC LIMIT 1),
|
|
2078
|
+
'$.pass_rate'
|
|
2079
|
+
) as REAL) >= 0.95
|
|
2080
|
+
AND s.risk_score <= 0.30
|
|
2081
|
+
AND s.cyclomatic_complexity <= 5
|
|
2082
|
+
THEN 'AUTO APPROVE'
|
|
2083
|
+
ELSE 'ESCALATE/HUMAN'
|
|
2084
|
+
END as approval_decision
|
|
2085
|
+
FROM skills s
|
|
2086
|
+
WHERE s.id IN (
|
|
2087
|
+
SELECT DISTINCT skill_id FROM agent_skill_mappings
|
|
2088
|
+
WHERE agent_type = 'backend-developer'
|
|
2089
|
+
)
|
|
2090
|
+
ORDER BY s.name;
|
|
2091
|
+
```
|
|
2092
|
+
|
|
2093
|
+
---
|
|
2094
|
+
|
|
2095
|
+
## Section 10: Migration Path
|
|
2096
|
+
|
|
2097
|
+
### Migrating Existing 62 Skills to TDD
|
|
2098
|
+
|
|
2099
|
+
The Skills Database currently has 62 active skills (as of 2025-11-16). Here's the migration path to make them all TDD-aware:
|
|
2100
|
+
|
|
2101
|
+
### Phase 1: Assessment (Week 1)
|
|
2102
|
+
|
|
2103
|
+
```sql
|
|
2104
|
+
-- Audit current skills
|
|
2105
|
+
SELECT
|
|
2106
|
+
category,
|
|
2107
|
+
COUNT(*) as skill_count,
|
|
2108
|
+
SUM(CASE WHEN test_coverage IS NULL THEN 1 ELSE 0 END) as no_coverage_data,
|
|
2109
|
+
SUM(CASE WHEN test_suite_path IS NULL THEN 1 ELSE 0 END) as no_test_path,
|
|
2110
|
+
SUM(CASE WHEN status = 'deprecated' THEN 1 ELSE 0 END) as deprecated
|
|
2111
|
+
FROM skills
|
|
2112
|
+
GROUP BY category
|
|
2113
|
+
ORDER BY skill_count DESC;
|
|
2114
|
+
|
|
2115
|
+
-- Output will show assessment of gaps
|
|
2116
|
+
```
|
|
2117
|
+
|
|
2118
|
+
### Phase 2: Backfill Metadata (Weeks 2-3)
|
|
2119
|
+
|
|
2120
|
+
For each skill without test metadata:
|
|
2121
|
+
|
|
2122
|
+
```bash
|
|
2123
|
+
#!/bin/bash
|
|
2124
|
+
# migrate-skill-to-tdd.sh
|
|
2125
|
+
|
|
2126
|
+
SKILL_ID="$1"
|
|
2127
|
+
SKILL_NAME="$2"
|
|
2128
|
+
|
|
2129
|
+
echo "Migrating $SKILL_NAME (ID: $SKILL_ID) to TDD..."
|
|
2130
|
+
|
|
2131
|
+
# Step 1: Locate or create test suite
|
|
2132
|
+
if [[ -f "./.claude/skills/$SKILL_NAME/test.sh" ]]; then
|
|
2133
|
+
TEST_SUITE_PATH="./.claude/skills/$SKILL_NAME/test.sh"
|
|
2134
|
+
echo " Found existing tests: $TEST_SUITE_PATH"
|
|
2135
|
+
else
|
|
2136
|
+
echo " No test suite found - creating template..."
|
|
2137
|
+
TEST_SUITE_PATH="./.claude/skills/$SKILL_NAME/test.sh"
|
|
2138
|
+
cat > "$TEST_SUITE_PATH" <<'EOTEST'
|
|
2139
|
+
#!/bin/bash
|
|
2140
|
+
# Auto-generated test template
|
|
2141
|
+
# TODO: Implement actual tests
|
|
2142
|
+
|
|
2143
|
+
echo "SKIP: No tests implemented yet"
|
|
2144
|
+
exit 0
|
|
2145
|
+
EOTEST
|
|
2146
|
+
chmod +x "$TEST_SUITE_PATH"
|
|
2147
|
+
echo " Created template: $TEST_SUITE_PATH"
|
|
2148
|
+
fi
|
|
2149
|
+
|
|
2150
|
+
# Step 2: Run tests to get baseline
|
|
2151
|
+
echo " Running tests for baseline..."
|
|
2152
|
+
if [[ -x "$TEST_SUITE_PATH" ]]; then
|
|
2153
|
+
TEST_OUTPUT=$("$TEST_SUITE_PATH" 2>&1 || true)
|
|
2154
|
+
PASS_COUNT=$(echo "$TEST_OUTPUT" | grep -o "passed" | wc -l || echo "0")
|
|
2155
|
+
FAIL_COUNT=$(echo "$TEST_OUTPUT" | grep -o "failed" | wc -l || echo "0")
|
|
2156
|
+
TOTAL_COUNT=$((PASS_COUNT + FAIL_COUNT))
|
|
2157
|
+
|
|
2158
|
+
if [[ $TOTAL_COUNT -gt 0 ]]; then
|
|
2159
|
+
COVERAGE=0.50 # Conservative estimate
|
|
2160
|
+
PASS_RATE=$(echo "scale=2; $PASS_COUNT / $TOTAL_COUNT" | bc)
|
|
2161
|
+
else
|
|
2162
|
+
COVERAGE=0.00
|
|
2163
|
+
PASS_RATE=0.00
|
|
2164
|
+
fi
|
|
2165
|
+
else
|
|
2166
|
+
COVERAGE=0.00
|
|
2167
|
+
PASS_RATE=0.00
|
|
2168
|
+
fi
|
|
2169
|
+
|
|
2170
|
+
# Step 3: Update database
|
|
2171
|
+
echo " Updating database..."
|
|
2172
|
+
sqlite3 skills.db "
|
|
2173
|
+
UPDATE skills
|
|
2174
|
+
SET
|
|
2175
|
+
test_suite_path = '$TEST_SUITE_PATH',
|
|
2176
|
+
test_coverage = $COVERAGE,
|
|
2177
|
+
required_test_pass_rate = 0.90,
|
|
2178
|
+
updated_at = datetime('now')
|
|
2179
|
+
WHERE id = $SKILL_ID;
|
|
2180
|
+
"
|
|
2181
|
+
|
|
2182
|
+
echo "✓ Migration complete"
|
|
2183
|
+
echo " Test suite: $TEST_SUITE_PATH"
|
|
2184
|
+
echo " Initial coverage: $COVERAGE"
|
|
2185
|
+
echo " Initial pass rate: $PASS_RATE"
|
|
2186
|
+
echo " Required pass rate: 0.90"
|
|
2187
|
+
echo " Next: Implement tests and run: sqlite3 skills.db \"SELECT test_coverage FROM skills WHERE id=$SKILL_ID\""
|
|
2188
|
+
```
|
|
2189
|
+
|
|
2190
|
+
### Phase 3: Test Implementation (Weeks 4-8)
|
|
2191
|
+
|
|
2192
|
+
For each skill, gradually increase test coverage:
|
|
2193
|
+
|
|
2194
|
+
```bash
|
|
2195
|
+
# Week 1: Get to 50% coverage (critical paths)
|
|
2196
|
+
# Week 2: Get to 70% coverage (happy paths + basic errors)
|
|
2197
|
+
# Week 3: Get to 85% coverage (most edge cases)
|
|
2198
|
+
# Week 4: Get to 95% coverage (all edge cases + performance)
|
|
2199
|
+
```
|
|
2200
|
+
|
|
2201
|
+
### Phase 4: Gradual Enforcement (Weeks 9-10)
|
|
2202
|
+
|
|
2203
|
+
Start enforcing TDD requirements gradually:
|
|
2204
|
+
|
|
2205
|
+
```bash
|
|
2206
|
+
# Week 1: Warnings only - log skills with coverage < 80%
|
|
2207
|
+
# Week 2: Escalation - escalate approval for coverage < 80%
|
|
2208
|
+
# Week 3: Enforcement - reject approval for coverage < 80%
|
|
2209
|
+
```
|
|
2210
|
+
|
|
2211
|
+
### Migration Script: Bulk Update Coverage
|
|
2212
|
+
|
|
2213
|
+
```sql
|
|
2214
|
+
-- Update all bootstrap skills to minimum coverage
|
|
2215
|
+
UPDATE skills
|
|
2216
|
+
SET
|
|
2217
|
+
test_coverage = 0.95,
|
|
2218
|
+
required_test_pass_rate = 0.95
|
|
2219
|
+
WHERE category = 'foundation'
|
|
2220
|
+
AND is_auto_generated = 0;
|
|
2221
|
+
|
|
2222
|
+
-- Update all coordination skills
|
|
2223
|
+
UPDATE skills
|
|
2224
|
+
SET
|
|
2225
|
+
test_coverage = 0.90,
|
|
2226
|
+
required_test_pass_rate = 0.90
|
|
2227
|
+
WHERE category = 'coordination'
|
|
2228
|
+
AND is_auto_generated = 0;
|
|
2229
|
+
|
|
2230
|
+
-- Update all testing skills
|
|
2231
|
+
UPDATE skills
|
|
2232
|
+
SET
|
|
2233
|
+
test_coverage = 0.95,
|
|
2234
|
+
required_test_pass_rate = 0.95
|
|
2235
|
+
WHERE category = 'testing'
|
|
2236
|
+
AND is_auto_generated = 0;
|
|
2237
|
+
|
|
2238
|
+
-- Verify migration
|
|
2239
|
+
SELECT
|
|
2240
|
+
category,
|
|
2241
|
+
COUNT(*) as skill_count,
|
|
2242
|
+
ROUND(AVG(test_coverage), 2) as avg_coverage,
|
|
2243
|
+
MIN(test_coverage) as min_coverage,
|
|
2244
|
+
MAX(test_coverage) as max_coverage
|
|
2245
|
+
FROM skills
|
|
2246
|
+
WHERE test_coverage IS NOT NULL
|
|
2247
|
+
GROUP BY category
|
|
2248
|
+
ORDER BY avg_coverage DESC;
|
|
2249
|
+
```
|
|
2250
|
+
|
|
2251
|
+
---
|
|
2252
|
+
|
|
2253
|
+
## Conclusion
|
|
2254
|
+
|
|
2255
|
+
The **TDD and Skills Database Integration** bridges test-driven development with skill management, creating a comprehensive quality framework that:
|
|
2256
|
+
|
|
2257
|
+
1. **Replaces confidence scoring** with objective test execution
|
|
2258
|
+
2. **Embeds TDD requirements** in skill metadata (test_coverage, test_suite_path, required_test_pass_rate)
|
|
2259
|
+
3. **Enables conditional skill loading** based on test pass rates
|
|
2260
|
+
4. **Provides complete audit trails** for compliance and transparency
|
|
2261
|
+
5. **Supports automatic skill generation** from Phase 4 patterns with TDD validation
|
|
2262
|
+
6. **Tracks effectiveness** of skills through test correlation with confidence improvement
|
|
2263
|
+
|
|
2264
|
+
This integration ensures that all skills in the system are **well-tested, measurable, and continuously improving**, leading to higher-quality agent outputs and better overall system reliability.
|
|
2265
|
+
|
|
2266
|
+
---
|
|
2267
|
+
|
|
2268
|
+
## Quick Reference: Key Tables & Columns
|
|
2269
|
+
|
|
2270
|
+
| Table | Column | Type | Purpose |
|
|
2271
|
+
|-------|--------|------|---------|
|
|
2272
|
+
| **skills** | test_coverage | REAL | Percentage of code covered by tests (0.0-1.0) |
|
|
2273
|
+
| **skills** | test_suite_path | TEXT | Path to skill's test file |
|
|
2274
|
+
| **skills** | required_test_pass_rate | REAL | Minimum pass rate for approval (0.0-1.0) |
|
|
2275
|
+
| **approval_history** | test_results | TEXT | JSON: {pass_count, fail_count, pass_rate} |
|
|
2276
|
+
| **agent_skill_mappings** | tdd_condition | TEXT | JSON: {require_tests, min_coverage, min_pass_rate} |
|
|
2277
|
+
| **skill_usage_log** | confidence_before/after | REAL | Confidence scores before/after test execution |
|
|
2278
|
+
| **skill_usage_log** | test_execution_result | TEXT | JSON: test results from skill execution |
|
|
2279
|
+
| **bootstrap_skills** | pre_bootstrap_test | BOOLEAN | Whether to run tests before loading |
|
|
2280
|
+
|
|
2281
|
+
---
|
|
2282
|
+
|
|
2283
|
+
**Document Version:** 1.0.0
|
|
2284
|
+
**Last Updated:** 2025-11-16
|
|
2285
|
+
**Status:** Production Ready
|
|
2286
|
+
**Next Review:** 2025-12-16
|