@xonovex/skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/commands/code-align.md +108 -0
  3. package/commands/code-harden.md +74 -0
  4. package/commands/code-simplify.md +145 -0
  5. package/commands/git-commit.md +146 -0
  6. package/commands/insights-extract.md +109 -0
  7. package/commands/insights-integrate.md +100 -0
  8. package/commands/plan-continue.md +167 -0
  9. package/commands/plan-create.md +107 -0
  10. package/commands/plan-research.md +113 -0
  11. package/commands/plan-subplans-create.md +111 -0
  12. package/commands/plan-tdd-create.md +128 -0
  13. package/commands/plan-update.md +99 -0
  14. package/commands/plan-validate.md +100 -0
  15. package/commands/plan-worktree-abandon.md +104 -0
  16. package/commands/plan-worktree-create.md +92 -0
  17. package/commands/plan-worktree-merge.md +132 -0
  18. package/package.json +44 -0
  19. package/skills/astro-guidelines/SKILL.md +23 -0
  20. package/skills/astro-guidelines/reference/accessibility.md +31 -0
  21. package/skills/astro-guidelines/reference/components.md +42 -0
  22. package/skills/astro-guidelines/reference/content-collections.md +32 -0
  23. package/skills/astro-guidelines/reference/islands-architecture.md +26 -0
  24. package/skills/astro-guidelines/reference/project-structure.md +32 -0
  25. package/skills/c99-game-opinionated-guidelines/SKILL.md +43 -0
  26. package/skills/c99-game-opinionated-guidelines/reference/builder-pattern.md +29 -0
  27. package/skills/c99-game-opinionated-guidelines/reference/coordinate-system.md +27 -0
  28. package/skills/c99-game-opinionated-guidelines/reference/geometry-pipeline.md +29 -0
  29. package/skills/c99-game-opinionated-guidelines/reference/math-types.md +31 -0
  30. package/skills/c99-game-opinionated-guidelines/reference/mesh-types.md +32 -0
  31. package/skills/c99-game-opinionated-guidelines/reference/physics-patterns.md +28 -0
  32. package/skills/c99-game-opinionated-guidelines/reference/spatial-structures.md +26 -0
  33. package/skills/c99-game-opinionated-guidelines/reference/tagged-unions.md +40 -0
  34. package/skills/c99-game-opinionated-guidelines/reference/vertex-packing.md +38 -0
  35. package/skills/c99-guidelines/SKILL.md +29 -0
  36. package/skills/c99-guidelines/reference/compound-literals.md +33 -0
  37. package/skills/c99-guidelines/reference/const-correctness.md +32 -0
  38. package/skills/c99-guidelines/reference/designated-initializers.md +32 -0
  39. package/skills/c99-guidelines/reference/error-handling.md +49 -0
  40. package/skills/c99-guidelines/reference/inline-functions.md +37 -0
  41. package/skills/c99-guidelines/reference/memory-management.md +35 -0
  42. package/skills/c99-opinionated-guidelines/SKILL.md +44 -0
  43. package/skills/c99-opinionated-guidelines/reference/alignment.md +50 -0
  44. package/skills/c99-opinionated-guidelines/reference/caller-owns-memory.md +38 -0
  45. package/skills/c99-opinionated-guidelines/reference/compound-literals.md +33 -0
  46. package/skills/c99-opinionated-guidelines/reference/const-correctness.md +32 -0
  47. package/skills/c99-opinionated-guidelines/reference/data-oriented-design.md +42 -0
  48. package/skills/c99-opinionated-guidelines/reference/designated-initializers.md +32 -0
  49. package/skills/c99-opinionated-guidelines/reference/error-handling.md +49 -0
  50. package/skills/c99-opinionated-guidelines/reference/file-naming.md +33 -0
  51. package/skills/c99-opinionated-guidelines/reference/implementation-variants.md +35 -0
  52. package/skills/c99-opinionated-guidelines/reference/inline-functions.md +37 -0
  53. package/skills/c99-opinionated-guidelines/reference/memory-management.md +35 -0
  54. package/skills/c99-opinionated-guidelines/reference/safety-validations.md +32 -0
  55. package/skills/c99-opinionated-guidelines/reference/testing-patterns.md +39 -0
  56. package/skills/cmake-guidelines/SKILL.md +31 -0
  57. package/skills/cmake-guidelines/reference/compile-options.md +34 -0
  58. package/skills/cmake-guidelines/reference/fetchcontent.md +32 -0
  59. package/skills/cmake-guidelines/reference/find-package.md +29 -0
  60. package/skills/cmake-guidelines/reference/generator-expressions.md +34 -0
  61. package/skills/cmake-guidelines/reference/installation.md +38 -0
  62. package/skills/cmake-guidelines/reference/project-structure.md +40 -0
  63. package/skills/cmake-guidelines/reference/target-types.md +37 -0
  64. package/skills/cmake-guidelines/reference/testing.md +30 -0
  65. package/skills/cmake-guidelines/reference/visibility-specifiers.md +32 -0
  66. package/skills/content-guidelines/SKILL.md +36 -0
  67. package/skills/content-guidelines/reference/humanize.md +30 -0
  68. package/skills/content-guidelines/reference/news.md +28 -0
  69. package/skills/content-guidelines/reference/travelguide.md +31 -0
  70. package/skills/docker-guidelines/SKILL.md +23 -0
  71. package/skills/docker-guidelines/reference/docker-compose.md +40 -0
  72. package/skills/docker-guidelines/reference/layer-caching.md +25 -0
  73. package/skills/docker-guidelines/reference/multi-stage-builds.md +37 -0
  74. package/skills/docker-guidelines/reference/production-config.md +32 -0
  75. package/skills/docker-guidelines/reference/security.md +27 -0
  76. package/skills/express.js-guidelines/SKILL.md +32 -0
  77. package/skills/express.js-guidelines/reference/app-setup.md +39 -0
  78. package/skills/express.js-guidelines/reference/authentication.md +39 -0
  79. package/skills/express.js-guidelines/reference/controllers.md +49 -0
  80. package/skills/express.js-guidelines/reference/error-handling.md +54 -0
  81. package/skills/express.js-guidelines/reference/project-structure.md +29 -0
  82. package/skills/express.js-guidelines/reference/responses.md +30 -0
  83. package/skills/express.js-guidelines/reference/routes.md +29 -0
  84. package/skills/express.js-guidelines/reference/testing.md +39 -0
  85. package/skills/express.js-guidelines/reference/validation.md +41 -0
  86. package/skills/general-fp-guidelines/SKILL.md +28 -0
  87. package/skills/general-oop-guidelines/SKILL.md +28 -0
  88. package/skills/git-guidelines/SKILL.md +46 -0
  89. package/skills/git-guidelines/reference/commit.md +32 -0
  90. package/skills/git-guidelines/reference/merge-resolve.md +38 -0
  91. package/skills/git-guidelines/reference/worktree-abandon.md +48 -0
  92. package/skills/git-guidelines/reference/worktree-cleanup.md +40 -0
  93. package/skills/git-guidelines/reference/worktree-commit.md +46 -0
  94. package/skills/git-guidelines/reference/worktree-create.md +42 -0
  95. package/skills/git-guidelines/reference/worktree-merge.md +45 -0
  96. package/skills/git-guidelines/reference/worktree-validate.md +44 -0
  97. package/skills/hono-guidelines/SKILL.md +49 -0
  98. package/skills/hono-guidelines/reference/application-structure.md +53 -0
  99. package/skills/hono-guidelines/reference/context-storage.md +46 -0
  100. package/skills/hono-guidelines/reference/cookie-handling.md +63 -0
  101. package/skills/hono-guidelines/reference/error-handling.md +69 -0
  102. package/skills/hono-guidelines/reference/middleware-combine.md +47 -0
  103. package/skills/hono-guidelines/reference/middleware-patterns.md +58 -0
  104. package/skills/hono-guidelines/reference/platform-runtime.md +41 -0
  105. package/skills/hono-guidelines/reference/security-middleware.md +60 -0
  106. package/skills/hono-guidelines/reference/validation-type-safety.md +43 -0
  107. package/skills/hono-guidelines/reference/websocket-support.md +59 -0
  108. package/skills/hono-opinionated-guidelines/SKILL.md +49 -0
  109. package/skills/hono-opinionated-guidelines/reference/application-structure.md +53 -0
  110. package/skills/hono-opinionated-guidelines/reference/body-limit.md +57 -0
  111. package/skills/hono-opinionated-guidelines/reference/context-storage.md +46 -0
  112. package/skills/hono-opinionated-guidelines/reference/controllers.md +38 -0
  113. package/skills/hono-opinionated-guidelines/reference/cookie-handling.md +63 -0
  114. package/skills/hono-opinionated-guidelines/reference/error-handling.md +69 -0
  115. package/skills/hono-opinionated-guidelines/reference/middleware-combine.md +47 -0
  116. package/skills/hono-opinionated-guidelines/reference/middleware-patterns.md +58 -0
  117. package/skills/hono-opinionated-guidelines/reference/openapi-explicit-status-codes.md +61 -0
  118. package/skills/hono-opinionated-guidelines/reference/openapi-inline-handlers.md +56 -0
  119. package/skills/hono-opinionated-guidelines/reference/openapi-router-hierarchy.md +64 -0
  120. package/skills/hono-opinionated-guidelines/reference/openapi-spec-generation.md +57 -0
  121. package/skills/hono-opinionated-guidelines/reference/platform-runtime.md +41 -0
  122. package/skills/hono-opinionated-guidelines/reference/router-selection.md +34 -0
  123. package/skills/hono-opinionated-guidelines/reference/security-middleware.md +60 -0
  124. package/skills/hono-opinionated-guidelines/reference/validation-type-safety.md +43 -0
  125. package/skills/hono-opinionated-guidelines/reference/websocket-support.md +59 -0
  126. package/skills/insights-guidelines/SKILL.md +28 -0
  127. package/skills/insights-guidelines/reference/insights-extract.md +31 -0
  128. package/skills/insights-guidelines/reference/insights-integrate.md +35 -0
  129. package/skills/instruction-guidelines/SKILL.md +26 -0
  130. package/skills/instruction-guidelines/reference/assimilate.md +38 -0
  131. package/skills/instruction-guidelines/reference/simplify.md +46 -0
  132. package/skills/instruction-guidelines/reference/sync.md +41 -0
  133. package/skills/kubernetes-guidelines/SKILL.md +28 -0
  134. package/skills/kubernetes-guidelines/reference/configmaps-secrets.md +34 -0
  135. package/skills/kubernetes-guidelines/reference/deployments.md +55 -0
  136. package/skills/kubernetes-guidelines/reference/kustomize.md +41 -0
  137. package/skills/kubernetes-guidelines/reference/network-policies.md +53 -0
  138. package/skills/kubernetes-guidelines/reference/services.md +36 -0
  139. package/skills/kubernetes-guidelines/reference/validation.md +32 -0
  140. package/skills/lua-guidelines/SKILL.md +29 -0
  141. package/skills/lua-guidelines/reference/coroutines.md +66 -0
  142. package/skills/lua-guidelines/reference/error-handling.md +41 -0
  143. package/skills/lua-guidelines/reference/idiomatic-patterns.md +40 -0
  144. package/skills/lua-guidelines/reference/input-validation.md +42 -0
  145. package/skills/lua-guidelines/reference/local-variables.md +33 -0
  146. package/skills/lua-guidelines/reference/metatables.md +52 -0
  147. package/skills/lua-guidelines/reference/module-pattern.md +37 -0
  148. package/skills/lua-guidelines/reference/string-concatenation.md +31 -0
  149. package/skills/lua-opinionated-guidelines/SKILL.md +32 -0
  150. package/skills/lua-opinionated-guidelines/reference/cache-lookups.md +43 -0
  151. package/skills/lua-opinionated-guidelines/reference/coroutines.md +66 -0
  152. package/skills/lua-opinionated-guidelines/reference/error-handling.md +41 -0
  153. package/skills/lua-opinionated-guidelines/reference/idiomatic-patterns.md +40 -0
  154. package/skills/lua-opinionated-guidelines/reference/input-validation.md +42 -0
  155. package/skills/lua-opinionated-guidelines/reference/jit-friendly-tables.md +57 -0
  156. package/skills/lua-opinionated-guidelines/reference/local-variables.md +33 -0
  157. package/skills/lua-opinionated-guidelines/reference/metatables.md +52 -0
  158. package/skills/lua-opinionated-guidelines/reference/module-pattern.md +37 -0
  159. package/skills/lua-opinionated-guidelines/reference/string-concatenation.md +31 -0
  160. package/skills/moon-guidelines/SKILL.md +30 -0
  161. package/skills/moon-guidelines/reference/docker-multistage.md +42 -0
  162. package/skills/moon-guidelines/reference/project-constraints.md +25 -0
  163. package/skills/moon-guidelines/reference/query-language.md +27 -0
  164. package/skills/moon-guidelines/reference/tag-based-filtering.md +28 -0
  165. package/skills/moon-guidelines/reference/task-configuration.md +38 -0
  166. package/skills/moon-guidelines/reference/task-inheritance.md +30 -0
  167. package/skills/motion-react-guidelines/SKILL.md +66 -0
  168. package/skills/motion-react-guidelines/reference/3d-effects.md +35 -0
  169. package/skills/motion-react-guidelines/reference/entrance.md +36 -0
  170. package/skills/motion-react-guidelines/reference/exit.md +35 -0
  171. package/skills/motion-react-guidelines/reference/gestures.md +23 -0
  172. package/skills/motion-react-guidelines/reference/layout.md +39 -0
  173. package/skills/motion-react-guidelines/reference/motion-values.md +33 -0
  174. package/skills/motion-react-guidelines/reference/performance.md +32 -0
  175. package/skills/motion-react-guidelines/reference/scroll.md +38 -0
  176. package/skills/motion-react-guidelines/reference/spring-physics.md +40 -0
  177. package/skills/motion-react-guidelines/reference/stagger.md +34 -0
  178. package/skills/motion-react-guidelines/reference/svg-path.md +33 -0
  179. package/skills/motion-react-guidelines/reference/text-effects.md +39 -0
  180. package/skills/plan-guidelines/SKILL.md +56 -0
  181. package/skills/plan-guidelines/reference/code-align.md +23 -0
  182. package/skills/plan-guidelines/reference/code-barrels-remove.md +24 -0
  183. package/skills/plan-guidelines/reference/code-comments-remove.md +28 -0
  184. package/skills/plan-guidelines/reference/code-harden.md +30 -0
  185. package/skills/plan-guidelines/reference/code-shared-extract.md +25 -0
  186. package/skills/plan-guidelines/reference/code-simplify.md +33 -0
  187. package/skills/plan-guidelines/reference/code-template-extract.md +34 -0
  188. package/skills/plan-guidelines/reference/code-template-scaffold.md +36 -0
  189. package/skills/plan-guidelines/reference/general-research.md +35 -0
  190. package/skills/plan-guidelines/reference/plan-create.md +37 -0
  191. package/skills/plan-guidelines/reference/plan-tdd-create.md +44 -0
  192. package/skills/plan-guidelines/reference/todos.md +39 -0
  193. package/skills/presentation-guidelines/SKILL.md +25 -0
  194. package/skills/presentation-guidelines/reference/presentation-create.md +41 -0
  195. package/skills/presentation-guidelines/reference/presentation-motion-scaffold.md +38 -0
  196. package/skills/python-guidelines/SKILL.md +32 -0
  197. package/skills/python-guidelines/reference/async-await-patterns.md +62 -0
  198. package/skills/python-guidelines/reference/caching-functions.md +47 -0
  199. package/skills/python-guidelines/reference/dataclasses-type-hints.md +63 -0
  200. package/skills/python-guidelines/reference/exception-handling.md +72 -0
  201. package/skills/python-guidelines/reference/generators-comprehensions.md +54 -0
  202. package/skills/python-guidelines/reference/pathlib-file-ops.md +60 -0
  203. package/skills/python-guidelines/reference/resource-management.md +58 -0
  204. package/skills/python-guidelines/reference/string-formatting.md +41 -0
  205. package/skills/python-guidelines/reference/type-checking.md +47 -0
  206. package/skills/react-guidelines/SKILL.md +105 -0
  207. package/skills/react-guidelines/reference/accessibility.md +31 -0
  208. package/skills/react-guidelines/reference/activity-effect-event.md +42 -0
  209. package/skills/react-guidelines/reference/component-design.md +57 -0
  210. package/skills/react-guidelines/reference/hooks.md +39 -0
  211. package/skills/react-guidelines/reference/migration-anti-patterns.md +33 -0
  212. package/skills/react-guidelines/reference/migration-deprecations.md +109 -0
  213. package/skills/react-guidelines/reference/migration-paradigm-shifts.md +33 -0
  214. package/skills/react-guidelines/reference/migration-typescript.md +95 -0
  215. package/skills/react-guidelines/reference/new-hooks.md +94 -0
  216. package/skills/react-guidelines/reference/performance-optimization.md +41 -0
  217. package/skills/react-guidelines/reference/react-compiler.md +34 -0
  218. package/skills/react-guidelines/reference/server-components.md +99 -0
  219. package/skills/react-guidelines/reference/state-management.md +72 -0
  220. package/skills/react-guidelines/reference/suspense-streaming.md +36 -0
  221. package/skills/remotion-guidelines/SKILL.md +67 -0
  222. package/skills/remotion-guidelines/reference/animations.md +121 -0
  223. package/skills/remotion-guidelines/reference/assets.md +21 -0
  224. package/skills/remotion-guidelines/reference/captions.md +33 -0
  225. package/skills/remotion-guidelines/reference/charts.md +35 -0
  226. package/skills/remotion-guidelines/reference/compositions.md +40 -0
  227. package/skills/remotion-guidelines/reference/dom-measurement.md +82 -0
  228. package/skills/remotion-guidelines/reference/gifs.md +33 -0
  229. package/skills/remotion-guidelines/reference/lottie.md +41 -0
  230. package/skills/remotion-guidelines/reference/maps.md +26 -0
  231. package/skills/remotion-guidelines/reference/media.md +39 -0
  232. package/skills/remotion-guidelines/reference/mediabunny.md +28 -0
  233. package/skills/remotion-guidelines/reference/sequencing.md +44 -0
  234. package/skills/remotion-guidelines/reference/text.md +24 -0
  235. package/skills/remotion-guidelines/reference/three-d.md +33 -0
  236. package/skills/remotion-guidelines/reference/timing.md +22 -0
  237. package/skills/remotion-guidelines/reference/transitions.md +52 -0
  238. package/skills/shell-scripting-guidelines/SKILL.md +31 -0
  239. package/skills/shell-scripting-guidelines/reference/argument-parsing.md +67 -0
  240. package/skills/shell-scripting-guidelines/reference/common-patterns.md +46 -0
  241. package/skills/shell-scripting-guidelines/reference/error-handling.md +62 -0
  242. package/skills/shell-scripting-guidelines/reference/functions.md +66 -0
  243. package/skills/shell-scripting-guidelines/reference/idempotency.md +57 -0
  244. package/skills/shell-scripting-guidelines/reference/parameter-expansion.md +38 -0
  245. package/skills/shell-scripting-guidelines/reference/posix-compatibility.md +53 -0
  246. package/skills/shell-scripting-guidelines/reference/quoting.md +42 -0
  247. package/skills/shell-scripting-guidelines/reference/script-template.md +70 -0
  248. package/skills/shell-scripting-guidelines/reference/strict-mode.md +41 -0
  249. package/skills/shell-scripting-guidelines/reference/validation.md +30 -0
  250. package/skills/skill-guidelines/SKILL.md +33 -0
  251. package/skills/skill-guidelines/reference/assimilate.md +51 -0
  252. package/skills/skill-guidelines/reference/create.md +48 -0
  253. package/skills/skill-guidelines/reference/extract.md +48 -0
  254. package/skills/skill-guidelines/reference/simplify.md +56 -0
  255. package/skills/sql-postgresql-guidelines/SKILL.md +31 -0
  256. package/skills/sql-postgresql-guidelines/reference/constraints.md +47 -0
  257. package/skills/sql-postgresql-guidelines/reference/cte-patterns.md +42 -0
  258. package/skills/sql-postgresql-guidelines/reference/data-types.md +46 -0
  259. package/skills/sql-postgresql-guidelines/reference/indexing.md +45 -0
  260. package/skills/sql-postgresql-guidelines/reference/jsonb.md +54 -0
  261. package/skills/sql-postgresql-guidelines/reference/performance.md +46 -0
  262. package/skills/sql-postgresql-guidelines/reference/role-based-access.md +47 -0
  263. package/skills/sql-postgresql-guidelines/reference/row-level-security.md +66 -0
  264. package/skills/strudel-guidelines/SKILL.md +52 -0
  265. package/skills/strudel-guidelines/reference/arrangement.md +24 -0
  266. package/skills/strudel-guidelines/reference/conditionals.md +22 -0
  267. package/skills/strudel-guidelines/reference/effects.md +22 -0
  268. package/skills/strudel-guidelines/reference/genre-ambient.md +26 -0
  269. package/skills/strudel-guidelines/reference/genre-harsh.md +21 -0
  270. package/skills/strudel-guidelines/reference/genre-trance.md +23 -0
  271. package/skills/strudel-guidelines/reference/layering.md +22 -0
  272. package/skills/strudel-guidelines/reference/mini-notation.md +74 -0
  273. package/skills/strudel-guidelines/reference/modulation.md +22 -0
  274. package/skills/strudel-guidelines/reference/scales-harmony.md +20 -0
  275. package/skills/strudel-guidelines/reference/sounds.md +89 -0
  276. package/skills/strudel-guidelines/reference/tempo-timing.md +23 -0
  277. package/skills/terraform-guidelines/SKILL.md +28 -0
  278. package/skills/terraform-guidelines/reference/advanced-patterns.md +88 -0
  279. package/skills/terraform-guidelines/reference/locals.md +53 -0
  280. package/skills/terraform-guidelines/reference/module-definition.md +81 -0
  281. package/skills/terraform-guidelines/reference/module-structure.md +51 -0
  282. package/skills/terraform-guidelines/reference/remote-state.md +38 -0
  283. package/skills/terraform-guidelines/reference/root-module.md +71 -0
  284. package/skills/terraform-guidelines/reference/typed-variables.md +90 -0
  285. package/skills/threejs-guidelines/SKILL.md +38 -0
  286. package/skills/threejs-guidelines/reference/animation.md +26 -0
  287. package/skills/threejs-guidelines/reference/cameras-controls.md +26 -0
  288. package/skills/threejs-guidelines/reference/geometry.md +22 -0
  289. package/skills/threejs-guidelines/reference/interaction.md +25 -0
  290. package/skills/threejs-guidelines/reference/lighting-shadows.md +31 -0
  291. package/skills/threejs-guidelines/reference/loaders.md +29 -0
  292. package/skills/threejs-guidelines/reference/materials.md +25 -0
  293. package/skills/threejs-guidelines/reference/math.md +27 -0
  294. package/skills/threejs-guidelines/reference/node-materials.md +32 -0
  295. package/skills/threejs-guidelines/reference/patterns.md +29 -0
  296. package/skills/threejs-guidelines/reference/performance.md +24 -0
  297. package/skills/threejs-guidelines/reference/physics-vr.md +36 -0
  298. package/skills/threejs-guidelines/reference/postprocessing.md +26 -0
  299. package/skills/threejs-guidelines/reference/scene-fundamentals.md +26 -0
  300. package/skills/threejs-guidelines/reference/shaders.md +28 -0
  301. package/skills/threejs-guidelines/reference/textures.md +21 -0
  302. package/skills/threejs-guidelines/reference/webgpu.md +34 -0
  303. package/skills/typescript-guidelines/SKILL.md +37 -0
  304. package/skills/typescript-guidelines/reference/async-without-await.md +32 -0
  305. package/skills/typescript-guidelines/reference/avoid-barrel-exports.md +25 -0
  306. package/skills/typescript-guidelines/reference/avoid-eslint-disable.md +28 -0
  307. package/skills/typescript-guidelines/reference/avoid-reexports.md +26 -0
  308. package/skills/typescript-guidelines/reference/env-access-bracket-notation.md +29 -0
  309. package/skills/typescript-guidelines/reference/numeric-separator-enforcement.md +30 -0
  310. package/skills/typescript-guidelines/reference/template-literals-require-string-conversion.md +26 -0
  311. package/skills/typescript-guidelines/reference/unbound-method-references.md +32 -0
  312. package/skills/typescript-guidelines/reference/unnecessary-async-keywords.md +37 -0
  313. package/skills/typescript-to-lua-guidelines/SKILL.md +33 -0
  314. package/skills/typescript-to-lua-guidelines/reference/avoiding-heavy-features.md +41 -0
  315. package/skills/typescript-to-lua-guidelines/reference/coroutine-patterns.md +49 -0
  316. package/skills/typescript-to-lua-guidelines/reference/function-patterns.md +59 -0
  317. package/skills/typescript-to-lua-guidelines/reference/lua-interop.md +49 -0
  318. package/skills/typescript-to-lua-guidelines/reference/module-organization.md +42 -0
  319. package/skills/typescript-to-lua-guidelines/reference/multi-return-functions.md +47 -0
  320. package/skills/typescript-to-lua-guidelines/reference/namespaces-vs-classes.md +52 -0
  321. package/skills/typescript-to-lua-guidelines/reference/performance-tips.md +68 -0
  322. package/skills/typescript-to-lua-guidelines/reference/stable-tables.md +60 -0
  323. package/skills/typescript-to-lua-guidelines/reference/tsconfig.md +46 -0
  324. package/skills/typescript-to-lua-guidelines/reference/tstl-decorators.md +61 -0
  325. package/skills/typescript-to-lua-guidelines/reference/type-safety.md +79 -0
  326. package/skills/vitest-guidelines/SKILL.md +32 -0
  327. package/skills/vitest-guidelines/reference/cors-preflight-status-code.md +34 -0
  328. package/skills/vitest-guidelines/reference/http-testing.md +57 -0
  329. package/skills/vitest-guidelines/reference/json-response-type-safety.md +40 -0
  330. package/skills/vitest-guidelines/reference/mock-patterns.md +53 -0
  331. package/skills/vitest-guidelines/reference/project-references-path-resolution.md +36 -0
  332. package/skills/vitest-guidelines/reference/test-organization.md +25 -0
  333. package/skills/vitest-guidelines/reference/timestamp-testing.md +55 -0
  334. package/skills/vitest-guidelines/reference/type-safety.md +55 -0
  335. package/skills/vitest-guidelines/reference/typescript-config.md +43 -0
  336. package/skills/zod-guidelines/SKILL.md +33 -0
  337. package/skills/zod-guidelines/reference/default-values-output-type.md +63 -0
  338. package/skills/zod-guidelines/reference/migration-string-validators.md +38 -0
  339. package/skills/zod-guidelines/reference/migration-v4.md +46 -0
  340. package/skills/zod-guidelines/reference/schema-organization.md +73 -0
  341. package/skills/zod-guidelines/reference/validation-patterns.md +37 -0
