@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,32 @@
1
+ # content-collections: Content Collections with Type Safety
2
+
3
+ **Guideline:** Use Astro content collections API with Zod schemas for type-safe content management.
4
+
5
+ **Rationale:** Content collections provide type safety, schema validation, IntelliSense, standardized organization, and build-time frontmatter validation.
6
+
7
+ **Example:**
8
+
9
+ ```typescript
10
+ // src/content/config.ts
11
+ import {defineCollection, z} from "astro:content";
12
+
13
+ export const collections = {
14
+ posts: defineCollection({
15
+ type: "content",
16
+ schema: z.object({
17
+ title: z.string(),
18
+ published: z.date(),
19
+ author: z.string(),
20
+ tags: z.array(z.string()),
21
+ draft: z.boolean().default(false),
22
+ }),
23
+ }),
24
+ };
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Collection schemas: Define Zod schemas in `src/content/config.ts` for validation
29
+ - Directory structure: Organize content in `src/content/[collection-name]/` directories
30
+ - Query functions: Use `getCollection()` and `getEntry()` for type-safe queries
31
+ - Filtering: Apply runtime filters in `getCollection()` callback
32
+ - Rendering: Use `.render()` method to compile markdown to HTML components
@@ -0,0 +1,26 @@
1
+ # islands-architecture: Islands Architecture and Hydration
2
+
3
+ **Guideline:** Ship minimal JavaScript by hydrating only interactive components; static HTML by default.
4
+
5
+ **Rationale:** Astro renders to static HTML by default (zero JS). Framework components only hydrate when marked with directives, resulting in faster loads and better performance.
6
+
7
+ **Example:**
8
+
9
+ ```astro
10
+ ---
11
+ import Counter from "../components/Counter.tsx";
12
+ import SearchBar from "../components/SearchBar.tsx";
13
+ ---
14
+ <Layout title="Home">
15
+ <h1>Static Content</h1>
16
+ <Counter client:visible /> <!-- Hydrate on viewport entry -->
17
+ <SearchBar client:load /> <!-- Hydrate immediately -->
18
+ </Layout>
19
+ ```
20
+
21
+ **Techniques:**
22
+ - Static by default: Build pages with Astro components that render zero JavaScript
23
+ - Framework components: Import React, Vue, Svelte only for interactive features
24
+ - client:load: Hydrate immediately for critical interactive components
25
+ - client:visible: Hydrate when component enters viewport for lazy interactivity
26
+ - client:idle: Hydrate during browser idle time for lower-priority features
@@ -0,0 +1,32 @@
1
+ # project-structure: Project Structure and Organization
2
+
3
+ **Guideline:** Organize using conventional directories: pages, components, layouts, content, public.
4
+
5
+ **Rationale:** Opinionated defaults enable file-based routing, clear separation of concerns, better maintainability, easier navigation.
6
+
7
+ **Example:**
8
+
9
+ ```
10
+ src/
11
+ ├── pages/
12
+ │ ├── index.astro # → /
13
+ │ ├── about.astro # → /about
14
+ │ └── blog/[slug].astro # → /blog/:slug
15
+ ├── components/
16
+ │ ├── Header.astro
17
+ │ ├── Card.tsx
18
+ ├── layouts/
19
+ │ ├── BaseLayout.astro
20
+ │ └── BlogLayout.astro
21
+ ├── content/
22
+ │ ├── config.ts
23
+ │ └── posts/
24
+ └── styles/global.css
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Pages directory: Place routes in `src/pages/` for automatic file-based routing
29
+ - Components folder: Store reusable components in `src/components/`
30
+ - Layouts directory: Create reusable layouts in `src/layouts/`
31
+ - Content collections: Organize structured content in `src/content/[collection]/`
32
+ - Static assets: Place static files in `public/` directory for direct access
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: c99-game-opinionated-guidelines
3
+ description: >-
4
+ Trigger on `.c/.h` files in game/engine directories. Opinionated game engine patterns: caller-owns-memory, inverse mass, SoA optimization, builder pattern. Keywords: vectors, matrices, quaternions, physics, meshes, spatial structures, tagged unions, inverse mass.
5
+ ---
6
+
7
+ # C99 Game Engine Opinionated Guidelines
8
+
9
+ ## Requirements
10
+
11
+ - C99; extends `c99-guidelines` skill.
12
+
13
+ ## Math
14
+
15
+ - **Types** - 16-byte aligned vectors/matrices/quaternions, see [reference/math-types.md](reference/math-types.md)
16
+ - **Access** - Use accessor functions for matrices, direct fields for vectors, see [reference/math-types.md](reference/math-types.md)
17
+ - **Coordinates** - Right-handed Y-up, CCW winding, configurable clip depth, see [reference/coordinate-system.md](reference/coordinate-system.md)
18
+ - **Suffixes** - `_aos/_soa` layouts, `_simde` SIMD, `2d/3d` dimensions
19
+
20
+ ## Geometry Pipeline
21
+
22
+ - **Analytic → Discrete → Packing** - Separate logic/rendering/GPU layers, see [reference/geometry-pipeline.md](reference/geometry-pipeline.md)
23
+ - **Builder pattern** - `*_req()` query size, `*_build()` write to caller buffer, see [reference/builder-pattern.md](reference/builder-pattern.md)
24
+
25
+ ## Patterns
26
+
27
+ - **Caller-owns-memory** - Libraries never allocate, app provides arrays
28
+ - **Tagged unions** - Type enum + union for polymorphism, see [reference/tagged-unions.md](reference/tagged-unions.md)
29
+ - **Inverse mass** - Store `1/mass`, static objects use `0.0`, see [reference/physics-patterns.md](reference/physics-patterns.md)
30
+ - **SoA optimization** - AoS for single objects, SoA for batches, see [reference/mesh-types.md](reference/mesh-types.md)
31
+ - **Validation** - Check capacity, bounds, NULL, overflow before operations
32
+
33
+ ## Progressive disclosure
34
+
35
+ - Read [reference/math-types.md](reference/math-types.md) - When working with vectors, matrices, or quaternions
36
+ - Read [reference/coordinate-system.md](reference/coordinate-system.md) - When setting up camera, projection, or mesh normals
37
+ - Read [reference/tagged-unions.md](reference/tagged-unions.md) - When implementing shape or entity polymorphism
38
+ - Read [reference/physics-patterns.md](reference/physics-patterns.md) - When implementing rigid bodies, collision, or constraints
39
+ - Read [reference/geometry-pipeline.md](reference/geometry-pipeline.md) - When converting analytic shapes to renderable meshes
40
+ - Read [reference/builder-pattern.md](reference/builder-pattern.md) - When generating meshes or other variable-size data
41
+ - Read [reference/vertex-packing.md](reference/vertex-packing.md) - When preparing vertex data for GPU upload
42
+ - Read [reference/mesh-types.md](reference/mesh-types.md) - When working with 2D or 3D mesh structures
43
+ - Read [reference/spatial-structures.md](reference/spatial-structures.md) - When implementing broad-phase collision or spatial queries
@@ -0,0 +1,29 @@
1
+ # builder-pattern: Builder Pattern for Meshes
2
+
3
+ **Guideline:** Two-phase construction: `*_req()` queries memory, `*_build()` fills caller-provided buffer.
4
+
5
+ **Rationale:** Caller controls allocation (stack, pool, arena). Builder never allocates. Exact sizes prevent over-allocation.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Query
11
+ mesh_req_t req = sphere_mesh3d_req(1.0f, 32, 16);
12
+
13
+ // Allocate (caller decides strategy)
14
+ vertex3f_t vertices[req.vertex_count];
15
+ uint32_t indices[req.index_count];
16
+
17
+ // Build
18
+ mesh3d_t mesh = {.vertices = vertices, .indices = indices,
19
+ .vertex_capacity = req.vertex_count,
20
+ .index_capacity = req.index_count};
21
+ status_t status = sphere_mesh3d_build(&mesh, 1.0f, 32, 16);
22
+ ```
23
+
24
+ **Techniques:**
25
+ - Query phase: Call `*_req()` to get exact vertex/index counts needed
26
+ - Caller allocation: Choose strategy (stack, malloc, arena) for complete control
27
+ - Build phase: Call `*_build()` to fill pre-allocated caller buffer
28
+ - Status checking: Always check return status for insufficient capacity errors
29
+ - Function naming: Use `{shape}_mesh{dim}_req` and `{shape}_mesh{dim}_build` pattern
@@ -0,0 +1,27 @@
1
+ # coordinate-system: Coordinate System Conventions
2
+
3
+ **Guideline:** Right-handed Y-up coordinates, CCW winding. Use suffixes `_rh`/`_lh` for explicit handedness. Override with defines.
4
+
5
+ **Rationale:** Consistent handedness and winding across geometry reduces bugs and ensures interoperability with standard graphics APIs.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // Default (right-handed)
11
+ matrix4f_t proj = matrix4f_perspective(fov, aspect, near, far);
12
+ matrix4f_t view = matrix4f_look_at(eye, target, up);
13
+
14
+ // Explicit or Vulkan setup
15
+ matrix4f_t view_rh = matrix4f_look_at_rh(eye, target, up);
16
+ matrix4f_t view_lh = matrix4f_look_at_lh(eye, target, up);
17
+
18
+ #define MATH_COORDINATE_SYSTEM_LEFT_HANDED 1
19
+ #define MATH_CLIP_SPACE_DEPTH_ZERO_TO_ONE 1
20
+ ```
21
+
22
+ **Techniques:**
23
+ - Right-handed default: Use +X right, +Y up, +Z forward as base convention
24
+ - CCW winding: Define front faces with counter-clockwise vertex order
25
+ - Suffix variants: Provide `_rh` and `_lh` function suffixes for explicit systems
26
+ - Compile-time overrides: Use defines like `MATH_COORDINATE_SYSTEM_LEFT_HANDED`
27
+ - Normal calculation: Cross product respects handedness for correct face normals
@@ -0,0 +1,29 @@
1
+ # geometry-pipeline: Geometry Pipeline
2
+
3
+ **Guideline:** Three-layer pipeline: Analytic (logic) → Discrete (mesh) → Packing (GPU).
4
+
5
+ **Rationale:** Each layer handles specific concerns: math/physics, rendering data, GPU format optimization.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ // 1. Analytic
11
+ sphere3d_t sphere = {.center = {0, 1, 0}, .radius = 2.0f};
12
+
13
+ // 2. Discrete: Build mesh
14
+ mesh_req_t req = sphere_mesh3d_req(&sphere, 32, 16);
15
+ mesh3d_t mesh = {.vertices = verts, .indices = idx,
16
+ .vertex_capacity = req.vertex_count};
17
+ sphere_mesh3d_build(&mesh, &sphere, 32, 16);
18
+
19
+ // 3. Packing: GPU format
20
+ size_t size = mesh3d_pack_size(&mesh, VERTEX_FORMAT_3F_4U8);
21
+ mesh3d_pack_3f_4u8(packed, &mesh, color);
22
+ ```
23
+
24
+ **Techniques:**
25
+ - Analytic layer: Define shapes like `sphere3d_t`, `circle2d_t` for physics/logic
26
+ - Discrete layer: Build indexed meshes from analytic shapes with builder pattern
27
+ - Packing layer: Convert mesh to GPU-ready vertex formats (interleaved/streaming)
28
+ - Separation of concerns: Keep physics, rendering, and GPU separate
29
+ - Conversion functions: Provide `*_req` and `*_build` for shape-to-mesh conversion
@@ -0,0 +1,31 @@
1
+ # math-types: Game Math Types
2
+
3
+ **Guideline:** Use 16-byte aligned vectors/matrices/quaternions. Union-based for named and indexed access.
4
+
5
+ **Rationale:** 16-byte alignment enables SIMD operations and efficient cache access; unions allow both semantic and array-based access.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef union {
11
+ struct { float x, y, z, _pad; };
12
+ float col[4];
13
+ } vec3f_t;
14
+
15
+ typedef union {
16
+ float col[16];
17
+ vec4f_t columns[4];
18
+ } matrix4f_t;
19
+
20
+ // Usage
21
+ vec3f_t pos = {.x = 1.0f, .y = 2.0f, .z = 3.0f};
22
+ matrix4f_t m;
23
+ m.columns[3] = (vec4f_t){.x = tx, .y = ty, .z = tz, .w = 1.0f};
24
+ ```
25
+
26
+ **Techniques:**
27
+ - 16-byte alignment: Pad vec3 with _pad field for SIMD-friendly 16B size
28
+ - Union design: Combine named fields with array access for flexibility
29
+ - Column-major matrices: Store matrix4f_t as 4 column vectors
30
+ - Quaternion format: Use x, y, z, w order with normalization constraint
31
+ - Array access: Support both `.x`, `.y` named and `[0]`, `[1]` indexed access
@@ -0,0 +1,32 @@
1
+ # mesh-types: Mesh Data Structures
2
+
3
+ **Guideline:** Use `mesh2d_t`/`mesh3d_t` with capacity tracking. Builders generate from analytic shapes.
4
+
5
+ **Rationale:** Separate count/capacity enables efficient reuse; builder pattern decouples construction from memory strategy.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef struct {
11
+ vertex2f_t *vertices;
12
+ uint32_t *indices;
13
+ size_t vertex_count, index_count;
14
+ size_t vertex_capacity, index_capacity;
15
+ } mesh2d_t;
16
+
17
+ typedef struct {
18
+ vertex3f_t *vertices;
19
+ vec3f_t *normals; // Optional
20
+ vec2f_t *uvs; // Optional
21
+ uint32_t *indices;
22
+ size_t vertex_count, index_count;
23
+ size_t vertex_capacity, index_capacity;
24
+ } mesh3d_t;
25
+ ```
26
+
27
+ **Techniques:**
28
+ - Capacity tracking: Maintain separate count and capacity for dynamic growth
29
+ - Builder pattern: Use `{shape}_mesh{dim}_{req|build}` naming convention
30
+ - Optional data: Include normals/UVs in mesh3d for advanced rendering
31
+ - Operations: Provide bounds calculation, normal computation, merging
32
+ - Vertex types: Use aligned types like `vertex3f_t` with padding for SIMD
@@ -0,0 +1,28 @@
1
+ # physics-patterns: Physics Engine Patterns
2
+
3
+ **Guideline:** Use inverse mass (0 = static), bit flags for state, sync maps for decoupled systems.
4
+
5
+ **Rationale:** Inverse mass simplifies static bodies and impulse application; flags enable efficient state management; sync maps decouple physics from entity systems.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef struct {
11
+ vec3f_t position, velocity;
12
+ float inv_mass; // 0 = static (never moves)
13
+ } rigidbody_t;
14
+
15
+ // Automatically handles static (inv_mass=0 zeroes impulse)
16
+ void apply_impulse(rigidbody_t *rb, vec3f_t impulse) {
17
+ rb->velocity.x += impulse.x * rb->inv_mass;
18
+ rb->velocity.y += impulse.y * rb->inv_mass;
19
+ rb->velocity.z += impulse.z * rb->inv_mass;
20
+ }
21
+ ```
22
+
23
+ **Techniques:**
24
+ - Inverse mass: Store `inv_mass` (1/mass); zero for static bodies to disable movement
25
+ - Bit flags: Use `uint32_t` with bitmask enums for state like ACTIVE, SLEEPING
26
+ - Sync maps: Index maps decouple physics arrays from entity system arrays
27
+ - Flag operations: Use `|=` (set), `&= ~` (clear), `&` (test) for bit manipulation
28
+ - Update loop: Separate integration, broadphase detection, and narrowphase solving
@@ -0,0 +1,26 @@
1
+ # spatial-structures: Spatial Data Structures
2
+
3
+ **Guideline:** Use dimension-suffixed structures (grid, tree, bvh) for broad-phase queries. Choose by density/pattern.
4
+
5
+ **Rationale:** Different structures suit different spatial distributions; dimension suffixes (_2d, _3d) enable consistent APIs across dimensions.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef struct {
11
+ uint32_t *cells, *objects;
12
+ aabb2d_t bounds;
13
+ uint32_t cells_x, cells_y;
14
+ } grid2d_t;
15
+
16
+ uint32_t cell_x = (uint32_t)((pos.x - g->bounds.min.x) / cell_width);
17
+ uint32_t cell_y = (uint32_t)((pos.y - g->bounds.min.y) / cell_height);
18
+ uint32_t cell_idx = cell_y * g->cells_x + cell_x;
19
+ ```
20
+
21
+ **Techniques:**
22
+ - Uniform grids: Use for dense/uniform object distributions with O(1) insertion
23
+ - Quadtrees/Octrees: Use for sparse/varying density with O(log n) operations
24
+ - BVH structures: Use for static geometry and ray casting queries
25
+ - KD-trees: Use for point clouds and nearest-neighbor searches
26
+ - SoA variants: Provide `_soa` versions for batch processing same-type queries
@@ -0,0 +1,40 @@
1
+ # tagged-unions: Tagged Union Pattern
2
+
3
+ **Guideline:** Type enum + union for polymorphism without virtual functions. Cache-friendly, compiler optimizable.
4
+
5
+ **Rationale:** Avoids virtual function overhead and pointer chasing; enables compiler exhaustiveness checks and efficient batch processing.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef enum {
11
+ SHAPE_SPHERE, SHAPE_BOX, SHAPE_CAPSULE,
12
+ } shape_type_t;
13
+
14
+ typedef struct {
15
+ shape_type_t type;
16
+ union {
17
+ struct { float radius; } sphere;
18
+ struct { vec3f_t half_extents; } box;
19
+ struct { float radius, height; } capsule;
20
+ };
21
+ } shape_t;
22
+
23
+ float shape_volume(const shape_t *s) {
24
+ switch (s->type) {
25
+ case SHAPE_SPHERE:
26
+ return (4.0f/3.0f) * PI * s->sphere.radius * s->sphere.radius * s->sphere.radius;
27
+ case SHAPE_BOX:
28
+ return 8 * s->box.half_extents.x * s->box.half_extents.y * s->box.half_extents.z;
29
+ case SHAPE_CAPSULE:
30
+ return PI * s->capsule.radius * s->capsule.radius * s->capsule.height;
31
+ }
32
+ }
33
+ ```
34
+
35
+ **Techniques:**
36
+ - Type enum: Define all variant types in single enum for exhaustiveness
37
+ - Union members: Create named structs within union for each type variant
38
+ - Switch dispatch: Use switch on type field with no default clause
39
+ - Designated init: Use `.type = SHAPE_BOX, .box = {...}` for clarity
40
+ - Small members: Keep union data small; use pointers for large heap data
@@ -0,0 +1,38 @@
1
+ # vertex-packing: Vertex Packing for GPU
2
+
3
+ **Guideline:** Pack mesh data to GPU-ready formats. Support interleaved (single buffer) and non-interleaved (streaming).
4
+
5
+ **Rationale:** GPU-ready vertex formats maximize performance; flexible layouts support different rendering pipelines and optimization strategies.
6
+
7
+ **Example:**
8
+
9
+ ```c
10
+ typedef struct {
11
+ float x, y, z;
12
+ uint8_t r, g, b, a;
13
+ } vertex_3f_4u8_t;
14
+
15
+ void mesh3d_pack_3f_4u8(vertex_3f_4u8_t *out, const mesh3d_t *m, color4u8_t c) {
16
+ for (size_t i = 0; i < m->vertex_count; i++) {
17
+ out[i] = (vertex_3f_4u8_t){
18
+ m->vertices[i].x, m->vertices[i].y, m->vertices[i].z,
19
+ c.r, c.g, c.b, c.a
20
+ };
21
+ }
22
+ }
23
+
24
+ size_t mesh3d_pack_size(const mesh3d_t *m, vertex_format_t fmt) {
25
+ switch(fmt) {
26
+ case VERTEX_FORMAT_3F: return m->vertex_count * 12;
27
+ case VERTEX_FORMAT_3F_4U8: return m->vertex_count * 16;
28
+ }
29
+ return 0;
30
+ }
31
+ ```
32
+
33
+ **Techniques:**
34
+ - Vertex format naming: Use `vertex_{components}_{types}_t` (e.g., `vertex_3f_4u8_t`)
35
+ - Interleaved layout: Pack all attributes per-vertex in single buffer
36
+ - Streaming layout: Separate position/normal/UV into different buffers
37
+ - Size queries: Provide `*_pack_size` functions before allocation
38
+ - No GPU calls: Library never touches graphics APIs; caller handles upload
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: c99-guidelines
3
+ description: >-
4
+ Trigger on `.c/.h` files. Use when writing C99 code. Apply for memory management, data structures, low-level operations. Keywords: C99, malloc/free, const-correctness, designated initializers, inline functions, error handling.
5
+ ---
6
+
7
+ # C99 Coding Guidelines
8
+
9
+ ## Essentials
10
+
11
+ - **Memory management** - Free all heap allocations, avoid leaks, 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 where practical, see [reference/inline-functions.md](reference/inline-functions.md)
14
+ - **Quality** - Enable warnings, run static analysis
15
+
16
+ ## Best practices
17
+
18
+ - **Error handling** - Use return codes, check all fallible operations, see [reference/error-handling.md](reference/error-handling.md)
19
+ - **Input validation** - Check bounds, NULL pointers, division by zero
20
+ - **Readability** - Small functions, clear naming, comments for non-obvious logic
21
+
22
+ ## Progressive disclosure
23
+
24
+ - Read [reference/memory-management.md](reference/memory-management.md) - When allocating memory or managing resource lifetimes
25
+ - Read [reference/designated-initializers.md](reference/designated-initializers.md) - When initializing structs or arrays with specific values
26
+ - Read [reference/inline-functions.md](reference/inline-functions.md) - When replacing macros or writing small utility functions
27
+ - Read [reference/compound-literals.md](reference/compound-literals.md) - When creating temporary values without named variables
28
+ - Read [reference/const-correctness.md](reference/const-correctness.md) - When marking immutable data or understanding pointer const
29
+ - Read [reference/error-handling.md](reference/error-handling.md) - When implementing error codes or handling failures
@@ -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,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,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