claude-flow-novice 2.15.3 → 2.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +16 -2
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  36. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  37. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  38. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  39. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  40. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  41. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  42. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  43. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  44. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  45. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  46. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  47. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  48. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  49. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  50. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  51. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  52. package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
  53. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  54. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  57. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  58. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  59. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  60. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  61. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  62. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  63. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  64. package/README.md +116 -475
  65. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  66. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  67. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  68. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  69. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  70. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  71. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  72. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  73. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  74. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  75. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  76. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  77. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  78. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  79. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  80. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  81. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  82. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  83. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  84. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  85. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  86. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  87. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  88. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  89. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  90. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  91. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  92. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  93. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  94. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  95. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  96. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  97. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  98. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  99. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  100. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  101. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  102. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  103. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  104. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  105. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  106. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  107. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  108. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  110. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  111. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  112. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  114. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  115. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  116. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  117. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  118. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  119. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  120. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  121. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  137. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  138. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  139. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  140. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  141. package/claude-assets/commands/switch-api.md +31 -10
  142. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  143. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  144. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  145. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  146. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  147. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
  148. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
  149. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  150. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  151. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  152. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  153. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  154. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  155. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  156. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  157. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  158. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  159. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  160. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  161. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  162. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  163. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  164. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  165. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  166. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  167. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  168. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  169. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  170. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  171. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  172. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  173. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  174. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  175. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  176. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  177. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  178. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  179. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  180. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  181. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  182. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  183. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  184. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  185. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  186. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  187. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  188. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  189. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  190. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  191. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  192. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  193. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
  194. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  195. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  196. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  197. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  198. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  199. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  200. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  201. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  202. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  203. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  204. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  205. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  206. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  207. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  208. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  209. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  210. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  211. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  212. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  213. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  214. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  215. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  216. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  217. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  218. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  219. package/claude-assets/skills/integration/agent-handoff.sh +62 -64
  220. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  221. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  222. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  223. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  224. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  225. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  226. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  227. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  228. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  229. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  230. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  231. package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
  232. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  233. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
  234. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  235. package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
  236. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  237. package/dist/ace/ace-curator.js +10 -2
  238. package/dist/ace/ace-curator.js.map +1 -1
  239. package/dist/ace/ace-generator.js +4 -0
  240. package/dist/ace/ace-generator.js.map +1 -1
  241. package/dist/ace/ace-reflector.js +1 -1
  242. package/dist/ace/ace-reflector.js.map +1 -1
  243. package/dist/ace/context-injection.js +24 -2
  244. package/dist/ace/context-injection.js.map +1 -1
  245. package/dist/agents/agent-loader.js +146 -165
  246. package/dist/agents/agent-loader.js.map +1 -1
  247. package/dist/agents/task-agent-integration.js +1 -1
  248. package/dist/agents/task-agent-integration.js.map +1 -1
  249. package/dist/api/health-endpoints.js +390 -0
  250. package/dist/api/health-endpoints.js.map +1 -0
  251. package/dist/cli/agent-executor.js +4 -1
  252. package/dist/cli/agent-executor.js.map +1 -1
  253. package/dist/cli/agent-prompt-builder.js +89 -1
  254. package/dist/cli/agent-prompt-builder.js.map +1 -1
  255. package/dist/cli/agent-spawn.js +130 -37
  256. package/dist/cli/agent-spawn.js.map +1 -1
  257. package/dist/cli/skill-cache-validator.js +412 -0
  258. package/dist/cli/skill-cache-validator.js.map +1 -0
  259. package/dist/cli/skill-cli.js +991 -0
  260. package/dist/cli/skill-cli.js.map +1 -0
  261. package/dist/cli/skill-execution-logger.js +284 -0
  262. package/dist/cli/skill-execution-logger.js.map +1 -0
  263. package/dist/cli/skill-loader.js +457 -0
  264. package/dist/cli/skill-loader.js.map +1 -0
  265. package/dist/coordination/event-bus.js +2 -2
  266. package/dist/coordination/event-bus.js.map +1 -1
  267. package/dist/coordination/fleet-manager.js +1 -1
  268. package/dist/coordination/fleet-manager.js.map +1 -1
  269. package/dist/coordination/index.js +23 -9
  270. package/dist/coordination/index.js.map +1 -1
  271. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  272. package/dist/db/migration-manager.js +483 -0
  273. package/dist/db/migration-manager.js.map +1 -0
  274. package/dist/db/skills-query.js +535 -0
  275. package/dist/db/skills-query.js.map +1 -0
  276. package/dist/integration/DatabaseHandoff.js +1 -1
  277. package/dist/integration/DatabaseHandoff.js.map +1 -1
  278. package/dist/jobs/edge-case-analyzer.js +367 -0
  279. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  280. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  281. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  282. package/dist/lib/agent-output-parser.js.map +1 -1
  283. package/dist/lib/agent-output-validator.js.map +1 -1
  284. package/dist/lib/agent-workspace.js +281 -0
  285. package/dist/lib/agent-workspace.js.map +1 -0
  286. package/dist/lib/atomic-file-writer.js +377 -0
  287. package/dist/lib/atomic-file-writer.js.map +1 -0
  288. package/dist/lib/backup-manager.js +779 -0
  289. package/dist/lib/backup-manager.js.map +1 -0
  290. package/dist/lib/checkpoint-manager.js +837 -0
  291. package/dist/lib/checkpoint-manager.js.map +1 -0
  292. package/dist/lib/circuit-breaker.js +340 -0
  293. package/dist/lib/circuit-breaker.js.map +1 -0
  294. package/dist/lib/completion-signal-handler.js +243 -0
  295. package/dist/lib/completion-signal-handler.js.map +1 -0
  296. package/dist/lib/config-manager.js +312 -0
  297. package/dist/lib/config-manager.js.map +1 -0
  298. package/dist/lib/config-migrator.js +386 -0
  299. package/dist/lib/config-migrator.js.map +1 -0
  300. package/dist/lib/config-validator.js.map +1 -1
  301. package/dist/lib/correlation-cache.js +311 -0
  302. package/dist/lib/correlation-cache.js.map +1 -0
  303. package/dist/lib/correlation.js +263 -0
  304. package/dist/lib/correlation.js.map +1 -0
  305. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  306. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  307. package/dist/lib/database-service/correlation.js +329 -0
  308. package/dist/lib/database-service/correlation.js.map +1 -0
  309. package/dist/lib/database-service/errors.js +120 -0
  310. package/dist/lib/database-service/errors.js.map +1 -0
  311. package/dist/lib/database-service/index.js +168 -0
  312. package/dist/lib/database-service/index.js.map +1 -0
  313. package/dist/lib/database-service/postgres-adapter.js +526 -0
  314. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  315. package/dist/lib/database-service/redis-adapter.js +360 -0
  316. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  317. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  318. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  319. package/dist/lib/database-service/transaction-manager.js +773 -0
  320. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  321. package/dist/lib/database-service/types.js +23 -0
  322. package/dist/lib/database-service/types.js.map +1 -0
  323. package/dist/lib/deadlock-resolver.js +292 -0
  324. package/dist/lib/deadlock-resolver.js.map +1 -0
  325. package/dist/lib/distributed-lock.js +451 -0
  326. package/dist/lib/distributed-lock.js.map +1 -0
  327. package/dist/lib/edge-case-deduplicator.js +227 -0
  328. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  329. package/dist/lib/encryption-manager.js +322 -0
  330. package/dist/lib/encryption-manager.js.map +1 -0
  331. package/dist/lib/error-aggregator.js +234 -0
  332. package/dist/lib/error-aggregator.js.map +1 -0
  333. package/dist/lib/errors.js +287 -0
  334. package/dist/lib/errors.js.map +1 -0
  335. package/dist/lib/file-lock-manager.js +578 -0
  336. package/dist/lib/file-lock-manager.js.map +1 -0
  337. package/dist/lib/file-operations.js +367 -0
  338. package/dist/lib/file-operations.js.map +1 -0
  339. package/dist/lib/idempotent-write.js +237 -0
  340. package/dist/lib/idempotent-write.js.map +1 -0
  341. package/dist/lib/integration-schema-validator.js +522 -0
  342. package/dist/lib/integration-schema-validator.js.map +1 -0
  343. package/dist/lib/lock-health-monitor.js +298 -0
  344. package/dist/lib/lock-health-monitor.js.map +1 -0
  345. package/dist/lib/log-shipper.js +422 -0
  346. package/dist/lib/log-shipper.js.map +1 -0
  347. package/dist/lib/logging.js +146 -0
  348. package/dist/lib/logging.js.map +1 -0
  349. package/dist/lib/message-deduplicator.js +439 -0
  350. package/dist/lib/message-deduplicator.js.map +1 -0
  351. package/dist/lib/multi-system-query.js +604 -0
  352. package/dist/lib/multi-system-query.js.map +1 -0
  353. package/dist/lib/orphan-detector.js +332 -0
  354. package/dist/lib/orphan-detector.js.map +1 -0
  355. package/dist/lib/password-generator.js +166 -0
  356. package/dist/lib/password-generator.js.map +1 -0
  357. package/dist/lib/path-validator.js +429 -0
  358. package/dist/lib/path-validator.js.map +1 -0
  359. package/dist/lib/query-translator.js +905 -0
  360. package/dist/lib/query-translator.js.map +1 -0
  361. package/dist/lib/queue-recovery.js +469 -0
  362. package/dist/lib/queue-recovery.js.map +1 -0
  363. package/dist/lib/redis-queue-manager.js +512 -0
  364. package/dist/lib/redis-queue-manager.js.map +1 -0
  365. package/dist/lib/reflection-archiver.js +272 -0
  366. package/dist/lib/reflection-archiver.js.map +1 -0
  367. package/dist/lib/retry-manager.js +453 -0
  368. package/dist/lib/retry-manager.js.map +1 -0
  369. package/dist/lib/retry.js +262 -0
  370. package/dist/lib/retry.js.map +1 -0
  371. package/dist/lib/schema-transform.js +695 -0
  372. package/dist/lib/schema-transform.js.map +1 -0
  373. package/dist/lib/schema-validator.js +491 -0
  374. package/dist/lib/schema-validator.js.map +1 -0
  375. package/dist/lib/skill-cache.js +297 -0
  376. package/dist/lib/skill-cache.js.map +1 -0
  377. package/dist/lib/skill-content-manager.js +337 -0
  378. package/dist/lib/skill-content-manager.js.map +1 -0
  379. package/dist/lib/skill-frontmatter-parser.js +237 -0
  380. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  381. package/dist/lib/skill-git-integration.js +275 -0
  382. package/dist/lib/skill-git-integration.js.map +1 -0
  383. package/dist/lib/skill-markdown-validator.js +396 -0
  384. package/dist/lib/skill-markdown-validator.js.map +1 -0
  385. package/dist/lib/skill-output-parser.js +312 -0
  386. package/dist/lib/skill-output-parser.js.map +1 -0
  387. package/dist/lib/unified-query-api.js +467 -0
  388. package/dist/lib/unified-query-api.js.map +1 -0
  389. package/dist/middleware/auth-middleware.js +350 -0
  390. package/dist/middleware/auth-middleware.js.map +1 -0
  391. package/dist/middleware/schema-validation.js +347 -0
  392. package/dist/middleware/schema-validation.js.map +1 -0
  393. package/dist/providers/anthropic-provider.js +1 -1
  394. package/dist/providers/anthropic-provider.js.map +1 -1
  395. package/dist/providers/provider-factory.js +2 -2
  396. package/dist/providers/provider-factory.js.map +1 -1
  397. package/dist/services/edge-case-analyzer.js +321 -0
  398. package/dist/services/edge-case-analyzer.js.map +1 -0
  399. package/dist/services/edge-case-deduplicator.js +266 -0
  400. package/dist/services/edge-case-deduplicator.js.map +1 -0
  401. package/dist/services/edge-case-detector.js +337 -0
  402. package/dist/services/edge-case-detector.js.map +1 -0
  403. package/dist/services/edge-case-tracker.js +547 -0
  404. package/dist/services/edge-case-tracker.js.map +1 -0
  405. package/dist/services/health-check-system.js +586 -0
  406. package/dist/services/health-check-system.js.map +1 -0
  407. package/dist/services/metrics-logger.js +412 -0
  408. package/dist/services/metrics-logger.js.map +1 -0
  409. package/dist/services/patch-generator.js +378 -0
  410. package/dist/services/patch-generator.js.map +1 -0
  411. package/dist/services/patch-validator.js +337 -0
  412. package/dist/services/patch-validator.js.map +1 -0
  413. package/dist/services/performance-monitor.js +811 -0
  414. package/dist/services/performance-monitor.js.map +1 -0
  415. package/dist/services/promotion-pipeline.js +918 -0
  416. package/dist/services/promotion-pipeline.js.map +1 -0
  417. package/dist/services/promotion-validator.js +394 -0
  418. package/dist/services/promotion-validator.js.map +1 -0
  419. package/dist/services/reflection-logger.js +388 -0
  420. package/dist/services/reflection-logger.js.map +1 -0
  421. package/dist/services/skill-deployment.js +472 -0
  422. package/dist/services/skill-deployment.js.map +1 -0
  423. package/dist/services/skill-loader.js +427 -0
  424. package/dist/services/skill-loader.js.map +1 -0
  425. package/dist/services/skill-promotion.js +372 -0
  426. package/dist/services/skill-promotion.js.map +1 -0
  427. package/dist/services/skill-validator.js +454 -0
  428. package/dist/services/skill-validator.js.map +1 -0
  429. package/dist/services/skill-versioning.js +244 -0
  430. package/dist/services/skill-versioning.js.map +1 -0
  431. package/dist/services/workspace-supervisor.js +597 -0
  432. package/dist/services/workspace-supervisor.js.map +1 -0
  433. package/dist/types/edge-case.js +45 -0
  434. package/dist/types/edge-case.js.map +1 -0
  435. package/package.json +201 -177
  436. package/readme/README.md +19 -4
  437. package/scripts/backup-cleanup.sh +627 -0
  438. package/scripts/cleanup-workspaces.sh +412 -0
  439. package/scripts/cleanup-yaml-configs.sh +141 -0
  440. package/scripts/deploy-approved-skills.sh +263 -0
  441. package/scripts/health-check.sh +447 -0
  442. package/scripts/log-aggregator.sh +554 -0
  443. package/scripts/log-monitor.sh +629 -0
  444. package/scripts/manage-agent-workspaces.sh +434 -0
  445. package/scripts/migrate-schema.sh +533 -0
  446. package/scripts/promote-staged-skills.sh +423 -0
  447. package/scripts/verify-no-secrets.sh +88 -35
  448. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  449. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  450. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  451. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  452. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  453. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  454. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  455. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  456. package/README.md.backup_before_replace +0 -781
  457. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  458. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  459. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  460. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  461. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,580 @@
