@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,35 @@
1
+ # memory-management: Memory Management Patterns
2
+
3
+ **Guideline:** Prefer stack allocation and ensure proper cleanup of heap allocations with clear ownership tracking.
4
+
5
+ **Rationale:** Proper memory management prevents leaks and use-after-free bugs. Stack allocation is simpler as it's automatically cleaned up when the function returns.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Stack allocation (preferred)
11
+ void process_data(void) {
12
+ char buffer[1024];
13
+ int values[100];
14
+ // Automatically freed when function returns
15
+ }
16
+
17
+ // Heap allocation with explicit free
18
+ void dynamic_array(size_t size) {
19
+ int *array = malloc(size * sizeof(int));
20
+ if (!array) {
21
+ return; // Handle allocation failure
22
+ }
23
+
24
+ // Use array...
25
+
26
+ free(array); // Always free
27
+ }
28
+ ```
29
+
30
+ **Techniques:**
31
+ - Default stack: Use stack allocation for fixed-size data by default
32
+ - Heap when needed: Use malloc/calloc only for dynamic or longer-lived data
33
+ - Malloc/free pairing: Always pair every malloc with corresponding free call
34
+ - Failure checking: Check allocation return value before dereferencing
35
+ - Clear ownership: Document who owns and must free each allocation
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: c99-opinionated-guidelines
3
+ description: >-
4
+ Trigger on `.c/.h` files for systems/game/embedded development. Opinionated patterns: caller-owns-memory, data-oriented design (SoA), SIMD variants, strict file naming. Keywords: C99, alignment, SIMD, AoS/SoA, caller-owns-memory, data-oriented design.
5
+ ---
6
+
7
+ # C99 Opinionated Guidelines (Systems/Game/Embedded)
8
+
9
+ ## Essentials
10
+
11
+ - **Memory management** - Prefer stack, free all heap allocations, see [reference/memory-management.md](reference/memory-management.md)
12
+ - **Modern C99** - Use `const`, designated initializers, small functions, see [reference/designated-initializers.md](reference/designated-initializers.md), [reference/const-correctness.md](reference/const-correctness.md)
13
+ - **Type safety** - Favor `inline` functions over macros, see [reference/inline-functions.md](reference/inline-functions.md)
14
+ - **Data-oriented design** - Structure for cache locality, see [reference/data-oriented-design.md](reference/data-oriented-design.md)
15
+ - **Quality** - Treat warnings as errors, run static analysis
16
+
17
+ ## Architecture
18
+
19
+ - **Implementation variants** - Scalar → AoS → SoA → SIMD, see [reference/implementation-variants.md](reference/implementation-variants.md)
20
+ - **Caller-owns-memory** - Libraries never allocate, caller provides arrays, see [reference/caller-owns-memory.md](reference/caller-owns-memory.md)
21
+ - **Alignment** - 16-byte for SIMD, cache line for hot data, see [reference/alignment.md](reference/alignment.md)
22
+ - **File naming** - `*_type.h`, `*_impl.h`, `*_aos.h`, `*_soa.h`, `*_simde.h`, see [reference/file-naming.md](reference/file-naming.md)
23
+
24
+ ## Safety
25
+
26
+ - **Input validation** - Check capacity, bounds, NULL, division, overflow, see [reference/safety-validations.md](reference/safety-validations.md)
27
+ - **Work buffers** - Complex functions use caller-provided buffers, see [reference/caller-owns-memory.md](reference/caller-owns-memory.md)
28
+ - **SIMD parity** - Test variants against scalar reference, see [reference/testing-patterns.md](reference/testing-patterns.md)
29
+
30
+ ## Progressive disclosure
31
+
32
+ - Read [reference/memory-management.md](reference/memory-management.md) - When allocating memory or managing resource lifetimes
33
+ - Read [reference/designated-initializers.md](reference/designated-initializers.md) - When initializing structs or arrays with specific values
34
+ - Read [reference/inline-functions.md](reference/inline-functions.md) - When replacing macros or writing small utility functions
35
+ - Read [reference/compound-literals.md](reference/compound-literals.md) - When creating temporary values without named variables
36
+ - Read [reference/const-correctness.md](reference/const-correctness.md) - When marking immutable data or understanding pointer const
37
+ - Read [reference/data-oriented-design.md](reference/data-oriented-design.md) - When optimizing cache performance or data layouts
38
+ - Read [reference/error-handling.md](reference/error-handling.md) - When implementing error codes or handling failures
39
+ - Read [reference/implementation-variants.md](reference/implementation-variants.md) - When choosing between scalar, AoS, SoA, or SIMD implementations
40
+ - Read [reference/caller-owns-memory.md](reference/caller-owns-memory.md) - When designing APIs where caller provides memory
41
+ - Read [reference/alignment.md](reference/alignment.md) - When aligning data for SIMD or cache performance
42
+ - Read [reference/file-naming.md](reference/file-naming.md) - When organizing headers by type, implementation, and variant
43
+ - Read [reference/testing-patterns.md](reference/testing-patterns.md) - When writing tests with assertions, epsilon comparisons, or parity checks
44
+ - Read [reference/safety-validations.md](reference/safety-validations.md) - When validating inputs for capacity, bounds, NULL, or overflow
@@ -0,0 +1,50 @@
1
+ # alignment: Memory Alignment
2
+
3
+ **Guideline:** 16 bytes for SIMD, cache line (64/128B) for hot data.
4
+
5
+ **Rationale:** SIMD loads require alignment. Misalignment causes penalties/crashes. Cache alignment prevents false sharing in concurrent code.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // SIMD-friendly vec3 (16 bytes)
11
+ typedef struct { float x, y, z, _pad; } vec3_t;
12
+
13
+ // Compiler alignment
14
+ typedef struct { _Alignas(16) float data[4]; } aligned_vec4_t;
15
+
16
+ // Cache-line aligned hot data
17
+ #define CACHE_LINE_SIZE 64
18
+ typedef struct {
19
+ _Alignas(CACHE_LINE_SIZE) uint32_t counter;
20
+ char pad[CACHE_LINE_SIZE - sizeof(uint32_t)];
21
+ } atomic_counter_t;
22
+
23
+ // SoA arrays
24
+ typedef struct {
25
+ _Alignas(16) float *x, *y, *z;
26
+ size_t count;
27
+ } vec3_soa_t;
28
+
29
+ // Aligned allocation
30
+ void *aligned_alloc_16(size_t size) {
31
+ void *ptr;
32
+ return posix_memalign(&ptr, 16, size) == 0 ? ptr : NULL;
33
+ }
34
+
35
+ // Platform detection
36
+ #if defined(__x86_64__) || defined(_M_X64)
37
+ #define CACHE_LINE_SIZE 64
38
+ #elif defined(__aarch64__)
39
+ #define CACHE_LINE_SIZE 128
40
+ #else
41
+ #define CACHE_LINE_SIZE 64
42
+ #endif
43
+ ```
44
+
45
+ **Techniques:**
46
+ - SIMD alignment: Pad vec3 to 16-byte aligned structures for SIMD instructions
47
+ - Compiler directives: Use `_Alignas(16)` for explicit struct field alignment
48
+ - SoA layout: Align array-of-structures for batch SIMD operations
49
+ - Cache alignment: Align hot data to 64B (x86) or 128B (ARM) cache line size
50
+ - Platform detection: Use conditional compilation for architecture-specific alignment
@@ -0,0 +1,38 @@
1
+ # caller-owns-memory: Caller-Owns-Memory Pattern
2
+
3
+ **Guideline:** Libraries never allocate. Caller provides all storage; library operates on it.
4
+
5
+ **Rationale:** No hidden allocations. Caller controls memory strategy (stack, pool, arena). No leaks. Batch-friendly.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef struct {
11
+ float *pos_x, *pos_y;
12
+ uint32_t count, capacity;
13
+ } entity_system_t;
14
+
15
+ status_t entity_system_init(entity_system_t *sys,
16
+ float *x, float *y, uint32_t cap) {
17
+ sys->pos_x = x;
18
+ sys->pos_y = y;
19
+ sys->count = 0;
20
+ sys->capacity = cap;
21
+ return STATUS_OK;
22
+ }
23
+
24
+ status_t entity_add(entity_system_t *sys, float x, float y) {
25
+ if (sys->count >= sys->capacity) return STATUS_FULL;
26
+ sys->pos_x[sys->count] = x;
27
+ sys->pos_y[sys->count] = y;
28
+ sys->count++;
29
+ return STATUS_OK;
30
+ }
31
+ ```
32
+
33
+ **Techniques:**
34
+ - Functions receive pointers: Accept caller-provided storage instead of allocating
35
+ - Init functions: Bind library state to caller-owned arrays with capacity tracking
36
+ - Status returns: Return status codes, never allocated pointers
37
+ - Work buffers: Accept scratch space from caller for temporary operations
38
+ - Batch-friendly: Enable processing arrays without individual allocations
@@ -0,0 +1,33 @@
1
+ # compound-literals: Compound Literals
2
+
3
+ **Guideline:** Use compound literals to create temporary values inline without declaring separate variables.
4
+
5
+ **Rationale:** Compound literals reduce boilerplate code and improve readability by creating temporary structs or arrays directly in expressions.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ struct Point {
11
+ int x, y;
12
+ };
13
+
14
+ int distance(struct Point a, struct Point b);
15
+
16
+ void example(void) {
17
+ // Create temporary Point inline
18
+ int d = distance(
19
+ (struct Point){.x = 0, .y = 0},
20
+ (struct Point){.x = 3, .y = 4}
21
+ );
22
+
23
+ // Initialize array inline
24
+ int arr[] = {(int[]){1, 2, 3, 4, 5}};
25
+ }
26
+ ```
27
+
28
+ **Techniques:**
29
+ - Inline syntax: Use `(Type){initializer-list}` to create temporaries inline
30
+ - With designators: Combine with designated initializers for clarity
31
+ - Function arguments: Create temporary structs directly in function calls
32
+ - Aggregate types: Works with any struct or array type
33
+ - Automatic cleanup: Lifetime extends to end of enclosing scope automatically
@@ -0,0 +1,32 @@
1
+ # const-correctness: Const Correctness
2
+
3
+ **Guideline:** Use const qualifier to mark immutable data, function parameters, and return values to prevent unintended modifications.
4
+
5
+ **Rationale:** Const correctness catches bugs at compile time, documents intent, and helps maintain API contracts.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Use const for immutable data
11
+ void process_buffer(const char *input, size_t len) {
12
+ // input cannot be modified
13
+ }
14
+
15
+ // Const pointers
16
+ const int *p1; // pointer to const int
17
+ int *const p2; // const pointer to int
18
+ const int *const p3; // const pointer to const int
19
+
20
+ // Const in function return
21
+ const char *get_name(void) {
22
+ static const char name[] = "example";
23
+ return name;
24
+ }
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Read-only parameters: Mark function parameters with const when not modified
29
+ - Pointer variants: Distinguish `const T *p` (pointer to const) vs `T *const p` (const pointer)
30
+ - Return values: Use const for immutable return values to prevent modification
31
+ - Intent documentation: Const clearly indicates what can/cannot be modified
32
+ - Compile-time safety: Catches unintended modifications at compile time
@@ -0,0 +1,42 @@
1
+ # data-oriented-design: Data-Oriented Design
2
+
3
+ **Guideline:** Organize data structures for cache locality using Struct of Arrays (SoA) instead of Array of Structs (AoS) when processing arrays of data.
4
+
5
+ **Rationale:** Modern CPUs load data in cache lines. Struct of Arrays layout ensures sequential memory access patterns that maximize cache utilization.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Array of Structs (AoS) - poor cache locality
11
+ struct Entity {
12
+ float x, y, z; // Position
13
+ float vx, vy, vz; // Velocity
14
+ int health;
15
+ int type;
16
+ };
17
+
18
+ struct Entity entities[1000];
19
+ for (size_t i = 0; i < 1000; i++) {
20
+ entities[i].x += entities[i].vx;
21
+ }
22
+
23
+ // Struct of Arrays (SoA) - better cache locality
24
+ struct EntitySystem {
25
+ float *positions_x, *positions_y, *positions_z;
26
+ float *velocities_x, *velocities_y, *velocities_z;
27
+ int *health, *type;
28
+ size_t count;
29
+ };
30
+
31
+ // Sequential memory access, better cache usage
32
+ for (size_t i = 0; i < system.count; i++) {
33
+ system.positions_x[i] += system.velocities_x[i];
34
+ }
35
+ ```
36
+
37
+ **Techniques:**
38
+ - Separate fields: Move frequently accessed fields into their own arrays
39
+ - Cache locality: Sequential memory access maximizes CPU cache utilization
40
+ - Array sync: Keep indices synchronized across all component arrays
41
+ - Hot loops: Identify performance-critical loops for SoA conversion
42
+ - Measurement: Profile before and after refactoring to verify improvements
@@ -0,0 +1,32 @@
1
+ # designated-initializers: Designated Initializers
2
+
3
+ **Guideline:** Use designated initializers for struct and array initialization to make code self-documenting and reduce errors.
4
+
5
+ **Rationale:** Designated initializers explicitly name fields being initialized, making code more readable and maintainable.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ struct Point {
11
+ int x, y, z;
12
+ };
13
+
14
+ // Named field initialization
15
+ struct Point p = {.x = 1, .y = 2, .z = 3};
16
+
17
+ // Partial initialization (rest zeroed)
18
+ struct Point origin = {.x = 0, .y = 0};
19
+
20
+ // Array designated initializers
21
+ int days[12] = {
22
+ [0] = 31, [1] = 28, [2] = 31,
23
+ [3] = 30, [4] = 31, [5] = 30
24
+ };
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Field syntax: Use `.field = value` for struct initialization with clarity
29
+ - Array syntax: Use `[index] = value` for sparse array initialization
30
+ - Partial init: Unspecified fields are automatically zeroed without explicit values
31
+ - Order-independent: Fields can be specified in any order within initializer
32
+ - Large structs: Especially useful for structs with many fields or optional fields
@@ -0,0 +1,49 @@
1
+ # error-handling: Error Handling Patterns
2
+
3
+ **Guideline:** Return error codes from functions and use output parameters for results to enable proper error checking and recovery.
4
+
5
+ **Rationale:** Error codes force callers to handle errors explicitly, unlike exceptions. Using return values for errors and output parameters for results creates a consistent pattern throughout the codebase.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef enum {
11
+ ERR_OK = 0,
12
+ ERR_NOMEM,
13
+ ERR_INVALID,
14
+ ERR_IO
15
+ } error_t;
16
+
17
+ error_t load_file(const char *path, char **out, size_t *len) {
18
+ FILE *f = fopen(path, "rb");
19
+ if (!f) return ERR_IO;
20
+
21
+ fseek(f, 0, SEEK_END);
22
+ long size = ftell(f);
23
+ fseek(f, 0, SEEK_SET);
24
+
25
+ char *buf = malloc(size);
26
+ if (!buf) {
27
+ fclose(f);
28
+ return ERR_NOMEM;
29
+ }
30
+
31
+ if (fread(buf, 1, size, f) != (size_t)size) {
32
+ free(buf);
33
+ fclose(f);
34
+ return ERR_IO;
35
+ }
36
+
37
+ fclose(f);
38
+ *out = buf;
39
+ *len = size;
40
+ return ERR_OK;
41
+ }
42
+ ```
43
+
44
+ **Techniques:**
45
+ - Error enums: Define descriptive error types with zero for success
46
+ - Output parameters: Use pointers to return multiple results alongside error codes
47
+ - Error checking: Always check return values immediately after function calls
48
+ - Cleanup: Properly free resources in all error paths before returning
49
+ - Context: Provide specific error codes to indicate failure reason, not generic errors
@@ -0,0 +1,33 @@
1
+ # file-naming: File Naming Conventions
2
+
3
+ **Guideline:** Suffixes for purpose: `_type.h` (types), `_impl.h` (scalar), `_aos/_soa/_simd` (variants).
4
+
5
+ **Rationale:** Enables quick file identification, prevents include order issues, supports multiple variant implementations.
6
+
7
+ **Example:**
8
+
9
+ ```
10
+ vector_type.h # Types only
11
+ vector_impl.h # Scalar implementations
12
+ vector.h # Includes _type + _impl
13
+ vector_aos.h # Batch AoS
14
+ vector_soa.h # Batch SoA (cache-friendly)
15
+ vector_simd_impl.h # SIMD scalar
16
+ vector_soa_simd.h # SIMD SoA batch
17
+ vector.test.c # Scalar tests
18
+
19
+ // vector.h
20
+ #include "vector_type.h"
21
+ #include "vector_impl.h"
22
+
23
+ // vector_soa_simd.h
24
+ #include "vector_type.h"
25
+ #include "vector_soa.h"
26
+ ```
27
+
28
+ **Techniques:**
29
+ - Type suffix: Use `_type.h` for type definitions only
30
+ - Impl suffix: Use `_impl.h` for inline scalar implementations
31
+ - Batch variants: Use `_aos.h`, `_soa.h` for batch implementations
32
+ - SIMD suffix: Use `_simd.h` for SIMD implementations
33
+ - Dimension modules: Use `{name}{dim}.h` pattern like `aabb2d.h`, `sphere3d_simd.h`
@@ -0,0 +1,35 @@
1
+ # implementation-variants: Implementation Variant Strategy
2
+
3
+ **Guideline:** Progressive variants: scalar single → AoS batch → SoA batch → SIMD.
4
+
5
+ **Rationale:** Different use cases need different trade-offs: debugging (single), existing structs (AoS), cache-friendly (SoA), peak throughput (SIMD).
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Scalar single (reference)
11
+ float vec3_dot(const vec3_t *a, const vec3_t *b) {
12
+ return a->x*b->x + a->y*b->y + a->z*b->z;
13
+ }
14
+
15
+ // AoS batch (struct arrays)
16
+ void vec3_dot_aos(float *out, const vec3_t *a, const vec3_t *b, size_t n) {
17
+ for (size_t i = 0; i < n; i++)
18
+ out[i] = a[i].x*b[i].x + a[i].y*b[i].y + a[i].z*b[i].z;
19
+ }
20
+
21
+ // SoA batch (component arrays, cache-friendly)
22
+ typedef struct { float *x, *y, *z; size_t count; } vec3_soa_t;
23
+
24
+ void vec3_dot_soa(float *out, const vec3_soa_t *a, const vec3_soa_t *b) {
25
+ for (size_t i = 0; i < a->count; i++)
26
+ out[i] = a->x[i]*b->x[i] + a->y[i]*b->y[i] + a->z[i]*b->z[i];
27
+ }
28
+ ```
29
+
30
+ **Techniques:**
31
+ - Scalar single: Start with single-object reference implementation for debugging
32
+ - AoS batch: Add batch processing for struct arrays (1.5x speedup)
33
+ - SoA batch: Add cache-friendly variant for large workloads (2-3x speedup)
34
+ - SIMD variants: Add vectorized implementations for critical paths (4-10x)
35
+ - Parity testing: Test correctness across all variants with same test suite
@@ -0,0 +1,37 @@
1
+ # inline-functions: Inline Functions vs Macros
2
+
3
+ **Guideline:** Prefer static inline functions over macros for type safety and predictable behavior.
4
+
5
+ **Rationale:** Inline functions provide type checking, proper scoping, and avoid macro side effects like multiple evaluation of arguments.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Macro - unsafe, no type checking
11
+ #define CLAMP(v, lo, hi) ((v) < (lo) ? (lo) : ((v) > (hi) ? (hi) : (v)))
12
+
13
+ // Inline function - type safe
14
+ static inline int clampi(int v, int lo, int hi) {
15
+ if (v < lo) return lo;
16
+ if (v > hi) return hi;
17
+ return v;
18
+ }
19
+
20
+ static inline float clampf(float v, float lo, float hi) {
21
+ if (v < lo) return lo;
22
+ if (v > hi) return hi;
23
+ return v;
24
+ }
25
+
26
+ // Macro side effect: x++ evaluated multiple times
27
+ // Inline function: x++ evaluated once safely
28
+ int x = 5;
29
+ int result = clampi(x++, 0, 10);
30
+ ```
31
+
32
+ **Techniques:**
33
+ - Replace macros: Replace function-like macros with `static inline` functions
34
+ - Type-specific variants: Create `clampi`, `clampf` instead of generic macro
35
+ - Header placement: Use inline functions in headers for no multiple definition issues
36
+ - Avoid side effects: Inline functions safely evaluate arguments once
37
+ - Simple logic: Keep inline functions simple for compiler optimization
@@ -0,0 +1,35 @@
1
+ # memory-management: Memory Management Patterns
2
+
3
+ **Guideline:** Prefer stack allocation and ensure proper cleanup of heap allocations with clear ownership tracking.
4
+
5
+ **Rationale:** Proper memory management prevents leaks, reduces fragmentation, and improves performance. Stack allocation is faster and automatically cleaned up.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Stack allocation (preferred)
11
+ void process_data(void) {
12
+ char buffer[1024];
13
+ int values[100];
14
+ // Automatically freed when function returns
15
+ }
16
+
17
+ // Heap allocation with explicit free
18
+ void dynamic_array(size_t size) {
19
+ int *array = malloc(size * sizeof(int));
20
+ if (!array) {
21
+ return; // Handle allocation failure
22
+ }
23
+
24
+ // Use array...
25
+
26
+ free(array); // Always free
27
+ }
28
+ ```
29
+
30
+ **Techniques:**
31
+ - Default stack: Use stack allocation for fixed-size data by default
32
+ - Heap when needed: Use malloc/calloc only for dynamic or longer-lived data
33
+ - Malloc/free pairing: Always pair every malloc with corresponding free call
34
+ - Failure checking: Check allocation return value before dereferencing
35
+ - Clear ownership: Document who owns and must free each allocation
@@ -0,0 +1,32 @@
1
+ # safety-validations: Safety Validations
2
+
3
+ **Guideline:** Validate capacity, bounds, NULL pointers, division-by-zero, overflow before use.
4
+
5
+ **Rationale:** Prevents undefined behavior, crashes, security vulnerabilities. Return status codes for graceful error handling.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ status_t buffer_write(buffer_t *buf, const void *data, size_t size) {
11
+ if (buf->used + size > buf->capacity) return STATUS_FULL;
12
+ if (size > SIZE_MAX - buf->used) return STATUS_OVERFLOW;
13
+ memcpy(buf->data + buf->used, data, size);
14
+ buf->used += size;
15
+ return STATUS_OK;
16
+ }
17
+
18
+ vec3_t vec3_normalize(const vec3_t *v) {
19
+ if (!v) return (vec3_t){0};
20
+ float len = sqrtf(v->x*v->x + v->y*v->y + v->z*v->z);
21
+ if (len < 1e-6f) return (vec3_t){0};
22
+ float inv = 1.0f / len;
23
+ return (vec3_t){v->x*inv, v->y*inv, v->z*inv, 0};
24
+ }
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Capacity checks: Validate `used + size <= capacity` before writing
29
+ - Bounds checks: Check `idx < count` before array access
30
+ - NULL checks: Test `if (!ptr)` at function entry
31
+ - Epsilon division: Use `len < 1e-6f` for zero checks in float operations
32
+ - Overflow checks: Test `count > SIZE_MAX / size` before multiplication
@@ -0,0 +1,39 @@
1
+ # testing-patterns: Testing Patterns
2
+
3
+ **Guideline:** Typed assertions, epsilon for floats, parity tests for variants.
4
+
5
+ **Rationale:** Catches type mismatches. Epsilon handles float imprecision. Parity ensures variants produce identical results.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ void test_vec3_dot(void) {
11
+ vec3_t a = {1, 2, 3, 0}, b = {4, 5, 6, 0};
12
+ assert_float_eq(vec3_dot(&a, &b), 32.0f); // 1*4+2*5+3*6
13
+ }
14
+
15
+ void test_vec3_dot_soa_parity(void) {
16
+ float ax[100], ay[100], az[100];
17
+ float bx[100], by[100], bz[100];
18
+ float scalar_out[100], soa_out[100];
19
+
20
+ for (size_t i = 0; i < 100; i++) {
21
+ vec3_t a = {ax[i], ay[i], az[i], 0};
22
+ vec3_t b = {bx[i], by[i], bz[i], 0};
23
+ scalar_out[i] = vec3_dot(&a, &b);
24
+ }
25
+
26
+ vec3_soa_t a_soa = {ax, ay, az, 100};
27
+ vec3_dot_soa(soa_out, &a_soa, &(vec3_soa_t){bx, by, bz, 100});
28
+
29
+ for (size_t i = 0; i < 100; i++)
30
+ assert_float_near(soa_out[i], scalar_out[i], 1e-5f);
31
+ }
32
+ ```
33
+
34
+ **Techniques:**
35
+ - Typed assertions: Use `assert_int_eq`, `assert_float_eq`, `assert_ptr_not_null`
36
+ - Epsilon values: Use 1e-4f general, 1e-5f cumulative, 5e-4f for SIMD
37
+ - Scalar tests: Validate against known values for correctness
38
+ - Parity tests: Compare variant implementations against scalar reference
39
+ - Edge cases: Test zero, negative, denormal, infinity, and boundary conditions
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: cmake-guidelines
3
+ description: >-
4
+ Trigger on `CMakeLists.txt` files. Use when writing CMake 3.20+ build systems for C/C++ projects. Apply for target-based builds, dependency management, testing setup, visibility specifiers. Keywords: CMake, add_library, add_executable, target_link_libraries, PUBLIC/PRIVATE/INTERFACE, find_package, FetchContent, CTest.
5
+ ---
6
+
7
+ # CMake Coding Guidelines
8
+
9
+ ## Requirements
10
+
11
+ - CMake ≥ 3.20; modern target-based usage.
12
+
13
+ ## Essentials
14
+
15
+ - **Target-based builds** - Use targets, no global include/link dirs, see [reference/target-types.md](reference/target-types.md), [reference/compile-options.md](reference/compile-options.md)
16
+ - **Visibility specifiers** - Use PUBLIC/PRIVATE/INTERFACE correctly, see [reference/visibility-specifiers.md](reference/visibility-specifiers.md)
17
+ - **Dependencies** - Declare explicitly with FetchContent/find_package, see [reference/find-package.md](reference/find-package.md), [reference/fetchcontent.md](reference/fetchcontent.md)
18
+ - **Testing** - Enable testing with CTest, see [reference/testing.md](reference/testing.md)
19
+ - **Project structure** - Organize multi-directory projects, see [reference/project-structure.md](reference/project-structure.md)
20
+
21
+ ## Progressive disclosure
22
+
23
+ - Read [reference/target-types.md](reference/target-types.md) - When choosing between library types or executables
24
+ - Read [reference/visibility-specifiers.md](reference/visibility-specifiers.md) - When deciding PUBLIC vs PRIVATE vs INTERFACE
25
+ - Read [reference/compile-options.md](reference/compile-options.md) - When adding compiler flags to targets
26
+ - Read [reference/find-package.md](reference/find-package.md) - When integrating external dependencies
27
+ - Read [reference/fetchcontent.md](reference/fetchcontent.md) - When vendoring dependencies from git/archives
28
+ - Read [reference/testing.md](reference/testing.md) - When setting up CTest or test targets
29
+ - Read [reference/project-structure.md](reference/project-structure.md) - When organizing multi-directory CMake projects
30
+ - Read [reference/generator-expressions.md](reference/generator-expressions.md) - When using conditional build configuration
31
+ - Read [reference/installation.md](reference/installation.md) - When creating install targets or package exports
@@ -0,0 +1,34 @@
1
+ # compile-options: Compile Options and Definitions
2
+
3
+ **Guideline:** Set compiler flags, definitions, and features on targets using target_compile_* commands with appropriate visibility.
4
+
5
+ **Rationale:** Target-scoped settings prevent pollution of the global build environment and allow different targets to have different requirements.
6
+
7
+ **Example:**
8
+
9
+ ```cmake
10
+ # Set compile options
11
+ target_compile_options(mylib
12
+ PRIVATE
13
+ $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra -pedantic>
14
+ $<$<CXX_COMPILER_ID:MSVC>:/W4>
15
+ )
16
+
17
+ # Set compile definitions
18
+ target_compile_definitions(mylib
19
+ PUBLIC API_VERSION=2
20
+ PRIVATE
21
+ $<$<CONFIG:Debug>:DEBUG_BUILD>
22
+ $<$<CONFIG:Release>:RELEASE_BUILD>
23
+ )
24
+
25
+ # Set compile features
26
+ target_compile_features(mylib PUBLIC cxx_std_20)
27
+ ```
28
+
29
+ **Techniques:**
30
+ - target_compile_options(): Set compiler-specific flags with generator expressions
31
+ - target_compile_definitions(): Define preprocessor macros with visibility control
32
+ - target_compile_features(): Require C++ standard using cxx_std_20, cxx_std_17, etc
33
+ - Compiler detection: Use $<$<CXX_COMPILER_ID:GNU,Clang>:flags> for portability
34
+ - Configuration-based: Apply $<$<CONFIG:Debug>:DEBUG> for build-type-specific settings