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,180 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# format-negative-context.sh
|
|
3
|
+
# Phase 3.2 - Format anti-patterns from ACE database for agent context injection
|
|
4
|
+
# Usage: format-negative-context.sh --domain "security" --limit 5 [--task-tags "JWT,auth"]
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
# Configuration
|
|
9
|
+
ACE_DB="/mnt/c/Users/masha/Documents/claude-flow-novice/ace-context.db"
|
|
10
|
+
DOMAIN=""
|
|
11
|
+
LIMIT=5
|
|
12
|
+
TASK_TAGS=""
|
|
13
|
+
|
|
14
|
+
# Parse arguments
|
|
15
|
+
while [[ $# -gt 0 ]]; do
|
|
16
|
+
case $1 in
|
|
17
|
+
--domain) DOMAIN="$2"; shift 2 ;;
|
|
18
|
+
--limit) LIMIT="$2"; shift 2 ;;
|
|
19
|
+
--task-tags) TASK_TAGS="$2"; shift 2 ;;
|
|
20
|
+
*) echo "Unknown parameter: $1" >&2; exit 1 ;;
|
|
21
|
+
esac
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
# Input sanitization (SECURITY: prevent SQL injection)
|
|
25
|
+
sanitize_input() {
|
|
26
|
+
echo "$1" | sed 's/[^a-zA-Z0-9_,\-]//g'
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
DOMAIN=$(sanitize_input "$DOMAIN")
|
|
30
|
+
LIMIT=$(sanitize_input "$LIMIT")
|
|
31
|
+
TASK_TAGS=$(sanitize_input "$TASK_TAGS")
|
|
32
|
+
|
|
33
|
+
# Validate limit
|
|
34
|
+
if ! [[ "$LIMIT" =~ ^[0-9]+$ ]] || [ "$LIMIT" -lt 1 ] || [ "$LIMIT" -gt 20 ]; then
|
|
35
|
+
echo "Error: --limit must be between 1 and 20" >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Redact sensitive data from output
|
|
40
|
+
redact_sensitive() {
|
|
41
|
+
local text="$1"
|
|
42
|
+
# Redact potential API keys (patterns: sk_live_XXX, sk_test_XXX, etc.)
|
|
43
|
+
text=$(echo "$text" | sed -E 's/\bsk_(live|test)_[a-zA-Z0-9_]+/[REDACTED_API_KEY]/g')
|
|
44
|
+
# Redact generic long alphanumeric strings (32+ chars with underscores/hyphens)
|
|
45
|
+
text=$(echo "$text" | sed -E 's/\b[a-zA-Z0-9_-]{32,}\b/[REDACTED]/g')
|
|
46
|
+
# Redact password/token patterns
|
|
47
|
+
text=$(echo "$text" | sed -E 's/(password|pwd|token|secret|key)[:=]\s*[^ ]+/\1: [REDACTED]/gi')
|
|
48
|
+
# Redact JWT tokens (xxx.yyy.zzz format)
|
|
49
|
+
text=$(echo "$text" | sed -E 's/\beyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/[REDACTED_JWT]/g')
|
|
50
|
+
echo "$text"
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# Build SQL query with filters
|
|
54
|
+
build_query() {
|
|
55
|
+
local query="SELECT
|
|
56
|
+
json_extract(extracted_lessons, '$.anti_pattern') as description,
|
|
57
|
+
json_extract(extracted_lessons, '$.solution') as solution,
|
|
58
|
+
json_extract(metadata, '$.severity') as severity,
|
|
59
|
+
json_extract(metadata, '$.sprint_ref') as sprint_ref,
|
|
60
|
+
json_extract(metadata, '$.tags') as tags,
|
|
61
|
+
confidence,
|
|
62
|
+
json_extract(execution_trace, '$.iterations') as iterations
|
|
63
|
+
FROM context_reflections
|
|
64
|
+
WHERE reflection_type IN ('anti-pattern', 'warning')"
|
|
65
|
+
|
|
66
|
+
# Filter by domain if specified
|
|
67
|
+
if [[ -n "$DOMAIN" ]]; then
|
|
68
|
+
query="$query AND json_extract(metadata, '$.domain') = '$DOMAIN'"
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Filter by task tags for relevance scoring
|
|
72
|
+
if [[ -n "$TASK_TAGS" ]]; then
|
|
73
|
+
IFS=',' read -ra TAG_ARRAY <<< "$TASK_TAGS"
|
|
74
|
+
local tag_conditions=""
|
|
75
|
+
for tag in "${TAG_ARRAY[@]}"; do
|
|
76
|
+
tag=$(echo "$tag" | xargs) # trim whitespace
|
|
77
|
+
if [[ -n "$tag_conditions" ]]; then
|
|
78
|
+
tag_conditions="$tag_conditions OR "
|
|
79
|
+
fi
|
|
80
|
+
tag_conditions="${tag_conditions}json_extract(metadata, '$.tags') LIKE '%$tag%'"
|
|
81
|
+
done
|
|
82
|
+
query="$query AND ($tag_conditions)"
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# Order by severity (critical first), then recency
|
|
86
|
+
query="$query ORDER BY
|
|
87
|
+
CASE json_extract(metadata, '$.severity')
|
|
88
|
+
WHEN 'critical' THEN 1
|
|
89
|
+
WHEN 'high' THEN 2
|
|
90
|
+
WHEN 'medium' THEN 3
|
|
91
|
+
ELSE 4
|
|
92
|
+
END,
|
|
93
|
+
created_at DESC
|
|
94
|
+
LIMIT $LIMIT"
|
|
95
|
+
|
|
96
|
+
echo "$query"
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# Get severity emoji
|
|
100
|
+
get_severity_emoji() {
|
|
101
|
+
case "$1" in
|
|
102
|
+
critical) echo "🚫" ;;
|
|
103
|
+
high) echo "⚠️" ;;
|
|
104
|
+
medium) echo "⚡" ;;
|
|
105
|
+
low) echo "ℹ️" ;;
|
|
106
|
+
*) echo "•" ;;
|
|
107
|
+
esac
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# Check if database exists
|
|
111
|
+
if [[ ! -f "$ACE_DB" ]]; then
|
|
112
|
+
echo "Error: ACE database not found at $ACE_DB" >&2
|
|
113
|
+
exit 1
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# Build and execute query
|
|
117
|
+
QUERY=$(build_query)
|
|
118
|
+
|
|
119
|
+
# Format output
|
|
120
|
+
echo "### ⚠️ Anti-Patterns to Avoid"
|
|
121
|
+
echo ""
|
|
122
|
+
|
|
123
|
+
COUNTER=1
|
|
124
|
+
FOUND=0
|
|
125
|
+
|
|
126
|
+
while IFS='|' read -r description solution severity sprint_ref tags confidence iterations; do
|
|
127
|
+
FOUND=1
|
|
128
|
+
|
|
129
|
+
# Redact sensitive information
|
|
130
|
+
description=$(redact_sensitive "$description")
|
|
131
|
+
solution=$(redact_sensitive "$solution")
|
|
132
|
+
|
|
133
|
+
# Handle null/empty values
|
|
134
|
+
severity=${severity:-"low"}
|
|
135
|
+
iterations=${iterations:-"1"}
|
|
136
|
+
confidence=${confidence:-"0.0"}
|
|
137
|
+
sprint_ref=${sprint_ref:-"unknown"}
|
|
138
|
+
tags=${tags:-"general"}
|
|
139
|
+
|
|
140
|
+
# Get severity emoji
|
|
141
|
+
EMOJI=$(get_severity_emoji "$severity")
|
|
142
|
+
|
|
143
|
+
# Format iteration text
|
|
144
|
+
if [[ "$iterations" == "1" ]]; then
|
|
145
|
+
ITERATION_TEXT="failed in 1 sprint"
|
|
146
|
+
else
|
|
147
|
+
ITERATION_TEXT="failed in $iterations sprints"
|
|
148
|
+
fi
|
|
149
|
+
|
|
150
|
+
# Format entry
|
|
151
|
+
echo "$COUNTER. **$description** ($EMOJI ${severity^^}, $ITERATION_TEXT)"
|
|
152
|
+
echo " - Issue: $description"
|
|
153
|
+
echo " - Sprint: \`$sprint_ref\` (ITERATE x$iterations, final confidence: $confidence)"
|
|
154
|
+
|
|
155
|
+
if [[ -n "$solution" && "$solution" != "null" && "$solution" != "" ]]; then
|
|
156
|
+
echo " - Solution: $solution"
|
|
157
|
+
else
|
|
158
|
+
echo " - Solution: Not yet determined (investigate before implementing)"
|
|
159
|
+
fi
|
|
160
|
+
|
|
161
|
+
echo " - Tags: $tags"
|
|
162
|
+
echo ""
|
|
163
|
+
|
|
164
|
+
((COUNTER++))
|
|
165
|
+
done < <(sqlite3 "$ACE_DB" "$QUERY" 2>/dev/null || true)
|
|
166
|
+
|
|
167
|
+
# Handle no results
|
|
168
|
+
if [[ $FOUND -eq 0 ]]; then
|
|
169
|
+
echo "No anti-patterns found matching criteria."
|
|
170
|
+
if [[ -n "$DOMAIN" ]]; then
|
|
171
|
+
echo "- Domain filter: $DOMAIN"
|
|
172
|
+
fi
|
|
173
|
+
if [[ -n "$TASK_TAGS" ]]; then
|
|
174
|
+
echo "- Tag filter: $TASK_TAGS"
|
|
175
|
+
fi
|
|
176
|
+
echo ""
|
|
177
|
+
echo "Consider broadening search criteria or checking database status."
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
exit 0
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
-- ============================================================================
|
|
2
|
+
-- ACE System - SQLite Index Optimization
|
|
3
|
+
-- ============================================================================
|
|
4
|
+
-- Purpose: Optimize query performance for context reflection queries
|
|
5
|
+
-- Target: < 100ms query time with 1000+ reflections
|
|
6
|
+
-- Schema: context_reflections table from Phase 1.2
|
|
7
|
+
-- ============================================================================
|
|
8
|
+
|
|
9
|
+
-- ----------------------------------------------------------------------------
|
|
10
|
+
-- Index 1: JSON Tag Extraction Index
|
|
11
|
+
-- ----------------------------------------------------------------------------
|
|
12
|
+
-- Purpose: Optimize tag-based context searches (most common query pattern)
|
|
13
|
+
-- Query Pattern: WHERE json_extract(metadata, '$.tags') LIKE '%tag%'
|
|
14
|
+
-- Expected Impact: 10-50x speedup for tag searches
|
|
15
|
+
-- Note: JSON indexes in SQLite require expression indexes (SQLite 3.9.0+)
|
|
16
|
+
-- ----------------------------------------------------------------------------
|
|
17
|
+
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_tags
|
|
19
|
+
ON context_reflections(json_extract(metadata, '$.tags'));
|
|
20
|
+
|
|
21
|
+
-- ----------------------------------------------------------------------------
|
|
22
|
+
-- Index 2: Domain Classification Index
|
|
23
|
+
-- ----------------------------------------------------------------------------
|
|
24
|
+
-- Purpose: Filter contexts by domain (backend, frontend, infrastructure)
|
|
25
|
+
-- Query Pattern: WHERE json_extract(metadata, '$.domain') = 'backend'
|
|
26
|
+
-- Expected Impact: Eliminates full table scan for domain filtering
|
|
27
|
+
-- ----------------------------------------------------------------------------
|
|
28
|
+
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_domain
|
|
30
|
+
ON context_reflections(json_extract(metadata, '$.domain'));
|
|
31
|
+
|
|
32
|
+
-- ----------------------------------------------------------------------------
|
|
33
|
+
-- Index 3: Confidence Score Index
|
|
34
|
+
-- ----------------------------------------------------------------------------
|
|
35
|
+
-- Purpose: Filter high-quality contexts by confidence threshold
|
|
36
|
+
-- Query Pattern: WHERE confidence >= 0.80
|
|
37
|
+
-- Expected Impact: Fast filtering for success rate analysis
|
|
38
|
+
-- ----------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_confidence
|
|
41
|
+
ON context_reflections(confidence DESC);
|
|
42
|
+
|
|
43
|
+
-- ----------------------------------------------------------------------------
|
|
44
|
+
-- Index 4: Recency Index
|
|
45
|
+
-- ----------------------------------------------------------------------------
|
|
46
|
+
-- Purpose: Sort and filter by creation timestamp
|
|
47
|
+
-- Query Pattern: ORDER BY created_at DESC, WHERE created_at >= date(...)
|
|
48
|
+
-- Expected Impact: Fast chronological sorting, recent context retrieval
|
|
49
|
+
-- ----------------------------------------------------------------------------
|
|
50
|
+
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_created_at
|
|
52
|
+
ON context_reflections(created_at DESC);
|
|
53
|
+
|
|
54
|
+
-- ----------------------------------------------------------------------------
|
|
55
|
+
-- Composite Index 1: Domain + Confidence + Recency
|
|
56
|
+
-- ----------------------------------------------------------------------------
|
|
57
|
+
-- Purpose: Optimize multi-criteria queries (domain-specific high-confidence contexts)
|
|
58
|
+
-- Query Pattern: WHERE domain='backend' AND confidence>=0.80 ORDER BY created_at DESC
|
|
59
|
+
-- Expected Impact: Single index satisfies entire query without table access
|
|
60
|
+
-- ----------------------------------------------------------------------------
|
|
61
|
+
|
|
62
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_domain_conf_date
|
|
63
|
+
ON context_reflections(
|
|
64
|
+
json_extract(metadata, '$.domain'),
|
|
65
|
+
confidence,
|
|
66
|
+
created_at DESC
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
-- ----------------------------------------------------------------------------
|
|
70
|
+
-- Composite Index 2: Confidence + Recency
|
|
71
|
+
-- ----------------------------------------------------------------------------
|
|
72
|
+
-- Purpose: Fast retrieval of recent high-quality contexts
|
|
73
|
+
-- Query Pattern: WHERE confidence>=0.90 AND created_at>=date(...) ORDER BY confidence DESC
|
|
74
|
+
-- Expected Impact: Covering index for quality-filtered chronological queries
|
|
75
|
+
-- ----------------------------------------------------------------------------
|
|
76
|
+
|
|
77
|
+
CREATE INDEX IF NOT EXISTS idx_reflections_conf_date
|
|
78
|
+
ON context_reflections(
|
|
79
|
+
confidence DESC,
|
|
80
|
+
created_at DESC
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
-- ============================================================================
|
|
84
|
+
-- EXPLAIN QUERY PLAN EXAMPLES
|
|
85
|
+
-- ============================================================================
|
|
86
|
+
-- The following queries demonstrate index usage for common access patterns
|
|
87
|
+
-- Run these with EXPLAIN QUERY PLAN to verify optimization
|
|
88
|
+
-- ============================================================================
|
|
89
|
+
|
|
90
|
+
-- Query 1: Tag-based search
|
|
91
|
+
-- Expected: SEARCH context_reflections USING INDEX idx_reflections_tags
|
|
92
|
+
-- ----------------------------------------------------------------------------
|
|
93
|
+
-- EXPLAIN QUERY PLAN
|
|
94
|
+
-- SELECT * FROM context_reflections
|
|
95
|
+
-- WHERE json_extract(metadata, '$.tags') LIKE '%authentication%'
|
|
96
|
+
-- ORDER BY created_at DESC LIMIT 10;
|
|
97
|
+
|
|
98
|
+
-- Query 2: Domain + Confidence filtering
|
|
99
|
+
-- Expected: SEARCH context_reflections USING INDEX idx_reflections_domain_conf_date
|
|
100
|
+
-- ----------------------------------------------------------------------------
|
|
101
|
+
-- EXPLAIN QUERY PLAN
|
|
102
|
+
-- SELECT * FROM context_reflections
|
|
103
|
+
-- WHERE json_extract(metadata, '$.domain') = 'backend'
|
|
104
|
+
-- AND confidence >= 0.80
|
|
105
|
+
-- ORDER BY created_at DESC;
|
|
106
|
+
|
|
107
|
+
-- Query 3: Recent high-confidence contexts
|
|
108
|
+
-- Expected: SEARCH context_reflections USING INDEX idx_reflections_conf_date
|
|
109
|
+
-- ----------------------------------------------------------------------------
|
|
110
|
+
-- EXPLAIN QUERY PLAN
|
|
111
|
+
-- SELECT * FROM context_reflections
|
|
112
|
+
-- WHERE confidence >= 0.90
|
|
113
|
+
-- AND created_at >= date('now', '-30 days')
|
|
114
|
+
-- ORDER BY confidence DESC;
|
|
115
|
+
|
|
116
|
+
-- Query 4: Multi-tag search with confidence threshold
|
|
117
|
+
-- Expected: Uses idx_reflections_tags + idx_reflections_confidence
|
|
118
|
+
-- ----------------------------------------------------------------------------
|
|
119
|
+
-- EXPLAIN QUERY PLAN
|
|
120
|
+
-- SELECT
|
|
121
|
+
-- id,
|
|
122
|
+
-- json_extract(metadata, '$.tags') as tags,
|
|
123
|
+
-- confidence,
|
|
124
|
+
-- created_at
|
|
125
|
+
-- FROM context_reflections
|
|
126
|
+
-- WHERE json_extract(metadata, '$.tags') LIKE '%redis%'
|
|
127
|
+
-- AND confidence >= 0.85
|
|
128
|
+
-- ORDER BY created_at DESC
|
|
129
|
+
-- LIMIT 20;
|
|
130
|
+
|
|
131
|
+
-- ============================================================================
|
|
132
|
+
-- INDEX MAINTENANCE NOTES
|
|
133
|
+
-- ============================================================================
|
|
134
|
+
-- 1. SQLite auto-maintains indexes on INSERT/UPDATE/DELETE
|
|
135
|
+
-- 2. VACUUM command can rebuild indexes if fragmented
|
|
136
|
+
-- 3. ANALYZE command updates index statistics for query optimizer
|
|
137
|
+
-- 4. JSON indexes require SQLite 3.9.0+ (check with: SELECT sqlite_version();)
|
|
138
|
+
-- 5. Expression indexes add ~20% overhead to write operations
|
|
139
|
+
-- ============================================================================
|
|
140
|
+
|
|
141
|
+
-- Recommended maintenance schedule:
|
|
142
|
+
-- - Run ANALYZE weekly if > 10,000 reflections
|
|
143
|
+
-- - Run VACUUM monthly to reclaim disk space
|
|
144
|
+
-- - Monitor query performance with EXPLAIN QUERY PLAN
|
|
145
|
+
|
|
146
|
+
-- ============================================================================
|
|
147
|
+
-- PERFORMANCE EXPECTATIONS
|
|
148
|
+
-- ============================================================================
|
|
149
|
+
-- Without Indexes:
|
|
150
|
+
-- 1,000 reflections: ~50-200ms per query (full table scan)
|
|
151
|
+
-- 10,000 reflections: ~500ms-2s per query
|
|
152
|
+
-- 100,000 reflections: ~5-20s per query
|
|
153
|
+
--
|
|
154
|
+
-- With Indexes:
|
|
155
|
+
-- 1,000 reflections: ~5-20ms per query (index seek)
|
|
156
|
+
-- 10,000 reflections: ~10-50ms per query
|
|
157
|
+
-- 100,000 reflections: ~20-100ms per query
|
|
158
|
+
--
|
|
159
|
+
-- Target Achieved: < 100ms with 1000+ reflections ✓
|
|
160
|
+
-- ============================================================================
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
##############################################################################
|
|
4
|
+
# ACE Context Curation Wrapper
|
|
5
|
+
# Merges and curates multiple contexts from different sources
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# ./invoke-context-curate.sh --contexts <file1,file2,...> [OPTIONS]
|
|
9
|
+
#
|
|
10
|
+
# Arguments:
|
|
11
|
+
# --contexts Comma-separated list of context files (required)
|
|
12
|
+
# --strategy Curation strategy: simple, priority-weighted, consensus-weighted
|
|
13
|
+
# --output Output file path (optional, default: stdout)
|
|
14
|
+
# --memory-path SQLite memory path (optional)
|
|
15
|
+
##############################################################################
|
|
16
|
+
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
# Default values
|
|
20
|
+
CONTEXTS=""
|
|
21
|
+
STRATEGY="simple"
|
|
22
|
+
OUTPUT=""
|
|
23
|
+
MEMORY_PATH="${ACE_MEMORY_PATH:-./.artifacts/database/swarm-memory.db}"
|
|
24
|
+
|
|
25
|
+
# Parse arguments
|
|
26
|
+
while [[ $# -gt 0 ]]; do
|
|
27
|
+
case $1 in
|
|
28
|
+
--contexts)
|
|
29
|
+
CONTEXTS="$2"
|
|
30
|
+
shift 2
|
|
31
|
+
;;
|
|
32
|
+
--strategy)
|
|
33
|
+
STRATEGY="$2"
|
|
34
|
+
shift 2
|
|
35
|
+
;;
|
|
36
|
+
--output)
|
|
37
|
+
OUTPUT="$2"
|
|
38
|
+
shift 2
|
|
39
|
+
;;
|
|
40
|
+
--memory-path)
|
|
41
|
+
MEMORY_PATH="$2"
|
|
42
|
+
shift 2
|
|
43
|
+
;;
|
|
44
|
+
*)
|
|
45
|
+
echo "Unknown option: $1"
|
|
46
|
+
exit 1
|
|
47
|
+
;;
|
|
48
|
+
esac
|
|
49
|
+
done
|
|
50
|
+
|
|
51
|
+
# Validation
|
|
52
|
+
if [ -z "$CONTEXTS" ]; then
|
|
53
|
+
echo "Error: --contexts is required"
|
|
54
|
+
echo "Usage: $0 --contexts 'file1.json,file2.json' [OPTIONS]"
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
# Validate all context files exist
|
|
59
|
+
IFS=',' read -ra CONTEXT_FILES <<< "$CONTEXTS"
|
|
60
|
+
for file in "${CONTEXT_FILES[@]}"; do
|
|
61
|
+
if [ ! -f "$file" ]; then
|
|
62
|
+
echo "Error: Context file not found: $file"
|
|
63
|
+
exit 1
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Validate JSON
|
|
67
|
+
if ! jq . "$file" > /dev/null 2>&1; then
|
|
68
|
+
echo "Error: Invalid JSON in file: $file"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
done
|
|
72
|
+
|
|
73
|
+
# Get project root
|
|
74
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
75
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
|
|
76
|
+
|
|
77
|
+
# Create Node.js runner script
|
|
78
|
+
RUNNER_SCRIPT=$(mktemp --suffix=.mjs)
|
|
79
|
+
trap "rm -f $RUNNER_SCRIPT" EXIT
|
|
80
|
+
|
|
81
|
+
cat > "$RUNNER_SCRIPT" << EOF
|
|
82
|
+
import ACECurator from '${PROJECT_ROOT}/dist/ace/ace-curator.js';
|
|
83
|
+
import { readFileSync } from 'fs';
|
|
84
|
+
|
|
85
|
+
const contextFiles = process.argv[2].split(',');
|
|
86
|
+
const strategy = process.argv[3];
|
|
87
|
+
const memoryPath = process.argv[4];
|
|
88
|
+
|
|
89
|
+
const curator = new ACECurator({}, memoryPath);
|
|
90
|
+
|
|
91
|
+
// Load all contexts
|
|
92
|
+
const contexts = contextFiles.map(file => JSON.parse(readFileSync(file.trim(), 'utf-8')));
|
|
93
|
+
|
|
94
|
+
// Strategy implementations
|
|
95
|
+
function simpleMerge(contexts) {
|
|
96
|
+
return contexts.reduce((merged, ctx) => ({ ...merged, ...ctx }), {});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function priorityWeightedMerge(contexts) {
|
|
100
|
+
// Sort by priority (if available) and merge
|
|
101
|
+
const sorted = contexts.sort((a, b) => {
|
|
102
|
+
const priorityA = a.priority ?? 0;
|
|
103
|
+
const priorityB = b.priority ?? 0;
|
|
104
|
+
return priorityB - priorityA;
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
return sorted.reduce((merged, ctx) => {
|
|
108
|
+
return deepMerge(merged, ctx);
|
|
109
|
+
}, {});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function consensusWeightedMerge(contexts) {
|
|
113
|
+
// Weight contexts by confidence scores
|
|
114
|
+
const weighted = contexts.map(ctx => {
|
|
115
|
+
const confidence = ctx.confidence ?? 1.0;
|
|
116
|
+
|
|
117
|
+
// Apply confidence weighting to all numeric values
|
|
118
|
+
return Object.entries(ctx).reduce((acc, [key, value]) => {
|
|
119
|
+
if (typeof value === 'number') {
|
|
120
|
+
acc[key] = value * confidence;
|
|
121
|
+
} else {
|
|
122
|
+
acc[key] = value;
|
|
123
|
+
}
|
|
124
|
+
return acc;
|
|
125
|
+
}, {});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Merge weighted contexts
|
|
129
|
+
return weighted.reduce((merged, ctx) => deepMerge(merged, ctx), {});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function deepMerge(target, source) {
|
|
133
|
+
const result = { ...target };
|
|
134
|
+
|
|
135
|
+
for (const key in source) {
|
|
136
|
+
if (source.hasOwnProperty(key)) {
|
|
137
|
+
if (
|
|
138
|
+
typeof source[key] === 'object' &&
|
|
139
|
+
source[key] !== null &&
|
|
140
|
+
!Array.isArray(source[key])
|
|
141
|
+
) {
|
|
142
|
+
result[key] = deepMerge(result[key] || {}, source[key]);
|
|
143
|
+
} else if (Array.isArray(source[key])) {
|
|
144
|
+
// Merge arrays by concatenating and deduplicating
|
|
145
|
+
result[key] = [...new Set([...(result[key] || []), ...source[key]])];
|
|
146
|
+
} else {
|
|
147
|
+
result[key] = source[key];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Execute curation strategy
|
|
156
|
+
let curatedContext;
|
|
157
|
+
|
|
158
|
+
switch (strategy) {
|
|
159
|
+
case 'simple':
|
|
160
|
+
curatedContext = simpleMerge(contexts);
|
|
161
|
+
break;
|
|
162
|
+
case 'priority-weighted':
|
|
163
|
+
curatedContext = priorityWeightedMerge(contexts);
|
|
164
|
+
break;
|
|
165
|
+
case 'consensus-weighted':
|
|
166
|
+
curatedContext = consensusWeightedMerge(contexts);
|
|
167
|
+
break;
|
|
168
|
+
default:
|
|
169
|
+
throw new Error(`Unknown curation strategy: ${strategy}`);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Add curation metadata
|
|
173
|
+
const result = {
|
|
174
|
+
curated: true,
|
|
175
|
+
strategy,
|
|
176
|
+
sourceCount: contexts.length,
|
|
177
|
+
curatedAt: Date.now(),
|
|
178
|
+
context: curatedContext
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
console.log(JSON.stringify(result, null, 2));
|
|
182
|
+
EOF
|
|
183
|
+
|
|
184
|
+
# Execute curation
|
|
185
|
+
cd "$PROJECT_ROOT"
|
|
186
|
+
|
|
187
|
+
if [ -n "$OUTPUT" ]; then
|
|
188
|
+
node "$RUNNER_SCRIPT" "$CONTEXTS" "$STRATEGY" "$MEMORY_PATH" > "$OUTPUT"
|
|
189
|
+
echo "Curated context saved to: $OUTPUT" >&2
|
|
190
|
+
else
|
|
191
|
+
node "$RUNNER_SCRIPT" "$CONTEXTS" "$STRATEGY" "$MEMORY_PATH"
|
|
192
|
+
fi
|