claude-flow-novice 2.9.1 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
- package/.claude/agents/cfn-dev-team/README.md +116 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
- package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
- package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
- package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
- package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
- package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
- package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
- package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
- package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
- package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
- package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
- package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
- package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
- package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
- package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
- package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
- package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
- package/.claude/commands/cfn/cfn-loop.md +168 -7
- package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
- package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
- package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
- package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
- package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
- package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
- package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
- package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
- package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
- package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
- package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
- package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
- package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
- package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
- package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
- package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
- package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
- package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
- package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
- package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
- package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
- package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
- package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
- package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
- package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
- package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
- package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
- package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
- package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
- package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
- package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
- package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
- package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
- package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
- package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
- package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
- package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
- package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
- package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
- package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
- package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
- package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
- package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
- package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
- package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
- package/.claude/skills/cfn-config-management/SKILL.md +34 -0
- package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
- package/.claude/skills/cfn-config-management/config.json +32 -0
- package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
- package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
- package/.claude/skills/cfn-event-bus/config.json +111 -0
- package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
- package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
- package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
- package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
- package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
- package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
- package/.claude/skills/cfn-fleet-manager/config.json +60 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
- package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
- package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
- package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
- package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
- package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
- package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
- package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
- package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
- package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
- package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
- package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
- package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -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/context-injection.sh +142 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -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/spawn-agents.sh +271 -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 +884 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +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 +353 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
- package/.claude/skills/cfn-loop-validation/config.json +161 -0
- package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
- package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
- package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
- package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
- package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
- package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
- package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
- package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
- package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/config.json +61 -0
- package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
- package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
- package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
- package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
- package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
- package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
- package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
- package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
- package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
- package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
- package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
- package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
- package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
- package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
- package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
- package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
- package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
- package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
- package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
- package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
- package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
- package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
- package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
- package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
- package/README.md +51 -2
- package/dist/ace/ace-reflector.js +109 -10
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/cli/agent-executor.js +1 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/package.json +43 -7
- package/readme/README.md +15 -4
- package/scripts/init-project.js +39 -2
- package/scripts/run-marketing-tests.sh +43 -0
- package/scripts/update_paths.sh +47 -0
- package/tools/install-lizard.sh +37 -0
- package/tools/simple-complexity.sh +44 -0
- package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
- package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
- package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
- /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
- /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
|
@@ -0,0 +1,720 @@
|
|
|
1
|
+
# Redis Coordination Skill
|
|
2
|
+
|
|
3
|
+
**Version:** 3.0.0 (Pure Coordination Primitives)
|
|
4
|
+
**Last Updated:** 2025-10-23
|
|
5
|
+
|
|
6
|
+
**⚠️ DEPRECATION NOTICE:**
|
|
7
|
+
The monolithic `orchestrate-cfn-loop.sh` (70KB) has been replaced by the modular CFN v3 orchestrator at `.claude/skills/cfn-loop-orchestration/orchestrate.sh` (26KB). See CFN v3 documentation for details.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The Redis Coordination Skill provides low-level coordination primitives for distributed agent orchestration. This skill is framework-agnostic and supports any coordination pattern (swarm, mesh, hierarchical).
|
|
14
|
+
|
|
15
|
+
**Key Capabilities:**
|
|
16
|
+
- Generic JSON context storage and retrieval
|
|
17
|
+
- Pub/sub signaling (LPUSH/BLPOP)
|
|
18
|
+
- Agent result collection and aggregation
|
|
19
|
+
- Zero-token waiting mechanisms
|
|
20
|
+
- Consensus calculation
|
|
21
|
+
|
|
22
|
+
**Design Philosophy:**
|
|
23
|
+
- Pure primitives, no workflow-specific logic
|
|
24
|
+
- Minimal assumptions about coordination patterns
|
|
25
|
+
- Clean, composable interfaces
|
|
26
|
+
- Framework-agnostic implementations
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Core Primitives
|
|
31
|
+
|
|
32
|
+
### 1. Context Storage (`store-context.sh`)
|
|
33
|
+
|
|
34
|
+
Store arbitrary JSON context in Redis with automatic TTL management.
|
|
35
|
+
|
|
36
|
+
**Usage:**
|
|
37
|
+
```bash
|
|
38
|
+
./store-context.sh \
|
|
39
|
+
--task-id "unique-task-123" \
|
|
40
|
+
--key "epic-context" \
|
|
41
|
+
--value '{"goal": "Build feature X", "scope": ["A", "B"]}' \
|
|
42
|
+
--ttl 86400
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Parameters:**
|
|
46
|
+
- `--task-id` (required): Unique task identifier
|
|
47
|
+
- `--key` (required): Context key name
|
|
48
|
+
- `--value` (required): Valid JSON string
|
|
49
|
+
- `--ttl` (optional): Time-to-live in seconds (default: 86400 = 24h)
|
|
50
|
+
- `--namespace` (optional): Redis key namespace (default: "context")
|
|
51
|
+
|
|
52
|
+
**Returns:**
|
|
53
|
+
- Redis key on success: `context:unique-task-123:epic-context`
|
|
54
|
+
- Exit code 0 on success, 1 on error
|
|
55
|
+
|
|
56
|
+
**Redis Key Format:**
|
|
57
|
+
```
|
|
58
|
+
{namespace}:{task_id}:{key}
|
|
59
|
+
└─ Hash fields:
|
|
60
|
+
- value: JSON payload
|
|
61
|
+
- metadata: {stored_at, ttl_seconds}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Example:**
|
|
65
|
+
```bash
|
|
66
|
+
# Store epic context
|
|
67
|
+
REDIS_KEY=$(./store-context.sh \
|
|
68
|
+
--task-id "task-001" \
|
|
69
|
+
--key "epic" \
|
|
70
|
+
--value '{"goal": "Authentication system"}')
|
|
71
|
+
|
|
72
|
+
echo "Stored at: $REDIS_KEY"
|
|
73
|
+
# Output: Stored at: context:task-001:epic
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### 2. Context Retrieval (`retrieve-context.sh`)
|
|
79
|
+
|
|
80
|
+
Retrieve JSON context from Redis with optional metadata.
|
|
81
|
+
|
|
82
|
+
**Usage:**
|
|
83
|
+
```bash
|
|
84
|
+
./retrieve-context.sh \
|
|
85
|
+
--task-id "unique-task-123" \
|
|
86
|
+
--key "epic-context"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Parameters:**
|
|
90
|
+
- `--task-id` (required): Unique task identifier
|
|
91
|
+
- `--key` (required): Context key name
|
|
92
|
+
- `--namespace` (optional): Redis key namespace (default: "context")
|
|
93
|
+
- `--with-metadata` (optional): Include storage metadata in output
|
|
94
|
+
|
|
95
|
+
**Returns:**
|
|
96
|
+
- JSON value on success
|
|
97
|
+
- Exit code 0 on success, 1 if key not found or invalid
|
|
98
|
+
|
|
99
|
+
**Example:**
|
|
100
|
+
```bash
|
|
101
|
+
# Retrieve context
|
|
102
|
+
CONTEXT=$(./retrieve-context.sh \
|
|
103
|
+
--task-id "task-001" \
|
|
104
|
+
--key "epic")
|
|
105
|
+
|
|
106
|
+
echo "$CONTEXT" | jq .
|
|
107
|
+
# Output: {"goal": "Authentication system"}
|
|
108
|
+
|
|
109
|
+
# With metadata
|
|
110
|
+
./retrieve-context.sh \
|
|
111
|
+
--task-id "task-001" \
|
|
112
|
+
--key "epic" \
|
|
113
|
+
--with-metadata | jq .
|
|
114
|
+
# Output:
|
|
115
|
+
# {
|
|
116
|
+
# "value": {"goal": "Authentication system"},
|
|
117
|
+
# "metadata": {"stored_at": "2025-10-23T10:30:00Z", "ttl_seconds": 86400},
|
|
118
|
+
# "ttl_remaining": 85000
|
|
119
|
+
# }
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 3. Signaling (`signal.sh`)
|
|
125
|
+
|
|
126
|
+
Generic pub/sub signaling for agent coordination using LPUSH/BLPOP.
|
|
127
|
+
|
|
128
|
+
**Commands:**
|
|
129
|
+
- `send`: Send signal to a queue (LPUSH)
|
|
130
|
+
- `wait`: Wait for signal with timeout (BLPOP)
|
|
131
|
+
- `broadcast`: Send signal to multiple agents
|
|
132
|
+
|
|
133
|
+
**Usage - Send:**
|
|
134
|
+
```bash
|
|
135
|
+
./signal.sh send \
|
|
136
|
+
--task-id "task-001" \
|
|
137
|
+
--signal "gate-passed" \
|
|
138
|
+
--payload '{"threshold": 0.75, "passed": true}'
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Usage - Wait:**
|
|
142
|
+
```bash
|
|
143
|
+
# Wait indefinitely (timeout=0)
|
|
144
|
+
PAYLOAD=$(./signal.sh wait \
|
|
145
|
+
--task-id "task-001" \
|
|
146
|
+
--signal "gate-passed")
|
|
147
|
+
|
|
148
|
+
# Wait with timeout (120 seconds)
|
|
149
|
+
PAYLOAD=$(./signal.sh wait \
|
|
150
|
+
--task-id "task-001" \
|
|
151
|
+
--signal "gate-passed" \
|
|
152
|
+
--timeout 120)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Usage - Broadcast:**
|
|
156
|
+
```bash
|
|
157
|
+
./signal.sh broadcast \
|
|
158
|
+
--task-id "task-001" \
|
|
159
|
+
--signal "iteration-start" \
|
|
160
|
+
--agents "agent-1,agent-2,agent-3" \
|
|
161
|
+
--payload '{"iteration": 2, "reason": "improve_quality"}'
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Parameters:**
|
|
165
|
+
- `--task-id` (required): Unique task identifier
|
|
166
|
+
- `--signal` (required): Signal name
|
|
167
|
+
- `--payload` (optional): JSON payload (default: `{}`)
|
|
168
|
+
- `--timeout` (optional): Wait timeout in seconds (default: 0 = infinite)
|
|
169
|
+
- `--agents` (required for broadcast): Comma-separated agent IDs
|
|
170
|
+
- `--namespace` (optional): Redis key namespace (default: "signal")
|
|
171
|
+
|
|
172
|
+
**Redis Key Formats:**
|
|
173
|
+
```
|
|
174
|
+
# Send/Wait:
|
|
175
|
+
signal:{task_id}:{signal_name}
|
|
176
|
+
|
|
177
|
+
# Broadcast:
|
|
178
|
+
signal:{task_id}:{agent_id}:{signal_name}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Example - Simple Coordination:**
|
|
182
|
+
```bash
|
|
183
|
+
# Agent 1: Wait for signal
|
|
184
|
+
(
|
|
185
|
+
./signal.sh wait --task-id "task-001" --signal "start-work"
|
|
186
|
+
echo "Received start signal, beginning work..."
|
|
187
|
+
) &
|
|
188
|
+
|
|
189
|
+
# Agent 2: Send signal after preparation
|
|
190
|
+
sleep 2
|
|
191
|
+
./signal.sh send --task-id "task-001" --signal "start-work" --payload '{}'
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### 4. Result Collection (`collect-results.sh`)
|
|
197
|
+
|
|
198
|
+
Collect and aggregate agent results with confidence scoring and consensus calculation.
|
|
199
|
+
|
|
200
|
+
**Usage:**
|
|
201
|
+
```bash
|
|
202
|
+
./collect-results.sh \
|
|
203
|
+
--task-id "task-001" \
|
|
204
|
+
--agent-ids "coder-1,reviewer-1,tester-1"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Parameters:**
|
|
208
|
+
- `--task-id` (required): Unique task identifier
|
|
209
|
+
- `--agent-ids` (required): Comma-separated agent IDs
|
|
210
|
+
- `--namespace` (optional): Redis key namespace (default: "result")
|
|
211
|
+
- `--calculate-consensus` (optional): Calculate average confidence score
|
|
212
|
+
- `--min-confidence` (optional): Minimum confidence threshold
|
|
213
|
+
- `--include-metadata` (optional): Include agent metadata in output
|
|
214
|
+
- `--timeout` (optional): Wait timeout per agent in seconds (default: 0)
|
|
215
|
+
|
|
216
|
+
**Expected Redis Structure (Per Agent):**
|
|
217
|
+
```
|
|
218
|
+
result:{task_id}:{agent_id}
|
|
219
|
+
└─ Hash fields:
|
|
220
|
+
- confidence: 0.85
|
|
221
|
+
- iteration: 1
|
|
222
|
+
- timestamp: 2025-10-23T10:30:00Z
|
|
223
|
+
- output: "Implementation complete"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Returns JSON:**
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"task_id": "task-001",
|
|
230
|
+
"total_agents": 3,
|
|
231
|
+
"successful_agents": 3,
|
|
232
|
+
"failed_agents": [],
|
|
233
|
+
"results": [
|
|
234
|
+
{
|
|
235
|
+
"agent_id": "coder-1",
|
|
236
|
+
"confidence": 0.92,
|
|
237
|
+
"iteration": 1,
|
|
238
|
+
"timestamp": "2025-10-23T10:30:00Z",
|
|
239
|
+
"output": "Implementation complete"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"agent_id": "reviewer-1",
|
|
243
|
+
"confidence": 0.88,
|
|
244
|
+
"iteration": 1,
|
|
245
|
+
"timestamp": "2025-10-23T10:31:00Z",
|
|
246
|
+
"output": "Code review passed"
|
|
247
|
+
}
|
|
248
|
+
],
|
|
249
|
+
"consensus": 0.90
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Example - Calculate Consensus:**
|
|
254
|
+
```bash
|
|
255
|
+
# Collect results with consensus calculation
|
|
256
|
+
RESULTS=$(./collect-results.sh \
|
|
257
|
+
--task-id "task-001" \
|
|
258
|
+
--agent-ids "coder-1,reviewer-1,tester-1" \
|
|
259
|
+
--calculate-consensus \
|
|
260
|
+
--min-confidence 0.75)
|
|
261
|
+
|
|
262
|
+
CONSENSUS=$(echo "$RESULTS" | jq -r '.consensus')
|
|
263
|
+
echo "Team consensus: $CONSENSUS"
|
|
264
|
+
|
|
265
|
+
# Check if consensus meets threshold
|
|
266
|
+
if (( $(echo "$CONSENSUS >= 0.90" | bc -l) )); then
|
|
267
|
+
echo "✅ Consensus threshold met"
|
|
268
|
+
else
|
|
269
|
+
echo "❌ Needs iteration"
|
|
270
|
+
fi
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Coordination Patterns
|
|
276
|
+
|
|
277
|
+
### Pattern 1: Simple Chain (Sequential)
|
|
278
|
+
|
|
279
|
+
Agents execute sequentially, each waiting for the previous to complete.
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
TASK_ID="task-001"
|
|
283
|
+
|
|
284
|
+
# Agent 1: Execute and signal completion
|
|
285
|
+
(
|
|
286
|
+
echo "Agent 1: Working..."
|
|
287
|
+
sleep 2
|
|
288
|
+
./signal.sh send --task-id "$TASK_ID" --signal "agent-1-done" --payload '{}'
|
|
289
|
+
) &
|
|
290
|
+
|
|
291
|
+
# Agent 2: Wait for Agent 1, then execute
|
|
292
|
+
(
|
|
293
|
+
./signal.sh wait --task-id "$TASK_ID" --signal "agent-1-done"
|
|
294
|
+
echo "Agent 2: Working..."
|
|
295
|
+
sleep 2
|
|
296
|
+
./signal.sh send --task-id "$TASK_ID" --signal "agent-2-done" --payload '{}'
|
|
297
|
+
) &
|
|
298
|
+
|
|
299
|
+
# Wait for all agents
|
|
300
|
+
wait
|
|
301
|
+
echo "Chain complete"
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Pattern 2: Broadcast with Consensus
|
|
305
|
+
|
|
306
|
+
Coordinator broadcasts work to multiple agents, then collects consensus.
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
TASK_ID="task-002"
|
|
310
|
+
AGENTS="agent-1,agent-2,agent-3"
|
|
311
|
+
|
|
312
|
+
# Store context for agents
|
|
313
|
+
./store-context.sh \
|
|
314
|
+
--task-id "$TASK_ID" \
|
|
315
|
+
--key "work-context" \
|
|
316
|
+
--value '{"task": "Review code", "file": "main.py"}'
|
|
317
|
+
|
|
318
|
+
# Broadcast start signal to all agents
|
|
319
|
+
./signal.sh broadcast \
|
|
320
|
+
--task-id "$TASK_ID" \
|
|
321
|
+
--signal "start-work" \
|
|
322
|
+
--agents "$AGENTS" \
|
|
323
|
+
--payload '{"iteration": 1}'
|
|
324
|
+
|
|
325
|
+
# Wait for agents to complete (agents must report results to Redis)
|
|
326
|
+
sleep 10
|
|
327
|
+
|
|
328
|
+
# Collect results and calculate consensus
|
|
329
|
+
RESULTS=$(./collect-results.sh \
|
|
330
|
+
--task-id "$TASK_ID" \
|
|
331
|
+
--agent-ids "$AGENTS" \
|
|
332
|
+
--calculate-consensus \
|
|
333
|
+
--min-confidence 0.75)
|
|
334
|
+
|
|
335
|
+
echo "$RESULTS" | jq .
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Pattern 3: Hierarchical (Loop Dependencies)
|
|
339
|
+
|
|
340
|
+
Implement multi-stage workflows with gate checks between stages.
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
TASK_ID="task-003"
|
|
344
|
+
|
|
345
|
+
# Stage 1: Implementation agents
|
|
346
|
+
LOOP3_AGENTS="coder-1,researcher-1"
|
|
347
|
+
./signal.sh broadcast \
|
|
348
|
+
--task-id "$TASK_ID" \
|
|
349
|
+
--signal "stage-1-start" \
|
|
350
|
+
--agents "$LOOP3_AGENTS" \
|
|
351
|
+
--payload '{}'
|
|
352
|
+
|
|
353
|
+
# Wait for implementation results
|
|
354
|
+
sleep 10
|
|
355
|
+
LOOP3_RESULTS=$(./collect-results.sh \
|
|
356
|
+
--task-id "$TASK_ID" \
|
|
357
|
+
--agent-ids "$LOOP3_AGENTS" \
|
|
358
|
+
--calculate-consensus)
|
|
359
|
+
|
|
360
|
+
LOOP3_CONSENSUS=$(echo "$LOOP3_RESULTS" | jq -r '.consensus')
|
|
361
|
+
|
|
362
|
+
# Gate check
|
|
363
|
+
GATE_THRESHOLD=0.75
|
|
364
|
+
if (( $(echo "$LOOP3_CONSENSUS >= $GATE_THRESHOLD" | bc -l) )); then
|
|
365
|
+
echo "✅ Gate passed: $LOOP3_CONSENSUS"
|
|
366
|
+
|
|
367
|
+
# Stage 2: Validation agents (only if gate passed)
|
|
368
|
+
LOOP2_AGENTS="reviewer-1,tester-1"
|
|
369
|
+
./signal.sh send \
|
|
370
|
+
--task-id "$TASK_ID" \
|
|
371
|
+
--signal "gate-passed" \
|
|
372
|
+
--payload "{\"loop3_consensus\": $LOOP3_CONSENSUS}"
|
|
373
|
+
|
|
374
|
+
./signal.sh broadcast \
|
|
375
|
+
--task-id "$TASK_ID" \
|
|
376
|
+
--signal "stage-2-start" \
|
|
377
|
+
--agents "$LOOP2_AGENTS" \
|
|
378
|
+
--payload '{}'
|
|
379
|
+
else
|
|
380
|
+
echo "❌ Gate failed: $LOOP3_CONSENSUS - relaunch Stage 1"
|
|
381
|
+
fi
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## Agent Integration Examples
|
|
387
|
+
|
|
388
|
+
### Example 1: Agent Storing Context
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
#!/bin/bash
|
|
392
|
+
# Agent: backend-dev
|
|
393
|
+
|
|
394
|
+
TASK_ID="$1"
|
|
395
|
+
AGENT_ID="backend-dev-1"
|
|
396
|
+
|
|
397
|
+
# Retrieve work context
|
|
398
|
+
CONTEXT=$(./retrieve-context.sh --task-id "$TASK_ID" --key "work-context")
|
|
399
|
+
GOAL=$(echo "$CONTEXT" | jq -r '.goal')
|
|
400
|
+
|
|
401
|
+
echo "Working on: $GOAL"
|
|
402
|
+
|
|
403
|
+
# Do work...
|
|
404
|
+
sleep 5
|
|
405
|
+
|
|
406
|
+
# Report confidence to Redis
|
|
407
|
+
redis-cli HSET "result:${TASK_ID}:${AGENT_ID}" \
|
|
408
|
+
confidence 0.92 \
|
|
409
|
+
iteration 1 \
|
|
410
|
+
timestamp "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
|
|
411
|
+
output "Implementation complete"
|
|
412
|
+
|
|
413
|
+
echo "Reported confidence: 0.92"
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Example 2: Agent Waiting for Signal
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
#!/bin/bash
|
|
420
|
+
# Agent: validator
|
|
421
|
+
|
|
422
|
+
TASK_ID="$1"
|
|
423
|
+
AGENT_ID="validator-1"
|
|
424
|
+
|
|
425
|
+
echo "Waiting for gate to pass..."
|
|
426
|
+
|
|
427
|
+
# Block until signal received
|
|
428
|
+
SIGNAL_PAYLOAD=$(./signal.sh wait \
|
|
429
|
+
--task-id "$TASK_ID" \
|
|
430
|
+
--signal "gate-passed" \
|
|
431
|
+
--timeout 300)
|
|
432
|
+
|
|
433
|
+
if [ $? -eq 0 ]; then
|
|
434
|
+
LOOP3_CONSENSUS=$(echo "$SIGNAL_PAYLOAD" | jq -r '.loop3_consensus')
|
|
435
|
+
echo "Gate passed with consensus: $LOOP3_CONSENSUS"
|
|
436
|
+
|
|
437
|
+
# Retrieve implementation results
|
|
438
|
+
CONTEXT=$(./retrieve-context.sh --task-id "$TASK_ID" --key "implementation")
|
|
439
|
+
|
|
440
|
+
# Validate...
|
|
441
|
+
echo "Validating implementation..."
|
|
442
|
+
sleep 3
|
|
443
|
+
|
|
444
|
+
# Report result
|
|
445
|
+
redis-cli HSET "result:${TASK_ID}:${AGENT_ID}" \
|
|
446
|
+
confidence 0.88 \
|
|
447
|
+
iteration 1 \
|
|
448
|
+
timestamp "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
|
|
449
|
+
output "Validation passed"
|
|
450
|
+
else
|
|
451
|
+
echo "Timeout waiting for gate signal"
|
|
452
|
+
exit 1
|
|
453
|
+
fi
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## Deprecated Features (v3.0.0)
|
|
459
|
+
|
|
460
|
+
### Waiting Mode (invoke-waiting-mode.sh)
|
|
461
|
+
|
|
462
|
+
**Status:** Partially deprecated (report/collect still active)
|
|
463
|
+
|
|
464
|
+
The `enter` and `wake` subcommands are deprecated as they caused agent lifecycle issues (indefinite blocking). Agents should now exit cleanly after reporting results.
|
|
465
|
+
|
|
466
|
+
**Still Supported:**
|
|
467
|
+
- `report`: Report confidence scores
|
|
468
|
+
- `collect`: Collect consensus
|
|
469
|
+
- `shutdown`: Clean shutdown
|
|
470
|
+
|
|
471
|
+
**No Longer Supported:**
|
|
472
|
+
- `enter`: Agents should exit instead
|
|
473
|
+
- `wake`: Use broadcast signaling instead
|
|
474
|
+
|
|
475
|
+
**Migration Path:**
|
|
476
|
+
```bash
|
|
477
|
+
# OLD (deprecated):
|
|
478
|
+
./invoke-waiting-mode.sh enter --task-id "$TASK_ID" --agent-id "$AGENT_ID"
|
|
479
|
+
|
|
480
|
+
# NEW (use signal.sh):
|
|
481
|
+
./signal.sh wait --task-id "$TASK_ID" --signal "wake-signal"
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### CFN Loop Orchestrator (orchestrate-cfn-loop.sh)
|
|
485
|
+
|
|
486
|
+
**Status:** Deprecated (kept for backward compatibility)
|
|
487
|
+
|
|
488
|
+
The orchestrator script contains CFN-specific workflow logic and will be moved to the `cfn-loop-validation` skill in a future release.
|
|
489
|
+
|
|
490
|
+
**Recommendation:** Build custom orchestrators using the core primitives instead of relying on this monolithic script.
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## Best Practices
|
|
495
|
+
|
|
496
|
+
### 1. Always Set TTL
|
|
497
|
+
|
|
498
|
+
Context and signals should have reasonable TTLs to prevent Redis memory leaks:
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
# Good: 24-hour TTL
|
|
502
|
+
./store-context.sh --task-id "$TASK_ID" --key "context" --value "$JSON" --ttl 86400
|
|
503
|
+
|
|
504
|
+
# Signals auto-expire after 1 hour
|
|
505
|
+
./signal.sh send --task-id "$TASK_ID" --signal "start" --payload '{}'
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### 2. Validate JSON Before Storage
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
# Validate JSON structure
|
|
512
|
+
if echo "$CONTEXT_JSON" | jq empty 2>/dev/null; then
|
|
513
|
+
./store-context.sh --task-id "$TASK_ID" --key "context" --value "$CONTEXT_JSON"
|
|
514
|
+
else
|
|
515
|
+
echo "Error: Invalid JSON"
|
|
516
|
+
exit 1
|
|
517
|
+
fi
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
### 3. Use Namespaces for Isolation
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
# Separate production and test environments
|
|
524
|
+
./store-context.sh \
|
|
525
|
+
--task-id "$TASK_ID" \
|
|
526
|
+
--key "config" \
|
|
527
|
+
--value "$JSON" \
|
|
528
|
+
--namespace "prod:context"
|
|
529
|
+
|
|
530
|
+
./store-context.sh \
|
|
531
|
+
--task-id "$TASK_ID" \
|
|
532
|
+
--key "config" \
|
|
533
|
+
--value "$JSON" \
|
|
534
|
+
--namespace "test:context"
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### 4. Handle Timeouts Gracefully
|
|
538
|
+
|
|
539
|
+
```bash
|
|
540
|
+
# Always check signal.sh exit code
|
|
541
|
+
if SIGNAL=$(./signal.sh wait --task-id "$TASK_ID" --signal "ready" --timeout 60); then
|
|
542
|
+
echo "Signal received: $SIGNAL"
|
|
543
|
+
else
|
|
544
|
+
echo "Timeout - proceeding with default behavior"
|
|
545
|
+
fi
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### 5. Clean Up After Task Completion
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
# Delete task-specific keys after completion
|
|
552
|
+
redis-cli DEL "context:${TASK_ID}:*"
|
|
553
|
+
redis-cli DEL "signal:${TASK_ID}:*"
|
|
554
|
+
redis-cli DEL "result:${TASK_ID}:*"
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
## Testing
|
|
560
|
+
|
|
561
|
+
### Unit Tests
|
|
562
|
+
|
|
563
|
+
Each primitive has corresponding tests in `tests/primitives/`:
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
# Test context storage
|
|
567
|
+
./tests/primitives/test-store-context.sh
|
|
568
|
+
|
|
569
|
+
# Test context retrieval
|
|
570
|
+
./tests/primitives/test-retrieve-context.sh
|
|
571
|
+
|
|
572
|
+
# Test signaling
|
|
573
|
+
./tests/primitives/test-signal.sh
|
|
574
|
+
|
|
575
|
+
# Test result collection
|
|
576
|
+
./tests/primitives/test-collect-results.sh
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### Integration Tests
|
|
580
|
+
|
|
581
|
+
Test coordination patterns end-to-end:
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
# Test chain pattern
|
|
585
|
+
./tests/integration/test-chain-pattern.sh
|
|
586
|
+
|
|
587
|
+
# Test broadcast pattern
|
|
588
|
+
./tests/integration/test-broadcast-pattern.sh
|
|
589
|
+
|
|
590
|
+
# Test hierarchical pattern
|
|
591
|
+
./tests/integration/test-hierarchical-pattern.sh
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
## Performance
|
|
597
|
+
|
|
598
|
+
### Benchmarks (100 operations)
|
|
599
|
+
|
|
600
|
+
| Operation | Avg Latency | Throughput |
|
|
601
|
+
|-----------|-------------|------------|
|
|
602
|
+
| store-context.sh | 3ms | 333 ops/s |
|
|
603
|
+
| retrieve-context.sh | 2ms | 500 ops/s |
|
|
604
|
+
| signal.sh send | 2ms | 500 ops/s |
|
|
605
|
+
| signal.sh wait (immediate) | 3ms | 333 ops/s |
|
|
606
|
+
| collect-results.sh (3 agents) | 8ms | 125 ops/s |
|
|
607
|
+
|
|
608
|
+
**Zero-Token Waiting:**
|
|
609
|
+
- BLPOP blocks without API calls (0 token cost)
|
|
610
|
+
- Immediate wake-up (<100ms latency)
|
|
611
|
+
- Scales to 100+ concurrent agents
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## Security Considerations
|
|
616
|
+
|
|
617
|
+
### 1. No Sensitive Data in Payloads
|
|
618
|
+
|
|
619
|
+
Never store API keys, credentials, or secrets in Redis context:
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
# BAD:
|
|
623
|
+
./store-context.sh --key "config" --value '{"api_key": "sk-xxx"}'
|
|
624
|
+
|
|
625
|
+
# GOOD:
|
|
626
|
+
./store-context.sh --key "config" --value '{"api_key_ref": "env:API_KEY"}'
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
### 2. Namespace Isolation
|
|
630
|
+
|
|
631
|
+
Use namespaces to prevent cross-task contamination:
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
--namespace "user-${USER_ID}:context"
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### 3. TTL Enforcement
|
|
638
|
+
|
|
639
|
+
Always set TTLs to prevent indefinite data retention:
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
--ttl 3600 # 1 hour maximum
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
---
|
|
646
|
+
|
|
647
|
+
## Error Handling
|
|
648
|
+
|
|
649
|
+
### Common Errors
|
|
650
|
+
|
|
651
|
+
**Error:** `Context key does not exist`
|
|
652
|
+
```bash
|
|
653
|
+
# Check if key exists before retrieval
|
|
654
|
+
if redis-cli EXISTS "context:${TASK_ID}:${KEY}" | grep -q "1"; then
|
|
655
|
+
./retrieve-context.sh --task-id "$TASK_ID" --key "$KEY"
|
|
656
|
+
else
|
|
657
|
+
echo "Key not found, using default"
|
|
658
|
+
fi
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
**Error:** `Timeout waiting for signal`
|
|
662
|
+
```bash
|
|
663
|
+
# Always provide timeout for production
|
|
664
|
+
./signal.sh wait --task-id "$TASK_ID" --signal "start" --timeout 300 || {
|
|
665
|
+
echo "Timeout - sending fallback signal"
|
|
666
|
+
./signal.sh send --task-id "$TASK_ID" --signal "timeout-fallback" --payload '{}'
|
|
667
|
+
}
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
**Error:** `Failed to retrieve context value`
|
|
671
|
+
```bash
|
|
672
|
+
# Validate Redis connection
|
|
673
|
+
if ! redis-cli PING | grep -q "PONG"; then
|
|
674
|
+
echo "Redis unavailable"
|
|
675
|
+
exit 1
|
|
676
|
+
fi
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
---
|
|
680
|
+
|
|
681
|
+
## Version History
|
|
682
|
+
|
|
683
|
+
### v3.0.0 (2025-10-23) - Pure Coordination Primitives
|
|
684
|
+
- **Breaking:** Removed CFN-specific logic from primitives
|
|
685
|
+
- **Added:** `store-context.sh` - Generic JSON storage
|
|
686
|
+
- **Added:** `retrieve-context.sh` - Generic JSON retrieval
|
|
687
|
+
- **Added:** `signal.sh` - Pub/sub signaling
|
|
688
|
+
- **Added:** `collect-results.sh` - Result aggregation
|
|
689
|
+
- **Deprecated:** `invoke-waiting-mode.sh` enter/wake commands
|
|
690
|
+
- **Deprecated:** `orchestrate-cfn-loop.sh` (moved to cfn-loop-validation skill)
|
|
691
|
+
- **Migration:** CFN-specific logic moved to separate orchestration layer
|
|
692
|
+
|
|
693
|
+
### v2.1.0 (2025-10-20) - Agent Completion Protocol
|
|
694
|
+
- Three-layer timeout protection
|
|
695
|
+
- Process-based completion detection
|
|
696
|
+
- Heartbeat monitoring
|
|
697
|
+
|
|
698
|
+
### v2.0.0 (2025-10-18) - Metrics & Observability
|
|
699
|
+
- Comprehensive metrics collection
|
|
700
|
+
- Prometheus export support
|
|
701
|
+
- Deliverable verification (BUG #11 fix)
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
## Support
|
|
706
|
+
|
|
707
|
+
**Skill Owner:** Redis Coordination Team
|
|
708
|
+
**Documentation:** `.claude/skills/redis-coordination/SKILL.md`
|
|
709
|
+
**Issues:** Tag with `skill:redis-coordination`
|
|
710
|
+
|
|
711
|
+
**Related Skills:**
|
|
712
|
+
- `cfn-loop-validation` - CFN Loop orchestration (uses these primitives)
|
|
713
|
+
- `agent-spawning` - Agent lifecycle management
|
|
714
|
+
- `hook-pipeline` - Post-edit validation
|
|
715
|
+
|
|
716
|
+
---
|
|
717
|
+
|
|
718
|
+
## License
|
|
719
|
+
|
|
720
|
+
Part of Claude Flow Novice - AI Agent Orchestration Framework
|