@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,33 @@
1
+ ---
2
+ name: skill-guidelines
3
+ description: >-
4
+ Trigger on `.claude/skills/` directory work, skill documentation creation. Use when creating or managing guideline skills. Apply for extracting patterns, assimilating skills, simplifying verbose skills. Keywords: skill creation, progressive disclosure, SKILL.md, details, pattern extraction, skill assimilation, bullet format.
5
+ ---
6
+
7
+ # Skill Guidelines Management
8
+
9
+ ## Core Principles
10
+
11
+ - **Progressive Disclosure** - SKILL.md contains essentials, reference/* contains examples
12
+ - **Project Independence** - Remove project-specific paths, names, domains
13
+ - **Bullet Format** - `- **Rule** - Brief 5-10 word how-to, see [reference/file.md](reference/file.md)`
14
+ - **Style Consistency** - Match existing skill patterns in structure and voice
15
+
16
+ ## Skill Structure
17
+
18
+ - **SKILL.md** - Frontmatter, essentials (3-7 bullets), one example, progressive disclosure links
19
+ - **reference/*.md** - Guideline, rationale, how to apply, examples, counter-examples
20
+
21
+ ## Operations
22
+
23
+ - **Create from document** - Extract guidelines from URLs or files, see [reference/create.md](reference/create.md)
24
+ - **Extract from codebase** - Analyze code patterns and project instructions, see [reference/extract.md](reference/extract.md)
25
+ - **Assimilate skills** - Merge elements from one skill into another, see [reference/assimilate.md](reference/assimilate.md)
26
+ - **Simplify skills** - Condense verbose SKILL.md to bullet list, see [reference/simplify.md](reference/simplify.md)
27
+
28
+ ## Progressive Disclosure
29
+
30
+ - Read [reference/create.md](reference/create.md) - When creating skill from documentation or URL
31
+ - Read [reference/extract.md](reference/extract.md) - When extracting patterns from codebase
32
+ - Read [reference/assimilate.md](reference/assimilate.md) - When augmenting skill with another skill's elements
33
+ - Read [reference/simplify.md](reference/simplify.md) - When condensing verbose skill to bullet format
@@ -0,0 +1,51 @@
1
+ # assimilate: Augment Skill with Another Skill's Elements
2
+
3
+ **Guideline:** Extract elements from source skill and integrate into target skill while preserving target's structure, style, and voice.
4
+
5
+ **Rationale:** Skills evolve by importing relevant patterns from other skills while maintaining their established organization and voice.
6
+
7
+ **Example:**
8
+
9
+ ```markdown
10
+ # Target skill: typescript-guidelines (existing)
11
+ - Type inference with `as const`
12
+ - Strict mode requirements
13
+ - ESM imports
14
+
15
+ # Source skill: zod-guidelines (has relevant patterns)
16
+ - Runtime validation
17
+ - Type inference from schemas
18
+ - Error handling patterns
19
+
20
+ # Extract from source: Type inference pattern
21
+ Source: "Use z.infer to extract types from schemas"
22
+ Target's context: TypeScript inference
23
+ Adapted: "Derive types from Zod schemas with z.infer for runtime-validated types"
24
+
25
+ # Insert into target's "Type Inference" section
26
+ - Type inference with `as const` for literal types
27
+ - Derive types from Zod schemas with z.infer for runtime-validated types
28
+ - Use `satisfies` operator to narrow complex unions
29
+
30
+ # Result: Target skill enhanced with validation pattern while keeping its voice
31
+ ```
32
+
33
+ **Techniques:**
34
+ - Load target and source skills completely, including all detail files
35
+ - Analyze target structure: section order, bullet format, voice, tone
36
+ - Extract relevant patterns from source: guidelines, code examples, rationales
37
+ - Filter elements by aspect (validation, error-handling, testing, etc.)
38
+ - Filter by intensity percentage: 10-30% critical, 30-50% important, 50-70% comprehensive
39
+ - Rewrite source content in target's voice and style
40
+ - Insert into existing sections only, preserving structure
41
+ - Match formatting exactly: spacing, punctuation, capitalization, bullet style
42
+ - Adapt code examples to target's language and patterns
43
+ - Check for duplicates before adding to avoid redundancy
44
+ - Validate all changes preserve target's established organization and tone
45
+
46
+ ## When to Apply
47
+
48
+ - Enhancing skill with patterns from related skill
49
+ - Merging complementary guidelines
50
+ - Adding missing aspects from another skill
51
+ - Updating skill with evolved patterns
@@ -0,0 +1,48 @@
1
+ # create: Create Guideline Skill from Document
2
+
3
+ **Guideline:** Generate guideline skill with progressive disclosure structure from document file or URL.
4
+
5
+ **Rationale:** External sources (documentation, guides, articles) contain valuable patterns. Converting to skill format makes guidelines accessible during development.
6
+
7
+ **Example:**
8
+
9
+ ```bash
10
+ # Source: https://example.com/flask-patterns-guide
11
+ # Extract sections: Error Handling, Type Hints, Testing
12
+ # Code examples: JSON validation, decorators, pytest patterns
13
+
14
+ # SKILL.md created with essentials (3-5 bullets + 1 example)
15
+ - **Validation** - Use Marshmallow for JSON schema validation
16
+ - **Error handling** - Define custom exceptions for API errors
17
+ - **Testing** - Use pytest fixtures for database mocking
18
+ - **Type hints** - Add type hints to all functions
19
+
20
+ # Code example showing validation + error handling pattern
21
+
22
+ # Details extracted:
23
+ # details/validation.md - Marshmallow schemas, custom fields
24
+ # details/error-handling.md - Custom exceptions, error responses
25
+ # details/testing.md - Pytest fixtures, mocking patterns
26
+
27
+ # Result: Skill accessible in .claude/skills/flask-patterns/
28
+ ```
29
+
30
+ **Techniques:**
31
+ - Fetch source: WebFetch for URLs, Read for local files
32
+ - Extract guidelines, requirements, rules, patterns, and code examples
33
+ - Parse headings as topic groups, code blocks for language context
34
+ - Identify patterns: do/don't, good/bad, prefer/avoid statements
35
+ - Categorize by topic: performance, architecture, testing, security, etc.
36
+ - Create SKILL.md with 3-7 essential bullets and one representative example
37
+ - Extract detailed explanations and code to details/{topic}.md files
38
+ - Use bullet format: `- **Rule** - Brief how-to, see [details/file.md](details/file.md)`
39
+ - Validate all references point to existing detail files
40
+ - Remove source-specific paths, project names, and domain references
41
+ - Save to .claude/skills/{name}/ with kebab-case naming
42
+
43
+ ## When to Apply
44
+
45
+ - Creating skill from documentation URL
46
+ - Converting style guide to skill format
47
+ - Extracting patterns from blog posts or articles
48
+ - Making external guidelines accessible
@@ -0,0 +1,48 @@
1
+ # extract: Extract Skill from Codebase Patterns
2
+
3
+ **Guideline:** Create or update skill by analyzing codebase patterns, project instructions, and source files for reuse.
4
+
5
+ **Rationale:** Codebases contain established patterns that ensure consistency across development and preserve institutional knowledge.
6
+
7
+ **Example:**
8
+
9
+ ```bash
10
+ # Analyze services/api project
11
+ # Find AGENTS.md: "Express 5+ API servers, route organization, error handling"
12
+ # Glob *.ts files in api/ → Find express imports, error handlers, middleware
13
+
14
+ # Sample patterns from codebase:
15
+ # 1. Routes: All use /api/v1/<resource> pattern
16
+ # 2. Errors: Custom AppError class with status codes
17
+ # 3. Validation: All routes use Zod schemas
18
+ # 4. Testing: Jest with supertest for HTTP assertions
19
+
20
+ # Create SKILL.md with 4 essentials + Express example
21
+ # Details:
22
+ # - details/routing.md (routes, versioning, organization)
23
+ # - details/error-handling.md (AppError, error middleware)
24
+ # - details/validation.md (Zod schemas, SafeParseResult patterns)
25
+ # - details/testing.md (Jest, supertest, mocking)
26
+
27
+ # Result: express-api-patterns skill extracted from codebase
28
+ ```
29
+
30
+ **Techniques:**
31
+ - Find AGENTS.md and CLAUDE.md in source path for project guidelines
32
+ - Glob source files by extension to identify language and file patterns
33
+ - Extract patterns from project docs: section headers, tables, code blocks, architecture
34
+ - Sample source files for common patterns: naming, types, function signatures
35
+ - Detect language: .ts/.tsx → TypeScript, .py → Python, .c/.h → C99, .lua → Lua
36
+ - Categorize patterns: architecture, types, testing, safety, naming conventions
37
+ - Create SKILL.md with 3-5 key essentials, one code example, detail references
38
+ - Create details/{pattern}.md for each category with guideline, rationale, examples
39
+ - Skip patterns already in base skill to avoid duplication
40
+ - Use kebab-case for skill and detail file names
41
+ - Remove project-specific paths and names for reusability
42
+
43
+ ## When to Apply
44
+
45
+ - Extracting patterns from project codebase
46
+ - Creating skill from established practices
47
+ - Documenting institutional knowledge
48
+ - Formalizing coding conventions
@@ -0,0 +1,56 @@
1
+ # simplify: Condense Verbose Skill to Bullet Format
2
+
3
+ **Guideline:** Reduce SKILL.md by 60-80% to bullet format; move code to details; remove project-specific references.
4
+
5
+ **Rationale:** Verbose skills become hard to scan. Progressive disclosure loads only what's needed during development.
6
+
7
+ **Example:**
8
+
9
+ ```markdown
10
+ # BEFORE (SKILL.md, verbose 45 lines)
11
+
12
+ ## Error Handling
13
+
14
+ When working with Express applications, error handling is crucial for providing meaningful responses to clients. You should create custom error classes that extend the built-in Error class to encapsulate domain-specific errors...
15
+
16
+ [large code example here]
17
+
18
+ ## Validation
19
+
20
+ Use Zod for runtime validation of request payloads. Zod provides type-safe schema validation...
21
+
22
+ [large code example here]
23
+
24
+ # AFTER (SKILL.md simplified to 8 lines)
25
+
26
+ - **Error handling** - Define custom AppError class, see [details/error-handling.md]
27
+ - **Validation** - Use Zod schemas for request payload validation, see [details/validation.md]
28
+ - **Testing** - Use Jest + supertest for HTTP assertions, see [details/testing.md]
29
+
30
+ # Code examples moved to details/ files
31
+ # details/error-handling.md - Full AppError implementation
32
+ # details/validation.md - Zod schema patterns
33
+ # details/testing.md - Jest + supertest examples
34
+
35
+ # Reduction: 80% of original size, all content preserved in details
36
+ ```
37
+
38
+ **Techniques:**
39
+ - Read SKILL.md and existing detail files completely
40
+ - Extract code examples to detail files, grouped by topic
41
+ - Remove project-specific paths, names, domains, and URLs
42
+ - Condense prose explanations to bullet format: `- **Rule** - How-to, see [details/file.md]`
43
+ - Remove long paragraphs, code blocks, example sections from main file
44
+ - Keep frontmatter, description, section headings, and short inline snippets
45
+ - Create or update detail files for code examples and detailed explanations
46
+ - Validate all detail file references are correct
47
+ - Target 60-70% reduction for standard simplification
48
+ - Preserve all content by moving to details, don't delete
49
+ - Check for detail file overwrites before writing
50
+
51
+ ## When to Apply
52
+
53
+ - SKILL.md over 30 lines with verbose explanations
54
+ - Many code examples clutter the main file
55
+ - Project-specific details need removal for reusability
56
+ - Preparing skill for general distribution
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: sql-postgresql-guidelines
3
+ description: >-
4
+ Trigger on `.sql` files, PostgreSQL migrations, schema files. Use when writing PostgreSQL 15+ queries and schemas. Apply for CTEs, indexing, constraints, JSONB, RLS, performance optimization. Keywords: PostgreSQL, SQL, CTEs, GIN index, JSONB, RLS, role-based access, migrations, EXPLAIN ANALYZE, constraints.
5
+ ---
6
+
7
+ # PostgreSQL Coding Guidelines
8
+
9
+ ## Requirements
10
+
11
+ - PostgreSQL ≥ 15.
12
+
13
+ ## Essentials
14
+
15
+ - **Query composition** - Use CTEs to decompose complex queries, name descriptively, see [reference/cte-patterns.md](reference/cte-patterns.md)
16
+ - **Schema design** - Choose precise types, index for access paths, avoid over-indexing, see [reference/data-types.md](reference/data-types.md), [reference/indexing.md](reference/indexing.md)
17
+ - **Data integrity** - Enforce with PK/FK/UNIQUE/CHECK/NOT NULL constraints, see [reference/constraints.md](reference/constraints.md)
18
+ - **Semi-structured data** - Use JSONB with GIN indexes, see [reference/jsonb.md](reference/jsonb.md)
19
+ - **Multi-tenancy** - Apply RLS and role-based access for data isolation, see [reference/row-level-security.md](reference/row-level-security.md), [reference/role-based-access.md](reference/role-based-access.md)
20
+ - **Performance** - Analyze query plans and tune, see [reference/performance.md](reference/performance.md)
21
+
22
+ ## Progressive disclosure
23
+
24
+ - Read [reference/cte-patterns.md](reference/cte-patterns.md) - When breaking down complex queries or improving readability
25
+ - Read [reference/data-types.md](reference/data-types.md) - When choosing column types or avoiding type mismatches
26
+ - Read [reference/indexing.md](reference/indexing.md) - When optimizing slow queries or query planning
27
+ - Read [reference/constraints.md](reference/constraints.md) - When enforcing data integrity rules
28
+ - Read [reference/jsonb.md](reference/jsonb.md) - When storing semi-structured or dynamic data
29
+ - Read [reference/row-level-security.md](reference/row-level-security.md) - When implementing multi-tenant data isolation
30
+ - Read [reference/role-based-access.md](reference/role-based-access.md) - When configuring database user permissions
31
+ - Read [reference/performance.md](reference/performance.md) - When analyzing query plans or tuning performance
@@ -0,0 +1,47 @@
1
+ # constraints: Database Constraint Patterns
2
+
3
+ **Guideline:** Enforce data integrity at the database level using constraints (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL, EXCLUSION). Define referential actions (ON DELETE/UPDATE) for foreign keys.
4
+
5
+ **Rationale:** Database constraints ensure data validity regardless of which application or process modifies the data.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Primary key
11
+ CREATE TABLE users (
12
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
13
+ email TEXT NOT NULL UNIQUE,
14
+ age INTEGER CHECK (age >= 18)
15
+ );
16
+
17
+ -- Foreign key with cascading delete
18
+ CREATE TABLE orders (
19
+ id UUID PRIMARY KEY,
20
+ user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
21
+ total NUMERIC(10, 2) NOT NULL CHECK (total >= 0),
22
+ UNIQUE (user_id, id)
23
+ );
24
+
25
+ -- Composite unique constraint
26
+ ALTER TABLE users ADD UNIQUE (email, tenant_id);
27
+
28
+ -- Exclusion constraint for overlapping ranges
29
+ CREATE TABLE bookings (
30
+ id UUID PRIMARY KEY,
31
+ room_id UUID NOT NULL,
32
+ start_time TIMESTAMPTZ NOT NULL,
33
+ end_time TIMESTAMPTZ NOT NULL,
34
+ EXCLUDE USING GIST (
35
+ room_id WITH =,
36
+ tstzrange(start_time, end_time) WITH &&
37
+ )
38
+ );
39
+ ```
40
+
41
+ **Techniques:**
42
+ - Use PRIMARY KEY for unique row identifiers
43
+ - Use FOREIGN KEY with appropriate ON DELETE/UPDATE actions
44
+ - Use UNIQUE for columns requiring uniqueness
45
+ - Use CHECK for value validation and business rules
46
+ - Use NOT NULL for required fields
47
+ - Use EXCLUSION constraints to prevent overlapping ranges or conflicting data
@@ -0,0 +1,42 @@
1
+ # cte-patterns: Common Table Expression Patterns
2
+
3
+ **Guideline:** Use CTEs (WITH clauses) to decompose complex queries into readable, named components. Prefer CTEs over subqueries for better organization.
4
+
5
+ **Rationale:** CTEs improve readability by naming intermediate result sets, making complex queries easier to understand and maintain.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Simple CTE
11
+ WITH active_users AS (
12
+ SELECT id, email, name FROM users
13
+ WHERE status = 'active' AND deleted_at IS NULL
14
+ )
15
+ SELECT * FROM active_users WHERE email LIKE '%@example.com' ORDER BY name;
16
+
17
+ -- Multiple CTEs chained
18
+ WITH active_users AS (SELECT id FROM users WHERE status = 'active'),
19
+ orders_last_30d AS (
20
+ SELECT user_id, count(*) AS order_count, sum(total) AS total_amount
21
+ FROM orders WHERE created_at >= now() - interval '30 days'
22
+ GROUP BY user_id
23
+ )
24
+ SELECT u.id, u.email, coalesce(o.order_count, 0) AS orders
25
+ FROM active_users u LEFT JOIN orders_last_30d o ON o.user_id = u.id
26
+ ORDER BY orders DESC;
27
+
28
+ -- Recursive CTE for hierarchies
29
+ WITH RECURSIVE org_tree AS (
30
+ SELECT id, name, manager_id, 1 AS level FROM employees WHERE manager_id IS NULL
31
+ UNION ALL
32
+ SELECT e.id, e.name, e.manager_id, ot.level + 1
33
+ FROM employees e INNER JOIN org_tree ot ON e.manager_id = ot.id
34
+ )
35
+ SELECT * FROM org_tree ORDER BY level, name;
36
+ ```
37
+
38
+ **Techniques:**
39
+ - Name CTEs descriptively (active_users, not cte1)
40
+ - Use CTEs to decompose multi-step logic
41
+ - Reference CTEs multiple times to avoid repetition
42
+ - Use UNION ALL for recursive base + recursive case
@@ -0,0 +1,46 @@
1
+ # data-types: PostgreSQL Data Type Best Practices
2
+
3
+ **Guideline:** Choose precise, semantically appropriate data types for each column. Use UUID for distributed identifiers, TIMESTAMPTZ for timestamps, NUMERIC for exact decimals, JSONB for semi-structured data, and custom types (ENUMs, DOMAINs) for business logic.
4
+
5
+ **Rationale:** Proper data types ensure data integrity, optimize storage, enable better indexing, and prevent common errors. TIMESTAMPTZ handles timezones correctly, NUMERIC avoids floating-point precision issues, and custom types enforce domain constraints at the database level.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Precise data types
11
+ CREATE TABLE products (
12
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
13
+ name TEXT NOT NULL,
14
+ price NUMERIC(10, 2) NOT NULL, -- Precise decimal, not FLOAT
15
+ quantity INTEGER NOT NULL CHECK (quantity >= 0),
16
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now(), -- Timezone aware
17
+ metadata JSONB, -- Semi-structured data
18
+ tags TEXT[] DEFAULT '{}', -- Array of strings
19
+ status product_status NOT NULL -- Enum type
20
+ );
21
+
22
+ -- Enum type
23
+ CREATE TYPE product_status AS ENUM ('draft', 'active', 'archived');
24
+
25
+ -- Domain types for validation
26
+ CREATE DOMAIN email AS TEXT
27
+ CHECK (VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$');
28
+
29
+ CREATE DOMAIN positive_numeric AS NUMERIC(10, 2)
30
+ CHECK (VALUE >= 0);
31
+
32
+ CREATE TABLE users (
33
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
34
+ email email NOT NULL UNIQUE,
35
+ balance positive_numeric NOT NULL DEFAULT 0
36
+ );
37
+ ```
38
+
39
+ **Techniques:**
40
+ - Use UUID for globally unique identifiers in distributed systems
41
+ - Use TIMESTAMPTZ (not TIMESTAMP) for all timestamps to preserve timezone information
42
+ - Use NUMERIC for monetary values and exact decimals
43
+ - Use ENUMs for small, stable sets of values
44
+ - Use DOMAINs to create reusable constrained types
45
+ - Use JSONB for flexible, semi-structured data
46
+ - Use array types (TEXT[], INTEGER[]) for ordered collections
@@ -0,0 +1,45 @@
1
+ # indexing: Index Strategy and Optimization
2
+
3
+ **Guideline:** Create indexes based on actual query patterns and access paths. Use appropriate index types (B-tree, GIN, GiST, BRIN) for different data types and query patterns. Avoid over-indexing as each index has write overhead.
4
+
5
+ **Rationale:** Proper indexing dramatically improves query performance by reducing full table scans. Different index types are optimized for different use cases: B-tree for equality and range queries, GIN for JSONB and arrays, GiST for full-text search, BRIN for large time-series data.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- B-tree index for common queries
11
+ CREATE INDEX idx_users_email ON users(email);
12
+ CREATE INDEX idx_orders_user_id ON orders(user_id);
13
+
14
+ -- Composite index for multi-column queries
15
+ CREATE INDEX idx_orders_user_created ON orders(user_id, created_at DESC);
16
+
17
+ -- Partial index for filtered queries
18
+ CREATE INDEX idx_active_users_email ON users(email)
19
+ WHERE status = 'active' AND deleted_at IS NULL;
20
+
21
+ -- Expression index for computed values
22
+ CREATE INDEX idx_users_lower_email ON users(LOWER(email));
23
+
24
+ -- GIN index for JSONB
25
+ CREATE INDEX idx_products_metadata ON products USING GIN (metadata);
26
+ CREATE INDEX idx_products_tags ON products USING GIN (tags);
27
+
28
+ -- GiST index for full-text search
29
+ CREATE INDEX idx_products_search ON products USING GiST (
30
+ to_tsvector('english', name || ' ' || coalesce(description, ''))
31
+ );
32
+
33
+ -- BRIN index for large time-series data
34
+ CREATE INDEX idx_logs_created_at ON logs USING BRIN (created_at);
35
+ ```
36
+
37
+ **Techniques:**
38
+ - Create B-tree indexes (default) for frequently queried columns
39
+ - Use partial indexes to index only relevant subsets
40
+ - Use composite indexes for multi-column queries
41
+ - Use expression indexes for computed values
42
+ - Use GIN indexes for JSONB, arrays, and full-text search
43
+ - Use GiST indexes for full-text search with ranking
44
+ - Use BRIN indexes for large, naturally ordered data (timestamps, IDs)
45
+ - Review query plans with EXPLAIN ANALYZE before adding indexes
@@ -0,0 +1,54 @@
1
+ # jsonb: JSONB Storage and Querying
2
+
3
+ **Guideline:** Use JSONB (not JSON) for semi-structured data that needs to be queried or indexed. Leverage JSONB operators and functions for efficient querying. Index JSONB columns with GIN indexes.
4
+
5
+ **Rationale:** JSONB provides flexible schema storage while maintaining queryability. It stores data in binary format for faster processing, supports indexing, and provides rich operators for querying nested structures. Prefer JSONB over JSON for all use cases except when preserving exact text formatting is critical.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Define JSONB table
11
+ CREATE TABLE events (
12
+ id UUID PRIMARY KEY,
13
+ type TEXT NOT NULL,
14
+ data JSONB NOT NULL,
15
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now()
16
+ );
17
+
18
+ -- Query with JSONB operators
19
+ SELECT data->'user'->>'name', data->>'email' FROM events;
20
+ SELECT * FROM events WHERE data @> '{"status": "completed"}';
21
+ SELECT * FROM events WHERE data ? 'user_id';
22
+ SELECT * FROM events WHERE data ?| array['email', 'phone'];
23
+
24
+ -- Build JSONB objects
25
+ SELECT jsonb_build_object(
26
+ 'id', id,
27
+ 'type', type,
28
+ 'timestamp', created_at
29
+ ) FROM events;
30
+
31
+ -- Update JSONB fields
32
+ UPDATE events
33
+ SET data = jsonb_set(data, '{status}', '"completed"')
34
+ WHERE id = $1;
35
+
36
+ UPDATE events
37
+ SET data = data - 'temp_field'
38
+ WHERE type = 'cleanup';
39
+
40
+ -- Aggregate to JSONB array
41
+ SELECT jsonb_agg(data) FROM events WHERE type = 'user_action';
42
+
43
+ -- GIN index for fast JSONB queries
44
+ CREATE INDEX idx_events_data ON events USING GIN (data);
45
+ ```
46
+
47
+ **Techniques:**
48
+ - Use JSONB column type for semi-structured data
49
+ - Use `->` operator to extract JSONB values (returns JSONB)
50
+ - Use `->>` operator to extract text values (returns TEXT)
51
+ - Use `@>` operator to check containment
52
+ - Use `?` operator to check key existence
53
+ - Create GIN indexes on JSONB columns for fast querying
54
+ - Use JSONB functions (jsonb_build_object, jsonb_agg, jsonb_set) for manipulation
@@ -0,0 +1,46 @@
1
+ # performance: Query Performance Optimization
2
+
3
+ **Guideline:** Use EXPLAIN ANALYZE to understand query execution plans. Avoid N+1 queries by using JOINs. Choose appropriate join types. Limit result sets and use efficient pagination strategies.
4
+
5
+ **Rationale:** Query performance directly impacts application responsiveness and database load. Understanding query plans helps identify bottlenecks. Proper JOIN usage eliminates multiple round-trips. Keyset pagination outperforms OFFSET for large datasets. Limiting result sets reduces memory usage and network transfer.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- EXPLAIN ANALYZE to understand query performance
11
+ EXPLAIN ANALYZE
12
+ SELECT u.email, count(o.id) AS order_count
13
+ FROM users u
14
+ LEFT JOIN orders o ON o.user_id = u.id
15
+ GROUP BY u.id, u.email
16
+ HAVING count(o.id) > 10;
17
+
18
+ -- Use JOINs instead of N+1 queries
19
+ SELECT
20
+ u.*,
21
+ json_agg(o.*) AS orders
22
+ FROM users u
23
+ LEFT JOIN orders o ON o.user_id = u.id
24
+ GROUP BY u.id;
25
+
26
+ -- Limit result sets with WHERE and LIMIT
27
+ SELECT * FROM large_table
28
+ WHERE created_at >= now() - interval '7 days'
29
+ ORDER BY created_at DESC
30
+ LIMIT 100;
31
+
32
+ -- Keyset pagination (cursor-based) for large datasets
33
+ SELECT * FROM products
34
+ WHERE created_at < $last_seen_timestamp
35
+ ORDER BY created_at DESC
36
+ LIMIT 20;
37
+ ```
38
+
39
+ **Techniques:**
40
+ - Use `EXPLAIN ANALYZE` to inspect query execution plans
41
+ - Look for sequential scans where indexes should be used
42
+ - Replace N+1 query patterns with JOINs or aggregation
43
+ - Use appropriate JOIN types (INNER, LEFT, RIGHT, FULL OUTER)
44
+ - Always limit result sets with WHERE clauses and LIMIT
45
+ - Use keyset (cursor-based) pagination instead of OFFSET for large datasets
46
+ - Aggregate related data with JSON functions to reduce round-trips
@@ -0,0 +1,47 @@
1
+ # role-based-access: Role-Based Access Control (RBAC)
2
+
3
+ **Guideline:** Create database roles with appropriate permissions and grant them to users. Use roles to enforce least-privilege access at the database level. Define read-only, read-write, and admin roles.
4
+
5
+ **Rationale:** Database-level RBAC provides defense-in-depth security by limiting what each database user can do. It prevents accidental or malicious modifications, supports compliance requirements, and allows different applications or users to have different access levels.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Create roles
11
+ CREATE ROLE app_readonly;
12
+ CREATE ROLE app_readwrite;
13
+ CREATE ROLE app_admin;
14
+
15
+ -- Grant permissions for read-only role
16
+ GRANT CONNECT ON DATABASE myapp TO app_readonly;
17
+ GRANT USAGE ON SCHEMA public TO app_readonly;
18
+ GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_readonly;
19
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public
20
+ GRANT SELECT ON TABLES TO app_readonly;
21
+
22
+ -- Grant permissions for read-write role
23
+ GRANT CONNECT ON DATABASE myapp TO app_readwrite;
24
+ GRANT USAGE ON SCHEMA public TO app_readwrite;
25
+ GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_readwrite;
26
+ GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO app_readwrite;
27
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public
28
+ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_readwrite;
29
+
30
+ -- Grant permissions for admin role
31
+ GRANT ALL PRIVILEGES ON DATABASE myapp TO app_admin;
32
+
33
+ -- Create users and assign roles
34
+ CREATE USER api_user WITH PASSWORD 'secure_password';
35
+ GRANT app_readwrite TO api_user;
36
+
37
+ CREATE USER analyst WITH PASSWORD 'secure_password';
38
+ GRANT app_readonly TO analyst;
39
+ ```
40
+
41
+ **Techniques:**
42
+ - Create roles for different access levels (readonly, readwrite, admin)
43
+ - Grant minimal necessary permissions to each role
44
+ - Use `ALTER DEFAULT PRIVILEGES` to apply permissions to future objects
45
+ - Create database users and assign them to appropriate roles
46
+ - Use `GRANT` to assign roles to users
47
+ - Avoid granting permissions directly to users; use roles instead
@@ -0,0 +1,66 @@
1
+ # row-level-security: Row-Level Security (RLS) Implementation
2
+
3
+ **Guideline:** Use Row-Level Security (RLS) policies to enforce tenant isolation and access control at the database level. Set session variables to identify the current tenant/user, and create policies that filter data based on these variables.
4
+
5
+ **Rationale:** RLS provides transparent, centralized access control that applies regardless of how data is accessed. It prevents accidental data leaks between tenants and reduces application-level security logic. Policies are enforced by PostgreSQL itself, making them immune to application bugs.
6
+
7
+ **Example:**
8
+
9
+ ```sql
10
+ -- Define multi-tenant table
11
+ CREATE TABLE documents (
12
+ id UUID PRIMARY KEY,
13
+ tenant_id UUID NOT NULL,
14
+ title TEXT NOT NULL,
15
+ content TEXT,
16
+ owner_id UUID NOT NULL,
17
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now()
18
+ );
19
+
20
+ -- Enable RLS
21
+ ALTER TABLE documents ENABLE ROW LEVEL SECURITY;
22
+
23
+ -- Create policies for each operation
24
+ CREATE POLICY documents_select_policy ON documents
25
+ FOR SELECT
26
+ USING (tenant_id = current_setting('app.tenant_id')::UUID);
27
+
28
+ CREATE POLICY documents_insert_policy ON documents
29
+ FOR INSERT
30
+ WITH CHECK (
31
+ tenant_id = current_setting('app.tenant_id')::UUID
32
+ AND owner_id = current_setting('app.user_id')::UUID
33
+ );
34
+
35
+ CREATE POLICY documents_update_policy ON documents
36
+ FOR UPDATE
37
+ USING (
38
+ tenant_id = current_setting('app.tenant_id')::UUID
39
+ AND owner_id = current_setting('app.user_id')::UUID
40
+ )
41
+ WITH CHECK (
42
+ tenant_id = current_setting('app.tenant_id')::UUID
43
+ );
44
+
45
+ CREATE POLICY documents_delete_policy ON documents
46
+ FOR DELETE
47
+ USING (
48
+ tenant_id = current_setting('app.tenant_id')::UUID
49
+ AND owner_id = current_setting('app.user_id')::UUID
50
+ );
51
+
52
+ -- Set session variables before queries
53
+ SET app.tenant_id = '550e8400-e29b-41d4-a716-446655440000';
54
+ SET app.user_id = '660e8400-e29b-41d4-a716-446655440000';
55
+
56
+ -- Query automatically filtered by RLS
57
+ SELECT * FROM documents; -- Only sees tenant's documents
58
+ ```
59
+
60
+ **Techniques:**
61
+ - Enable RLS on multi-tenant tables with `ALTER TABLE ... ENABLE ROW LEVEL SECURITY`
62
+ - Create policies for each operation type (SELECT, INSERT, UPDATE, DELETE)
63
+ - Use `USING` clause to filter which rows are visible/modifiable
64
+ - Use `WITH CHECK` clause to validate new/modified rows
65
+ - Set session variables (e.g., `app.tenant_id`, `app.user_id`) before queries
66
+ - Use `current_setting()` in policies to access session variables