@@ -0,0 +1,52 @@
1
+ # transitions: Scene Transitions
2
+
3
+ **Guideline:** Use `<TransitionSeries>` from `@remotion/transitions` for fullscreen scene transitions.
4
+
5
+ **Rationale:** Transitions overlap scenes, reducing total composition duration. `<TransitionSeries>` handles complex timing automatically.
6
+
7
+ **Example:**
8
+ ```tsx
9
+ import { TransitionSeries } from '@remotion/transitions'
10
+ import { linearTiming, springTiming } from '@remotion/transitions'
11
+ import { fade, slide } from '@remotion/transitions'
12
+ import { useVideoConfig } from 'remotion'
13
+
14
+ export const MyComposition = () => {
15
+ const { fps } = useVideoConfig()
16
+
17
+ return (
18
+ <TransitionSeries>
19
+ <TransitionSeries.Sequence durationInFrames={2 * fps}>
20
+ <Scene1 />
21
+ </TransitionSeries.Sequence>
22
+ <TransitionSeries.Transition
23
+ timing={linearTiming({ durationInFrames: 0.5 * fps })}
24
+ effect={fade()}
25
+ />
26
+ <TransitionSeries.Sequence durationInFrames={3 * fps}>
27
+ <Scene2 />
28
+ </TransitionSeries.Sequence>
29
+ <TransitionSeries.Transition
30
+ timing={springTiming({ durationInFrames: 0.75 * fps })}
31
+ effect={slide({ direction: 'from-left' })}
32
+ />
33
+ <TransitionSeries.Sequence durationInFrames={2 * fps}>
34
+ <Scene3 />
35
+ </TransitionSeries.Sequence>
36
+ </TransitionSeries>
37
+ )
38
+ // Total: (2 + 0.5 + 3 + 0.75 + 2) * fps frames
39
+ }
40
+ ```
41
+
42
+ **Techniques:**
43
+ - Install `@remotion/transitions` package before use
44
+ - Wrap all scenes with `<TransitionSeries>` container
45
+ - Use `<TransitionSeries.Sequence>` for each scene's content
46
+ - Add `<TransitionSeries.Transition>` between sequences for effects
47
+ - Account for overlap in duration math: `total = scene1 + scene2 - transition`
48
+ - Choose transition effect: `fade()`, `slide({direction})`, `wipe({direction})`, `flip({direction})`, `clockWipe()`
49
+ - Set timing with `linearTiming({durationInFrames})` for constant speed
50
+ - Use `springTiming({config, durationInFrames})` for animated spring transitions
51
+ - Calculate total duration accounting for overlapping transitions
52
+ - Test duration math carefully to ensure smooth transitions
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: shell-scripting-guidelines
3
+ description: >-
4
+ Trigger on `.sh` files and shell scripts. Use when writing POSIX shell scripts for automation. Apply for strict mode, quoting, error handling, idempotent operations. Keywords: shell, bash, POSIX, shellcheck, shfmt, strict mode, quoting, parameter expansion, exit codes, idempotency.
5
+ ---
6
+
7
+ # Shell Scripting Coding Guidelines
8
+
9
+ ## Essentials
10
+
11
+ - **POSIX compatibility** - Use POSIX sh, lint with shellcheck, format with shfmt, see [reference/posix-compatibility.md](reference/posix-compatibility.md)
12
+ - **Strict mode** - Use strict mode and safe defaults, see [reference/strict-mode.md](reference/strict-mode.md)
13
+ - **Quoting** - Quote all expansions to avoid word splitting, see [reference/quoting.md](reference/quoting.md)
14
+ - **Functions** - Write small, focused functions, see [reference/functions.md](reference/functions.md)
15
+ - **Parameter expansion** - Set default values and manipulate variables, see [reference/parameter-expansion.md](reference/parameter-expansion.md)
16
+ - **Error handling** - Implement exit codes and error messages, see [reference/error-handling.md](reference/error-handling.md)
17
+ - **Idempotency** - Make scripts safely re-runnable, see [reference/idempotency.md](reference/idempotency.md)
18
+
19
+ ## Progressive disclosure
20
+
21
+ - Read [reference/posix-compatibility.md](reference/posix-compatibility.md) - When ensuring portability across shells
22
+ - Read [reference/strict-mode.md](reference/strict-mode.md) - When setting up error handling and safety flags
23
+ - Read [reference/quoting.md](reference/quoting.md) - When variables expand incorrectly or word splitting occurs
24
+ - Read [reference/functions.md](reference/functions.md) - When organizing script logic or creating reusable code
25
+ - Read [reference/parameter-expansion.md](reference/parameter-expansion.md) - When setting default values or manipulating variables
26
+ - Read [reference/error-handling.md](reference/error-handling.md) - When implementing exit codes or error messages
27
+ - Read [reference/argument-parsing.md](reference/argument-parsing.md) - When parsing command-line flags or arguments
28
+ - Read [reference/validation.md](reference/validation.md) - When checking preconditions or input validity
29
+ - Read [reference/idempotency.md](reference/idempotency.md) - When scripts should be safely re-runnable
30
+ - Read [reference/common-patterns.md](reference/common-patterns.md) - When learning common shell idioms
31
+ - Read [reference/script-template.md](reference/script-template.md) - When starting a new shell script
@@ -0,0 +1,67 @@
1
+ # argument-parsing: Argument Parsing
2
+
3
+ **Guideline:** Validate script arguments and parse flags with clear usage messages.
4
+
5
+ **Rationale:** Proper argument parsing prevents script misuse, provides helpful feedback to users, and makes scripts more robust and user-friendly.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Simple argument parsing
11
+ parse_args() {
12
+ if [ "$#" -lt 1 ]; then
13
+ die "Usage: $0 <input> [output]" 2
14
+ fi
15
+
16
+ input="$1"
17
+ output="${2:-output.txt}"
18
+
19
+ if [ ! -f "$input" ]; then
20
+ die "Input file not found: $input" 2
21
+ fi
22
+ }
23
+
24
+ # ✅ Flag parsing
25
+ parse_flags() {
26
+ verbose=0
27
+ force=0
28
+
29
+ while [ "$#" -gt 0 ]; do
30
+ case "$1" in
31
+ -v|--verbose)
32
+ verbose=1
33
+ shift
34
+ ;;
35
+ -f|--force)
36
+ force=1
37
+ shift
38
+ ;;
39
+ -h|--help)
40
+ show_usage
41
+ exit 0
42
+ ;;
43
+ -*)
44
+ die "Unknown option: $1" 2
45
+ ;;
46
+ *)
47
+ break
48
+ ;;
49
+ esac
50
+ done
51
+
52
+ # Remaining args
53
+ if [ "$#" -lt 1 ]; then
54
+ die "Missing required argument" 2
55
+ fi
56
+
57
+ input="$1"
58
+ }
59
+ ```
60
+
61
+ **Techniques:**
62
+ - Check argument count before accessing positional parameters
63
+ - Provide clear usage messages showing required and optional arguments
64
+ - Use a while loop with case statement for flag parsing
65
+ - Support both short (-v) and long (--verbose) flags
66
+ - Handle unknown flags with an error message
67
+ - Validate argument values after parsing
@@ -0,0 +1,46 @@
1
+ # common-patterns: Common Patterns
2
+
3
+ **Guideline:** Use well-tested patterns for common operations like reading files, processing output, and managing temporary resources.
4
+
5
+ **Rationale:** Standard patterns are proven to handle edge cases correctly and avoid common pitfalls like word splitting, missing the last line, or resource leaks.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Read file line by line
11
+ while IFS= read -r line; do
12
+ process_line "$line"
13
+ done < "$input_file"
14
+
15
+ # ✅ Process command output
16
+ find . -name '*.txt' | while IFS= read -r file; do
17
+ process_file "$file"
18
+ done
19
+
20
+ # ✅ Temporary directory
21
+ temp_dir="$(mktemp -d)"
22
+ trap 'rm -rf "$temp_dir"' EXIT
23
+
24
+ # ✅ Check if running as root
25
+ if [ "$(id -u)" -eq 0 ]; then
26
+ log "Running as root"
27
+ fi
28
+
29
+ # ✅ Get script directory
30
+ script_dir="$(cd "$(dirname "$0")" && pwd)"
31
+
32
+ # ✅ Check exit status
33
+ if command arg1 arg2; then
34
+ log "Command succeeded"
35
+ else
36
+ error "Command failed with exit code: $?"
37
+ fi
38
+ ```
39
+
40
+ **Techniques:**
41
+ - Use `while IFS= read -r line` to read files line by line
42
+ - Create temp files/dirs with `mktemp` and always trap cleanup
43
+ - Use command substitution in conditionals for proper error handling
44
+ - Get script directory with `cd "$(dirname "$0")" && pwd`
45
+ - Check root with `[ "$(id -u)" -eq 0 ]`
46
+ - Preserve IFS in read loops to handle whitespace correctly
@@ -0,0 +1,62 @@
1
+ # error-handling: Error Handling
2
+
3
+ **Guideline:** Provide clear error messages with context, validate operations, and implement cleanup handlers.
4
+
5
+ **Rationale:** Good error handling makes scripts easier to debug and prevents resource leaks. Clear error messages help users understand and fix problems quickly.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Clear error messages with context
11
+ die() {
12
+ printf 'ERROR: %s\n' "$1" >&2
13
+ exit "${2:-1}"
14
+ }
15
+
16
+ # ✅ Check command existence
17
+ require_command() {
18
+ local cmd="$1"
19
+ if ! command -v "$cmd" >/dev/null 2>&1; then
20
+ die "Required command not found: $cmd" 127
21
+ fi
22
+ }
23
+
24
+ # ✅ Validate file operations
25
+ read_config() {
26
+ local config="$1"
27
+
28
+ if [ ! -f "$config" ]; then
29
+ die "Config file not found: $config" 2
30
+ fi
31
+
32
+ if [ ! -r "$config" ]; then
33
+ die "Config file not readable: $config" 2
34
+ fi
35
+
36
+ cat "$config"
37
+ }
38
+
39
+ # ✅ Cleanup on exit
40
+ cleanup() {
41
+ local exit_code=$?
42
+ if [ -n "${temp_file:-}" ]; then
43
+ rm -f "$temp_file"
44
+ fi
45
+ exit "$exit_code"
46
+ }
47
+
48
+ trap cleanup EXIT INT TERM
49
+
50
+ # Create temp file
51
+ temp_file="$(mktemp)"
52
+ # Use temp_file...
53
+ # Cleanup happens automatically
54
+ ```
55
+
56
+ **Techniques:**
57
+ - Create a `die()` function for fatal errors with exit codes
58
+ - Check command existence with `command -v`
59
+ - Validate file operations before performing them
60
+ - Use trap to ensure cleanup on exit, interrupt, or termination
61
+ - Include context in error messages (filenames, expected values)
62
+ - Use appropriate exit codes (0=success, 1=general error, 2=usage error, 127=command not found)
@@ -0,0 +1,66 @@
1
+ # functions: Function Best Practices
2
+
3
+ **Guideline:** Write small, focused functions with local variables and meaningful return codes.
4
+
5
+ **Rationale:** Small functions improve readability, testability, and reusability. Local variables prevent variable pollution, and return codes enable proper error handling.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Small focused functions
11
+ is_file() {
12
+ [ -f "$1" ]
13
+ }
14
+
15
+ is_dir() {
16
+ [ -d "$1" ]
17
+ }
18
+
19
+ file_exists() {
20
+ [ -e "$1" ]
21
+ }
22
+
23
+ # ✅ Use local variables
24
+ process_file() {
25
+ local file="$1"
26
+ local output="$2"
27
+
28
+ if ! is_file "$file"; then
29
+ error "Not a file: $file"
30
+ return 1
31
+ fi
32
+
33
+ # Process file...
34
+ log "Processed: $file -> $output"
35
+ }
36
+
37
+ # ✅ Return status codes
38
+ validate_input() {
39
+ local input="$1"
40
+
41
+ if [ -z "$input" ]; then
42
+ return 1
43
+ fi
44
+
45
+ if [ "${#input}" -lt 3 ]; then
46
+ return 2
47
+ fi
48
+
49
+ return 0
50
+ }
51
+
52
+ # Usage
53
+ if validate_input "$user_input"; then
54
+ log "Valid input"
55
+ else
56
+ die "Invalid input" "$?"
57
+ fi
58
+ ```
59
+
60
+ **Techniques:**
61
+ - Keep functions focused on a single task
62
+ - Declare all function variables as `local`
63
+ - Return 0 for success, non-zero for failure
64
+ - Use descriptive function names (verb_noun format)
65
+ - Validate function arguments before use
66
+ - Use return codes, not exit, within functions
@@ -0,0 +1,57 @@
1
+ # idempotency: Idempotent Scripts
2
+
3
+ **Guideline:** Design scripts to be safely run multiple times without unintended side effects.
4
+
5
+ **Rationale:** Idempotent scripts are essential for automation, deployment, and configuration management. They allow safe retries after failures and prevent duplicate operations.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Check before creating
11
+ create_directory() {
12
+ local dir="$1"
13
+
14
+ if [ -d "$dir" ]; then
15
+ log "Directory exists: $dir"
16
+ return 0
17
+ fi
18
+
19
+ mkdir -p "$dir"
20
+ log "Created directory: $dir"
21
+ }
22
+
23
+ # ✅ Check before modifying
24
+ ensure_line_in_file() {
25
+ local line="$1"
26
+ local file="$2"
27
+
28
+ if grep -qF "$line" "$file" 2>/dev/null; then
29
+ log "Line already present: $file"
30
+ return 0
31
+ fi
32
+
33
+ printf '%s\n' "$line" >> "$file"
34
+ log "Added line to: $file"
35
+ }
36
+
37
+ # ✅ Atomic operations with temp files
38
+ update_config() {
39
+ local config="$1"
40
+ local temp
41
+ temp="$(mktemp)"
42
+
43
+ # Generate new config
44
+ generate_config > "$temp"
45
+
46
+ # Atomic replace
47
+ mv "$temp" "$config"
48
+ }
49
+ ```
50
+
51
+ **Techniques:**
52
+ - Check if resources exist before creating them
53
+ - Use conditional operations that skip when already done
54
+ - Use atomic operations with temporary files
55
+ - Log actions taken vs. skipped for observability
56
+ - Use `mkdir -p` and similar idempotent commands
57
+ - Verify state before and after modifications
@@ -0,0 +1,38 @@
1
+ # parameter-expansion: Default Values and Parameter Expansion
2
+
3
+ **Guideline:** Use parameter expansion to set default values, require variables, and perform string operations.
4
+
5
+ **Rationale:** Parameter expansion provides safe, portable ways to handle optional and required variables without external commands, improving script robustness and performance.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Default value if unset or empty
11
+ : "${CONFIG_FILE:=/etc/app/config.conf}"
12
+ : "${PORT:=8080}"
13
+ : "${DEBUG:=0}"
14
+
15
+ # ✅ Default value only if unset (keeps empty string)
16
+ : "${NAME:=default}"
17
+
18
+ # ✅ Use in assignments
19
+ config="${CONFIG_FILE:-/etc/default.conf}"
20
+
21
+ # ✅ Error if variable unset
22
+ : "${REQUIRED_VAR:?Variable REQUIRED_VAR must be set}"
23
+
24
+ # ✅ Alternate value if set
25
+ message="${DEBUG:+Debug mode enabled}"
26
+
27
+ # ✅ String operations
28
+ filename="document.txt"
29
+ basename="${filename%.*}" # document
30
+ extension="${filename##*.}" # txt
31
+ ```
32
+
33
+ **Techniques:**
34
+ - Use `${VAR:-default}` for default if unset or empty
35
+ - Use `: "${VAR:=value}"` to set defaults
36
+ - Use `${VAR:?message}` to require variables
37
+ - Use `${VAR:+value}` for alternate values when set
38
+ - Use `${var%pattern}` and `${var##pattern}` for string operations
@@ -0,0 +1,53 @@
1
+ # posix-compatibility: POSIX Compatibility
2
+
3
+ **Guideline:** Use POSIX-compliant syntax for maximum portability across different shells and systems.
4
+
5
+ **Rationale:** POSIX-compliant scripts run on any POSIX shell (sh, dash, bash, zsh, etc.), ensuring scripts work reliably across different systems without modification.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Use POSIX test constructs
11
+ if [ -f "$file" ]; then
12
+ log "File exists"
13
+ fi
14
+
15
+ # ❌ Avoid bash-specific [[
16
+ if [[ -f $file ]]; then # Not POSIX
17
+ log "File exists"
18
+ fi
19
+
20
+ # ✅ POSIX string comparison
21
+ if [ "$status" = "success" ]; then
22
+ log "Success"
23
+ fi
24
+
25
+ # ✅ POSIX numeric comparison
26
+ if [ "$count" -gt 10 ]; then
27
+ log "Count exceeds 10"
28
+ fi
29
+
30
+ # ✅ POSIX command existence check
31
+ if command -v git >/dev/null 2>&1; then
32
+ log "git is available"
33
+ fi
34
+
35
+ # ❌ Avoid type/which
36
+ if type git >/dev/null 2>&1; then # Less portable
37
+ log "git is available"
38
+ fi
39
+
40
+ # ✅ POSIX-compatible string operations
41
+ string="hello world"
42
+ # Use parameter expansion instead of bash ${var^^}
43
+ upper="$(printf '%s' "$string" | tr '[:lower:]' '[:upper:]')"
44
+ ```
45
+
46
+ **Techniques:**
47
+ - Use `[ ]` instead of bash-specific `[[ ]]`
48
+ - Use `=` for string comparison, not `==`
49
+ - Use `-gt`, `-lt`, etc. for numeric comparisons
50
+ - Use `command -v` instead of `which` or `type`
51
+ - Use `tr` and `cut` instead of bash string operations
52
+ - Avoid bash arrays, use positional parameters or temp files
53
+ - Test scripts with `sh` (dash) not just bash
@@ -0,0 +1,42 @@
1
+ # quoting: Quoting Variables and Expansions
2
+
3
+ **Guideline:** Always quote variable expansions with double quotes to prevent word splitting and glob expansion.
4
+
5
+ **Rationale:** Unquoted variables are subject to word splitting on whitespace and pathname expansion, leading to subtle bugs when filenames contain spaces or special characters.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Always quote variable expansions
11
+ name="John Doe"
12
+ log "Hello, $name"
13
+ file="/path/to/my file.txt"
14
+ cat "$file"
15
+
16
+ # ❌ Unquoted variables cause word splitting
17
+ cat $file # Tries to cat "/path/to/my" and "file.txt" separately!
18
+
19
+ # ✅ Quote arrays in loops
20
+ for file in "$@"; do
21
+ process "$file"
22
+ done
23
+
24
+ # ❌ Unquoted $@ splits on spaces
25
+ for file in $@; do # Wrong!
26
+ process "$file"
27
+ done
28
+
29
+ # ✅ Use "${var}" for clarity
30
+ config_file="${CONFIG_DIR}/app.conf"
31
+
32
+ # ✅ Quote command substitution
33
+ current_date="$(date +%Y-%m-%d)"
34
+ files="$(find . -name '*.txt')"
35
+ ```
36
+
37
+ **Techniques:**
38
+ - Quote all variable expansions: `"$var"`
39
+ - Quote command substitutions: `"$(command)"`
40
+ - Quote `"$@"` in loops to preserve arguments with spaces
41
+ - Use `"${var}"` for clarity in complex expansions
42
+ - Never use unquoted variables in file operations
@@ -0,0 +1,70 @@
1
+ # script-template: Basic Script Template
2
+
3
+ **Guideline:** Start all shell scripts with a standard template including shebang, strict mode, logging functions, and argument validation.
4
+
5
+ **Rationale:** A consistent template ensures scripts follow safety best practices from the start, reducing common errors and improving maintainability.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ #!/usr/bin/env sh
11
+ # Description: Brief description of what this script does
12
+ # Usage: script.sh <arg1> [arg2]
13
+
14
+ set -eu # Exit on error, error on undefined variable
15
+ # Note: pipefail not in POSIX, use only if targeting bash
16
+
17
+ # Default values
18
+ : "${TMPDIR:=/tmp}"
19
+ : "${VERBOSE:=0}"
20
+
21
+ # Logging functions
22
+ log() {
23
+ printf '%s\n' "$@"
24
+ }
25
+
26
+ log_verbose() {
27
+ if [ "$VERBOSE" = "1" ]; then
28
+ printf '[VERBOSE] %s\n' "$@" >&2
29
+ fi
30
+ }
31
+
32
+ error() {
33
+ printf 'ERROR: %s\n' "$@" >&2
34
+ }
35
+
36
+ die() {
37
+ error "$1"
38
+ exit "${2:-1}"
39
+ }
40
+
41
+ # Check requirements
42
+ command -v required_tool >/dev/null 2>&1 || die "required_tool not found" 2
43
+
44
+ # Validate arguments
45
+ if [ "$#" -lt 1 ]; then
46
+ die "Usage: $0 <name> [options]" 2
47
+ fi
48
+
49
+ # Main logic
50
+ main() {
51
+ local name="$1"
52
+ log "Processing: $name"
53
+
54
+ # Do work...
55
+
56
+ log "Done"
57
+ }
58
+
59
+ # Run main
60
+ main "$@"
61
+ ```
62
+
63
+ **Techniques:**
64
+ - Begin with `#!/usr/bin/env sh` for portability
65
+ - Add script description and usage in comments
66
+ - Set strict mode with `set -eu`
67
+ - Define logging and error functions
68
+ - Check for required dependencies
69
+ - Validate arguments before processing
70
+ - Implement main logic in a main() function
@@ -0,0 +1,41 @@
1
+ # strict-mode: Strict Mode and Safety
2
+
3
+ **Guideline:** Enable strict mode with `set -eu` (POSIX) or `set -euo pipefail` (bash/zsh) to catch errors early.
4
+
5
+ **Rationale:** Strict mode prevents scripts from continuing after errors, catches undefined variable usage, and makes pipeline failures visible, preventing silent failures that can cause data loss or security issues.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # ✅ Basic strict mode (POSIX)
11
+ set -eu
12
+
13
+ # ✅ Full strict mode (bash/zsh)
14
+ set -euo pipefail
15
+
16
+ # What each flag does:
17
+ # -e: Exit immediately if command fails
18
+ # -u: Error on undefined variable
19
+ # -o pipefail: Fail if any command in pipeline fails
20
+
21
+ # ✅ Safer alternative for POSIX (no pipefail)
22
+ set -eu
23
+ IFS=$(printf '\n\t')
24
+
25
+ # ✅ Handle expected failures explicitly
26
+ if ! command_that_might_fail; then
27
+ log "Expected failure occurred"
28
+ fi
29
+
30
+ # ✅ Temporary disable strict mode
31
+ set +e
32
+ optional_command || true
33
+ set -e
34
+ ```
35
+
36
+ **Techniques:**
37
+ - Add `set -eu` at the top of POSIX scripts
38
+ - Add `set -euo pipefail` for bash/zsh scripts
39
+ - Handle expected failures explicitly with `if ! command; then`
40
+ - Temporarily disable strict mode only when necessary
41
+ - Set IFS to newline and tab for POSIX compatibility
@@ -0,0 +1,30 @@
1
+ # validation: Shellcheck and Shfmt Integration
2
+
3
+ **Guideline:** Validate scripts with shellcheck and format with shfmt for consistent, error-free code.
4
+
5
+ **Rationale:** Shellcheck catches common bugs, portability issues, and anti-patterns automatically. Shfmt ensures consistent formatting across scripts, improving readability and maintainability.
6
+
7
+ **Example:**
8
+
9
+ ```sh
10
+ # Run shellcheck on script
11
+ shellcheck script.sh
12
+
13
+ # Check all shell scripts in directory
14
+ find . -name '*.sh' -exec shellcheck {} +
15
+
16
+ # Disable specific warnings (use sparingly)
17
+ # shellcheck disable=SC2086
18
+ variable_without_quotes=$1
19
+
20
+ # Better: Fix the actual issue
21
+ variable_with_quotes="$1"
22
+ ```
23
+
24
+ **Techniques:**
25
+ - Run `shellcheck script.sh` before committing
26
+ - Use `find . -name '*.sh' -exec shellcheck {} +` to check multiple scripts
27
+ - Fix shellcheck warnings rather than disabling them
28
+ - Format scripts with `shfmt -w script.sh`
29
+ - Use shfmt options: `-i 2` (2-space indent), `-bn` (binary ops), `-ci` (case indent), `-sr` (space after redirect)
30
+ - Integrate shellcheck and shfmt into CI/CD pipelines