1
+ ---
2
+ name: error-handling
3
+ category: foundation
4
+ team: foundation
5
+ approval_level: auto
6
+ approval_criteria:
7
+ max_commands: 3
8
+ test_coverage: 0.95
9
+ no_external_calls: true
10
+ tags: [bash, error-handling, foundation]
11
+ version: 1.0.0
12
+ owner: cfn-core
13
+ ---
14
+
15
+ # Error Handling - Bootstrap Skill
16
+
17
+ ## Overview
18
+ Comprehensive bash error handling patterns including strict mode, exit codes, trap usage, and cleanup handlers. Essential foundation for robust script development.
19
+
20
+ ## Strict Mode
21
+
22
+ ### Basic Strict Mode
23
+ ```bash
24
+ #!/bin/bash
25
+ set -euo pipefail
26
+
27
+ # -e: Exit immediately if a command exits with a non-zero status
28
+ # -u: Treat unset variables as an error
29
+ # -o pipefail: Return value of a pipeline is the status of the last command to exit with a non-zero status
30
+
31
+ echo "Running in strict mode"
32
+ ```
33
+
34
+ ### Debugging Mode
35
+ ```bash
36
+ #!/bin/bash
37
+ set -euxo pipefail
38
+
39
+ # -x: Print commands and their arguments as they are executed (debug mode)
40
+
41
+ # Conditional debug mode
42
+ if [[ "${DEBUG:-}" == "true" ]]; then
43
+ set -x
44
+ fi
45
+ ```
46
+
47
+ ### Selectively Disable Strict Mode
48
+ ```bash
49
+ #!/bin/bash
50
+ set -euo pipefail
51
+
52
+ # Temporarily allow errors
53
+ set +e
54
+ command_that_may_fail
55
+ EXIT_CODE=$?
56
+ set -e
57
+
58
+ if [[ $EXIT_CODE -ne 0 ]]; then
59
+ echo "Command failed with exit code: $EXIT_CODE"
60
+ fi
61
+ ```
62
+
63
+ ## Exit Code Management
64
+
65
+ ### Standard Exit Codes
66
+ ```bash
67
+ #!/bin/bash
68
+
69
+ # Standard exit codes
70
+ readonly EXIT_SUCCESS=0
71
+ readonly EXIT_GENERAL_ERROR=1
72
+ readonly EXIT_MISUSE=2
73
+ readonly EXIT_NO_PERMISSION=126
74
+ readonly EXIT_NOT_FOUND=127
75
+ readonly EXIT_INVALID_ARG=128
76
+ readonly EXIT_SIGTERM=143
77
+
78
+ # Usage
79
+ if [[ ! -f "$FILE" ]]; then
80
+ echo "ERROR: File not found: $FILE" >&2
81
+ exit "$EXIT_NOT_FOUND"
82
+ fi
83
+ ```
84
+
85
+ ### Custom Exit Codes
86
+ ```bash
87
+ #!/bin/bash
88
+
89
+ # Application-specific exit codes (64-113 reserved for application use)
90
+ readonly EXIT_CONFIG_ERROR=64
91
+ readonly EXIT_DATABASE_ERROR=65
92
+ readonly EXIT_NETWORK_ERROR=66
93
+ readonly EXIT_VALIDATION_ERROR=67
94
+ readonly EXIT_TIMEOUT=68
95
+
96
+ validate_config() {
97
+ if [[ ! -f "$CONFIG_FILE" ]]; then
98
+ echo "ERROR: Configuration file not found" >&2
99
+ exit "$EXIT_CONFIG_ERROR"
100
+ fi
101
+ }
102
+ ```
103
+
104
+ ### Capture and Propagate Exit Codes
105
+ ```bash
106
+ run_command_with_exit_code() {
107
+ local command="$1"
108
+ local exit_code=0
109
+
110
+ # Run command and capture exit code
111
+ set +e
112
+ $command
113
+ exit_code=$?
114
+ set -e
115
+
116
+ # Log and propagate
117
+ if [[ $exit_code -ne 0 ]]; then
118
+ echo "ERROR: Command failed with exit code $exit_code: $command" >&2
119
+ fi
120
+
121
+ return $exit_code
122
+ }
123
+
124
+ # Usage
125
+ if ! run_command_with_exit_code "some_command"; then
126
+ echo "Command execution failed"
127
+ exit 1
128
+ fi
129
+ ```
130
+
131
+ ## Trap Usage and Cleanup
132
+
133
+ ### Basic Trap Pattern
134
+ ```bash
135
+ #!/bin/bash
136
+ set -euo pipefail
137
+
138
+ cleanup() {
139
+ local exit_code=$?
140
+ echo "Cleaning up... (exit code: $exit_code)"
141
+
142
+ # Cleanup operations
143
+ rm -f /tmp/temp-file-$$
144
+
145
+ exit $exit_code
146
+ }
147
+
148
+ trap cleanup EXIT
149
+
150
+ # Script continues...
151
+ echo "Working..."
152
+ ```
153
+
154
+ ### Multiple Trap Handlers
155
+ ```bash
156
+ #!/bin/bash
157
+ set -euo pipefail
158
+
159
+ cleanup_temp_files() {
160
+ echo "Removing temporary files..."
161
+ rm -rf /tmp/work-dir-$$
162
+ }
163
+
164
+ cleanup_locks() {
165
+ echo "Releasing locks..."
166
+ rm -f /tmp/script.lock
167
+ }
168
+
169
+ cleanup_all() {
170
+ cleanup_temp_files
171
+ cleanup_locks
172
+ }
173
+
174
+ trap cleanup_all EXIT
175
+ trap 'echo "Interrupted"; exit 130' INT TERM
176
+ ```
177
+
178
+ ### Error Trap with Stack Trace
179
+ ```bash
180
+ #!/bin/bash
181
+ set -euo pipefail
182
+
183
+ error_handler() {
184
+ local exit_code=$?
185
+ local line_number=$1
186
+
187
+ echo "ERROR: Command failed with exit code $exit_code at line $line_number" >&2
188
+
189
+ # Print stack trace
190
+ echo "Stack trace:" >&2
191
+ local frame=0
192
+ while caller $frame; do
193
+ ((frame++))
194
+ done
195
+
196
+ exit $exit_code
197
+ }
198
+
199
+ trap 'error_handler ${LINENO}' ERR
200
+
201
+ # Script continues...
202
+ ```
203
+
204
+ ### Signal-Specific Handlers
205
+ ```bash
206
+ #!/bin/bash
207
+ set -euo pipefail
208
+
209
+ # Handle SIGINT (Ctrl+C)
210
+ handle_sigint() {
211
+ echo "Received SIGINT, performing graceful shutdown..." >&2
212
+ cleanup
213
+ exit 130
214
+ }
215
+
216
+ # Handle SIGTERM
217
+ handle_sigterm() {
218
+ echo "Received SIGTERM, performing graceful shutdown..." >&2
219
+ cleanup
220
+ exit 143
221
+ }
222
+
223
+ # Handle SIGHUP (terminal closed)
224
+ handle_sighup() {
225
+ echo "Received SIGHUP, continuing in background..." >&2
226
+ }
227
+
228
+ trap handle_sigint INT
229
+ trap handle_sigterm TERM
230
+ trap handle_sighup HUP
231
+ ```
232
+
233
+ ## Error Logging
234
+
235
+ ### Structured Error Logging
236
+ ```bash
237
+ log_error() {
238
+ local level="${1:-ERROR}"
239
+ local message="$2"
240
+ local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
241
+
242
+ echo "[${timestamp}] [${level}] ${message}" >&2
243
+ }
244
+
245
+ log_error "ERROR" "Database connection failed"
246
+ log_error "WARN" "Configuration file missing, using defaults"
247
+ log_error "FATAL" "Critical system error, aborting"
248
+ ```
249
+
250
+ ### Error Context Capture
251
+ ```bash
252
+ log_error_with_context() {
253
+ local message="$1"
254
+ local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
255
+ local script_name=$(basename "$0")
256
+ local line_number="${BASH_LINENO[0]}"
257
+ local function_name="${FUNCNAME[1]:-main}"
258
+
259
+ cat >&2 <<EOF
260
+ [${timestamp}] ERROR in ${script_name}
261
+ Function: ${function_name}
262
+ Line: ${line_number}
263
+ Message: ${message}
264
+ EOF
265
+ }
266
+
267
+ # Usage
268
+ if ! validate_input "$USER_INPUT"; then
269
+ log_error_with_context "Invalid user input: $USER_INPUT"
270
+ exit 1
271
+ fi
272
+ ```
273
+
274
+ ### Error Aggregation
275
+ ```bash
276
+ declare -a ERROR_LOG=()
277
+
278
+ add_error() {
279
+ local message="$1"
280
+ ERROR_LOG+=("$message")
281
+ log_error "ERROR" "$message"
282
+ }
283
+
284
+ print_error_summary() {
285
+ if [[ ${#ERROR_LOG[@]} -gt 0 ]]; then
286
+ echo "ERROR SUMMARY (${#ERROR_LOG[@]} errors):" >&2
287
+ printf ' - %s\n' "${ERROR_LOG[@]}" >&2
288
+ return 1
289
+ fi
290
+ return 0
291
+ }
292
+
293
+ # Usage
294
+ validate_all_inputs() {
295
+ if [[ -z "${INPUT1:-}" ]]; then
296
+ add_error "INPUT1 is required"
297
+ fi
298
+
299
+ if [[ -z "${INPUT2:-}" ]]; then
300
+ add_error "INPUT2 is required"
301
+ fi
302
+
303
+ print_error_summary
304
+ }
305
+ ```
306
+
307
+ ## Defensive Programming
308
+
309
+ ### Parameter Validation
310
+ ```bash
311
+ validate_parameters() {
312
+ local param_name="$1"
313
+ local param_value="${2:-}"
314
+ local param_type="${3:-string}"
315
+
316
+ # Check if parameter is set
317
+ if [[ -z "$param_value" ]]; then
318
+ log_error "ERROR" "Parameter '$param_name' is required but not set"
319
+ return 1
320
+ fi
321
+
322
+ # Type-specific validation
323
+ case "$param_type" in
324
+ int)
325
+ if ! [[ "$param_value" =~ ^[0-9]+$ ]]; then
326
+ log_error "ERROR" "Parameter '$param_name' must be an integer, got: $param_value"
327
+ return 1
328
+ fi
329
+ ;;
330
+ file)
331
+ if [[ ! -f "$param_value" ]]; then
332
+ log_error "ERROR" "File not found: $param_value"
333
+ return 1
334
+ fi
335
+ ;;
336
+ dir)
337
+ if [[ ! -d "$param_value" ]]; then
338
+ log_error "ERROR" "Directory not found: $param_value"
339
+ return 1
340
+ fi
341
+ ;;
342
+ esac
343
+
344
+ return 0
345
+ }
346
+
347
+ # Usage
348
+ validate_parameters "CONFIG_FILE" "$CONFIG_FILE" "file" || exit 1
349
+ validate_parameters "TIMEOUT" "$TIMEOUT" "int" || exit 1
350
+ ```
351
+
352
+ ### Null/Empty Checks
353
+ ```bash
354
+ # Check if variable is set and non-empty
355
+ require_variable() {
356
+ local var_name="$1"
357
+ local var_value="${!var_name:-}"
358
+
359
+ if [[ -z "$var_value" ]]; then
360
+ log_error "FATAL" "Required variable '$var_name' is not set"
361
+ exit 1
362
+ fi
363
+ }
364
+
365
+ # Usage
366
+ require_variable "DATABASE_PATH"
367
+ require_variable "API_KEY"
368
+ ```
369
+
370
+ ### Command Existence Check
371
+ ```bash
372
+ require_command() {
373
+ local command="$1"
374
+
375
+ if ! command -v "$command" &>/dev/null; then
376
+ log_error "FATAL" "Required command not found: $command"
377
+ exit 127
378
+ fi
379
+ }
380
+
381
+ # Check multiple commands
382
+ require_commands() {
383
+ local missing=()
384
+
385
+ for cmd in "$@"; do
386
+ if ! command -v "$cmd" &>/dev/null; then
387
+ missing+=("$cmd")
388
+ fi
389
+ done
390
+
391
+ if [[ ${#missing[@]} -gt 0 ]]; then
392
+ log_error "FATAL" "Missing required commands: ${missing[*]}"
393
+ exit 127
394
+ fi
395
+ }
396
+
397
+ # Usage
398
+ require_commands sqlite3 jq curl
399
+ ```
400
+
401
+ ## Retry Logic
402
+
403
+ ### Simple Retry Pattern
404
+ ```bash
405
+ retry_command() {
406
+ local max_attempts="$1"
407
+ shift
408
+ local command=("$@")
409
+ local attempt=1
410
+
411
+ while ((attempt <= max_attempts)); do
412
+ if "${command[@]}"; then
413
+ return 0
414
+ fi
415
+
416
+ log_error "WARN" "Attempt $attempt/$max_attempts failed: ${command[*]}"
417
+ ((attempt++))
418
+
419
+ if ((attempt <= max_attempts)); then
420
+ sleep $((2 ** (attempt - 1))) # Exponential backoff
421
+ fi
422
+ done
423
+
424
+ log_error "ERROR" "Command failed after $max_attempts attempts: ${command[*]}"
425
+ return 1
426
+ }
427
+
428
+ # Usage
429
+ retry_command 3 curl -f https://api.example.com/data
430
+ ```
431
+
432
+ ### Retry with Timeout
433
+ ```bash
434
+ retry_with_timeout() {
435
+ local max_attempts="$1"
436
+ local timeout="$2"
437
+ shift 2
438
+ local command=("$@")
439
+ local attempt=1
440
+
441
+ while ((attempt <= max_attempts)); do
442
+ if timeout "$timeout" "${command[@]}"; then
443
+ return 0
444
+ fi
445
+
446
+ local exit_code=$?
447
+ if [[ $exit_code -eq 124 ]]; then
448
+ log_error "WARN" "Attempt $attempt/$max_attempts timed out after ${timeout}s"
449
+ else
450
+ log_error "WARN" "Attempt $attempt/$max_attempts failed with exit code $exit_code"
451
+ fi
452
+
453
+ ((attempt++))
454
+ [[ $attempt -le $max_attempts ]] && sleep 2
455
+ done
456
+
457
+ return 1
458
+ }
459
+
460
+ # Usage
461
+ retry_with_timeout 3 10 curl -f https://slow-api.example.com/data
462
+ ```
463
+
464
+ ## Error Recovery
465
+
466
+ ### Fallback Pattern
467
+ ```bash
468
+ get_config_value() {
469
+ local key="$1"
470
+ local default="${2:-}"
471
+ local value
472
+
473
+ # Try primary source
474
+ if value=$(sqlite3 config.db "SELECT value FROM config WHERE key='$key';" 2>/dev/null); then
475
+ echo "$value"
476
+ return 0
477
+ fi
478
+
479
+ log_error "WARN" "Failed to read config from database, trying file..."
480
+
481
+ # Try fallback source
482
+ if value=$(grep "^${key}=" config.txt 2>/dev/null | cut -d'=' -f2); then
483
+ echo "$value"
484
+ return 0
485
+ fi
486
+
487
+ log_error "WARN" "Config key '$key' not found, using default: $default"
488
+ echo "$default"
489
+ }
490
+ ```
491
+
492
+ ### Graceful Degradation
493
+ ```bash
494
+ process_with_degradation() {
495
+ local input="$1"
496
+
497
+ # Try optimal method
498
+ if process_optimal "$input" 2>/dev/null; then
499
+ return 0
500
+ fi
501
+
502
+ log_error "WARN" "Optimal processing failed, trying fallback method..."
503
+
504
+ # Try fallback method
505
+ if process_fallback "$input"; then
506
+ return 0
507
+ fi
508
+
509
+ log_error "ERROR" "All processing methods failed"
510
+ return 1
511
+ }
512
+ ```
513
+
514
+ ## Test-Driven Error Handling
515
+
516
+ ### Test Error Scenarios
517
+ ```bash
518
+ test_error_handling() {
519
+ local test_name="$1"
520
+ local expected_exit_code="$2"
521
+ shift 2
522
+ local command=("$@")
523
+
524
+ local actual_exit_code=0
525
+ set +e
526
+ "${command[@]}" &>/dev/null
527
+ actual_exit_code=$?
528
+ set -e
529
+
530
+ if [[ $actual_exit_code -eq $expected_exit_code ]]; then
531
+ echo "PASS: $test_name (exit code: $actual_exit_code)"
532
+ return 0
533
+ else
534
+ echo "FAIL: $test_name (expected: $expected_exit_code, got: $actual_exit_code)"
535
+ return 1
536
+ fi
537
+ }
538
+
539
+ # Usage
540
+ test_error_handling "Missing file" 127 process_file "/nonexistent/file.txt"
541
+ test_error_handling "Invalid argument" 1 validate_input ""
542
+ ```
543
+
544
+ ### Assert Pattern
545
+ ```bash
546
+ assert_success() {
547
+ local command=("$@")
548
+
549
+ if ! "${command[@]}"; then
550
+ log_error "FATAL" "Assertion failed: ${command[*]}"
551
+ exit 1
552
+ fi
553
+ }
554
+
555
+ assert_failure() {
556
+ local command=("$@")
557
+
558
+ if "${command[@]}"; then
559
+ log_error "FATAL" "Expected failure but command succeeded: ${command[*]}"
560
+ exit 1
561
+ fi
562
+ }
563
+
564
+ # Usage
565
+ assert_success test -f "$REQUIRED_FILE"
566
+ assert_failure grep "should_not_exist" "$FILE"
567
+ ```
568
+
569
+ ## Success Criteria
570
+
571
+ - ✅ Strict mode enabled (`set -euo pipefail`)
572
+ - ✅ Trap handlers for cleanup operations
573
+ - ✅ Meaningful exit codes (standard + custom)
574
+ - ✅ Structured error logging with context
575
+ - ✅ Parameter validation before use
576
+ - ✅ Retry logic with exponential backoff
577
+ - ✅ Graceful degradation and fallback patterns
578
+ - ✅ Test assertions for error scenarios
579
+ - ✅ Signal handling for graceful shutdown
580
+ - ✅ Stack trace on unexpected errors