claude-flow-novice 2.15.2 → 2.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) 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-BACKUP_USAGE.md +243 -243
  36. package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
  37. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  38. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  39. package/.claude/hooks/cfn-post-edit.config.json +44 -44
  40. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  41. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  42. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  43. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  44. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  45. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  46. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  47. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  48. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  49. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  50. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  51. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  52. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  53. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  54. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  55. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  56. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  57. package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
  58. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  59. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  60. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  61. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  62. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  63. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  64. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  65. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  66. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  67. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  68. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  69. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  70. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  71. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  72. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  73. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  74. package/README.md +116 -475
  75. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  76. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  77. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  78. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  79. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  80. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  81. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  82. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  83. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  84. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  85. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  86. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  87. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  88. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  89. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  90. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  91. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  92. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  93. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  94. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  95. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  96. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  97. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  98. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  99. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  100. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  101. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  102. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  103. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  104. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  105. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  106. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  107. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  108. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  109. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  110. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  111. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  112. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  113. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  114. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  115. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  116. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  117. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  118. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  119. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  120. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  121. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  122. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  123. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  124. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  125. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  126. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  127. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  128. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  129. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  130. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  131. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  147. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  148. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  149. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  150. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  151. package/claude-assets/commands/switch-api.md +31 -10
  152. package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
  153. package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
  154. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  155. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  156. package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
  157. package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
  158. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  159. package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
  160. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  161. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  162. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
  163. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
  164. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  165. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  166. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  167. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  168. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  169. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  170. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  171. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  172. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  173. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  174. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  175. package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
  176. package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
  177. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  178. package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
  179. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  180. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  181. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  182. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  183. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  184. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  185. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  186. package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
  187. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  188. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  189. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  190. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  191. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  192. package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  193. package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
  194. package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
  195. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  196. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  197. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  198. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  199. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  200. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  201. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  202. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  203. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  204. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  205. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  206. package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
  207. package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
  208. package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
  209. package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
  210. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  211. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  212. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  213. package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
  214. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  215. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  216. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  217. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  218. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  219. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  220. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  221. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
  222. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  223. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  224. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  225. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  226. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  227. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  228. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  229. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  230. package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
  231. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  232. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  233. package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
  234. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  235. package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
  236. package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
  237. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  238. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  239. package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
  240. package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
  241. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  242. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  243. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  244. package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  245. package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  246. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  247. package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  248. package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  249. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  250. package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  251. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  252. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  253. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  254. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  255. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  256. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  257. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  258. package/claude-assets/skills/docker-build/SKILL.md +96 -203
  259. package/claude-assets/skills/docker-build/build.sh +73 -73
  260. package/claude-assets/skills/integration/agent-handoff.sh +492 -0
  261. package/claude-assets/skills/integration/file-operations.sh +414 -0
  262. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  263. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  264. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  265. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  266. package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
  267. package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
  268. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  269. package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
  270. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  271. package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
  272. package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
  273. package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
  274. package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
  275. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  276. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  277. package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
  278. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  279. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  280. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  281. package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
  282. package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
  283. package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
  284. package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
  285. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  286. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
  287. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  288. package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
  289. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  290. package/dist/ace/ace-curator.js +10 -2
  291. package/dist/ace/ace-curator.js.map +1 -1
  292. package/dist/ace/ace-generator.js +4 -0
  293. package/dist/ace/ace-generator.js.map +1 -1
  294. package/dist/ace/ace-reflector.js +1 -1
  295. package/dist/ace/ace-reflector.js.map +1 -1
  296. package/dist/ace/context-injection.js +24 -2
  297. package/dist/ace/context-injection.js.map +1 -1
  298. package/dist/agents/agent-loader.js +146 -165
  299. package/dist/agents/agent-loader.js.map +1 -1
  300. package/dist/agents/task-agent-integration.js +1 -1
  301. package/dist/agents/task-agent-integration.js.map +1 -1
  302. package/dist/api/health-endpoints.js +390 -0
  303. package/dist/api/health-endpoints.js.map +1 -0
  304. package/dist/cli/agent-executor.js +4 -1
  305. package/dist/cli/agent-executor.js.map +1 -1
  306. package/dist/cli/agent-prompt-builder.js +89 -1
  307. package/dist/cli/agent-prompt-builder.js.map +1 -1
  308. package/dist/cli/agent-spawn.js +130 -37
  309. package/dist/cli/agent-spawn.js.map +1 -1
  310. package/dist/cli/config-manager.js +91 -109
  311. package/dist/cli/config-manager.js.map +1 -1
  312. package/dist/cli/skill-cache-validator.js +412 -0
  313. package/dist/cli/skill-cache-validator.js.map +1 -0
  314. package/dist/cli/skill-cli.js +991 -0
  315. package/dist/cli/skill-cli.js.map +1 -0
  316. package/dist/cli/skill-execution-logger.js +284 -0
  317. package/dist/cli/skill-execution-logger.js.map +1 -0
  318. package/dist/cli/skill-loader.js +457 -0
  319. package/dist/cli/skill-loader.js.map +1 -0
  320. package/dist/coordination/event-bus.js +2 -2
  321. package/dist/coordination/event-bus.js.map +1 -1
  322. package/dist/coordination/fleet-manager.js +1 -1
  323. package/dist/coordination/fleet-manager.js.map +1 -1
  324. package/dist/coordination/index.js +23 -9
  325. package/dist/coordination/index.js.map +1 -1
  326. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  327. package/dist/db/migration-manager.js +483 -0
  328. package/dist/db/migration-manager.js.map +1 -0
  329. package/dist/db/skills-query.js +535 -0
  330. package/dist/db/skills-query.js.map +1 -0
  331. package/dist/integration/DatabaseHandoff.js +507 -0
  332. package/dist/integration/DatabaseHandoff.js.map +1 -0
  333. package/dist/integration/StandardAdapter.js +291 -0
  334. package/dist/integration/StandardAdapter.js.map +1 -0
  335. package/dist/jobs/edge-case-analyzer.js +367 -0
  336. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  337. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  338. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  339. package/dist/lib/agent-output-parser.js +518 -0
  340. package/dist/lib/agent-output-parser.js.map +1 -0
  341. package/dist/lib/agent-output-validator.js +950 -0
  342. package/dist/lib/agent-output-validator.js.map +1 -0
  343. package/dist/lib/agent-workspace.js +281 -0
  344. package/dist/lib/agent-workspace.js.map +1 -0
  345. package/dist/lib/artifact-registry.js +443 -0
  346. package/dist/lib/artifact-registry.js.map +1 -0
  347. package/dist/lib/atomic-file-writer.js +377 -0
  348. package/dist/lib/atomic-file-writer.js.map +1 -0
  349. package/dist/lib/backup-manager.js +779 -0
  350. package/dist/lib/backup-manager.js.map +1 -0
  351. package/dist/lib/checkpoint-manager.js +837 -0
  352. package/dist/lib/checkpoint-manager.js.map +1 -0
  353. package/dist/lib/circuit-breaker.js +340 -0
  354. package/dist/lib/circuit-breaker.js.map +1 -0
  355. package/dist/lib/completion-signal-handler.js +243 -0
  356. package/dist/lib/completion-signal-handler.js.map +1 -0
  357. package/dist/lib/config-manager.js +312 -0
  358. package/dist/lib/config-manager.js.map +1 -0
  359. package/dist/lib/config-migrator.js +386 -0
  360. package/dist/lib/config-migrator.js.map +1 -0
  361. package/dist/lib/config-validator.js +687 -0
  362. package/dist/lib/config-validator.js.map +1 -0
  363. package/dist/lib/correlation-cache.js +311 -0
  364. package/dist/lib/correlation-cache.js.map +1 -0
  365. package/dist/lib/correlation.js +263 -0
  366. package/dist/lib/correlation.js.map +1 -0
  367. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  368. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  369. package/dist/lib/database-service/correlation.js +329 -0
  370. package/dist/lib/database-service/correlation.js.map +1 -0
  371. package/dist/lib/database-service/errors.js +120 -0
  372. package/dist/lib/database-service/errors.js.map +1 -0
  373. package/dist/lib/database-service/index.js +168 -0
  374. package/dist/lib/database-service/index.js.map +1 -0
  375. package/dist/lib/database-service/postgres-adapter.js +526 -0
  376. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  377. package/dist/lib/database-service/redis-adapter.js +360 -0
  378. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  379. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  380. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  381. package/dist/lib/database-service/transaction-manager.js +773 -0
  382. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  383. package/dist/lib/database-service/types.js +23 -0
  384. package/dist/lib/database-service/types.js.map +1 -0
  385. package/dist/lib/deadlock-resolver.js +292 -0
  386. package/dist/lib/deadlock-resolver.js.map +1 -0
  387. package/dist/lib/distributed-lock.js +451 -0
  388. package/dist/lib/distributed-lock.js.map +1 -0
  389. package/dist/lib/edge-case-deduplicator.js +227 -0
  390. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  391. package/dist/lib/encryption-manager.js +322 -0
  392. package/dist/lib/encryption-manager.js.map +1 -0
  393. package/dist/lib/error-aggregator.js +234 -0
  394. package/dist/lib/error-aggregator.js.map +1 -0
  395. package/dist/lib/errors.js +287 -0
  396. package/dist/lib/errors.js.map +1 -0
  397. package/dist/lib/file-lock-manager.js +578 -0
  398. package/dist/lib/file-lock-manager.js.map +1 -0
  399. package/dist/lib/file-operations.js +367 -0
  400. package/dist/lib/file-operations.js.map +1 -0
  401. package/dist/lib/idempotent-write.js +237 -0
  402. package/dist/lib/idempotent-write.js.map +1 -0
  403. package/dist/lib/integration-schema-validator.js +522 -0
  404. package/dist/lib/integration-schema-validator.js.map +1 -0
  405. package/dist/lib/lock-health-monitor.js +298 -0
  406. package/dist/lib/lock-health-monitor.js.map +1 -0
  407. package/dist/lib/log-shipper.js +422 -0
  408. package/dist/lib/log-shipper.js.map +1 -0
  409. package/dist/lib/logging.js +146 -0
  410. package/dist/lib/logging.js.map +1 -0
  411. package/dist/lib/message-deduplicator.js +439 -0
  412. package/dist/lib/message-deduplicator.js.map +1 -0
  413. package/dist/lib/multi-system-query.js +604 -0
  414. package/dist/lib/multi-system-query.js.map +1 -0
  415. package/dist/lib/orphan-detector.js +332 -0
  416. package/dist/lib/orphan-detector.js.map +1 -0
  417. package/dist/lib/password-generator.js +166 -0
  418. package/dist/lib/password-generator.js.map +1 -0
  419. package/dist/lib/path-validator.js +429 -0
  420. package/dist/lib/path-validator.js.map +1 -0
  421. package/dist/lib/query-translator.js +905 -0
  422. package/dist/lib/query-translator.js.map +1 -0
  423. package/dist/lib/queue-recovery.js +469 -0
  424. package/dist/lib/queue-recovery.js.map +1 -0
  425. package/dist/lib/redis-queue-manager.js +512 -0
  426. package/dist/lib/redis-queue-manager.js.map +1 -0
  427. package/dist/lib/reflection-archiver.js +272 -0
  428. package/dist/lib/reflection-archiver.js.map +1 -0
  429. package/dist/lib/retry-manager.js +453 -0
  430. package/dist/lib/retry-manager.js.map +1 -0
  431. package/dist/lib/retry.js +262 -0
  432. package/dist/lib/retry.js.map +1 -0
  433. package/dist/lib/schema-transform.js +695 -0
  434. package/dist/lib/schema-transform.js.map +1 -0
  435. package/dist/lib/schema-validator.js +491 -0
  436. package/dist/lib/schema-validator.js.map +1 -0
  437. package/dist/lib/skill-cache.js +297 -0
  438. package/dist/lib/skill-cache.js.map +1 -0
  439. package/dist/lib/skill-content-manager.js +337 -0
  440. package/dist/lib/skill-content-manager.js.map +1 -0
  441. package/dist/lib/skill-frontmatter-parser.js +237 -0
  442. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  443. package/dist/lib/skill-git-integration.js +275 -0
  444. package/dist/lib/skill-git-integration.js.map +1 -0
  445. package/dist/lib/skill-markdown-validator.js +396 -0
  446. package/dist/lib/skill-markdown-validator.js.map +1 -0
  447. package/dist/lib/skill-output-parser.js +312 -0
  448. package/dist/lib/skill-output-parser.js.map +1 -0
  449. package/dist/lib/unified-query-api.js +467 -0
  450. package/dist/lib/unified-query-api.js.map +1 -0
  451. package/dist/middleware/auth-middleware.js +350 -0
  452. package/dist/middleware/auth-middleware.js.map +1 -0
  453. package/dist/middleware/schema-validation.js +347 -0
  454. package/dist/middleware/schema-validation.js.map +1 -0
  455. package/dist/providers/anthropic-provider.js +1 -1
  456. package/dist/providers/anthropic-provider.js.map +1 -1
  457. package/dist/providers/provider-factory.js +2 -2
  458. package/dist/providers/provider-factory.js.map +1 -1
  459. package/dist/services/edge-case-analyzer.js +321 -0
  460. package/dist/services/edge-case-analyzer.js.map +1 -0
  461. package/dist/services/edge-case-deduplicator.js +266 -0
  462. package/dist/services/edge-case-deduplicator.js.map +1 -0
  463. package/dist/services/edge-case-detector.js +337 -0
  464. package/dist/services/edge-case-detector.js.map +1 -0
  465. package/dist/services/edge-case-tracker.js +547 -0
  466. package/dist/services/edge-case-tracker.js.map +1 -0
  467. package/dist/services/health-check-system.js +586 -0
  468. package/dist/services/health-check-system.js.map +1 -0
  469. package/dist/services/metrics-logger.js +412 -0
  470. package/dist/services/metrics-logger.js.map +1 -0
  471. package/dist/services/patch-generator.js +378 -0
  472. package/dist/services/patch-generator.js.map +1 -0
  473. package/dist/services/patch-validator.js +337 -0
  474. package/dist/services/patch-validator.js.map +1 -0
  475. package/dist/services/performance-monitor.js +811 -0
  476. package/dist/services/performance-monitor.js.map +1 -0
  477. package/dist/services/promotion-pipeline.js +918 -0
  478. package/dist/services/promotion-pipeline.js.map +1 -0
  479. package/dist/services/promotion-validator.js +394 -0
  480. package/dist/services/promotion-validator.js.map +1 -0
  481. package/dist/services/reflection-logger.js +388 -0
  482. package/dist/services/reflection-logger.js.map +1 -0
  483. package/dist/services/skill-deployment.js +472 -0
  484. package/dist/services/skill-deployment.js.map +1 -0
  485. package/dist/services/skill-loader.js +427 -0
  486. package/dist/services/skill-loader.js.map +1 -0
  487. package/dist/services/skill-promotion.js +372 -0
  488. package/dist/services/skill-promotion.js.map +1 -0
  489. package/dist/services/skill-validator.js +454 -0
  490. package/dist/services/skill-validator.js.map +1 -0
  491. package/dist/services/skill-versioning.js +244 -0
  492. package/dist/services/skill-versioning.js.map +1 -0
  493. package/dist/services/workspace-supervisor.js +597 -0
  494. package/dist/services/workspace-supervisor.js.map +1 -0
  495. package/dist/types/agent-output.js +44 -0
  496. package/dist/types/agent-output.js.map +1 -0
  497. package/dist/types/config.js +28 -0
  498. package/dist/types/config.js.map +1 -0
  499. package/dist/types/edge-case.js +45 -0
  500. package/dist/types/edge-case.js.map +1 -0
  501. package/package.json +201 -176
  502. package/readme/README.md +19 -4
  503. package/scripts/artifact-cleanup.sh +392 -0
  504. package/scripts/backup-cleanup.sh +627 -0
  505. package/scripts/cleanup-workspaces.sh +412 -0
  506. package/scripts/cleanup-yaml-configs.sh +141 -0
  507. package/scripts/deploy-approved-skills.sh +263 -0
  508. package/scripts/deploy-production.sh +355 -355
  509. package/scripts/docker-playwright-fix.sh +311 -311
  510. package/scripts/docker-rebuild-all-agents.sh +127 -127
  511. package/scripts/health-check.sh +447 -0
  512. package/scripts/log-aggregator.sh +554 -0
  513. package/scripts/log-monitor.sh +629 -0
  514. package/scripts/manage-agent-workspaces.sh +434 -0
  515. package/scripts/memory-leak-prevention.sh +305 -305
  516. package/scripts/migrate-artifacts.sh +563 -0
  517. package/scripts/migrate-schema.sh +533 -0
  518. package/scripts/migrate-yaml-to-json.sh +465 -0
  519. package/scripts/promote-staged-skills.sh +423 -0
  520. package/scripts/run-marketing-tests.sh +42 -42
  521. package/scripts/update_paths.sh +46 -46
  522. package/scripts/verify-no-secrets.sh +88 -35
  523. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  524. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  525. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  526. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  527. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  528. package/README.md.backup_before_replace +0 -781
  529. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  530. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  531. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  532. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  533. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,699 @@
