claude-flow-novice 2.5.2 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/adaptive-context/cfn-v3-reflection.json +21 -0
- package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
- package/.claude/agents/CLAUDE.md +1002 -1233
- package/.claude/agents/accessibility-advocate.md +457 -0
- package/.claude/agents/agent-principles/README.md +226 -226
- package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
- package/.claude/agents/agent-principles/format-selection.md +10 -0
- package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
- package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
- package/.claude/agents/agent-principles/quality-metrics.md +8 -0
- package/.claude/agents/analysis/code-analyzer.md +7 -17
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
- package/.claude/agents/analysis/perf-analyzer.md +2 -196
- package/.claude/agents/context/context-curator.md +78 -84
- package/.claude/agents/context/context-reflector.md +27 -81
- package/.claude/agents/coordinators/README.md +42 -0
- package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
- package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
- package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
- package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
- package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
- package/.claude/agents/core-agents/reviewer.md +114 -135
- package/.claude/agents/custom/agent-builder.md +637 -0
- package/.claude/agents/developers/README.md +69 -0
- package/.claude/agents/developers/backend-dev.md +77 -0
- package/.claude/agents/{core-agents → developers}/coder.md +131 -26
- package/.claude/agents/developers/react-frontend-engineer.md +121 -0
- package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
- package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
- package/.claude/agents/development/backend/dev-backend-api.md +0 -29
- package/.claude/agents/development/npm-package-specialist.md +355 -347
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
- package/.claude/agents/documentation/api-docs.md +8 -0
- package/.claude/agents/github/github-commit-agent.md +125 -117
- package/.claude/agents/goal/goal-planner.md +8 -0
- package/.claude/agents/infrastructure/README.md +100 -0
- package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
- package/.claude/agents/planners/README.md +94 -0
- package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
- package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
- package/.claude/agents/{core-agents → planners}/architect.md +7 -20
- package/.claude/agents/{core-agents → planners}/planner.md +0 -21
- package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
- package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
- package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
- package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
- package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
- package/.claude/agents/retrospective-analyst.md +84 -0
- package/.claude/agents/reviewers/README.md +58 -0
- package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
- package/.claude/agents/reviewers/reviewer.md +181 -0
- package/.claude/agents/sparc/architecture.md +6 -25
- package/.claude/agents/sparc/pseudocode.md +6 -0
- package/.claude/agents/sparc/refinement.md +6 -0
- package/.claude/agents/sparc/specification.md +1 -0
- package/.claude/agents/specialists/README.md +60 -0
- package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
- package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
- package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
- package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
- package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
- package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
- package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
- package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
- package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
- package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
- package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
- package/.claude/agents/testers/README.md +94 -0
- package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
- package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
- package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
- package/.claude/agents/testers/tester.md +139 -0
- package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
- package/.claude/agents/testers/validation/production-validator.md +33 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
- package/.claude/agents-ignore/coordinator.md.backup +182 -0
- package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
- package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
- package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
- package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
- package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
- package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
- package/.claude/commands/cfn-loop-epic.md +43 -19
- package/.claude/commands/cfn-loop-single.md +3 -3
- package/.claude/commands/cfn-loop-sprints.md +1 -1
- package/.claude/commands/cfn-loop.md +45 -32
- package/.claude/commands/cfn-mode.md +20 -0
- package/.claude/commands/custom-routing-activate.md +37 -123
- package/.claude/commands/custom-routing-deactivate.md +27 -124
- package/.claude/commands/switch-api.md +41 -16
- package/.claude/commands/write-plan.md +104 -0
- package/.claude/data/cfn-loop.db +0 -0
- package/.claude/data/cfn_loop_logs.db +0 -0
- package/.claude/hooks/BACKUP_USAGE.md +243 -0
- package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
- package/.claude/hooks/post-edit.sh +21 -0
- package/.claude/hooks/pre-edit-backup.sh +71 -0
- package/.claude/hooks/restore-from-backup.sh +37 -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/root-claude-distribute/CLAUDE.md +76 -2
- package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/ace-system/store-reflection.sh +33 -136
- package/.claude/skills/agent-discovery/SKILL.md +40 -0
- package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/agent-discovery/discover-agents.py +175 -0
- package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/agent-discovery/temp_script.py +0 -0
- package/.claude/skills/agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/agent-selector/SKILL.md +90 -0
- package/.claude/skills/agent-selector/select-agents.sh +96 -0
- package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
- package/.claude/skills/agent-swap/SKILL.md +36 -0
- package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
- package/.claude/skills/api-validation/test-endpoints.sh +54 -0
- package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
- package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
- package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
- package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
- package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
- package/.claude/skills/complexity-estimator/SKILL.md +96 -0
- package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
- package/.claude/skills/context-pruner/SKILL.md +75 -0
- package/.claude/skills/context-pruner/prune-context.sh +73 -0
- package/.claude/skills/defense-in-depth/SKILL.md +133 -0
- package/.claude/skills/dependency-extractor/SKILL.md +35 -0
- package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
- package/.claude/skills/epic-decomposer/SKILL.md +44 -0
- package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
- package/.claude/skills/improvement-recommender/SKILL.md +33 -0
- package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
- package/.claude/skills/intervention-detector/SKILL.md +39 -0
- package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
- package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
- package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
- package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
- package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
- package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
- package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
- package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
- package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
- package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
- package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
- package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
- package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
- package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
- package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
- package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
- package/.claude/skills/pattern-extraction/SKILL.md +30 -0
- package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
- package/.claude/skills/playbook/SKILL.md +113 -0
- package/.claude/skills/playbook/init-playbook.sh +54 -0
- package/.claude/skills/playbook/playbook.db +0 -0
- package/.claude/skills/playbook/query-playbook.sh +79 -0
- package/.claude/skills/playbook/update-playbook.sh +69 -0
- package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
- package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
- package/.claude/skills/product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/redis-coordination/README.md +30 -29
- package/.claude/skills/redis-coordination/SKILL.md +685 -83
- package/.claude/skills/redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
- package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
- package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/redis-coordination/log-event.sh +109 -0
- package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
- package/.claude/skills/redis-coordination/signal.sh +38 -0
- package/.claude/skills/redis-coordination/store-context.sh +86 -0
- package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
- package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
- package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
- package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
- package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
- package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
- package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/retrospective-report/SKILL.md +31 -0
- package/.claude/skills/retrospective-report/generate-report.sh +101 -0
- package/.claude/skills/run-all-skill-tests.sh +124 -0
- package/.claude/skills/scope-simplifier/SKILL.md +37 -0
- package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
- package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
- package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
- package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/specialist-injection/SKILL.md +41 -0
- package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
- package/.claude/skills/sprint-execution/SKILL.md +27 -0
- package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
- package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
- package/.claude/skills/sprint-planner/SKILL.md +37 -0
- package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
- package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
- package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
- package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
- package/.claude/skills/task-classifier/SKILL.md +94 -0
- package/.claude/skills/task-classifier/classify-task.sh +115 -0
- package/.claude/skills/validation-templates/SKILL.md +47 -0
- package/.claude/skills/validation-templates/content.json +38 -0
- package/.claude/skills/validation-templates/data.json +38 -0
- package/.claude/skills/validation-templates/design.json +38 -0
- package/.claude/skills/validation-templates/infrastructure.json +38 -0
- package/.claude/skills/validation-templates/research.json +38 -0
- package/.claude/skills/validation-templates/software.json +38 -0
- package/.claude/skills/webapp-testing/README.md +142 -0
- package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/webapp-testing/SKILL.md +877 -0
- package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
- package/.claude/spawn-pattern-examples.md +3 -3
- package/CLAUDE.md +364 -16
- package/README.md +598 -251
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-command.js +153 -0
- package/dist/cli/agent-command.js.map +1 -0
- package/dist/cli/agent-definition-parser.js +183 -0
- package/dist/cli/agent-definition-parser.js.map +1 -0
- package/dist/cli/agent-executor.js +310 -0
- package/dist/cli/agent-executor.js.map +1 -0
- package/dist/cli/agent-prompt-builder.js +268 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -0
- package/dist/cli/agent-spawn.js +56 -2
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/anthropic-client.js +421 -0
- package/dist/cli/anthropic-client.js.map +1 -0
- package/dist/cli/cfn-context.js +150 -0
- package/dist/cli/cfn-context.js.map +1 -1
- package/dist/cli/cfn-fork.js +159 -0
- package/dist/cli/cfn-fork.js.map +1 -0
- package/dist/cli/cli-agent-context.js +358 -0
- package/dist/cli/cli-agent-context.js.map +1 -0
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork.js +201 -0
- package/dist/cli/conversation-fork.js.map +1 -0
- package/dist/cli/index.js +119 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/iteration-history.js +188 -0
- package/dist/cli/iteration-history.js.map +1 -0
- package/dist/cli/tool-definitions.js +263 -0
- package/dist/cli/tool-definitions.js.map +1 -0
- package/dist/cli/tool-executor.js +247 -0
- package/dist/cli/tool-executor.js.map +1 -0
- package/dist/hello.js +8 -0
- package/dist/hello.js.map +1 -0
- package/package.json +16 -6
- package/scripts/README.md +68 -0
- package/scripts/cfn-intervention-example.sh +21 -0
- package/scripts/migrate-test-infrastructure.sh +40 -0
- package/scripts/switch-api.sh +233 -0
- package/scripts/validate-test-migration.sh +49 -0
- package/scripts/verify-no-secrets.sh +55 -0
- package/.claude/agents/architecture/system-architect.md.backup +0 -603
- package/.claude/agents/code-booster.md +0 -131
- package/.claude/agents/consensus/performance-benchmarker.md +0 -101
- package/.claude/agents/consensus/security-manager.md +0 -107
- package/.claude/agents/context-curator.md +0 -167
- package/.claude/agents/context-reflector.md +0 -65
- package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
- package/.claude/agents/core-agents/code-quality-validator.md +0 -149
- package/.claude/agents/core-agents/context-curator.md +0 -452
- package/.claude/agents/core-agents/context-reflector.md +0 -273
- package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
- package/.claude/agents/core-agents/tester.md +0 -170
- package/.claude/agents/development/backend-dev.md +0 -165
- package/.claude/agents/devops/devops-engineer.md +0 -148
- package/.claude/agents/frontend/interaction-tester.md +0 -139
- package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
- package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
- package/.claude/agents/testing/production-validator.md +0 -179
- package/.claude/agents/testing/tdd-london-swarm.md +0 -209
- package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
- package/.claude/agents/testing/validation/production-validator.md +0 -43
- package/dist/coordination/fleet-manager.test.js +0 -141
- package/dist/coordination/fleet-manager.test.js.map +0 -1
- package/dist/middleware/transparency-middleware.test.js +0 -184
- package/dist/middleware/transparency-middleware.test.js.map +0 -1
- /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
- /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
- /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
- /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
- /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
- /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
- /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
- /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# Agent Output Processing Skill (Universal)
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Status:** Production
|
|
5
|
+
**Purpose:** Guaranteed structured output extraction from any agent type
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
**Problem Solved:** Agent templates cannot force tool execution or guarantee output format.
|
|
12
|
+
|
|
13
|
+
**Solution:** Orchestrator-controlled output processing with robust parsing, validation, and Redis coordination.
|
|
14
|
+
|
|
15
|
+
**Applicable To:** Any agent requiring structured output (Product Owner, validators, analyzers, decision-makers)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Core Principle
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Agent Templates → Focus on analysis/decision-making
|
|
23
|
+
Skills → Handle execution/coordination/formatting
|
|
24
|
+
Orchestrators → Control workflow and Redis state
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Why This Works:**
|
|
28
|
+
- ✅ Agents do what they're good at (analysis)
|
|
29
|
+
- ✅ Skills enforce structure (parsing, validation)
|
|
30
|
+
- ✅ Orchestrators maintain coordination (Redis, timing)
|
|
31
|
+
- ✅ No reliance on agent tool usage compliance
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Architecture
|
|
36
|
+
|
|
37
|
+
### Generic Flow
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
1. Orchestrator → Spawn agent with structured context
|
|
41
|
+
2. Skill → Capture agent stdout/stderr
|
|
42
|
+
3. Skill → Parse output (pattern matching with fallbacks)
|
|
43
|
+
4. Skill → Validate output (business logic checks)
|
|
44
|
+
5. Skill → Transform to required format (JSON, etc.)
|
|
45
|
+
6. Skill → Push to Redis (coordination state)
|
|
46
|
+
7. Skill → Signal completion
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Skill Components
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
.claude/skills/agent-output-processing/
|
|
53
|
+
├── SKILL.md # This file
|
|
54
|
+
├── execute-with-parsing.sh # Generic agent wrapper
|
|
55
|
+
├── parse-structured-output.sh # Multi-pattern parser
|
|
56
|
+
├── validate-output.sh # Validation framework
|
|
57
|
+
└── patterns/ # Agent-specific patterns
|
|
58
|
+
├── product-owner.json # PROCEED/ITERATE/ABORT
|
|
59
|
+
├── validator.json # confidence + feedback
|
|
60
|
+
├── analyzer.json # metrics + recommendations
|
|
61
|
+
└── decision-maker.json # choice + reasoning
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Usage Patterns
|
|
67
|
+
|
|
68
|
+
### Pattern 1: Decision Output (Product Owner)
|
|
69
|
+
|
|
70
|
+
**Output Requirements:** Must extract PROCEED/ITERATE/ABORT
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
RESULT=$(./.claude/skills/agent-output-processing/execute-with-parsing.sh \
|
|
74
|
+
--agent-type "product-owner" \
|
|
75
|
+
--pattern-file "patterns/product-owner.json" \
|
|
76
|
+
--task-id "$TASK_ID" \
|
|
77
|
+
--agent-id "$AGENT_ID" \
|
|
78
|
+
--context "Loop 2 consensus: 0.92" \
|
|
79
|
+
--redis-key "swarm:${TASK_ID}:${AGENT_ID}:decision")
|
|
80
|
+
|
|
81
|
+
DECISION=$(echo "$RESULT" | jq -r '.decision')
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Pattern File (patterns/product-owner.json):**
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"name": "product-owner-decision",
|
|
88
|
+
"required_fields": ["decision"],
|
|
89
|
+
"patterns": [
|
|
90
|
+
{
|
|
91
|
+
"field": "decision",
|
|
92
|
+
"regex": "Decision:\\s*(PROCEED|ITERATE|ABORT)",
|
|
93
|
+
"extract": "keyword",
|
|
94
|
+
"fallbacks": [
|
|
95
|
+
"(PROCEED|ITERATE|ABORT)",
|
|
96
|
+
"(?i)(proceed|iterate|abort)"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"field": "reasoning",
|
|
101
|
+
"regex": "Reasoning:\\s*(.+)",
|
|
102
|
+
"extract": "capture_group"
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"validation": {
|
|
106
|
+
"decision": {
|
|
107
|
+
"type": "enum",
|
|
108
|
+
"values": ["PROCEED", "ITERATE", "ABORT"]
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Pattern 2: Confidence + Feedback (Validators)
|
|
115
|
+
|
|
116
|
+
**Output Requirements:** Must extract confidence score and feedback list
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
RESULT=$(./.claude/skills/agent-output-processing/execute-with-parsing.sh \
|
|
120
|
+
--agent-type "reviewer" \
|
|
121
|
+
--pattern-file "patterns/validator.json" \
|
|
122
|
+
--task-id "$TASK_ID" \
|
|
123
|
+
--agent-id "$AGENT_ID" \
|
|
124
|
+
--context "Review Loop 3 implementation" \
|
|
125
|
+
--redis-key "swarm:${TASK_ID}:${AGENT_ID}:result")
|
|
126
|
+
|
|
127
|
+
CONFIDENCE=$(echo "$RESULT" | jq -r '.confidence')
|
|
128
|
+
FEEDBACK=$(echo "$RESULT" | jq -r '.feedback[]')
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Pattern File (patterns/validator.json):**
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"name": "validator-result",
|
|
135
|
+
"required_fields": ["confidence"],
|
|
136
|
+
"patterns": [
|
|
137
|
+
{
|
|
138
|
+
"field": "confidence",
|
|
139
|
+
"regex": "Confidence:\\s*([0-9.]+)",
|
|
140
|
+
"extract": "float",
|
|
141
|
+
"fallbacks": [
|
|
142
|
+
"confidence[:\\s]+([0-9.]+)",
|
|
143
|
+
"score[:\\s]+([0-9.]+)"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"field": "feedback",
|
|
148
|
+
"regex": "Feedback:\\s*\\n([\\s\\S]+?)(?=\\n\\n|$)",
|
|
149
|
+
"extract": "multiline_list"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"validation": {
|
|
153
|
+
"confidence": {
|
|
154
|
+
"type": "float",
|
|
155
|
+
"min": 0.0,
|
|
156
|
+
"max": 1.0
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Pattern 3: Metrics + Recommendations (Analyzers)
|
|
163
|
+
|
|
164
|
+
**Output Requirements:** Must extract metrics object and recommendation list
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
RESULT=$(./.claude/skills/agent-output-processing/execute-with-parsing.sh \
|
|
168
|
+
--agent-type "code-analyzer" \
|
|
169
|
+
--pattern-file "patterns/analyzer.json" \
|
|
170
|
+
--task-id "$TASK_ID" \
|
|
171
|
+
--agent-id "$AGENT_ID" \
|
|
172
|
+
--context "Analyze codebase quality" \
|
|
173
|
+
--redis-key "swarm:${TASK_ID}:${AGENT_ID}:analysis")
|
|
174
|
+
|
|
175
|
+
COMPLEXITY=$(echo "$RESULT" | jq -r '.metrics.complexity')
|
|
176
|
+
RECOMMENDATIONS=$(echo "$RESULT" | jq -r '.recommendations[]')
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Implementation
|
|
182
|
+
|
|
183
|
+
### execute-with-parsing.sh
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
#!/bin/bash
|
|
187
|
+
set -euo pipefail
|
|
188
|
+
|
|
189
|
+
# Parse arguments
|
|
190
|
+
AGENT_TYPE=""
|
|
191
|
+
PATTERN_FILE=""
|
|
192
|
+
TASK_ID=""
|
|
193
|
+
AGENT_ID=""
|
|
194
|
+
CONTEXT=""
|
|
195
|
+
REDIS_KEY=""
|
|
196
|
+
TIMEOUT=900
|
|
197
|
+
|
|
198
|
+
while [[ $# -gt 0 ]]; do
|
|
199
|
+
case $1 in
|
|
200
|
+
--agent-type) AGENT_TYPE="$2"; shift 2 ;;
|
|
201
|
+
--pattern-file) PATTERN_FILE="$2"; shift 2 ;;
|
|
202
|
+
--task-id) TASK_ID="$2"; shift 2 ;;
|
|
203
|
+
--agent-id) AGENT_ID="$2"; shift 2 ;;
|
|
204
|
+
--context) CONTEXT="$2"; shift 2 ;;
|
|
205
|
+
--redis-key) REDIS_KEY="$2"; shift 2 ;;
|
|
206
|
+
--timeout) TIMEOUT="$2"; shift 2 ;;
|
|
207
|
+
*) echo "Unknown: $1"; exit 1 ;;
|
|
208
|
+
esac
|
|
209
|
+
done
|
|
210
|
+
|
|
211
|
+
# Spawn agent and capture output
|
|
212
|
+
AGENT_OUTPUT=$(timeout "$TIMEOUT" npx claude-flow-novice agent "$AGENT_TYPE" \
|
|
213
|
+
--task-id "$TASK_ID" \
|
|
214
|
+
--agent-id "$AGENT_ID" \
|
|
215
|
+
--context "$CONTEXT" 2>&1 || true)
|
|
216
|
+
|
|
217
|
+
# Parse structured output using pattern file
|
|
218
|
+
PARSED_OUTPUT=$(./parse-structured-output.sh \
|
|
219
|
+
--pattern-file "$PATTERN_FILE" \
|
|
220
|
+
--output "$AGENT_OUTPUT")
|
|
221
|
+
|
|
222
|
+
# Validate parsed output
|
|
223
|
+
if ! ./validate-output.sh --pattern-file "$PATTERN_FILE" --data "$PARSED_OUTPUT"; then
|
|
224
|
+
echo "ERROR: Output validation failed" >&2
|
|
225
|
+
exit 1
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
# Push to Redis if key provided
|
|
229
|
+
if [ -n "$REDIS_KEY" ]; then
|
|
230
|
+
echo "$PARSED_OUTPUT" | redis-cli -x LPUSH "$REDIS_KEY" >/dev/null
|
|
231
|
+
redis-cli LPUSH "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" >/dev/null
|
|
232
|
+
fi
|
|
233
|
+
|
|
234
|
+
# Output structured result
|
|
235
|
+
echo "$PARSED_OUTPUT"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Benefits Over Template-Based
|
|
241
|
+
|
|
242
|
+
| Aspect | Template-Based | Skill-Based (Universal) |
|
|
243
|
+
|--------|----------------|-------------------------|
|
|
244
|
+
| **Execution Guarantee** | ❌ Agent decides | ✅ Skill enforces |
|
|
245
|
+
| **Output Format** | ❌ Inconsistent | ✅ Guaranteed structure |
|
|
246
|
+
| **Parsing Robustness** | ❌ None | ✅ Multi-pattern fallbacks |
|
|
247
|
+
| **Validation** | ❌ Manual | ✅ Automated schema checks |
|
|
248
|
+
| **Redis Coordination** | ❌ Agent-dependent | ✅ Skill-controlled |
|
|
249
|
+
| **Reusability** | ❌ Per-agent templates | ✅ Universal pattern system |
|
|
250
|
+
| **Testability** | ❌ Hard to test | ✅ Unit tests per pattern |
|
|
251
|
+
| **Extensibility** | ❌ Template changes | ✅ Add pattern files |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Agent-Specific Implementations
|
|
256
|
+
|
|
257
|
+
### Existing: Product Owner Decision
|
|
258
|
+
**Location:** `.claude/skills/product-owner-decision/`
|
|
259
|
+
**Pattern:** PROCEED/ITERATE/ABORT extraction
|
|
260
|
+
**Status:** ✅ Operational (BUG #11 fix)
|
|
261
|
+
|
|
262
|
+
### Future: Validator Agents
|
|
263
|
+
**Pattern:** Confidence + feedback extraction
|
|
264
|
+
**Use Case:** Loop 2 validators (reviewer, tester, security)
|
|
265
|
+
**Benefit:** Guaranteed confidence scoring
|
|
266
|
+
|
|
267
|
+
### Future: Analyzer Agents
|
|
268
|
+
**Pattern:** Metrics + recommendations extraction
|
|
269
|
+
**Use Case:** Code quality, performance, security analyzers
|
|
270
|
+
**Benefit:** Structured analysis output
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Migration Strategy
|
|
275
|
+
|
|
276
|
+
### Phase 1: Product Owner (✅ Complete)
|
|
277
|
+
- Created dedicated skill
|
|
278
|
+
- Integrated with orchestrator
|
|
279
|
+
- Solves BUG #11
|
|
280
|
+
|
|
281
|
+
### Phase 2: Validators (Planned)
|
|
282
|
+
- Extract confidence scores reliably
|
|
283
|
+
- Parse feedback into structured lists
|
|
284
|
+
- Prevent 0.0 confidence issues
|
|
285
|
+
|
|
286
|
+
### Phase 3: All Decision-Making Agents (Future)
|
|
287
|
+
- Standardize output processing
|
|
288
|
+
- Centralize pattern definitions
|
|
289
|
+
- Enable cross-agent consistency
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Testing
|
|
294
|
+
|
|
295
|
+
### Unit Tests
|
|
296
|
+
```bash
|
|
297
|
+
# Test pattern parsing
|
|
298
|
+
./test-parse-structured-output.sh --pattern-file patterns/product-owner.json
|
|
299
|
+
|
|
300
|
+
# Test validation logic
|
|
301
|
+
./test-validate-output.sh --pattern-file patterns/validator.json
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Integration Tests
|
|
305
|
+
```bash
|
|
306
|
+
# Test full agent execution with parsing
|
|
307
|
+
./test-execute-with-parsing.sh --agent-type product-owner
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Related Skills
|
|
313
|
+
|
|
314
|
+
- **Product Owner Decision** (`.claude/skills/product-owner-decision/SKILL.md`) - Specific implementation
|
|
315
|
+
- **Redis Coordination** (`.claude/skills/redis-coordination/SKILL.md`) - State management
|
|
316
|
+
- **CFN Loop Validation** (`.claude/skills/cfn-loop-validation/SKILL.md`) - Quality gates
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Lessons Learned
|
|
321
|
+
|
|
322
|
+
### ANTI-PATTERN: Template-Forced Tool Usage
|
|
323
|
+
**What Doesn't Work:** Telling agents "Use Bash tool to execute X"
|
|
324
|
+
|
|
325
|
+
**Why:** Agents interpret instructions autonomously, treating code blocks as documentation
|
|
326
|
+
|
|
327
|
+
**Better:** Capture agent output and parse it with robust patterns
|
|
328
|
+
|
|
329
|
+
### PATTERN: Orchestrator Control
|
|
330
|
+
**Principle:** Coordination belongs in orchestrators/skills, not agent templates
|
|
331
|
+
|
|
332
|
+
**Rationale:**
|
|
333
|
+
- Agents focus on analysis (what they do well)
|
|
334
|
+
- Skills handle structure (parsing, validation)
|
|
335
|
+
- Orchestrators manage coordination (Redis, timing)
|
|
336
|
+
|
|
337
|
+
### PATTERN: Multi-Fallback Parsing
|
|
338
|
+
**Principle:** Use multiple pattern matching strategies with increasing leniency
|
|
339
|
+
|
|
340
|
+
**Example:**
|
|
341
|
+
1. Strict: "Decision: PROCEED" (labeled, exact case)
|
|
342
|
+
2. Moderate: "PROCEED" (standalone keyword)
|
|
343
|
+
3. Lenient: "proceed" (case-insensitive)
|
|
344
|
+
4. Desperate: JSON extraction
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Version History
|
|
349
|
+
|
|
350
|
+
### 1.0.0 (2025-10-20)
|
|
351
|
+
- Initial skill creation
|
|
352
|
+
- Generalized from Product Owner fix
|
|
353
|
+
- Universal pattern-based output processing
|
|
354
|
+
- Validation framework
|
|
355
|
+
- Redis coordination integration
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
**Summary:** This skill provides universal output processing for any agent type, eliminating reliance on template-based tool usage compliance and guaranteeing structured, validated results.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Agent Selector Skill
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Purpose:** Select optimal agents for CFN Loop v3 based on task type and requirements
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
Recommends Loop 3 (producers) and Loop 2 (evaluators) agents based on:
|
|
9
|
+
- Task type (from task-classifier)
|
|
10
|
+
- Task description keywords
|
|
11
|
+
- Complexity requirements
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
AGENTS=$(./.claude/skills/agent-selector/select-agents.sh \
|
|
17
|
+
--task-type "software-development" \
|
|
18
|
+
--description "Implement JWT authentication with refresh tokens")
|
|
19
|
+
|
|
20
|
+
echo "$AGENTS" | jq '.loop3[]' # ["backend-dev", "security-specialist"]
|
|
21
|
+
echo "$AGENTS" | jq '.loop2[]' # ["reviewer", "tester", "security-auditor"]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Output Format
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"loop3": ["agent1", "agent2", "agent3"],
|
|
29
|
+
"loop2": ["validator1", "validator2", "validator3"],
|
|
30
|
+
"loop4": "product-owner",
|
|
31
|
+
"reasoning": "Explanation of agent selection"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Agent Selection Rules
|
|
36
|
+
|
|
37
|
+
### Software Development
|
|
38
|
+
**Base Loop 3:** backend-dev, coder
|
|
39
|
+
**Add if keywords:**
|
|
40
|
+
- "security", "authentication", "JWT" → security-specialist
|
|
41
|
+
- "database", "SQL", "schema" → database-engineer (if exists)
|
|
42
|
+
- "deploy", "CI/CD", "infrastructure" → devops-engineer
|
|
43
|
+
- "frontend", "React", "UI" → react-frontend-engineer
|
|
44
|
+
|
|
45
|
+
**Loop 2:** reviewer, tester, security-auditor
|
|
46
|
+
|
|
47
|
+
### Content Creation
|
|
48
|
+
**Base Loop 3:** copywriter, content-strategist
|
|
49
|
+
**Add if keywords:**
|
|
50
|
+
- "SEO", "search", "keywords" → seo-specialist
|
|
51
|
+
- "technical", "documentation" → technical-writer (if exists)
|
|
52
|
+
|
|
53
|
+
**Loop 2:** editor, brand-reviewer, compliance-checker
|
|
54
|
+
|
|
55
|
+
### Research
|
|
56
|
+
**Base Loop 3:** researcher, data-analyst
|
|
57
|
+
**Add if keywords:**
|
|
58
|
+
- "statistics", "data analysis" → statistician (if exists)
|
|
59
|
+
- "domain-specific" → domain-expert
|
|
60
|
+
|
|
61
|
+
**Loop 2:** fact-checker, methodology-reviewer, statistician
|
|
62
|
+
|
|
63
|
+
### Design
|
|
64
|
+
**Base Loop 3:** ui-designer, ux-researcher
|
|
65
|
+
**Add if keywords:**
|
|
66
|
+
- "visual", "branding" → visual-designer
|
|
67
|
+
- "accessibility" → accessibility-advocate
|
|
68
|
+
|
|
69
|
+
**Loop 2:** accessibility-advocate, design-critic, user-tester
|
|
70
|
+
|
|
71
|
+
### Infrastructure
|
|
72
|
+
**Base Loop 3:** devops-engineer, terraform-engineer
|
|
73
|
+
**Add if keywords:**
|
|
74
|
+
- "Kubernetes", "k8s", "container" → kubernetes-architect
|
|
75
|
+
- "network", "security" → network-engineer (if exists)
|
|
76
|
+
|
|
77
|
+
**Loop 2:** security-auditor, cost-optimizer, compliance-checker
|
|
78
|
+
|
|
79
|
+
### Data Engineering
|
|
80
|
+
**Base Loop 3:** data-engineer, pipeline-builder
|
|
81
|
+
**Add if keywords:**
|
|
82
|
+
- "ETL", "transformation" → etl-specialist
|
|
83
|
+
- "streaming", "real-time" → streaming-specialist (if exists)
|
|
84
|
+
|
|
85
|
+
**Loop 2:** data-quality-validator, schema-reviewer, performance-tester
|
|
86
|
+
|
|
87
|
+
## Integration
|
|
88
|
+
|
|
89
|
+
Used by:
|
|
90
|
+
- `.claude/agents/cfn-v3-coordinator.md` - Agent selection
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Dynamic Agent Selection with JSON Registry
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
# Paths
|
|
7
|
+
REGISTRY_PATH=".claude/skills/agent-discovery/agents-registry.json"
|
|
8
|
+
LOG_PATH="/tmp/agent_selection_$(date +%s).log"
|
|
9
|
+
|
|
10
|
+
# Validate inputs
|
|
11
|
+
if [[ $# -lt 2 ]]; then
|
|
12
|
+
echo "Usage: $0 --task-type TYPE --description 'task description'" >&2
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Parse arguments
|
|
17
|
+
while [[ $# -gt 0 ]]; do
|
|
18
|
+
case "$1" in
|
|
19
|
+
--task-type) TASK_TYPE="$2"; shift 2 ;;
|
|
20
|
+
--description) DESCRIPTION="$2"; shift 2 ;;
|
|
21
|
+
*) echo "Unknown parameter: $1" >&2; exit 1 ;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
# Validate registry
|
|
26
|
+
if [[ ! -f "$REGISTRY_PATH" ]]; then
|
|
27
|
+
echo "Error: Agent registry not found at $REGISTRY_PATH. Run agent discovery first." >&2
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Score agents function with simple matching
|
|
32
|
+
score_agents() {
|
|
33
|
+
local registry_path="$1"
|
|
34
|
+
local description="$2"
|
|
35
|
+
local task_type="$3"
|
|
36
|
+
|
|
37
|
+
# Simple JQ query for agent matching
|
|
38
|
+
jq -r --arg desc "$description" --arg task_type "$task_type" '
|
|
39
|
+
[
|
|
40
|
+
.agents[]
|
|
41
|
+
| select(.type == $task_type)
|
|
42
|
+
| {
|
|
43
|
+
name: .name,
|
|
44
|
+
score: (
|
|
45
|
+
# Base type match score
|
|
46
|
+
10 +
|
|
47
|
+
# Keyword matching
|
|
48
|
+
(
|
|
49
|
+
[.keywords[]]
|
|
50
|
+
| map(select(
|
|
51
|
+
($desc | ascii_downcase | contains(. | ascii_downcase))
|
|
52
|
+
))
|
|
53
|
+
| length * 3
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
| sort_by(.score)
|
|
59
|
+
| reverse
|
|
60
|
+
| .[0:3]
|
|
61
|
+
| map(.name)
|
|
62
|
+
' "$registry_path"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Score agents
|
|
66
|
+
LOOP3_AGENTS=$(score_agents "$REGISTRY_PATH" "$DESCRIPTION" "specialist")
|
|
67
|
+
LOOP2_AGENTS=$(score_agents "$REGISTRY_PATH" "$DESCRIPTION" "strategic")
|
|
68
|
+
|
|
69
|
+
# Default fallback
|
|
70
|
+
if [[ -z "$LOOP3_AGENTS" || "$LOOP3_AGENTS" == "[]" ]]; then
|
|
71
|
+
LOOP3_AGENTS='["product-owner"]'
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
if [[ -z "$LOOP2_AGENTS" || "$LOOP2_AGENTS" == "[]" ]]; then
|
|
75
|
+
LOOP2_AGENTS='["product-owner"]'
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Log the results
|
|
79
|
+
{
|
|
80
|
+
echo "Task Description: $DESCRIPTION"
|
|
81
|
+
echo "Loop 3 Agents: $LOOP3_AGENTS"
|
|
82
|
+
echo "Loop 2 Agents: $LOOP2_AGENTS"
|
|
83
|
+
} >> "$LOG_PATH"
|
|
84
|
+
|
|
85
|
+
# Output JSON result with detailed reasoning
|
|
86
|
+
jq -n \
|
|
87
|
+
--argjson loop3 "$LOOP3_AGENTS" \
|
|
88
|
+
--argjson loop2 "$LOOP2_AGENTS" \
|
|
89
|
+
--arg desc "$DESCRIPTION" \
|
|
90
|
+
'{
|
|
91
|
+
"loop3": $loop3,
|
|
92
|
+
"loop2": $loop2,
|
|
93
|
+
"loop4": "product-owner",
|
|
94
|
+
"reasoning": "Selected agents by scoring against task description: \($desc)",
|
|
95
|
+
"log_path": "'"$LOG_PATH"'"
|
|
96
|
+
}'
|
|
@@ -135,7 +135,7 @@ Code Quality Focus → + code-analyzer
|
|
|
135
135
|
**Complex (6-7 agents):**
|
|
136
136
|
```bash
|
|
137
137
|
# Enterprise features, multi-component systems
|
|
138
|
-
--agents=analyst,system-architect,backend-dev,frontend-
|
|
138
|
+
--agents=analyst,system-architect,backend-dev,react-frontend-engineer,security-specialist,tester,reviewer
|
|
139
139
|
--agents=system-architect,architect,backend-dev,security-specialist,devops-engineer,production-validator
|
|
140
140
|
```
|
|
141
141
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Agent Swap Mechanism Skill
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Recommend agent replacement strategies when performance issues are detected in CFN Loops.
|
|
5
|
+
|
|
6
|
+
## Replacement Rules
|
|
7
|
+
1. Identify lowest-performing agent
|
|
8
|
+
2. Match replacement based on feedback themes
|
|
9
|
+
- Security feedback → security-specialist
|
|
10
|
+
- Performance feedback → performance-engineer
|
|
11
|
+
- Testing feedback → tester
|
|
12
|
+
- Architecture feedback → architect
|
|
13
|
+
|
|
14
|
+
## Replacement Strategies
|
|
15
|
+
- Complete agent replacement
|
|
16
|
+
- Adding specialist alongside existing agents
|
|
17
|
+
- Prioritize maintaining existing team composition
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
```bash
|
|
21
|
+
./recommend-swap.sh \
|
|
22
|
+
--loop3-agents "backend-dev,coder" \
|
|
23
|
+
--loop3-confidences "0.82,0.70" \
|
|
24
|
+
--feedback-themes "security,error-handling"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Output Details
|
|
28
|
+
- Agent to remove
|
|
29
|
+
- Reasoning for removal
|
|
30
|
+
- Recommended replacement agent
|
|
31
|
+
- Updated agent configuration
|
|
32
|
+
|
|
33
|
+
## Implementation Considerations
|
|
34
|
+
- Stateless design
|
|
35
|
+
- Minimal side effects
|
|
36
|
+
- Clear, reproducible recommendations
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Parse arguments
|
|
5
|
+
while [[ $# -gt 0 ]]; do
|
|
6
|
+
case "$1" in
|
|
7
|
+
--loop3-agents) IFS=',' read -ra AGENTS <<< "$2"; shift 2 ;;
|
|
8
|
+
--loop3-confidences) IFS=',' read -ra CONFIDENCES <<< "$2"; shift 2 ;;
|
|
9
|
+
--feedback-themes) IFS=',' read -ra THEMES <<< "$2"; shift 2 ;;
|
|
10
|
+
*) echo "Unknown parameter: $1"; exit 1 ;;
|
|
11
|
+
esac
|
|
12
|
+
done
|
|
13
|
+
|
|
14
|
+
# Agent Swap Rules
|
|
15
|
+
get_specialist_for_theme() {
|
|
16
|
+
local theme="$1"
|
|
17
|
+
case "$theme" in
|
|
18
|
+
*security*) echo "security-specialist" ;;
|
|
19
|
+
*performance*) echo "performance-engineer" ;;
|
|
20
|
+
*test*|*coverage*) echo "testing-expert" ;;
|
|
21
|
+
*architecture*) echo "architecture-consultant" ;;
|
|
22
|
+
*) echo "generic-specialist" ;;
|
|
23
|
+
esac
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Find lowest confidence agent
|
|
27
|
+
lowest_confidence_index=0
|
|
28
|
+
lowest_confidence="${CONFIDENCES[0]}"
|
|
29
|
+
|
|
30
|
+
for i in "${!CONFIDENCES[@]}"; do
|
|
31
|
+
if (( $(echo "${CONFIDENCES[i]} < $lowest_confidence" | bc -l) )); then
|
|
32
|
+
lowest_confidence="${CONFIDENCES[i]}"
|
|
33
|
+
lowest_confidence_index=$i
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
# Recommend replacement specialist
|
|
38
|
+
recommended_specialist=""
|
|
39
|
+
for theme in "${THEMES[@]}"; do
|
|
40
|
+
specialist=$(get_specialist_for_theme "$theme")
|
|
41
|
+
if [[ -n "$specialist" ]]; then
|
|
42
|
+
recommended_specialist="$specialist"
|
|
43
|
+
break
|
|
44
|
+
fi
|
|
45
|
+
done
|
|
46
|
+
|
|
47
|
+
# Generate output
|
|
48
|
+
jq -n \
|
|
49
|
+
--arg remove_agent "${AGENTS[lowest_confidence_index]}" \
|
|
50
|
+
--arg add_agent "$recommended_specialist" \
|
|
51
|
+
--argjson agents "$(printf '%s\n' "${AGENTS[@]}" | jq -R . | jq -s '.')" \
|
|
52
|
+
--arg lowest_confidence "$lowest_confidence" \
|
|
53
|
+
--argjson themes "$(printf '%s\n' "${THEMES[@]}" | jq -R . | jq -s '.')" \
|
|
54
|
+
'{
|
|
55
|
+
"remove_agent": $remove_agent,
|
|
56
|
+
"remove_reason": "Lowest confidence (\($lowest_confidence)), contributing to plateau",
|
|
57
|
+
"add_agent": $add_agent,
|
|
58
|
+
"add_reason": "Match to feedback themes: \(join(", ", $themes))",
|
|
59
|
+
"new_loop3_agents": [$agents | map(select(. != $remove_agent)), $add_agent]
|
|
60
|
+
}'
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# API Endpoint Validation Script
|
|
3
|
+
# Usage: ./test-endpoints.sh <base-url> <endpoint> [request-count]
|
|
4
|
+
|
|
5
|
+
BASE_URL="${1:-http://localhost:8080}"
|
|
6
|
+
ENDPOINT="$2"
|
|
7
|
+
COUNT="${3:-10}"
|
|
8
|
+
|
|
9
|
+
if [ -z "$ENDPOINT" ]; then
|
|
10
|
+
echo "Usage: $0 <base-url> <endpoint> [request-count]"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "Testing: $BASE_URL$ENDPOINT"
|
|
15
|
+
echo "Requests: $COUNT"
|
|
16
|
+
echo ""
|
|
17
|
+
|
|
18
|
+
SUCCESS=0
|
|
19
|
+
FAILED=0
|
|
20
|
+
TOTAL_RESPONSE_TIME=0
|
|
21
|
+
|
|
22
|
+
for i in $(seq 1 "$COUNT"); do
|
|
23
|
+
START_TIME=$(date +%s.%N)
|
|
24
|
+
RESPONSE=$(curl -s -w "\n%{http_code}\n%{time_total}" "$BASE_URL$ENDPOINT")
|
|
25
|
+
|
|
26
|
+
HTTP_STATUS=$(echo "$RESPONSE" | tail -1)
|
|
27
|
+
RESPONSE_TIME=$(echo "$RESPONSE" | tail -2 | head -1)
|
|
28
|
+
BODY=$(echo "$RESPONSE" | head -n -2)
|
|
29
|
+
|
|
30
|
+
if [ "$HTTP_STATUS" = "200" ]; then
|
|
31
|
+
echo "✅ Request $i: 200 OK (Response Time: ${RESPONSE_TIME}s)"
|
|
32
|
+
((SUCCESS++))
|
|
33
|
+
else
|
|
34
|
+
echo "❌ Request $i: $HTTP_STATUS"
|
|
35
|
+
echo " Response: $BODY"
|
|
36
|
+
((FAILED++))
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
TOTAL_RESPONSE_TIME=$(echo "$TOTAL_RESPONSE_TIME + $RESPONSE_TIME" | bc)
|
|
40
|
+
|
|
41
|
+
[ $i -lt "$COUNT" ] && sleep 2
|
|
42
|
+
done
|
|
43
|
+
|
|
44
|
+
AVG_RESPONSE_TIME=$(echo "scale=3; $TOTAL_RESPONSE_TIME / $COUNT" | bc)
|
|
45
|
+
|
|
46
|
+
echo ""
|
|
47
|
+
echo "Results:"
|
|
48
|
+
echo "- Requests: $COUNT total"
|
|
49
|
+
echo "- Succeeded: $SUCCESS"
|
|
50
|
+
echo "- Failed: $FAILED"
|
|
51
|
+
echo "- Average Response Time: ${AVG_RESPONSE_TIME}s"
|
|
52
|
+
|
|
53
|
+
# Strict success criteria
|
|
54
|
+
[ $FAILED -eq 0 ] && exit 0 || exit 1
|