claude-flow-novice 2.6.0 → 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 -995
- 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 -637
- 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/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
- package/.claude/commands/cfn-loop-epic.md +3 -3
- package/.claude/commands/cfn-loop-single.md +3 -3
- package/.claude/commands/cfn-loop-sprints.md +1 -1
- package/.claude/commands/cfn-loop.md +3 -3
- package/.claude/commands/cfn-mode.md +20 -0
- 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-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/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/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/{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/invoke-waiting-mode.sh +93 -227
- 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 -993
- 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/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/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 +319 -45
- 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 +2 -0
- package/dist/cli/agent-command.js.map +1 -1
- package/dist/cli/agent-definition-parser.js +7 -0
- package/dist/cli/agent-definition-parser.js.map +1 -1
- package/dist/cli/agent-executor.js +145 -11
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +81 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +10 -1
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/anthropic-client.js +192 -13
- package/dist/cli/anthropic-client.js.map +1 -1
- 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 +8 -3
- package/dist/cli/cli-agent-context.js.map +1 -1
- 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 +4 -0
- package/dist/cli/index.js.map +1 -1
- 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 +14 -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/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 -235
- 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/.claude/api-configs/config-current-zai-config.env +0 -62
- package/.claude/api-configs/config-test-zai-config.env +0 -62
- package/.claude/api-configs/env-backups/before-anthropic-20251020-025404.env +0 -62
- package/.claude/api-configs/env-backups/before-restore-20251020-025431.env +0 -62
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1760949407 +0 -933
- package/dist/cli/cli-agent-context.test.js +0 -451
- package/dist/cli/cli-agent-context.test.js.map +0 -1
- 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-iteration-feedback.sh → demos/test-iteration-feedback.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,175 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
import json
|
|
7
|
+
import logging
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
|
|
10
|
+
import yaml # Make sure to `pip install PyYAML`
|
|
11
|
+
|
|
12
|
+
AGENTS_DIR = "/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/agents"
|
|
13
|
+
OUTPUT_FILE = "/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/agent-discovery/agents-registry.json"
|
|
14
|
+
|
|
15
|
+
# Configure logging
|
|
16
|
+
logging.basicConfig(
|
|
17
|
+
level=logging.INFO,
|
|
18
|
+
format='%(asctime)s - %(levelname)s: %(message)s',
|
|
19
|
+
datefmt='%Y-%m-%d %H:%M:%S'
|
|
20
|
+
)
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
# Mapping agent types to loops
|
|
24
|
+
LOOP_MAPPING = {
|
|
25
|
+
"backend-dev": "loop3",
|
|
26
|
+
"frontend-dev": "loop3",
|
|
27
|
+
"coder": "loop3",
|
|
28
|
+
"developer": "loop3",
|
|
29
|
+
"api-designer": "loop3",
|
|
30
|
+
"devops": "loop3",
|
|
31
|
+
"security-specialist": "loop3",
|
|
32
|
+
"researcher": "loop3",
|
|
33
|
+
"reviewer": "loop2",
|
|
34
|
+
"tester": "loop2",
|
|
35
|
+
"validator": "loop2",
|
|
36
|
+
"auditor": "loop2",
|
|
37
|
+
"coordinator": "coordinator",
|
|
38
|
+
"strategic": "strategic"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
def clean_windows_endings(content):
|
|
42
|
+
"""Remove Windows line endings."""
|
|
43
|
+
return content.replace('\r', '')
|
|
44
|
+
|
|
45
|
+
def extract_frontmatter(file_path):
|
|
46
|
+
"""
|
|
47
|
+
Extract and parse frontmatter from markdown file using PyYAML.
|
|
48
|
+
Handles multiline descriptions and Windows line endings.
|
|
49
|
+
"""
|
|
50
|
+
try:
|
|
51
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
|
52
|
+
content = clean_windows_endings(f.read())
|
|
53
|
+
match = re.search(r'^---\n(.*?)\n---', content, re.DOTALL | re.MULTILINE)
|
|
54
|
+
|
|
55
|
+
if not match:
|
|
56
|
+
logger.warning(f"No frontmatter found in {file_path}")
|
|
57
|
+
return None
|
|
58
|
+
|
|
59
|
+
frontmatter_str = match.group(1)
|
|
60
|
+
|
|
61
|
+
# Use PyYAML for robust parsing
|
|
62
|
+
try:
|
|
63
|
+
frontmatter = yaml.safe_load(frontmatter_str)
|
|
64
|
+
return frontmatter
|
|
65
|
+
except yaml.YAMLError as e:
|
|
66
|
+
logger.error(f"YAML parsing error in {file_path}: {e}")
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
except Exception as e:
|
|
70
|
+
logger.error(f"Error reading {file_path}: {e}")
|
|
71
|
+
return None
|
|
72
|
+
|
|
73
|
+
def determine_loop(agent_type):
|
|
74
|
+
"""Determine the loop for an agent type."""
|
|
75
|
+
agent_type = str(agent_type).lower()
|
|
76
|
+
return LOOP_MAPPING.get(agent_type, "strategic")
|
|
77
|
+
|
|
78
|
+
def process_agents():
|
|
79
|
+
"""Process all agent files and generate registry."""
|
|
80
|
+
agents = []
|
|
81
|
+
skipped_files = []
|
|
82
|
+
|
|
83
|
+
# Use os.walk to recursively search for .md files
|
|
84
|
+
for root, dirs, files in os.walk(AGENTS_DIR):
|
|
85
|
+
# Skip hidden directories
|
|
86
|
+
dirs[:] = [d for d in dirs if not d.startswith('.')]
|
|
87
|
+
|
|
88
|
+
for filename in files:
|
|
89
|
+
if not filename.endswith('.md'):
|
|
90
|
+
continue
|
|
91
|
+
|
|
92
|
+
# Skip documentation files
|
|
93
|
+
if filename in ['AGENT_LIFECYCLE.md', 'CLAUDE.md', 'README.md', 'README-VALIDATION.md', 'index.md']:
|
|
94
|
+
continue
|
|
95
|
+
|
|
96
|
+
file_path = os.path.join(root, filename)
|
|
97
|
+
|
|
98
|
+
# Skip git files
|
|
99
|
+
if '/.git/' in file_path:
|
|
100
|
+
continue
|
|
101
|
+
|
|
102
|
+
frontmatter = extract_frontmatter(file_path)
|
|
103
|
+
|
|
104
|
+
if not frontmatter:
|
|
105
|
+
skipped_files.append(file_path)
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
# Extract required fields with fallbacks
|
|
109
|
+
name = str(frontmatter.get('name', filename.replace('.md', '')))
|
|
110
|
+
description = str(frontmatter.get('description', ''))
|
|
111
|
+
agent_type = str(frontmatter.get('type', 'specialist'))
|
|
112
|
+
keywords = frontmatter.get('keywords', [])
|
|
113
|
+
|
|
114
|
+
# Handle potential list conversion
|
|
115
|
+
if not isinstance(keywords, list):
|
|
116
|
+
keywords = [keywords] if keywords else []
|
|
117
|
+
|
|
118
|
+
# Determine loop
|
|
119
|
+
loop = determine_loop(agent_type)
|
|
120
|
+
|
|
121
|
+
# Create agent entry
|
|
122
|
+
agent_entry = {
|
|
123
|
+
"name": name,
|
|
124
|
+
"description": description,
|
|
125
|
+
"type": agent_type,
|
|
126
|
+
"loop": loop,
|
|
127
|
+
"keywords": keywords,
|
|
128
|
+
"file": file_path # Include file path for tracking
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
logger.info(f"Processing agent: {name}")
|
|
132
|
+
logger.debug(f"Agent details: {json.dumps(agent_entry, indent=2)}")
|
|
133
|
+
|
|
134
|
+
agents.append(agent_entry)
|
|
135
|
+
|
|
136
|
+
# Prepare registry
|
|
137
|
+
registry = {
|
|
138
|
+
"agents": agents,
|
|
139
|
+
"last_updated": datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ'),
|
|
140
|
+
"total_agents": len(agents)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
# Ensure output directory exists
|
|
144
|
+
os.makedirs(os.path.dirname(OUTPUT_FILE), exist_ok=True)
|
|
145
|
+
|
|
146
|
+
# Write to file
|
|
147
|
+
try:
|
|
148
|
+
with open(OUTPUT_FILE, 'w', encoding='utf-8') as f:
|
|
149
|
+
json.dump(registry, f, indent=2)
|
|
150
|
+
|
|
151
|
+
logger.info(f"Agent registry generated: {OUTPUT_FILE}")
|
|
152
|
+
logger.info(f"Total agents discovered: {len(agents)}")
|
|
153
|
+
|
|
154
|
+
if skipped_files:
|
|
155
|
+
logger.warning(f"Skipped files: {', '.join(skipped_files)}")
|
|
156
|
+
|
|
157
|
+
# Verify file was written
|
|
158
|
+
if os.path.getsize(OUTPUT_FILE) > 0:
|
|
159
|
+
logger.info("File successfully generated and not empty.")
|
|
160
|
+
else:
|
|
161
|
+
raise ValueError("Output file is empty.")
|
|
162
|
+
|
|
163
|
+
except Exception as e:
|
|
164
|
+
logger.error(f"Error writing registry: {e}")
|
|
165
|
+
sys.exit(1)
|
|
166
|
+
|
|
167
|
+
def main():
|
|
168
|
+
try:
|
|
169
|
+
process_agents()
|
|
170
|
+
except Exception as e:
|
|
171
|
+
logger.critical(f"Unhandled exception: {e}", exc_info=True)
|
|
172
|
+
sys.exit(1)
|
|
173
|
+
|
|
174
|
+
if __name__ == "__main__":
|
|
175
|
+
main()
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Logging function
|
|
5
|
+
log() {
|
|
6
|
+
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >&2
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
# Error handler
|
|
10
|
+
handle_error() {
|
|
11
|
+
log "ERROR: An error occurred in line $1"
|
|
12
|
+
log "Last command failed: $BASH_COMMAND"
|
|
13
|
+
exit 1
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
# Trap errors
|
|
17
|
+
trap 'handle_error $LINENO' ERR
|
|
18
|
+
|
|
19
|
+
# Path to Python script
|
|
20
|
+
PYTHON_SCRIPT="/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/agent-discovery/discover-agents.py"
|
|
21
|
+
|
|
22
|
+
# Output file
|
|
23
|
+
OUTPUT_FILE="/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/agent-discovery/agents-registry.json"
|
|
24
|
+
|
|
25
|
+
# Logging file
|
|
26
|
+
LOG_FILE="/tmp/agent-discovery.log"
|
|
27
|
+
|
|
28
|
+
log "Starting agent discovery process"
|
|
29
|
+
|
|
30
|
+
# Check Python is available
|
|
31
|
+
if ! command -v python3 &> /dev/null; then
|
|
32
|
+
log "ERROR: Python3 is not installed"
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Ensure we have required packages
|
|
37
|
+
log "Installing required Python packages"
|
|
38
|
+
|
|
39
|
+
# Try multiple methods to install PyYAML
|
|
40
|
+
install_methods=(
|
|
41
|
+
"python3 -m pip install --user --break-system-packages pyyaml"
|
|
42
|
+
"python3 -m venv /tmp/pyenv && /tmp/pyenv/bin/pip install pyyaml"
|
|
43
|
+
"pip3 install --user pyyaml"
|
|
44
|
+
"pip install --user pyyaml"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
installed=false
|
|
48
|
+
for method in "${install_methods[@]}"; do
|
|
49
|
+
log "Trying installation method: $method"
|
|
50
|
+
if $method; then
|
|
51
|
+
installed=true
|
|
52
|
+
break
|
|
53
|
+
fi
|
|
54
|
+
done
|
|
55
|
+
|
|
56
|
+
if [ "$installed" = false ]; then
|
|
57
|
+
log "ERROR: Could not install PyYAML"
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Run Python discovery script with logging
|
|
62
|
+
log "Running discovery script"
|
|
63
|
+
python3 "$PYTHON_SCRIPT" 2>&1 | tee "$LOG_FILE"
|
|
64
|
+
|
|
65
|
+
# Check script succeeded
|
|
66
|
+
if [ ! -f "$OUTPUT_FILE" ]; then
|
|
67
|
+
log "ERROR: Output file was not generated"
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Optional: Run jq to validate JSON (if jq is available)
|
|
72
|
+
if command -v jq &> /dev/null; then
|
|
73
|
+
log "Validating JSON output"
|
|
74
|
+
if jq '.' "$OUTPUT_FILE" > /dev/null 2>&1; then
|
|
75
|
+
log "✅ JSON is valid"
|
|
76
|
+
else
|
|
77
|
+
log "❌ Invalid JSON"
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Show total agents
|
|
83
|
+
total_agents=$(jq '.total_agents' "$OUTPUT_FILE" 2>/dev/null || echo 0)
|
|
84
|
+
log "Total agents discovered: $total_agents"
|
|
85
|
+
|
|
86
|
+
# Final success log
|
|
87
|
+
log "Agent discovery completed successfully"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Invoke Agent Registry Discovery
|
|
3
|
+
|
|
4
|
+
# Ensure script runs from project root
|
|
5
|
+
cd "$(git rev-parse --show-toplevel)" || exit 1
|
|
6
|
+
|
|
7
|
+
# Run discovery script
|
|
8
|
+
./skills/agent-discovery/discover-agents.py
|
|
9
|
+
|
|
10
|
+
# Optional: output registry to stdout
|
|
11
|
+
cat .claude/skills/agent-discovery/agents-registry.json
|
|
File without changes
|
|
@@ -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.
|