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.
Files changed (349) hide show
  1. package/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
  2. package/.claude/agents/cfn-dev-team/README.md +116 -0
  3. package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
  4. package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
  5. package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
  6. package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
  7. package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
  8. package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
  9. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
  10. package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
  11. package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
  12. package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
  13. package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
  14. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
  15. package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
  16. package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
  17. package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
  18. package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
  19. package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
  20. package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
  21. package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
  22. package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
  23. package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
  24. package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
  25. package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
  26. package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
  27. package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
  28. package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
  29. package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
  30. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
  31. package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
  32. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
  33. package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
  34. package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
  35. package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
  36. package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
  37. package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
  38. package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
  39. package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
  40. package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
  41. package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
  42. package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
  43. package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
  44. package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
  45. package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
  46. package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
  47. package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
  48. package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
  49. package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
  50. package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
  51. package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
  52. package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
  53. package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
  54. package/.claude/commands/cfn/cfn-loop.md +168 -7
  55. package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
  56. package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
  57. package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
  58. package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
  59. package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
  60. package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
  61. package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
  62. package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
  63. package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
  64. package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
  65. package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
  66. package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
  67. package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
  68. package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
  69. package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
  70. package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
  71. package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
  72. package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
  73. package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
  74. package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
  75. package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
  76. package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
  77. package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
  78. package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
  79. package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
  80. package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
  81. package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
  82. package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
  83. package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
  84. package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
  85. package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
  86. package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
  87. package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
  88. package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
  89. package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
  90. package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
  91. package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
  92. package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
  93. package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
  94. package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
  95. package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
  96. package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
  97. package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
  98. package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
  99. package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
  100. package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
  101. package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
  102. package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
  103. package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
  104. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
  105. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
  106. package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
  107. package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
  108. package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
  109. package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
  110. package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
  111. package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
  112. package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
  113. package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
  114. package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
  115. package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
  116. package/.claude/skills/cfn-config-management/SKILL.md +34 -0
  117. package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
  118. package/.claude/skills/cfn-config-management/config.json +32 -0
  119. package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
  120. package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
  121. package/.claude/skills/cfn-event-bus/config.json +111 -0
  122. package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
  123. package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
  124. package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
  125. package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
  126. package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
  127. package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
  128. package/.claude/skills/cfn-fleet-manager/config.json +60 -0
  129. package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
  130. package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
  131. package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
  132. package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
  133. package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
  134. package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
  135. package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
  136. package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
  137. package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
  138. package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
  139. package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
  140. package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
  141. package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
  142. package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
  143. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
  144. package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
  145. package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
  146. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  147. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  148. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  149. package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
  150. package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
  151. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  152. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  153. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  154. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
  155. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  156. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  157. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  158. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
  159. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
  160. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  161. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  162. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  163. package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
  164. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
  165. package/.claude/skills/cfn-loop-validation/config.json +161 -0
  166. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
  167. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
  168. package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
  169. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
  170. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
  171. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
  172. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
  173. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
  174. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
  175. package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
  176. package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
  177. package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
  178. package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
  179. package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
  180. package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
  181. package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
  182. package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
  183. package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
  184. package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
  185. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
  186. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
  187. package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
  188. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
  189. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
  190. package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
  191. package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
  193. package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
  194. package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
  195. package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
  196. package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
  197. package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
  198. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
  199. package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
  200. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
  201. package/.claude/skills/cfn-redis-coordination/config.json +61 -0
  202. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  203. package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
  204. package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
  205. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
  206. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
  207. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
  208. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
  209. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
  210. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
  211. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
  212. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
  213. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
  214. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
  215. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
  216. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
  217. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
  218. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
  219. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
  220. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
  221. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
  222. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
  223. package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
  224. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
  225. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
  226. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
  227. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
  228. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
  229. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
  230. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
  231. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
  232. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
  233. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
  234. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
  235. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
  236. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
  237. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  238. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
  239. package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
  240. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
  241. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
  242. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
  243. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
  244. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
  245. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  246. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
  247. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  248. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  249. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  250. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  251. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  252. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  253. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  254. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  255. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  256. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  257. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
  258. package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
  259. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
  260. package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
  261. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
  262. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
  263. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
  264. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
  265. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
  266. package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
  267. package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
  268. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
  269. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
  270. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
  271. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
  272. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
  273. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
  274. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
  275. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
  276. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
  277. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
  278. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
  279. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
  280. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
  281. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
  282. package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  283. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
  284. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  285. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
  286. package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
  287. package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
  288. package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
  289. package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
  290. package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
  291. package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
  292. package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
  293. package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
  294. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
  295. package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
  296. package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
  297. package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
  298. package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
  299. package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
  300. package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
  301. package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
  302. package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
  303. package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
  304. package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
  305. package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
  306. package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
  307. package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
  308. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
  309. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
  310. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
  311. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
  312. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
  313. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
  314. package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
  315. package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
  316. package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
  317. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
  318. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
  319. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
  320. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
  321. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
  322. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
  323. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
  324. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
  325. package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  326. package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
  327. package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
  328. package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
  329. package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
  330. package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
  331. package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
  332. package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
  333. package/README.md +51 -2
  334. package/dist/ace/ace-reflector.js +109 -10
  335. package/dist/ace/ace-reflector.js.map +1 -1
  336. package/dist/cli/agent-executor.js +1 -1
  337. package/dist/cli/agent-executor.js.map +1 -1
  338. package/package.json +43 -7
  339. package/readme/README.md +15 -4
  340. package/scripts/init-project.js +39 -2
  341. package/scripts/run-marketing-tests.sh +43 -0
  342. package/scripts/update_paths.sh +47 -0
  343. package/tools/install-lizard.sh +37 -0
  344. package/tools/simple-complexity.sh +44 -0
  345. package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
  346. package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
  347. package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
  348. /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
  349. /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
