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,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