claude-flow-novice 2.15.2 → 2.15.4
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/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/.claude/commands/cfn-loop-cli.md +16 -2
- package/.claude/commands/switch-api.md +31 -10
- package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
- package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
- package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/.claude/hooks/cfn-post-edit.config.json +44 -44
- package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/README.md +116 -475
- package/claude-assets/agents/cfn-dev-team/README.md +103 -0
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
- package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
- package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
- package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/claude-assets/commands/cfn-loop-cli.md +16 -2
- package/claude-assets/commands/switch-api.md +31 -10
- package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
- package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
- package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
- package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
- package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
- package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
- package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
- package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
- package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
- package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
- package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
- package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
- package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
- package/claude-assets/skills/bootstrap/database-connection.md +464 -0
- package/claude-assets/skills/bootstrap/error-handling.md +580 -0
- package/claude-assets/skills/bootstrap/file-operations.md +699 -0
- package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
- package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
- package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
- package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
- package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
- package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
- package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
- package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
- package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
- package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
- package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
- package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
- package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
- package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
- package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
- package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
- package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
- package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
- package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
- package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
- package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
- package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
- package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
- package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
- package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
- package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
- package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
- package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
- package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
- package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
- package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
- package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
- package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
- package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
- package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
- package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
- package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
- package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
- package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
- package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
- package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
- package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
- package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
- package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
- package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
- package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
- package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
- package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
- package/claude-assets/skills/cfn-utilities/test.sh +317 -0
- package/claude-assets/skills/docker-build/SKILL.md +96 -203
- package/claude-assets/skills/docker-build/build.sh +73 -73
- package/claude-assets/skills/integration/agent-handoff.sh +492 -0
- package/claude-assets/skills/integration/file-operations.sh +414 -0
- package/claude-assets/skills/json-validation/SKILL.md +431 -0
- package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
- package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
- package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
- package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
- package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
- package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
- package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
- package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
- package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
- package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
- package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
- package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
- package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
- package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
- package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
- package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
- package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
- package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
- package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
- package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
- package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
- package/dist/ace/ace-curator.js +10 -2
- package/dist/ace/ace-curator.js.map +1 -1
- package/dist/ace/ace-generator.js +4 -0
- package/dist/ace/ace-generator.js.map +1 -1
- package/dist/ace/ace-reflector.js +1 -1
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/ace/context-injection.js +24 -2
- package/dist/ace/context-injection.js.map +1 -1
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/agents/task-agent-integration.js +1 -1
- package/dist/agents/task-agent-integration.js.map +1 -1
- package/dist/api/health-endpoints.js +390 -0
- package/dist/api/health-endpoints.js.map +1 -0
- package/dist/cli/agent-executor.js +4 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +89 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +130 -37
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/config-manager.js +91 -109
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/skill-cache-validator.js +412 -0
- package/dist/cli/skill-cache-validator.js.map +1 -0
- package/dist/cli/skill-cli.js +991 -0
- package/dist/cli/skill-cli.js.map +1 -0
- package/dist/cli/skill-execution-logger.js +284 -0
- package/dist/cli/skill-execution-logger.js.map +1 -0
- package/dist/cli/skill-loader.js +457 -0
- package/dist/cli/skill-loader.js.map +1 -0
- package/dist/coordination/event-bus.js +2 -2
- package/dist/coordination/event-bus.js.map +1 -1
- package/dist/coordination/fleet-manager.js +1 -1
- package/dist/coordination/fleet-manager.js.map +1 -1
- package/dist/coordination/index.js +23 -9
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/types/fleet-manager.types.js.map +1 -1
- package/dist/db/migration-manager.js +483 -0
- package/dist/db/migration-manager.js.map +1 -0
- package/dist/db/skills-query.js +535 -0
- package/dist/db/skills-query.js.map +1 -0
- package/dist/integration/DatabaseHandoff.js +507 -0
- package/dist/integration/DatabaseHandoff.js.map +1 -0
- package/dist/integration/StandardAdapter.js +291 -0
- package/dist/integration/StandardAdapter.js.map +1 -0
- package/dist/jobs/edge-case-analyzer.js +367 -0
- package/dist/jobs/edge-case-analyzer.js.map +1 -0
- package/dist/jobs/promotion-sla-enforcer.js +288 -0
- package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
- package/dist/lib/agent-output-parser.js +518 -0
- package/dist/lib/agent-output-parser.js.map +1 -0
- package/dist/lib/agent-output-validator.js +950 -0
- package/dist/lib/agent-output-validator.js.map +1 -0
- package/dist/lib/agent-workspace.js +281 -0
- package/dist/lib/agent-workspace.js.map +1 -0
- package/dist/lib/artifact-registry.js +443 -0
- package/dist/lib/artifact-registry.js.map +1 -0
- package/dist/lib/atomic-file-writer.js +377 -0
- package/dist/lib/atomic-file-writer.js.map +1 -0
- package/dist/lib/backup-manager.js +779 -0
- package/dist/lib/backup-manager.js.map +1 -0
- package/dist/lib/checkpoint-manager.js +837 -0
- package/dist/lib/checkpoint-manager.js.map +1 -0
- package/dist/lib/circuit-breaker.js +340 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/completion-signal-handler.js +243 -0
- package/dist/lib/completion-signal-handler.js.map +1 -0
- package/dist/lib/config-manager.js +312 -0
- package/dist/lib/config-manager.js.map +1 -0
- package/dist/lib/config-migrator.js +386 -0
- package/dist/lib/config-migrator.js.map +1 -0
- package/dist/lib/config-validator.js +687 -0
- package/dist/lib/config-validator.js.map +1 -0
- package/dist/lib/correlation-cache.js +311 -0
- package/dist/lib/correlation-cache.js.map +1 -0
- package/dist/lib/correlation.js +263 -0
- package/dist/lib/correlation.js.map +1 -0
- package/dist/lib/database-service/connection-pool-manager.js +520 -0
- package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
- package/dist/lib/database-service/correlation.js +329 -0
- package/dist/lib/database-service/correlation.js.map +1 -0
- package/dist/lib/database-service/errors.js +120 -0
- package/dist/lib/database-service/errors.js.map +1 -0
- package/dist/lib/database-service/index.js +168 -0
- package/dist/lib/database-service/index.js.map +1 -0
- package/dist/lib/database-service/postgres-adapter.js +526 -0
- package/dist/lib/database-service/postgres-adapter.js.map +1 -0
- package/dist/lib/database-service/redis-adapter.js +360 -0
- package/dist/lib/database-service/redis-adapter.js.map +1 -0
- package/dist/lib/database-service/sqlite-adapter.js +544 -0
- package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
- package/dist/lib/database-service/transaction-manager.js +773 -0
- package/dist/lib/database-service/transaction-manager.js.map +1 -0
- package/dist/lib/database-service/types.js +23 -0
- package/dist/lib/database-service/types.js.map +1 -0
- package/dist/lib/deadlock-resolver.js +292 -0
- package/dist/lib/deadlock-resolver.js.map +1 -0
- package/dist/lib/distributed-lock.js +451 -0
- package/dist/lib/distributed-lock.js.map +1 -0
- package/dist/lib/edge-case-deduplicator.js +227 -0
- package/dist/lib/edge-case-deduplicator.js.map +1 -0
- package/dist/lib/encryption-manager.js +322 -0
- package/dist/lib/encryption-manager.js.map +1 -0
- package/dist/lib/error-aggregator.js +234 -0
- package/dist/lib/error-aggregator.js.map +1 -0
- package/dist/lib/errors.js +287 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/file-lock-manager.js +578 -0
- package/dist/lib/file-lock-manager.js.map +1 -0
- package/dist/lib/file-operations.js +367 -0
- package/dist/lib/file-operations.js.map +1 -0
- package/dist/lib/idempotent-write.js +237 -0
- package/dist/lib/idempotent-write.js.map +1 -0
- package/dist/lib/integration-schema-validator.js +522 -0
- package/dist/lib/integration-schema-validator.js.map +1 -0
- package/dist/lib/lock-health-monitor.js +298 -0
- package/dist/lib/lock-health-monitor.js.map +1 -0
- package/dist/lib/log-shipper.js +422 -0
- package/dist/lib/log-shipper.js.map +1 -0
- package/dist/lib/logging.js +146 -0
- package/dist/lib/logging.js.map +1 -0
- package/dist/lib/message-deduplicator.js +439 -0
- package/dist/lib/message-deduplicator.js.map +1 -0
- package/dist/lib/multi-system-query.js +604 -0
- package/dist/lib/multi-system-query.js.map +1 -0
- package/dist/lib/orphan-detector.js +332 -0
- package/dist/lib/orphan-detector.js.map +1 -0
- package/dist/lib/password-generator.js +166 -0
- package/dist/lib/password-generator.js.map +1 -0
- package/dist/lib/path-validator.js +429 -0
- package/dist/lib/path-validator.js.map +1 -0
- package/dist/lib/query-translator.js +905 -0
- package/dist/lib/query-translator.js.map +1 -0
- package/dist/lib/queue-recovery.js +469 -0
- package/dist/lib/queue-recovery.js.map +1 -0
- package/dist/lib/redis-queue-manager.js +512 -0
- package/dist/lib/redis-queue-manager.js.map +1 -0
- package/dist/lib/reflection-archiver.js +272 -0
- package/dist/lib/reflection-archiver.js.map +1 -0
- package/dist/lib/retry-manager.js +453 -0
- package/dist/lib/retry-manager.js.map +1 -0
- package/dist/lib/retry.js +262 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/schema-transform.js +695 -0
- package/dist/lib/schema-transform.js.map +1 -0
- package/dist/lib/schema-validator.js +491 -0
- package/dist/lib/schema-validator.js.map +1 -0
- package/dist/lib/skill-cache.js +297 -0
- package/dist/lib/skill-cache.js.map +1 -0
- package/dist/lib/skill-content-manager.js +337 -0
- package/dist/lib/skill-content-manager.js.map +1 -0
- package/dist/lib/skill-frontmatter-parser.js +237 -0
- package/dist/lib/skill-frontmatter-parser.js.map +1 -0
- package/dist/lib/skill-git-integration.js +275 -0
- package/dist/lib/skill-git-integration.js.map +1 -0
- package/dist/lib/skill-markdown-validator.js +396 -0
- package/dist/lib/skill-markdown-validator.js.map +1 -0
- package/dist/lib/skill-output-parser.js +312 -0
- package/dist/lib/skill-output-parser.js.map +1 -0
- package/dist/lib/unified-query-api.js +467 -0
- package/dist/lib/unified-query-api.js.map +1 -0
- package/dist/middleware/auth-middleware.js +350 -0
- package/dist/middleware/auth-middleware.js.map +1 -0
- package/dist/middleware/schema-validation.js +347 -0
- package/dist/middleware/schema-validation.js.map +1 -0
- package/dist/providers/anthropic-provider.js +1 -1
- package/dist/providers/anthropic-provider.js.map +1 -1
- package/dist/providers/provider-factory.js +2 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/services/edge-case-analyzer.js +321 -0
- package/dist/services/edge-case-analyzer.js.map +1 -0
- package/dist/services/edge-case-deduplicator.js +266 -0
- package/dist/services/edge-case-deduplicator.js.map +1 -0
- package/dist/services/edge-case-detector.js +337 -0
- package/dist/services/edge-case-detector.js.map +1 -0
- package/dist/services/edge-case-tracker.js +547 -0
- package/dist/services/edge-case-tracker.js.map +1 -0
- package/dist/services/health-check-system.js +586 -0
- package/dist/services/health-check-system.js.map +1 -0
- package/dist/services/metrics-logger.js +412 -0
- package/dist/services/metrics-logger.js.map +1 -0
- package/dist/services/patch-generator.js +378 -0
- package/dist/services/patch-generator.js.map +1 -0
- package/dist/services/patch-validator.js +337 -0
- package/dist/services/patch-validator.js.map +1 -0
- package/dist/services/performance-monitor.js +811 -0
- package/dist/services/performance-monitor.js.map +1 -0
- package/dist/services/promotion-pipeline.js +918 -0
- package/dist/services/promotion-pipeline.js.map +1 -0
- package/dist/services/promotion-validator.js +394 -0
- package/dist/services/promotion-validator.js.map +1 -0
- package/dist/services/reflection-logger.js +388 -0
- package/dist/services/reflection-logger.js.map +1 -0
- package/dist/services/skill-deployment.js +472 -0
- package/dist/services/skill-deployment.js.map +1 -0
- package/dist/services/skill-loader.js +427 -0
- package/dist/services/skill-loader.js.map +1 -0
- package/dist/services/skill-promotion.js +372 -0
- package/dist/services/skill-promotion.js.map +1 -0
- package/dist/services/skill-validator.js +454 -0
- package/dist/services/skill-validator.js.map +1 -0
- package/dist/services/skill-versioning.js +244 -0
- package/dist/services/skill-versioning.js.map +1 -0
- package/dist/services/workspace-supervisor.js +597 -0
- package/dist/services/workspace-supervisor.js.map +1 -0
- package/dist/types/agent-output.js +44 -0
- package/dist/types/agent-output.js.map +1 -0
- package/dist/types/config.js +28 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/edge-case.js +45 -0
- package/dist/types/edge-case.js.map +1 -0
- package/package.json +201 -176
- package/readme/README.md +19 -4
- package/scripts/artifact-cleanup.sh +392 -0
- package/scripts/backup-cleanup.sh +627 -0
- package/scripts/cleanup-workspaces.sh +412 -0
- package/scripts/cleanup-yaml-configs.sh +141 -0
- package/scripts/deploy-approved-skills.sh +263 -0
- package/scripts/deploy-production.sh +355 -355
- package/scripts/docker-playwright-fix.sh +311 -311
- package/scripts/docker-rebuild-all-agents.sh +127 -127
- package/scripts/health-check.sh +447 -0
- package/scripts/log-aggregator.sh +554 -0
- package/scripts/log-monitor.sh +629 -0
- package/scripts/manage-agent-workspaces.sh +434 -0
- package/scripts/memory-leak-prevention.sh +305 -305
- package/scripts/migrate-artifacts.sh +563 -0
- package/scripts/migrate-schema.sh +533 -0
- package/scripts/migrate-yaml-to-json.sh +465 -0
- package/scripts/promote-staged-skills.sh +423 -0
- package/scripts/run-marketing-tests.sh +42 -42
- package/scripts/update_paths.sh +46 -46
- package/scripts/verify-no-secrets.sh +88 -35
- package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
- package/README.md.backup_before_replace +0 -781
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cfn-promotion
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Skill Promotion Workflow - Atomic promotion from staging to production
|
|
5
|
+
author: CFN Integration Team
|
|
6
|
+
tags: [promotion, deployment, staging, production, sla]
|
|
7
|
+
dependencies: [cfn-coordination, cfn-deployment]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Skill Promotion Workflow
|
|
11
|
+
|
|
12
|
+
Manages atomic promotion of skills from staging directory to production with validation, SLA enforcement, and optional auto-deployment.
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
The skill promotion workflow automates the process of moving generated skills from the staging directory to production, ensuring:
|
|
17
|
+
|
|
18
|
+
- **Atomic Operations**: Skills are moved atomically to prevent partial promotions
|
|
19
|
+
- **Pre-Promotion Validation**: Content integrity, schema compliance, and test execution
|
|
20
|
+
- **SLA Enforcement**: Skills older than 48 hours in staging trigger alerts
|
|
21
|
+
- **Git Integration**: Optional automatic commit with promotion metadata
|
|
22
|
+
- **Auto-Deployment**: Optional integration with deployment pipeline (Task 1.1)
|
|
23
|
+
|
|
24
|
+
## Architecture
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
.claude/skills/
|
|
28
|
+
├── staging/ # Skills pending promotion (temporary)
|
|
29
|
+
│ ├── auth-v2/
|
|
30
|
+
│ │ ├── SKILL.md
|
|
31
|
+
│ │ ├── execute.sh
|
|
32
|
+
│ │ └── test.sh
|
|
33
|
+
│ └── logging-v3/
|
|
34
|
+
│ └── ...
|
|
35
|
+
└── [production]/ # Production skills (after promotion)
|
|
36
|
+
├── authentication/
|
|
37
|
+
├── logging/
|
|
38
|
+
└── ...
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
### CLI Script
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# List all staged skills
|
|
47
|
+
./scripts/promote-staged-skills.sh --list
|
|
48
|
+
|
|
49
|
+
# Check for stale skills (>48h)
|
|
50
|
+
./scripts/promote-staged-skills.sh --check-stale
|
|
51
|
+
|
|
52
|
+
# Promote a specific skill (with confirmation prompt)
|
|
53
|
+
./scripts/promote-staged-skills.sh .claude/skills/staging/auth-v2
|
|
54
|
+
|
|
55
|
+
# Auto-promote if validation passes (no prompt)
|
|
56
|
+
./scripts/promote-staged-skills.sh .claude/skills/staging/auth-v2 --auto
|
|
57
|
+
|
|
58
|
+
# Promote with git commit and deployment
|
|
59
|
+
./scripts/promote-staged-skills.sh .claude/skills/staging/auth-v2 --auto --git-commit --deploy
|
|
60
|
+
|
|
61
|
+
# Force promotion (skip validation - admin only)
|
|
62
|
+
./scripts/promote-staged-skills.sh .claude/skills/staging/auth-v2 --force --auto
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### TypeScript API
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { SkillPromotionService } from './src/services/skill-promotion';
|
|
69
|
+
import { DatabaseService } from './src/lib/database-service';
|
|
70
|
+
|
|
71
|
+
const dbService = new DatabaseService({ type: 'sqlite', path: './data/cfn.db' });
|
|
72
|
+
const promotionService = new SkillPromotionService(dbService);
|
|
73
|
+
|
|
74
|
+
// Promote a skill
|
|
75
|
+
const result = await promotionService.promoteSkill(
|
|
76
|
+
'.claude/skills/staging/auth-v2',
|
|
77
|
+
{
|
|
78
|
+
autoDeploy: true,
|
|
79
|
+
gitCommit: true,
|
|
80
|
+
notify: true,
|
|
81
|
+
promotedBy: 'admin@example.com'
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
if (result.success) {
|
|
86
|
+
console.log(`Skill promoted: ${result.skillName}`);
|
|
87
|
+
console.log(`Production path: ${result.productionPath}`);
|
|
88
|
+
console.log(`Deployment ID: ${result.deploymentId}`);
|
|
89
|
+
} else {
|
|
90
|
+
console.error(`Promotion failed: ${result.error}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// List staged skills
|
|
94
|
+
const stagedSkills = await promotionService.listStagedSkills();
|
|
95
|
+
console.log(`${stagedSkills.length} skills in staging`);
|
|
96
|
+
|
|
97
|
+
// Check for stale skills (>48h)
|
|
98
|
+
const staleSkills = await promotionService.checkStaleness();
|
|
99
|
+
if (staleSkills.length > 0) {
|
|
100
|
+
console.log(`WARNING: ${staleSkills.length} stale skills detected`);
|
|
101
|
+
for (const skill of staleSkills) {
|
|
102
|
+
console.log(` - ${skill.name} (${skill.ageHours}h, ${skill.slaBreachHours}h over SLA)`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Validation Checks
|
|
108
|
+
|
|
109
|
+
The promotion validator performs the following checks:
|
|
110
|
+
|
|
111
|
+
### 1. Content Integrity
|
|
112
|
+
- `SKILL.md` exists and is readable
|
|
113
|
+
- `execute.sh` exists and is executable
|
|
114
|
+
- Optional: `test.sh`, `README.md` (warnings if missing)
|
|
115
|
+
|
|
116
|
+
### 2. Schema Compliance
|
|
117
|
+
- Frontmatter is valid YAML
|
|
118
|
+
- Required fields: `name`, `description`, `version`
|
|
119
|
+
- Version follows semantic versioning (X.Y.Z)
|
|
120
|
+
- Optional fields: `author`, `tags`, `dependencies`
|
|
121
|
+
|
|
122
|
+
### 3. Test Execution
|
|
123
|
+
- If `test.sh` exists, it must be executable
|
|
124
|
+
- Tests run with 30-second timeout
|
|
125
|
+
- Test failures generate warnings (non-fatal, allow --force)
|
|
126
|
+
|
|
127
|
+
### 4. Conflict Detection
|
|
128
|
+
- Check if production skill already exists
|
|
129
|
+
- Compare versions (staging vs production)
|
|
130
|
+
- Warn if overwriting (require --overwrite flag)
|
|
131
|
+
|
|
132
|
+
## SLA Enforcement
|
|
133
|
+
|
|
134
|
+
Skills in staging for >48 hours trigger SLA breach alerts:
|
|
135
|
+
|
|
136
|
+
### Manual Checking
|
|
137
|
+
```bash
|
|
138
|
+
./scripts/promote-staged-skills.sh --check-stale
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Automated Checking (Cron Job)
|
|
142
|
+
```bash
|
|
143
|
+
# Run daily at 9am to check for stale skills
|
|
144
|
+
0 9 * * * cd /path/to/project && ./scripts/promote-staged-skills.sh --check-stale
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Background Job (TypeScript)
|
|
148
|
+
```typescript
|
|
149
|
+
import { PromotionSLAEnforcer } from './src/jobs/promotion-sla-enforcer';
|
|
150
|
+
|
|
151
|
+
const enforcer = new PromotionSLAEnforcer(dbService, {
|
|
152
|
+
autoPromote: true, // Auto-promote stale skills
|
|
153
|
+
notifyStale: true, // Send notifications
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
await enforcer.enforceSLA();
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Configuration
|
|
160
|
+
|
|
161
|
+
Environment variables:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# SLA threshold (hours)
|
|
165
|
+
CFN_PROMOTION_SLA_THRESHOLD=48
|
|
166
|
+
|
|
167
|
+
# Auto-promote stale skills
|
|
168
|
+
CFN_PROMOTION_AUTO_PROMOTE=true
|
|
169
|
+
|
|
170
|
+
# Enable git commits
|
|
171
|
+
CFN_PROMOTION_GIT_COMMIT=true
|
|
172
|
+
|
|
173
|
+
# Enable auto-deployment
|
|
174
|
+
CFN_PROMOTION_AUTO_DEPLOY=true
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Monitoring
|
|
178
|
+
|
|
179
|
+
### Database Queries
|
|
180
|
+
|
|
181
|
+
```sql
|
|
182
|
+
-- Skills currently in staging
|
|
183
|
+
SELECT name, created_at,
|
|
184
|
+
ROUND((julianday('now') - julianday(created_at)) * 24, 1) as age_hours
|
|
185
|
+
FROM staged_skills
|
|
186
|
+
WHERE promoted = 0
|
|
187
|
+
ORDER BY created_at ASC;
|
|
188
|
+
|
|
189
|
+
-- Promotion success rate (last 30 days)
|
|
190
|
+
SELECT
|
|
191
|
+
COUNT(*) as total_promotions,
|
|
192
|
+
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) as successful,
|
|
193
|
+
ROUND(100.0 * SUM(success) / COUNT(*), 2) as success_rate
|
|
194
|
+
FROM skill_promotions
|
|
195
|
+
WHERE promoted_at > datetime('now', '-30 days');
|
|
196
|
+
|
|
197
|
+
-- SLA breaches (skills >48h in staging)
|
|
198
|
+
SELECT COUNT(*) as sla_breaches
|
|
199
|
+
FROM staged_skills
|
|
200
|
+
WHERE promoted = 0
|
|
201
|
+
AND created_at < datetime('now', '-48 hours');
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Dashboard Metrics
|
|
205
|
+
|
|
206
|
+
- **Staged Skills Count**: Number of skills awaiting promotion
|
|
207
|
+
- **Average Time in Staging**: Mean age of staged skills
|
|
208
|
+
- **SLA Breach Count**: Skills >48h in staging
|
|
209
|
+
- **Promotion Success Rate**: Successful promotions / total attempts
|
|
210
|
+
- **Auto-Deploy Success Rate**: Successful deployments / total promotions
|
|
211
|
+
|
|
212
|
+
## Integration Points
|
|
213
|
+
|
|
214
|
+
### Task 1.1: Skill Deployment Pipeline
|
|
215
|
+
After promotion, skills can be automatically deployed:
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
const result = await promotionService.promoteSkill(stagingPath, {
|
|
219
|
+
autoDeploy: true // Triggers SkillDeploymentPipeline
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Task 0.5: Utilities
|
|
224
|
+
- `file-operations.ts`: Atomic moves, file locking
|
|
225
|
+
- `logging.ts`: Structured logging
|
|
226
|
+
- `errors.ts`: Error handling
|
|
227
|
+
|
|
228
|
+
### Phase 4: Skill Generation
|
|
229
|
+
Generated skills are placed in staging directory:
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
// Skill generator outputs to staging
|
|
233
|
+
const stagingPath = await skillGenerator.generate({
|
|
234
|
+
output: '.claude/skills/staging/new-skill'
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// Later: promote to production
|
|
238
|
+
await promotionService.promoteSkill(stagingPath);
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Error Handling
|
|
242
|
+
|
|
243
|
+
### Promotion Failures
|
|
244
|
+
- Validation errors: Fix skill and retry
|
|
245
|
+
- Conflicts: Use `--overwrite` or resolve manually
|
|
246
|
+
- Test failures: Use `--force` (admin only) or fix tests
|
|
247
|
+
|
|
248
|
+
### Rollback
|
|
249
|
+
If promotion fails mid-operation:
|
|
250
|
+
|
|
251
|
+
1. Staging skill remains in staging (atomic move failed)
|
|
252
|
+
2. Production skill is unchanged (or restored from backup)
|
|
253
|
+
3. Database records rollback
|
|
254
|
+
4. Git commits are not created
|
|
255
|
+
|
|
256
|
+
### Manual Rollback
|
|
257
|
+
```bash
|
|
258
|
+
# If promotion succeeded but deployment failed
|
|
259
|
+
rm -rf .claude/skills/production-skill
|
|
260
|
+
mv .claude/skills/staging/backup-skill .claude/skills/staging/production-skill
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Troubleshooting
|
|
264
|
+
|
|
265
|
+
### "Validation failed: Missing required file: execute.sh"
|
|
266
|
+
**Solution**: Add execute.sh to staged skill
|
|
267
|
+
|
|
268
|
+
### "execute.sh is not executable"
|
|
269
|
+
**Solution**: Run `chmod +x execute.sh`
|
|
270
|
+
|
|
271
|
+
### "Tests failed (non-fatal)"
|
|
272
|
+
**Solution**: Fix tests or use `--force` to skip
|
|
273
|
+
|
|
274
|
+
### "Skill already exists in production"
|
|
275
|
+
**Solution**: Use `--overwrite` flag or choose different name
|
|
276
|
+
|
|
277
|
+
### "Git commit failed"
|
|
278
|
+
**Solution**: Ensure git repo is initialized and configured
|
|
279
|
+
|
|
280
|
+
## Best Practices
|
|
281
|
+
|
|
282
|
+
1. **Always validate before promotion** (don't use --force unless necessary)
|
|
283
|
+
2. **Run tests in staging** before promotion
|
|
284
|
+
3. **Monitor SLA breaches** (check stale skills daily)
|
|
285
|
+
4. **Use git commits** for audit trail
|
|
286
|
+
5. **Enable auto-deployment** for production readiness
|
|
287
|
+
6. **Backup production skills** before overwriting
|
|
288
|
+
7. **Test promotions in dev environment** first
|
|
289
|
+
|
|
290
|
+
## Future Enhancements
|
|
291
|
+
|
|
292
|
+
- [ ] Webhook notifications (Slack, email)
|
|
293
|
+
- [ ] Multi-stage promotion (staging → qa → production)
|
|
294
|
+
- [ ] Approval workflows (require manual approval for production)
|
|
295
|
+
- [ ] Promotion rollback automation
|
|
296
|
+
- [ ] Integration with CI/CD pipelines
|
|
297
|
+
- [ ] Promotion scheduling (promote at specific times)
|
|
298
|
+
- [ ] Batch promotion (promote multiple skills at once)
|
|
299
|
+
|
|
300
|
+
## Related Documentation
|
|
301
|
+
|
|
302
|
+
- **Task 1.1**: `.claude/skills/cfn-deployment/SKILL.md`
|
|
303
|
+
- **Task 0.5**: `docs/IMPLEMENTATION_UTILITIES.md`
|
|
304
|
+
- **Phase 4**: `docs/SKILL_GENERATION.md` (future)
|
|
305
|
+
- **Operational Guide**: `docs/SKILL_PROMOTION_WORKFLOW.md`
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# Centralized Redis Wrapper - Graceful Fallback for Task Mode
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0
|
|
4
|
+
**Date:** 2025-11-16
|
|
5
|
+
**Status:** Production Ready
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This document describes the centralized Redis wrapper implementation that provides graceful fallback for Task mode execution, solving the ANTI-023 memory leak issue without requiring mode detection.
|
|
12
|
+
|
|
13
|
+
## Problem Statement
|
|
14
|
+
|
|
15
|
+
**Original Issue:**
|
|
16
|
+
- CLI mode agents (spawned via `npx claude-flow-novice`) need Redis for coordination
|
|
17
|
+
- Task mode agents (spawned via `Task()` tool) should NOT use Redis (causes memory leaks)
|
|
18
|
+
- Mode detection was unreliable (both modes could have TASK_ID/AGENT_ID)
|
|
19
|
+
|
|
20
|
+
**Solution:**
|
|
21
|
+
Instead of trying to detect mode, **make Redis commands fail gracefully** when Redis is unavailable.
|
|
22
|
+
|
|
23
|
+
## Architecture
|
|
24
|
+
|
|
25
|
+
### Components
|
|
26
|
+
|
|
27
|
+
**1. redis-cli-wrapper.sh** (Centralized wrapper)
|
|
28
|
+
- Checks if Redis is available (1 second timeout)
|
|
29
|
+
- If available → execute command normally (CLI/Docker mode)
|
|
30
|
+
- If unavailable → soft fail with informative message (Task mode)
|
|
31
|
+
|
|
32
|
+
**2. redis-functions.sh** (Function override)
|
|
33
|
+
- Sources the wrapper
|
|
34
|
+
- Exports `redis-cli()` function that overrides the system command
|
|
35
|
+
- All scripts using redis-cli automatically get graceful fallback
|
|
36
|
+
|
|
37
|
+
**3. Coordination scripts** (Updated to source redis-functions.sh)
|
|
38
|
+
- `report-completion.sh` - Main agent completion protocol
|
|
39
|
+
- Other scripts can be updated as needed
|
|
40
|
+
|
|
41
|
+
### How It Works
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Script sources redis-functions.sh
|
|
45
|
+
source ./.claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
46
|
+
|
|
47
|
+
# All redis-cli calls now use the wrapper
|
|
48
|
+
redis-cli LPUSH "key" "value" # Fails gracefully if Redis unavailable
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Execution Flow:**
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
1. Script calls redis-cli LPUSH "key" "value"
|
|
55
|
+
2. redis-functions.sh overrides redis-cli → calls wrapper
|
|
56
|
+
3. Wrapper checks: timeout 1 redis-cli ping
|
|
57
|
+
├─ Success? → Execute command (CLI/Docker mode)
|
|
58
|
+
└─ Timeout? → Print warning, exit 0 (Task mode)
|
|
59
|
+
4. Script continues (no fatal error)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Benefits
|
|
63
|
+
|
|
64
|
+
✅ **No mode detection needed** - Just check if Redis responds
|
|
65
|
+
✅ **Simpler** - One code path, graceful degradation
|
|
66
|
+
✅ **Self-healing** - Works in both Task mode (no Redis) AND CLI mode (has Redis)
|
|
67
|
+
✅ **No memory leak** - If Redis isn't available, commands fail fast (exit 0)
|
|
68
|
+
✅ **Clear feedback** - Informative messages explain what's happening
|
|
69
|
+
✅ **Centralized** - One place to change behavior (redis-cli-wrapper.sh)
|
|
70
|
+
✅ **Backward compatible** - Scripts without redis-functions.sh still work (use system redis-cli)
|
|
71
|
+
|
|
72
|
+
## Usage
|
|
73
|
+
|
|
74
|
+
### For New Scripts
|
|
75
|
+
|
|
76
|
+
Add this at the top of any script that uses Redis:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
#!/bin/bash
|
|
80
|
+
set -euo pipefail
|
|
81
|
+
|
|
82
|
+
# Source centralized Redis functions (provides graceful fallback for Task mode)
|
|
83
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
84
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
85
|
+
|
|
86
|
+
# Now use redis-cli normally
|
|
87
|
+
redis-cli LPUSH "swarm:task-123:done" "complete"
|
|
88
|
+
redis-cli SET "key" "value" EX 3600
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### For Existing Scripts
|
|
92
|
+
|
|
93
|
+
1. Add the source block after `set -euo pipefail`
|
|
94
|
+
2. Remove manual ANTI-023 checks (wrapper handles it)
|
|
95
|
+
3. Simplify redis-cli calls (no need for `-h` / `-p` flags)
|
|
96
|
+
|
|
97
|
+
**Before:**
|
|
98
|
+
```bash
|
|
99
|
+
if [[ -z "${TASK_ID:-}" || -z "${AGENT_ID:-}" ]]; then
|
|
100
|
+
echo "❌ TASK MODE DETECTED - Redis coordination forbidden" >&2
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**After:**
|
|
108
|
+
```bash
|
|
109
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
110
|
+
|
|
111
|
+
redis-cli LPUSH "key" "value"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Testing Graceful Fallback
|
|
115
|
+
|
|
116
|
+
Test that your script handles Redis unavailability:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Simulate Task mode (Redis unavailable)
|
|
120
|
+
REDIS_HOST="nonexistent" bash your-script.sh --args
|
|
121
|
+
|
|
122
|
+
# Expected output:
|
|
123
|
+
⚠️ Redis unavailable - command skipped (soft fail)
|
|
124
|
+
💡 This is expected in Task mode (Main Chat coordination)
|
|
125
|
+
🔧 Agents should output JSON directly instead of Redis coordination
|
|
126
|
+
✅ Script completed successfully
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Implementation Details
|
|
130
|
+
|
|
131
|
+
### redis-cli-wrapper.sh
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
#!/bin/bash
|
|
135
|
+
set -euo pipefail
|
|
136
|
+
|
|
137
|
+
REDIS_HOST="${REDIS_HOST:-localhost}"
|
|
138
|
+
REDIS_PORT="${REDIS_PORT:-6379}"
|
|
139
|
+
|
|
140
|
+
# Graceful Redis availability check (1 second timeout)
|
|
141
|
+
if ! timeout 1 redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping &>/dev/null; then
|
|
142
|
+
# Redis unavailable - likely Task mode
|
|
143
|
+
echo "⚠️ Redis unavailable - command skipped (soft fail)" >&2
|
|
144
|
+
echo "💡 This is expected in Task mode (Main Chat coordination)" >&2
|
|
145
|
+
echo "🔧 Agents should output JSON directly instead of Redis coordination" >&2
|
|
146
|
+
exit 0 # Soft fail - don't break agent execution
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
# Redis available - execute command normally (CLI/Docker mode)
|
|
150
|
+
exec redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" "$@"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Key Features:**
|
|
154
|
+
- 1 second timeout (prevents hanging)
|
|
155
|
+
- Informative error messages
|
|
156
|
+
- Exit 0 (soft fail, agent continues)
|
|
157
|
+
- Respects REDIS_HOST/REDIS_PORT environment variables
|
|
158
|
+
|
|
159
|
+
### redis-functions.sh
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
#!/bin/bash
|
|
163
|
+
|
|
164
|
+
# Get the directory where this script is located
|
|
165
|
+
REDIS_FUNCTIONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
166
|
+
|
|
167
|
+
# Override redis-cli to always use the wrapper
|
|
168
|
+
redis-cli() {
|
|
169
|
+
"${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" "$@"
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
# Export the function so it's available in subshells
|
|
173
|
+
export -f redis-cli
|
|
174
|
+
|
|
175
|
+
# Helper: Check if Redis is available (useful for conditional logic)
|
|
176
|
+
is_redis_available() {
|
|
177
|
+
timeout 1 "${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" ping &>/dev/null
|
|
178
|
+
return $?
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export -f is_redis_available
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Key Features:**
|
|
185
|
+
- Function override (all redis-cli calls use wrapper)
|
|
186
|
+
- Exported for subshells
|
|
187
|
+
- Helper function `is_redis_available()` for conditional logic
|
|
188
|
+
|
|
189
|
+
## Migration Guide
|
|
190
|
+
|
|
191
|
+
### Step 1: Update Core Scripts
|
|
192
|
+
|
|
193
|
+
Update the most critical coordination scripts first:
|
|
194
|
+
|
|
195
|
+
1. `report-completion.sh` ✅ (Already updated)
|
|
196
|
+
2. `collect-confidence-scores.sh`
|
|
197
|
+
3. `invoke-waiting-mode.sh`
|
|
198
|
+
4. `store-context.sh`
|
|
199
|
+
5. `get-context.sh`
|
|
200
|
+
|
|
201
|
+
### Step 2: Test Each Script
|
|
202
|
+
|
|
203
|
+
For each updated script:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Test with Redis available (CLI mode simulation)
|
|
207
|
+
bash script.sh --args
|
|
208
|
+
|
|
209
|
+
# Test with Redis unavailable (Task mode simulation)
|
|
210
|
+
REDIS_HOST="nonexistent" bash script.sh --args
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Step 3: Update Agent Profiles (Optional)
|
|
214
|
+
|
|
215
|
+
Agent profiles can now simplify their Redis usage examples:
|
|
216
|
+
|
|
217
|
+
**Before:**
|
|
218
|
+
```markdown
|
|
219
|
+
redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**After:**
|
|
223
|
+
```markdown
|
|
224
|
+
# Redis coordination (automatically fails gracefully in Task mode)
|
|
225
|
+
redis-cli LPUSH "key" "value"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Troubleshooting
|
|
229
|
+
|
|
230
|
+
### Issue: "Permission denied" when running wrapper
|
|
231
|
+
|
|
232
|
+
**Solution:**
|
|
233
|
+
```bash
|
|
234
|
+
chmod +x .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
|
|
235
|
+
chmod +x .claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Issue: "$'\r': command not found" (CRLF line endings)
|
|
239
|
+
|
|
240
|
+
**Solution:**
|
|
241
|
+
```bash
|
|
242
|
+
sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
|
|
243
|
+
sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Issue: Redis commands still hanging
|
|
247
|
+
|
|
248
|
+
**Cause:** Script not sourcing redis-functions.sh
|
|
249
|
+
|
|
250
|
+
**Solution:** Add source line at top of script:
|
|
251
|
+
```bash
|
|
252
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
253
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Performance Impact
|
|
257
|
+
|
|
258
|
+
**Redis Available (CLI/Docker mode):**
|
|
259
|
+
- Ping check: ~1-5ms overhead per script execution
|
|
260
|
+
- Command execution: No overhead (exec replaces process)
|
|
261
|
+
|
|
262
|
+
**Redis Unavailable (Task mode):**
|
|
263
|
+
- Ping timeout: 1 second (one-time per script, not per command)
|
|
264
|
+
- Total overhead: ~1 second per script execution
|
|
265
|
+
- Acceptable for Task mode (not performance-critical)
|
|
266
|
+
|
|
267
|
+
## Security Considerations
|
|
268
|
+
|
|
269
|
+
**Timeout Protection:**
|
|
270
|
+
- 1 second timeout prevents indefinite hanging
|
|
271
|
+
- Protects against network issues
|
|
272
|
+
|
|
273
|
+
**Environment Variables:**
|
|
274
|
+
- Respects REDIS_HOST/REDIS_PORT for configuration
|
|
275
|
+
- No hardcoded credentials
|
|
276
|
+
|
|
277
|
+
**Soft Failure:**
|
|
278
|
+
- Exit 0 prevents cascade failures
|
|
279
|
+
- Agent can continue execution
|
|
280
|
+
|
|
281
|
+
## Success Metrics
|
|
282
|
+
|
|
283
|
+
**Test Results:**
|
|
284
|
+
- ✅ report-completion.sh tested with nonexistent Redis host
|
|
285
|
+
- ✅ All 6 redis-cli calls failed gracefully (exit 0)
|
|
286
|
+
- ✅ Script completed successfully with informative warnings
|
|
287
|
+
- ✅ No memory leaks (commands timeout after 1 second)
|
|
288
|
+
|
|
289
|
+
**Expected Behavior:**
|
|
290
|
+
- CLI mode: Redis available → normal execution
|
|
291
|
+
- Docker mode: Redis available → normal execution
|
|
292
|
+
- Task mode: Redis unavailable → graceful fallback, agent continues
|
|
293
|
+
|
|
294
|
+
## Conclusion
|
|
295
|
+
|
|
296
|
+
The centralized Redis wrapper provides a robust, simple solution to the ANTI-023 memory leak issue. By focusing on **graceful failure** instead of **mode detection**, we achieve:
|
|
297
|
+
|
|
298
|
+
1. **Reliability** - Works regardless of mode detection accuracy
|
|
299
|
+
2. **Simplicity** - One code path, clear behavior
|
|
300
|
+
3. **Maintainability** - Centralized in one wrapper file
|
|
301
|
+
4. **Safety** - No memory leaks, no hanging processes
|
|
302
|
+
|
|
303
|
+
This approach is **production-ready** and can be rolled out incrementally (script by script) without disrupting existing workflows.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
**See Also:**
|
|
308
|
+
- `docs/architecture/task-mode-redis-safety-patterns.md` - Original ANTI-023 analysis
|
|
309
|
+
- `CLAUDE.md` - CFN Loop execution modes
|
|
310
|
+
- `.claude/skills/cfn-redis-coordination/SKILL.md` - Coordination protocols
|
|
311
|
+
|
|
312
|
+
**Next Steps:**
|
|
313
|
+
1. Update remaining coordination scripts
|
|
314
|
+
2. Test in production CFN Loop execution
|
|
315
|
+
3. Document in agent profiles
|
|
316
|
+
4. Monitor for any edge cases
|
|
317
|
+
|
|
318
|
+
**Version History:**
|
|
319
|
+
- v1.0 (2025-11-16): Initial implementation with graceful fallback
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
set -euo pipefail
|
|
14
14
|
|
|
15
|
+
# Source centralized Redis functions (provides graceful fallback for Task mode)
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
18
|
+
|
|
15
19
|
# Color codes for terminal output
|
|
16
20
|
COLOR_RESET="\033[0m"
|
|
17
21
|
COLOR_DEBUG="\033[0;36m" # Cyan
|