@@ -0,0 +1,513 @@
1
+ #!/bin/bash
2
+
3
+ # CFN Loop Timeout Enforcement Testing Skill
4
+ # Validates timeout mechanisms at agent, orchestrator, and system levels
5
+
6
+ set -euo pipefail
7
+
8
+ # Skill configuration
9
+ SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
+ PROJECT_ROOT="$(dirname "$(dirname "$SKILL_DIR")")"
11
+ TASK_ID="${TASK_ID:-test-timeout-enforcement-$(date +%s)}"
12
+ AGENT_ID="${AGENT_ID:-timeout-tester}"
13
+
14
+ # Configuration defaults
15
+ DEFAULT_TIMEOUT=30
16
+ TEST_TIMEOUT=5
17
+ CLEANUP_DELAY=2
18
+
19
+ # Colors and logging
20
+ RED='\033[0;31m'
21
+ GREEN='\033[0;32m'
22
+ YELLOW='\033[1;33m'
23
+ BLUE='\033[0;34m'
24
+ NC='\033[0m'
25
+
26
+ log() {
27
+ echo "$(date '+%Y-%m-%d %H:%M:%S') [$$] $*"
28
+ }
29
+
30
+ log_info() {
31
+ echo -e "${BLUE}[INFO]${NC} $*"
32
+ }
33
+
34
+ log_success() {
35
+ echo -e "${GREEN}[PASS]${NC} $*"
36
+ }
37
+
38
+ log_error() {
39
+ echo -e "${RED}[FAIL]${NC} $*"
40
+ }
41
+
42
+ log_warning() {
43
+ echo -e "${YELLOW}[WARN]${NC} $*"
44
+ }
45
+
46
+ # Redis connection check
47
+ check_redis() {
48
+ if ! redis-cli ping >/dev/null 2>&1; then
49
+ log_warning "Redis not available - some tests will be skipped"
50
+ return 1
51
+ fi
52
+ return 0
53
+ }
54
+
55
+ # Cleanup Redis test data
56
+ cleanup_redis_data() {
57
+ if check_redis; then
58
+ redis-cli --scan --pattern "swarm:${TASK_ID}:*" | xargs -r redis-cli del >/dev/null 2>&1 || true
59
+ redis-cli --scan --pattern "timeout-test:*" | xargs -r redis-cli del >/dev/null 2>&1 || true
60
+ fi
61
+ }
62
+
63
+ # Test 1: Agent process timeout enforcement
64
+ test_agent_process_timeout() {
65
+ log_info "Testing agent process timeout enforcement..."
66
+
67
+ local test_agent_id="timeout-agent-$(date +%s)"
68
+ local timeout_duration=$TEST_TIMEOUT
69
+ local test_file="/tmp/agent-timeout-test-${test_agent_id}.tmp"
70
+
71
+ # Create a test agent that runs longer than timeout
72
+ (
73
+ echo "Agent $test_agent_id started" > "$test_file"
74
+ for i in {1..10}; do
75
+ echo "Agent $test_agent_id working... step $i" >> "$test_file"
76
+ sleep 1
77
+ done
78
+ echo "Agent $test_agent_id completed" >> "$test_file"
79
+ ) &
80
+
81
+ local agent_pid=$!
82
+ local timeout_occurred=false
83
+
84
+ # Monitor agent with timeout
85
+ local elapsed=0
86
+ while kill -0 "$agent_pid" 2>/dev/null && [[ $elapsed -lt $timeout_duration ]]; do
87
+ sleep 1
88
+ ((elapsed++))
89
+ done
90
+
91
+ # Check if agent should be terminated
92
+ if kill -0 "$agent_pid" 2>/dev/null; then
93
+ timeout_occurred=true
94
+ log_info "Agent timeout reached, terminating process..."
95
+
96
+ # Graceful termination
97
+ kill -TERM "$agent_pid" 2>/dev/null || true
98
+ sleep 1
99
+
100
+ # Force termination if still running
101
+ if kill -0 "$agent_pid" 2>/dev/null; then
102
+ kill -KILL "$agent_pid" 2>/dev/null || true
103
+ log_info "Force terminated agent process"
104
+ fi
105
+ fi
106
+
107
+ # Verify results
108
+ if $timeout_occurred; then
109
+ # Check that agent was interrupted
110
+ local final_line
111
+ final_line=$(tail -1 "$test_file" 2>/dev/null || echo "")
112
+
113
+ if [[ "$final_line" != *"completed"* ]]; then
114
+ log_success "Agent timeout enforcement working correctly"
115
+ rm -f "$test_file"
116
+ return 0
117
+ else
118
+ log_error "Agent completed despite timeout"
119
+ rm -f "$test_file"
120
+ return 1
121
+ fi
122
+ else
123
+ log_error "Agent completed before timeout (test configuration issue)"
124
+ rm -f "$test_file"
125
+ return 1
126
+ fi
127
+ }
128
+
129
+ # Test 2: Orchestrator timeout coordination
130
+ test_orchestrator_timeout_coordination() {
131
+ log_info "Testing orchestrator timeout coordination..."
132
+
133
+ if ! check_redis; then
134
+ log_warning "Skipping orchestrator timeout test - Redis not available"
135
+ return 0
136
+ fi
137
+
138
+ local test_task_id="orchestrator-timeout-$(date +%s)"
139
+ local test_agent_id="test-agent-${test_task_id}"
140
+ local timeout_duration=$TEST_TIMEOUT
141
+
142
+ # Simulate orchestrator spawning an agent
143
+ (
144
+ # Simulate agent work that times out
145
+ echo "Agent $test_agent_id starting work"
146
+ redis-cli set "swarm:${test_task_id}:${test_agent_id}:status" "working" >/dev/null
147
+
148
+ for i in {1..10}; do
149
+ redis-cli set "swarm:${test_task_id}:${test_agent_id}:progress" "$i/10" >/dev/null
150
+ sleep 1
151
+ done
152
+
153
+ redis-cli set "swarm:${test_task_id}:${test_agent_id}:status" "completed" >/dev/null
154
+ ) &
155
+
156
+ local orchestrator_pid=$!
157
+ local timeout_occurred=false
158
+
159
+ # Simulate orchestrator timeout monitoring
160
+ local elapsed=0
161
+ while kill -0 "$orchestrator_pid" 2>/dev/null && [[ $elapsed -lt $timeout_duration ]]; do
162
+ sleep 1
163
+ ((elapsed++))
164
+
165
+ # Check agent status
166
+ local agent_status
167
+ agent_status=$(redis-cli get "swarm:${test_task_id}:${test_agent_id}:status" 2>/dev/null || echo "")
168
+
169
+ if [[ -n "$agent_status" ]]; then
170
+ log_info "Agent status: $agent_status"
171
+ fi
172
+ done
173
+
174
+ # Timeout handling
175
+ if kill -0 "$orchestrator_pid" 2>/dev/null; then
176
+ timeout_occurred=true
177
+ log_info "Orchestrator timeout reached, terminating..."
178
+
179
+ kill -TERM "$orchestrator_pid" 2>/dev/null || true
180
+ sleep 1
181
+ kill -KILL "$orchestrator_pid" 2>/dev/null || true
182
+ fi
183
+
184
+ # Cleanup Redis
185
+ redis-cli del "swarm:${test_task_id}:${test_agent_id}:status" >/dev/null 2>&1 || true
186
+ redis-cli del "swarm:${test_task_id}:${test_agent_id}:progress" >/dev/null 2>&1 || true
187
+
188
+ if $timeout_occurred; then
189
+ log_success "Orchestrator timeout coordination working correctly"
190
+ return 0
191
+ else
192
+ log_error "Orchestrator timeout coordination failed"
193
+ return 1
194
+ fi
195
+ }
196
+
197
+ # Test 3: Multiple agent timeout handling
198
+ test_multiple_agent_timeout() {
199
+ log_info "Testing multiple agent timeout handling..."
200
+
201
+ local agent_count=3
202
+ local timeout_duration=$TEST_TIMEOUT
203
+ local agent_pids=()
204
+
205
+ # Spawn multiple agents
206
+ for i in $(seq 1 $agent_count); do
207
+ (
208
+ echo "Agent $i starting work"
209
+ for j in {1..10}; do
210
+ echo "Agent $i: step $j"
211
+ sleep 1
212
+ done
213
+ echo "Agent $i completed"
214
+ ) &
215
+ agent_pids+=($!)
216
+ done
217
+
218
+ # Monitor all agents with timeout
219
+ local elapsed=0
220
+ local running_agents=true
221
+
222
+ while $running_agents && [[ $elapsed -lt $timeout_duration ]]; do
223
+ running_agents=false
224
+ for pid in "${agent_pids[@]}"; do
225
+ if kill -0 "$pid" 2>/dev/null; then
226
+ running_agents=true
227
+ break
228
+ fi
229
+ done
230
+ sleep 1
231
+ ((elapsed++))
232
+ done
233
+
234
+ # Terminate remaining agents
235
+ local terminated_count=0
236
+ for pid in "${agent_pids[@]}"; do
237
+ if kill -0 "$pid" 2>/dev/null; then
238
+ kill -TERM "$pid" 2>/dev/null || true
239
+ sleep 1
240
+ if kill -0 "$pid" 2>/dev/null; then
241
+ kill -KILL "$pid" 2>/dev/null || true
242
+ fi
243
+ ((terminated_count++))
244
+ fi
245
+ done
246
+
247
+ if [[ $terminated_count -gt 0 ]]; then
248
+ log_success "Multiple agent timeout handling: $terminated_count/$agent_count agents timed out"
249
+ return 0
250
+ else
251
+ log_error "No agents required timeout (test configuration issue)"
252
+ return 1
253
+ fi
254
+ }
255
+
256
+ # Test 4: Redis cleanup after timeout
257
+ test_redis_cleanup_after_timeout() {
258
+ log_info "Testing Redis cleanup after timeout..."
259
+
260
+ if ! check_redis; then
261
+ log_warning "Skipping Redis cleanup test - Redis not available"
262
+ return 0
263
+ fi
264
+
265
+ local test_task_id="cleanup-test-$(date +%s)"
266
+ local test_agent_id="cleanup-agent"
267
+
268
+ # Create test Redis data
269
+ redis-cli set "swarm:${test_task_id}:${test_agent_id}:status" "working" >/dev/null
270
+ redis-cli set "swarm:${test_task_id}:${test_agent_id}:confidence" "0.85" >/dev/null
271
+ redis-cli set "swarm:${test_task_id}:gate-passed" "true" >/dev/null
272
+ redis-cli set "swarm:${test_task_id}:iteration" "1" >/dev/null
273
+
274
+ # Verify data was created
275
+ local key_count
276
+ key_count=$(redis-cli --scan --pattern "swarm:${test_task_id}:*" | wc -l)
277
+
278
+ if [[ $key_count -eq 0 ]]; then
279
+ log_error "Failed to create test Redis data"
280
+ return 1
281
+ fi
282
+
283
+ # Simulate timeout scenario
284
+ (
285
+ # Simulate agent that times out
286
+ echo "Agent starting work"
287
+ sleep 10 # Will be killed by timeout
288
+ echo "Agent completed"
289
+ ) &
290
+
291
+ local agent_pid=$!
292
+
293
+ # Simulate timeout
294
+ sleep 2
295
+ kill -TERM "$agent_pid" 2>/dev/null || true
296
+
297
+ # Perform cleanup (simulating orchestrator behavior)
298
+ redis-cli --scan --pattern "swarm:${test_task_id}:*" | xargs -r redis-cli del >/dev/null
299
+
300
+ # Verify cleanup
301
+ local remaining_keys
302
+ remaining_keys=$(redis-cli --scan --pattern "swarm:${test_task_id}:*" | wc -l)
303
+
304
+ if [[ $remaining_keys -eq 0 ]]; then
305
+ log_success "Redis cleanup after timeout working correctly"
306
+ return 0
307
+ else
308
+ log_error "Redis cleanup failed: $remaining_keys keys remaining"
309
+ return 1
310
+ fi
311
+ }
312
+
313
+ # Test 5: Timeout escalation (SIGTERM → SIGKILL)
314
+ test_timeout_escalation() {
315
+ log_info "Testing timeout escalation (SIGTERM → SIGKILL)..."
316
+
317
+ local test_pid
318
+ local timeout_grace=2
319
+ local timeout_force=5
320
+
321
+ # Create a process that ignores SIGTERM
322
+ (
323
+ # Ignore SIGTERM
324
+ trap '' TERM
325
+ echo "Ignoring SIGTERM, will only respond to SIGKILL"
326
+ while true; do
327
+ echo "Still running..."
328
+ sleep 1
329
+ done
330
+ ) &
331
+
332
+ test_pid=$!
333
+
334
+ # First, try SIGTERM
335
+ kill -TERM "$test_pid" 2>/dev/null || true
336
+ sleep $timeout_grace
337
+
338
+ # Check if still running
339
+ if kill -0 "$test_pid" 2>/dev/null; then
340
+ log_info "SIGTERM ignored, escalating to SIGKILL"
341
+ kill -KILL "$test_pid" 2>/dev/null || true
342
+ sleep 1
343
+
344
+ if ! kill -0 "$test_pid" 2>/dev/null; then
345
+ log_success "Timeout escalation (SIGTERM → SIGKILL) working correctly"
346
+ return 0
347
+ else
348
+ log_error "SIGKILL failed to terminate process"
349
+ return 1
350
+ fi
351
+ else
352
+ log_error "Process responded to SIGTERM (test configuration issue)"
353
+ return 1
354
+ fi
355
+ }
356
+
357
+ # Test 6: Timeout in different execution contexts
358
+ test_timeout_contexts() {
359
+ log_info "Testing timeout in different execution contexts..."
360
+
361
+ local test_results=()
362
+
363
+ # Test 1: Background process timeout
364
+ (
365
+ sleep 10
366
+ ) &
367
+ local bg_pid=$!
368
+
369
+ if timeout 2 wait "$bg_pid"; then
370
+ test_results+=("FAIL: Background process should have timed out")
371
+ else
372
+ test_results+=("PASS: Background process timed out correctly")
373
+ fi
374
+
375
+ # Test 2: Subshell timeout
376
+ if timeout 2 bash -c 'sleep 5; echo "completed"'; then
377
+ test_results+=("FAIL: Subshell should have timed out")
378
+ else
379
+ test_results+=("PASS: Subshell timed out correctly")
380
+ fi
381
+
382
+ # Test 3: Command timeout
383
+ if timeout 2 sleep 5; then
384
+ test_results+=("FAIL: Command should have timed out")
385
+ else
386
+ test_results+=("PASS: Command timed out correctly")
387
+ fi
388
+
389
+ # Test 4: Pipeline timeout
390
+ if timeout 2 bash -c 'sleep 5 | cat'; then
391
+ test_results+=("FAIL: Pipeline should have timed out")
392
+ else
393
+ test_results+=("PASS: Pipeline timed out correctly")
394
+ fi
395
+
396
+ # Count results
397
+ local pass_count=0
398
+ local total_count=${#test_results[@]}
399
+
400
+ for result in "${test_results[@]}"; do
401
+ if [[ "$result" == PASS* ]]; then
402
+ ((pass_count++))
403
+ log_success "$result"
404
+ else
405
+ log_error "$result"
406
+ fi
407
+ done
408
+
409
+ if [[ $pass_count -eq $total_count ]]; then
410
+ log_success "All timeout contexts working correctly ($pass_count/$total_count)"
411
+ return 0
412
+ else
413
+ log_error "Some timeout contexts failed ($pass_count/$total_count)"
414
+ return 1
415
+ fi
416
+ }
417
+
418
+ # Main test execution
419
+ main() {
420
+ log_info "Starting CFN Loop Timeout Enforcement Testing"
421
+ log_info "Task ID: $TASK_ID"
422
+ log_info "Agent ID: $AGENT_ID"
423
+
424
+ local tests_passed=0
425
+ local tests_total=6
426
+
427
+ # Run all timeout enforcement tests
428
+ if test_agent_process_timeout; then ((tests_passed++)); fi
429
+ if test_orchestrator_timeout_coordination; then ((tests_passed++)); fi
430
+ if test_multiple_agent_timeout; then ((tests_passed++)); fi
431
+ if test_redis_cleanup_after_timeout; then ((tests_passed++)); fi
432
+ if test_timeout_escalation; then ((tests_passed++)); fi
433
+ if test_timeout_contexts; then ((tests_passed++)); fi
434
+
435
+ # Cleanup
436
+ cleanup_redis_data
437
+
438
+ # Print summary
439
+ echo ""
440
+ log_info "Timeout Enforcement Test Summary:"
441
+ log_info "Tests passed: $tests_passed/$tests_total"
442
+
443
+ if [[ $tests_passed -eq $tests_total ]]; then
444
+ log_success "🎉 All timeout enforcement tests passed!"
445
+ return 0
446
+ else
447
+ log_error "❌ Some timeout enforcement tests failed!"
448
+ return 1
449
+ fi
450
+ }
451
+
452
+ # Help function
453
+ show_help() {
454
+ cat << EOF
455
+ CFN Loop Timeout Enforcement Testing Skill
456
+
457
+ Tests timeout mechanisms at multiple levels:
458
+ - Agent process timeout enforcement
459
+ - Orchestrator timeout coordination
460
+ - Multiple agent timeout handling
461
+ - Redis cleanup after timeout
462
+ - Timeout escalation (SIGTERM → SIGKILL)
463
+ - Timeout in different execution contexts
464
+
465
+ Usage: $0 [OPTIONS]
466
+
467
+ Options:
468
+ --task-id ID Custom task ID (default: auto-generated)
469
+ --agent-id ID Custom agent ID (default: timeout-tester)
470
+ --timeout SECONDS Test timeout duration (default: 5)
471
+ --help Show this help message
472
+
473
+ Environment Variables:
474
+ TASK_ID Override task ID
475
+ AGENT_ID Override agent ID
476
+
477
+ Examples:
478
+ $0
479
+ $0 --task-id custom-task-123 --timeout 10
480
+ TASK_ID=custom-task $0 --agent-id custom-agent
481
+
482
+ EOF
483
+ }
484
+
485
+ # Parse arguments
486
+ while [[ $# -gt 0 ]]; do
487
+ case $1 in
488
+ --task-id)
489
+ TASK_ID="$2"
490
+ shift 2
491
+ ;;
492
+ --agent-id)
493
+ AGENT_ID="$2"
494
+ shift 2
495
+ ;;
496
+ --timeout)
497
+ TEST_TIMEOUT="$2"
498
+ shift 2
499
+ ;;
500
+ --help)
501
+ show_help
502
+ exit 0
503
+ ;;
504
+ *)
505
+ log_error "Unknown option: $1"
506
+ show_help
507
+ exit 1
508
+ ;;
509
+ esac
510
+ done
511
+
512
+ # Run main function
513
+ main "$@"
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ # Convert files to Unix line endings
4
+ convert_file() {
5
+ local file="$1"
6
+ # Remove carriage returns and write back to the same file
7
+ tr -d '\r' < "$file" > "$file.tmp"
8
+ mv "$file.tmp" "$file"
9
+ chmod +x "$file"
10
+ }
11
+
12
+ # Convert files in the current directory
13
+ for file in run-tests.sh test-primitives.sh test-utils.sh; do
14
+ convert_file "$file"
15
+ done
@@ -0,0 +1,102 @@
1
+ #!/bin/bash
2
+ # DLQ Functionality Test Suite
3
+ # Validates Dead Letter Queue write, expiration, and query mechanisms
4
+
5
+ set -euo pipefail
6
+
7
+ # Source common test utilities
8
+ source "$(dirname "$0")/test-utils.sh"
9
+
10
+ # Generate test configuration
11
+ generate_test_config() {
12
+ local config_file="/tmp/dlq-test-config.json"
13
+ cat > "$config_file" << EOF
14
+ {
15
+ "dlq_max_retries": 3,
16
+ "dlq_ttl_days": 7,
17
+ "dlq_write_mode": "strict",
18
+ "redis_connection": {
19
+ "host": "localhost",
20
+ "port": 6379
21
+ }
22
+ }
23
+ EOF
24
+ echo "$config_file"
25
+ }
26
+
27
+ # Test DLQ write after max retries
28
+ test_dlq_write() {
29
+ local config_file=$(generate_test_config)
30
+ local task_id="test-task-$(date +%s)"
31
+ local agent_id="tester-dlq"
32
+ local error_details='{"code": 500, "message": "Test Error"}'
33
+
34
+ # Simulate max retry failure
35
+ local result=$(./.claude/skills/cfn-redis-coordination/write-to-dlq.sh \
36
+ --task-id "$task_id" \
37
+ --agent-id "$agent_id" \
38
+ --error "$error_details" \
39
+ --config "$config_file")
40
+
41
+ assert_not_empty "$result" "DLQ write failed"
42
+
43
+ # Validate DLQ entry structure
44
+ local dlq_entry=$(redis-cli get "dlq:$task_id:$agent_id")
45
+ assert_json_valid "$dlq_entry" "Invalid DLQ JSON structure"
46
+
47
+ # Check specific fields
48
+ local extracted_agent_id=$(echo "$dlq_entry" | jq -r '.agent_id')
49
+ assert_equal "$extracted_agent_id" "$agent_id" "Agent ID not preserved in DLQ"
50
+ }
51
+
52
+ # Test TTL expiration
53
+ test_dlq_ttl() {
54
+ local config_file=$(generate_test_config)
55
+ local task_id="ttl-test-$(date +%s)"
56
+ local agent_id="tester-ttl"
57
+ local error_details='{"code": 404, "message": "Resource Not Found"}'
58
+
59
+ # Write to DLQ
60
+ ./.claude/skills/cfn-redis-coordination/write-to-dlq.sh \
61
+ --task-id "$task_id" \
62
+ --agent-id "$agent_id" \
63
+ --error "$error_details" \
64
+ --config "$config_file"
65
+
66
+ # Check TTL (should be close to 7 days)
67
+ local ttl=$(redis-cli ttl "dlq:$task_id:$agent_id")
68
+ assert "[ $ttl -ge 604600 ] && [ $ttl -le 604800 ]" "TTL not set correctly"
69
+ }
70
+
71
+ # Test query-dlq script
72
+ test_dlq_query() {
73
+ # Populate test DLQ entries
74
+ local task_ids=("query-test-1" "query-test-2")
75
+ for task_id in "${task_ids[@]}"; do
76
+ ./.claude/skills/cfn-redis-coordination/write-to-dlq.sh \
77
+ --task-id "$task_id" \
78
+ --agent-id "tester-query" \
79
+ --error '{"code": 503, "message": "Test Query Error"}'
80
+ done
81
+
82
+ # Query DLQ
83
+ local query_result=$(./.claude/skills/cfn-redis-coordination/query-dlq.sh \
84
+ --agent-id "tester-query")
85
+
86
+ assert_not_empty "$query_result" "DLQ query returned no results"
87
+
88
+ # Validate query results contain expected task IDs
89
+ for task_id in "${task_ids[@]}"; do
90
+ assert "echo '$query_result' | grep -q '$task_id'" "Task ID $task_id not found in query results"
91
+ done
92
+ }
93
+
94
+ # Run tests
95
+ main() {
96
+ test_dlq_write
97
+ test_dlq_ttl
98
+ test_dlq_query
99
+ echo "DLQ Functionality Tests: PASSED"
100
+ }
101
+
102
+ main