1
+ ---
2
+ name: file-operations
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: [file-io, filesystem, foundation]
11
+ version: 1.0.0
12
+ owner: cfn-core
13
+ ---
14
+
15
+ # File Operations - Bootstrap Skill
16
+
17
+ ## Overview
18
+ Comprehensive file I/O operations, path resolution, content validation, and permission management. Essential patterns for safe and robust file manipulation.
19
+
20
+ ## File I/O Operations
21
+
22
+ ### Safe File Reading
23
+ ```bash
24
+ #!/bin/bash
25
+ set -euo pipefail
26
+
27
+ read_file() {
28
+ local file_path="$1"
29
+
30
+ # Validate file exists
31
+ if [[ ! -f "$file_path" ]]; then
32
+ echo "ERROR: File not found: $file_path" >&2
33
+ return 1
34
+ fi
35
+
36
+ # Validate file is readable
37
+ if [[ ! -r "$file_path" ]]; then
38
+ echo "ERROR: File not readable: $file_path" >&2
39
+ return 1
40
+ fi
41
+
42
+ # Read file content
43
+ cat "$file_path"
44
+ }
45
+
46
+ # Usage
47
+ CONTENT=$(read_file "data.txt")
48
+ ```
49
+
50
+ ### Line-by-Line Processing
51
+ ```bash
52
+ process_file_lines() {
53
+ local file_path="$1"
54
+
55
+ while IFS= read -r line || [[ -n "$line" ]]; do
56
+ # Process each line
57
+ echo "Line: $line"
58
+ done < "$file_path"
59
+ }
60
+
61
+ # With line numbers
62
+ process_with_line_numbers() {
63
+ local file_path="$1"
64
+ local line_num=0
65
+
66
+ while IFS= read -r line || [[ -n "$line" ]]; do
67
+ ((line_num++))
68
+ echo "$line_num: $line"
69
+ done < "$file_path"
70
+ }
71
+ ```
72
+
73
+ ### Safe File Writing
74
+ ```bash
75
+ write_file() {
76
+ local file_path="$1"
77
+ local content="$2"
78
+ local backup="${3:-true}"
79
+
80
+ # Create backup if file exists
81
+ if [[ "$backup" == "true" && -f "$file_path" ]]; then
82
+ local backup_path="${file_path}.backup.$(date +%s)"
83
+ cp "$file_path" "$backup_path"
84
+ echo "Backup created: $backup_path" >&2
85
+ fi
86
+
87
+ # Ensure directory exists
88
+ local dir_path=$(dirname "$file_path")
89
+ mkdir -p "$dir_path"
90
+
91
+ # Write atomically using temp file
92
+ local temp_file="${file_path}.tmp.$$"
93
+
94
+ if ! echo "$content" > "$temp_file"; then
95
+ rm -f "$temp_file"
96
+ echo "ERROR: Failed to write to temporary file" >&2
97
+ return 1
98
+ fi
99
+
100
+ # Move temp file to final location
101
+ if ! mv "$temp_file" "$file_path"; then
102
+ rm -f "$temp_file"
103
+ echo "ERROR: Failed to move temporary file to final location" >&2
104
+ return 1
105
+ fi
106
+
107
+ echo "File written successfully: $file_path"
108
+ }
109
+
110
+ # Usage
111
+ write_file "output.txt" "Hello, World!" true
112
+ ```
113
+
114
+ ### Append to File
115
+ ```bash
116
+ append_to_file() {
117
+ local file_path="$1"
118
+ local content="$2"
119
+
120
+ # Create file if it doesn't exist
121
+ touch "$file_path"
122
+
123
+ # Append content
124
+ echo "$content" >> "$file_path"
125
+ }
126
+
127
+ # Append with timestamp
128
+ append_with_timestamp() {
129
+ local file_path="$1"
130
+ local message="$2"
131
+ local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
132
+
133
+ echo "[${timestamp}] ${message}" >> "$file_path"
134
+ }
135
+ ```
136
+
137
+ ### Atomic File Operations
138
+ ```bash
139
+ atomic_write() {
140
+ local file_path="$1"
141
+ local content="$2"
142
+
143
+ local temp_file
144
+ temp_file=$(mktemp "${file_path}.XXXXXX")
145
+
146
+ # Cleanup on error
147
+ trap "rm -f '$temp_file'" EXIT
148
+
149
+ # Write to temp file
150
+ echo "$content" > "$temp_file"
151
+
152
+ # Set permissions to match original (if exists)
153
+ if [[ -f "$file_path" ]]; then
154
+ chmod --reference="$file_path" "$temp_file"
155
+ fi
156
+
157
+ # Atomic move
158
+ mv "$temp_file" "$file_path"
159
+
160
+ trap - EXIT
161
+ }
162
+ ```
163
+
164
+ ## Path Resolution
165
+
166
+ ### Absolute Path Resolution
167
+ ```bash
168
+ get_absolute_path() {
169
+ local path="$1"
170
+
171
+ # Check if path is already absolute
172
+ if [[ "$path" = /* ]]; then
173
+ echo "$path"
174
+ return 0
175
+ fi
176
+
177
+ # Resolve relative path
178
+ local resolved
179
+ resolved=$(cd "$(dirname "$path")" && pwd)/$(basename "$path")
180
+ echo "$resolved"
181
+ }
182
+
183
+ # Get script directory
184
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
185
+
186
+ # Get current directory
187
+ CURRENT_DIR="$(pwd)"
188
+
189
+ # Get parent directory
190
+ PARENT_DIR="$(dirname "$(pwd)")"
191
+ ```
192
+
193
+ ### Path Normalization
194
+ ```bash
195
+ normalize_path() {
196
+ local path="$1"
197
+
198
+ # Remove duplicate slashes
199
+ path="${path//\/\//\/}"
200
+
201
+ # Remove trailing slash (unless root)
202
+ if [[ "$path" != "/" ]]; then
203
+ path="${path%/}"
204
+ fi
205
+
206
+ echo "$path"
207
+ }
208
+
209
+ # Usage
210
+ NORMALIZED=$(normalize_path "//path/to//file/")
211
+ echo "$NORMALIZED" # "/path/to/file"
212
+ ```
213
+
214
+ ### Path Validation
215
+ ```bash
216
+ validate_path() {
217
+ local path="$1"
218
+ local base_dir="${2:-}"
219
+
220
+ # Get absolute path
221
+ local abs_path
222
+ abs_path=$(realpath -m "$path" 2>/dev/null) || {
223
+ echo "ERROR: Invalid path: $path" >&2
224
+ return 1
225
+ }
226
+
227
+ # Check if path is within base directory (prevent directory traversal)
228
+ if [[ -n "$base_dir" ]]; then
229
+ local abs_base
230
+ abs_base=$(realpath -m "$base_dir")
231
+
232
+ if [[ "$abs_path" != "$abs_base"/* && "$abs_path" != "$abs_base" ]]; then
233
+ echo "ERROR: Path outside allowed directory: $path" >&2
234
+ return 1
235
+ fi
236
+ fi
237
+
238
+ echo "$abs_path"
239
+ }
240
+
241
+ # Usage - prevent directory traversal attacks
242
+ SAFE_PATH=$(validate_path "$USER_INPUT" "/var/app/data") || exit 1
243
+ ```
244
+
245
+ ### Temporary File Management
246
+ ```bash
247
+ create_temp_file() {
248
+ local prefix="${1:-temp}"
249
+ local suffix="${2:-}"
250
+
251
+ local temp_file
252
+ temp_file=$(mktemp "/tmp/${prefix}.XXXXXX${suffix}")
253
+
254
+ echo "$temp_file"
255
+ }
256
+
257
+ create_temp_dir() {
258
+ local prefix="${1:-temp}"
259
+
260
+ local temp_dir
261
+ temp_dir=$(mktemp -d "/tmp/${prefix}.XXXXXX")
262
+
263
+ echo "$temp_dir"
264
+ }
265
+
266
+ # Cleanup temp files on exit
267
+ cleanup_temp_files() {
268
+ local -a temp_files=("$@")
269
+
270
+ for file in "${temp_files[@]}"; do
271
+ [[ -e "$file" ]] && rm -rf "$file"
272
+ done
273
+ }
274
+
275
+ # Usage
276
+ TEMP_FILE=$(create_temp_file "myapp")
277
+ TEMP_DIR=$(create_temp_dir "myapp")
278
+
279
+ trap "cleanup_temp_files '$TEMP_FILE' '$TEMP_DIR'" EXIT
280
+
281
+ # Use temporary files...
282
+ ```
283
+
284
+ ## Content Validation
285
+
286
+ ### File Type Detection
287
+ ```bash
288
+ detect_file_type() {
289
+ local file_path="$1"
290
+
291
+ if [[ ! -f "$file_path" ]]; then
292
+ echo "ERROR: Not a regular file: $file_path" >&2
293
+ return 1
294
+ fi
295
+
296
+ # Use file command
297
+ local file_type
298
+ file_type=$(file -b --mime-type "$file_path")
299
+
300
+ echo "$file_type"
301
+ }
302
+
303
+ # Validate specific file type
304
+ validate_file_type() {
305
+ local file_path="$1"
306
+ local expected_type="$2"
307
+
308
+ local actual_type
309
+ actual_type=$(detect_file_type "$file_path") || return 1
310
+
311
+ if [[ "$actual_type" != "$expected_type" ]]; then
312
+ echo "ERROR: Invalid file type. Expected: $expected_type, Got: $actual_type" >&2
313
+ return 1
314
+ fi
315
+ }
316
+
317
+ # Usage
318
+ validate_file_type "image.png" "image/png"
319
+ ```
320
+
321
+ ### File Size Validation
322
+ ```bash
323
+ get_file_size() {
324
+ local file_path="$1"
325
+
326
+ if [[ ! -f "$file_path" ]]; then
327
+ echo "ERROR: File not found: $file_path" >&2
328
+ return 1
329
+ fi
330
+
331
+ stat -f%z "$file_path" 2>/dev/null || stat -c%s "$file_path"
332
+ }
333
+
334
+ validate_file_size() {
335
+ local file_path="$1"
336
+ local max_size="${2:-10485760}" # Default 10MB
337
+
338
+ local size
339
+ size=$(get_file_size "$file_path") || return 1
340
+
341
+ if [[ $size -gt $max_size ]]; then
342
+ echo "ERROR: File too large: $size bytes (max: $max_size)" >&2
343
+ return 1
344
+ fi
345
+
346
+ echo "$size"
347
+ }
348
+
349
+ # Usage
350
+ if SIZE=$(validate_file_size "upload.bin" 5242880); then
351
+ echo "File size valid: $SIZE bytes"
352
+ fi
353
+ ```
354
+
355
+ ### Content Integrity Validation
356
+ ```bash
357
+ compute_file_hash() {
358
+ local file_path="$1"
359
+ local algorithm="${2:-sha256}"
360
+
361
+ case "$algorithm" in
362
+ md5)
363
+ md5sum "$file_path" | cut -d' ' -f1
364
+ ;;
365
+ sha1)
366
+ sha1sum "$file_path" | cut -d' ' -f1
367
+ ;;
368
+ sha256)
369
+ sha256sum "$file_path" | cut -d' ' -f1
370
+ ;;
371
+ *)
372
+ echo "ERROR: Unsupported hash algorithm: $algorithm" >&2
373
+ return 1
374
+ ;;
375
+ esac
376
+ }
377
+
378
+ verify_file_hash() {
379
+ local file_path="$1"
380
+ local expected_hash="$2"
381
+ local algorithm="${3:-sha256}"
382
+
383
+ local actual_hash
384
+ actual_hash=$(compute_file_hash "$file_path" "$algorithm") || return 1
385
+
386
+ if [[ "$actual_hash" != "$expected_hash" ]]; then
387
+ echo "ERROR: Hash mismatch" >&2
388
+ echo " Expected: $expected_hash" >&2
389
+ echo " Actual: $actual_hash" >&2
390
+ return 1
391
+ fi
392
+
393
+ echo "Hash verified: $actual_hash"
394
+ }
395
+
396
+ # Usage
397
+ HASH=$(compute_file_hash "data.txt" "sha256")
398
+ verify_file_hash "data.txt" "$HASH" "sha256"
399
+ ```
400
+
401
+ ### Text File Validation
402
+ ```bash
403
+ validate_text_file() {
404
+ local file_path="$1"
405
+
406
+ # Check if file is text
407
+ if ! file "$file_path" | grep -q "text"; then
408
+ echo "ERROR: Not a text file: $file_path" >&2
409
+ return 1
410
+ fi
411
+
412
+ # Check for valid UTF-8 encoding
413
+ if ! iconv -f UTF-8 -t UTF-8 "$file_path" &>/dev/null; then
414
+ echo "ERROR: Invalid UTF-8 encoding: $file_path" >&2
415
+ return 1
416
+ fi
417
+
418
+ echo "Valid text file"
419
+ }
420
+ ```
421
+
422
+ ### JSON Validation
423
+ ```bash
424
+ validate_json_file() {
425
+ local file_path="$1"
426
+
427
+ if ! jq empty "$file_path" 2>/dev/null; then
428
+ echo "ERROR: Invalid JSON file: $file_path" >&2
429
+ return 1
430
+ fi
431
+
432
+ echo "Valid JSON file"
433
+ }
434
+
435
+ # Extract JSON value
436
+ get_json_value() {
437
+ local file_path="$1"
438
+ local key="$2"
439
+
440
+ validate_json_file "$file_path" || return 1
441
+
442
+ jq -r ".$key" "$file_path"
443
+ }
444
+ ```
445
+
446
+ ## Permission Management
447
+
448
+ ### Permission Checking
449
+ ```bash
450
+ check_permissions() {
451
+ local file_path="$1"
452
+
453
+ # Check read permission
454
+ if [[ -r "$file_path" ]]; then
455
+ echo "Readable: YES"
456
+ else
457
+ echo "Readable: NO"
458
+ fi
459
+
460
+ # Check write permission
461
+ if [[ -w "$file_path" ]]; then
462
+ echo "Writable: YES"
463
+ else
464
+ echo "Writable: NO"
465
+ fi
466
+
467
+ # Check execute permission
468
+ if [[ -x "$file_path" ]]; then
469
+ echo "Executable: YES"
470
+ else
471
+ echo "Executable: NO"
472
+ fi
473
+ }
474
+
475
+ # Get file permissions (octal)
476
+ get_file_permissions() {
477
+ local file_path="$1"
478
+
479
+ stat -f%Lp "$file_path" 2>/dev/null || stat -c%a "$file_path"
480
+ }
481
+ ```
482
+
483
+ ### Safe Permission Setting
484
+ ```bash
485
+ set_permissions() {
486
+ local file_path="$1"
487
+ local permissions="$2"
488
+
489
+ # Validate permissions format (octal)
490
+ if ! [[ "$permissions" =~ ^[0-7]{3,4}$ ]]; then
491
+ echo "ERROR: Invalid permissions format: $permissions" >&2
492
+ return 1
493
+ fi
494
+
495
+ # Set permissions
496
+ if ! chmod "$permissions" "$file_path"; then
497
+ echo "ERROR: Failed to set permissions: $permissions on $file_path" >&2
498
+ return 1
499
+ fi
500
+
501
+ echo "Permissions set: $permissions on $file_path"
502
+ }
503
+
504
+ # Set restrictive permissions (owner only)
505
+ set_restrictive_permissions() {
506
+ local file_path="$1"
507
+
508
+ if [[ -d "$file_path" ]]; then
509
+ chmod 700 "$file_path" # drwx------
510
+ else
511
+ chmod 600 "$file_path" # -rw-------
512
+ fi
513
+ }
514
+ ```
515
+
516
+ ### Ownership Management
517
+ ```bash
518
+ get_file_owner() {
519
+ local file_path="$1"
520
+
521
+ stat -f%Su "$file_path" 2>/dev/null || stat -c%U "$file_path"
522
+ }
523
+
524
+ get_file_group() {
525
+ local file_path="$1"
526
+
527
+ stat -f%Sg "$file_path" 2>/dev/null || stat -c%G "$file_path"
528
+ }
529
+
530
+ # Check if current user owns file
531
+ is_owner() {
532
+ local file_path="$1"
533
+ local owner
534
+ owner=$(get_file_owner "$file_path")
535
+
536
+ [[ "$owner" == "$(whoami)" ]]
537
+ }
538
+ ```
539
+
540
+ ## Directory Operations
541
+
542
+ ### Safe Directory Creation
543
+ ```bash
544
+ create_directory() {
545
+ local dir_path="$1"
546
+ local permissions="${2:-755}"
547
+
548
+ # Create directory with parents
549
+ if ! mkdir -p "$dir_path"; then
550
+ echo "ERROR: Failed to create directory: $dir_path" >&2
551
+ return 1
552
+ fi
553
+
554
+ # Set permissions
555
+ if ! chmod "$permissions" "$dir_path"; then
556
+ echo "ERROR: Failed to set permissions on directory: $dir_path" >&2
557
+ return 1
558
+ fi
559
+
560
+ echo "Directory created: $dir_path"
561
+ }
562
+ ```
563
+
564
+ ### Directory Traversal
565
+ ```bash
566
+ find_files() {
567
+ local dir_path="$1"
568
+ local pattern="${2:-*}"
569
+ local max_depth="${3:-}"
570
+
571
+ if [[ ! -d "$dir_path" ]]; then
572
+ echo "ERROR: Not a directory: $dir_path" >&2
573
+ return 1
574
+ fi
575
+
576
+ local find_cmd="find '$dir_path'"
577
+ [[ -n "$max_depth" ]] && find_cmd+=" -maxdepth $max_depth"
578
+ find_cmd+=" -type f -name '$pattern'"
579
+
580
+ eval "$find_cmd"
581
+ }
582
+
583
+ # Process all files in directory
584
+ process_directory() {
585
+ local dir_path="$1"
586
+ local pattern="$2"
587
+
588
+ while IFS= read -r -d '' file; do
589
+ echo "Processing: $file"
590
+ # Process file...
591
+ done < <(find "$dir_path" -type f -name "$pattern" -print0)
592
+ }
593
+ ```
594
+
595
+ ### Directory Size Calculation
596
+ ```bash
597
+ get_directory_size() {
598
+ local dir_path="$1"
599
+ local human_readable="${2:-false}"
600
+
601
+ if [[ ! -d "$dir_path" ]]; then
602
+ echo "ERROR: Not a directory: $dir_path" >&2
603
+ return 1
604
+ fi
605
+
606
+ if [[ "$human_readable" == "true" ]]; then
607
+ du -sh "$dir_path" | cut -f1
608
+ else
609
+ du -sb "$dir_path" | cut -f1
610
+ fi
611
+ }
612
+ ```
613
+
614
+ ## File Locking
615
+
616
+ ### Advisory File Locking
617
+ ```bash
618
+ acquire_lock() {
619
+ local lock_file="$1"
620
+ local timeout="${2:-10}"
621
+ local waited=0
622
+
623
+ while [[ $waited -lt $timeout ]]; do
624
+ if mkdir "$lock_file" 2>/dev/null; then
625
+ echo "Lock acquired: $lock_file"
626
+ return 0
627
+ fi
628
+
629
+ echo "Waiting for lock... ($waited/$timeout)" >&2
630
+ sleep 1
631
+ ((waited++))
632
+ done
633
+
634
+ echo "ERROR: Failed to acquire lock after ${timeout}s" >&2
635
+ return 1
636
+ }
637
+
638
+ release_lock() {
639
+ local lock_file="$1"
640
+
641
+ if rmdir "$lock_file" 2>/dev/null; then
642
+ echo "Lock released: $lock_file"
643
+ else
644
+ echo "WARNING: Failed to release lock: $lock_file" >&2
645
+ fi
646
+ }
647
+
648
+ # Usage with trap
649
+ LOCK_FILE="/tmp/myapp.lock"
650
+ if acquire_lock "$LOCK_FILE"; then
651
+ trap "release_lock '$LOCK_FILE'" EXIT
652
+
653
+ # Critical section...
654
+ fi
655
+ ```
656
+
657
+ ### File Descriptor Locking
658
+ ```bash
659
+ exec_with_lock() {
660
+ local lock_file="$1"
661
+ shift
662
+ local command=("$@")
663
+
664
+ # Open lock file descriptor
665
+ exec 200>"$lock_file"
666
+
667
+ # Acquire exclusive lock
668
+ if ! flock -x -w 10 200; then
669
+ echo "ERROR: Failed to acquire lock" >&2
670
+ return 1
671
+ fi
672
+
673
+ # Execute command
674
+ "${command[@]}"
675
+ local exit_code=$?
676
+
677
+ # Release lock (automatic on fd close)
678
+ exec 200>&-
679
+
680
+ return $exit_code
681
+ }
682
+
683
+ # Usage
684
+ exec_with_lock "/tmp/myapp.lock" process_data
685
+ ```
686
+
687
+ ## Success Criteria
688
+
689
+ - ✅ File existence and readability validation
690
+ - ✅ Atomic write operations with temp files
691
+ - ✅ Absolute path resolution and normalization
692
+ - ✅ Directory traversal attack prevention
693
+ - ✅ File type and size validation
694
+ - ✅ Content integrity verification (hashing)
695
+ - ✅ Safe permission and ownership management
696
+ - ✅ Directory creation with proper permissions
697
+ - ✅ File locking for concurrent access
698
+ - ✅ Temporary file cleanup on exit
699
+ - ✅ Comprehensive error handling