@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,81 @@
1
+ # module-definition: Module Definition Pattern
2
+
3
+ **Guideline:** Define reusable modules with typed variables, validation rules, computed locals, and explicit outputs
4
+
5
+ **Rationale:** Well-defined interfaces make modules composable and prevent configuration errors
6
+
7
+ **Example:**
8
+
9
+ ```hcl
10
+ # modules/network/variables.tf
11
+ variable "vpc_cidr" {
12
+ description = "CIDR block for VPC"
13
+ type = string
14
+ validation {
15
+ condition = can(cidrhost(var.vpc_cidr, 0))
16
+ error_message = "Must be valid IPv4 CIDR"
17
+ }
18
+ }
19
+
20
+ variable "environment" {
21
+ description = "Environment name"
22
+ type = string
23
+ validation {
24
+ condition = contains(["dev", "staging", "prod"], var.environment)
25
+ error_message = "Must be dev, staging, or prod"
26
+ }
27
+ }
28
+
29
+ variable "availability_zones" {
30
+ description = "List of availability zones"
31
+ type = list(string)
32
+ default = []
33
+ }
34
+
35
+ # modules/network/main.tf
36
+ locals {
37
+ common_tags = merge(
38
+ var.tags,
39
+ {
40
+ Module = "network"
41
+ Environment = var.environment
42
+ ManagedBy = "terraform"
43
+ }
44
+ )
45
+
46
+ subnet_cidrs = [
47
+ for i, az in var.availability_zones :
48
+ cidrsubnet(var.vpc_cidr, 8, i)
49
+ ]
50
+ }
51
+
52
+ resource "aws_vpc" "this" {
53
+ cidr_block = var.vpc_cidr
54
+ enable_dns_hostnames = true
55
+ enable_dns_support = true
56
+
57
+ tags = merge(local.common_tags, {
58
+ Name = "${var.environment}-vpc"
59
+ })
60
+ }
61
+
62
+ # modules/network/outputs.tf
63
+ output "vpc_id" {
64
+ description = "ID of the VPC"
65
+ value = aws_vpc.this.id
66
+ }
67
+
68
+ output "vpc_cidr" {
69
+ description = "CIDR block of the VPC"
70
+ value = aws_vpc.this.cidr_block
71
+ }
72
+ ```
73
+
74
+ **Techniques:**
75
+ - **Type constraints:** Specify all variable types to enable early validation
76
+ - **Validation blocks:** Add business logic constraints like CIDR format checking
77
+ - **Common locals:** Centralize shared tags and computed values for consistency
78
+ - **CIDR transformations:** Use cidrsubnet() in locals for flexible subnet allocation
79
+ - **Descriptive outputs:** Export all useful values with clear descriptions
80
+ - **Environment isolation:** Use tags and naming patterns for multi-environment support
81
+
@@ -0,0 +1,51 @@
1
+ # module-structure: Module Organization
2
+
3
+ **Guideline:** Organize modules with separate directories for reusable modules and environment-specific configurations
4
+
5
+ **Rationale:** Clear separation between modules and environments enables reusability and environment isolation
6
+
7
+ **Example:**
8
+
9
+ ```
10
+ terraform/
11
+ ├── modules/
12
+ │ ├── network/
13
+ │ │ ├── main.tf
14
+ │ │ ├── variables.tf
15
+ │ │ ├── outputs.tf
16
+ │ │ └── README.md
17
+ │ ├── compute/
18
+ │ │ ├── main.tf
19
+ │ │ ├── variables.tf
20
+ │ │ ├── outputs.tf
21
+ │ │ └── README.md
22
+ │ └── database/
23
+ │ ├── main.tf
24
+ │ ├── variables.tf
25
+ │ ├── outputs.tf
26
+ │ └── README.md
27
+ └── environments/
28
+ ├── dev/
29
+ │ ├── main.tf
30
+ │ ├── variables.tf
31
+ │ ├── terraform.tfvars
32
+ │ └── backend.tf
33
+ ├── staging/
34
+ │ ├── main.tf
35
+ │ ├── variables.tf
36
+ │ ├── terraform.tfvars
37
+ │ └── backend.tf
38
+ └── prod/
39
+ ├── main.tf
40
+ ├── variables.tf
41
+ ├── terraform.tfvars
42
+ └── backend.tf
43
+ ```
44
+
45
+ **Techniques:**
46
+ - **Modules directory:** Group reusable infrastructure components by capability
47
+ - **Environments directory:** Create separate root modules for dev, staging, prod
48
+ - **Standard files:** Use main.tf, variables.tf, outputs.tf, backend.tf consistently
49
+ - **Module README:** Document each module's purpose, variables, and outputs
50
+ - **Relative sourcing:** Use relative paths in module sources for portability
51
+
@@ -0,0 +1,38 @@
1
+ # remote-state: Remote State Configuration
2
+
3
+ **Guideline:** Store state remotely with encryption and locking, isolate per environment
4
+
5
+ **Rationale:** Remote state enables team collaboration and prevents concurrent modification conflicts
6
+
7
+ **Example:**
8
+
9
+ ```hcl
10
+ # environments/prod/backend.tf
11
+ terraform {
12
+ backend "s3" {
13
+ bucket = "myapp-terraform-state-prod"
14
+ key = "prod/terraform.tfstate"
15
+ region = "us-east-1"
16
+ encrypt = true
17
+ dynamodb_table = "terraform-state-lock-prod"
18
+
19
+ # Prevent accidental state deletion
20
+ lifecycle {
21
+ prevent_destroy = true
22
+ }
23
+ }
24
+ }
25
+
26
+ # Each environment has isolated state
27
+ # dev: s3://myapp-tf-state-dev/dev/terraform.tfstate
28
+ # staging: s3://myapp-tf-state-staging/staging/terraform.tfstate
29
+ # prod: s3://myapp-tf-state-prod/prod/terraform.tfstate
30
+ ```
31
+
32
+ **Techniques:**
33
+ - **S3 backend:** Store state in versioned, encrypted S3 buckets
34
+ - **DynamoDB locking:** Use DynamoDB tables to prevent concurrent modifications
35
+ - **Encryption:** Enable server-side encryption on S3 backend buckets
36
+ - **Per-environment isolation:** Create separate state buckets for dev, staging, prod
37
+ - **State lifecycle:** Prevent accidental state deletion with versioning and backups
38
+
@@ -0,0 +1,71 @@
1
+ # root-module: Root Module Pattern
2
+
3
+ **Guideline:** Keep root modules thin by composing child modules with provider config and environment-specific values
4
+
5
+ **Rationale:** Root modules orchestrate infrastructure without duplicating logic, modules remain reusable
6
+
7
+ **Example:**
8
+
9
+ ```hcl
10
+ # environments/prod/main.tf
11
+ terraform {
12
+ required_version = ">= 1.12"
13
+
14
+ required_providers {
15
+ aws = {
16
+ source = "hashicorp/aws"
17
+ version = "~> 5.0"
18
+ }
19
+ }
20
+ }
21
+
22
+ provider "aws" {
23
+ region = var.aws_region
24
+
25
+ default_tags {
26
+ tags = {
27
+ Environment = "prod"
28
+ Project = "myapp"
29
+ ManagedBy = "terraform"
30
+ }
31
+ }
32
+ }
33
+
34
+ locals {
35
+ availability_zones = ["${var.aws_region}a", "${var.aws_region}b", "${var.aws_region}c"]
36
+
37
+ common_tags = {
38
+ Project = "myapp"
39
+ Environment = "prod"
40
+ }
41
+ }
42
+
43
+ module "network" {
44
+ source = "../../modules/network"
45
+
46
+ vpc_cidr = "10.0.0.0/16"
47
+ environment = "prod"
48
+ availability_zones = local.availability_zones
49
+ tags = local.common_tags
50
+ }
51
+
52
+ module "compute" {
53
+ source = "../../modules/compute"
54
+
55
+ vpc_id = module.network.vpc_id
56
+ subnet_ids = module.network.public_subnet_ids
57
+ environment = "prod"
58
+ instance_type = "t3.medium"
59
+ desired_capacity = 3
60
+ tags = local.common_tags
61
+ }
62
+ ```
63
+
64
+ **Techniques:**
65
+ - **Provider blocks:** Configure required providers with version constraints
66
+ - **Default tags:** Use provider default_tags to apply common tags to all resources
67
+ - **Thin root:** Root modules only compose child modules, no resource creation
68
+ - **Module composition:** Wire module outputs as inputs to dependent modules
69
+ - **Environment locals:** Compute availability zones and common tags once
70
+ - **Relative sourcing:** Use ../../modules/ paths for portable module references
71
+
@@ -0,0 +1,90 @@
1
+ # typed-variables: Variable Types and Validation
2
+
3
+ **Guideline:** Use type constraints and validation blocks for all variables to catch configuration errors early
4
+
5
+ **Rationale:** Typed variables with validation provide immediate feedback and prevent invalid deployments
6
+
7
+ **Example:**
8
+
9
+ ```hcl
10
+ # String with validation
11
+ variable "environment" {
12
+ description = "Environment name"
13
+ type = string
14
+
15
+ validation {
16
+ condition = contains(["dev", "staging", "prod"], var.environment)
17
+ error_message = "Environment must be dev, staging, or prod"
18
+ }
19
+ }
20
+
21
+ # Number with constraints
22
+ variable "instance_count" {
23
+ description = "Number of instances"
24
+ type = number
25
+ default = 2
26
+
27
+ validation {
28
+ condition = var.instance_count >= 1 && var.instance_count <= 10
29
+ error_message = "Instance count must be between 1 and 10"
30
+ }
31
+ }
32
+
33
+ # Boolean
34
+ variable "enable_monitoring" {
35
+ description = "Enable detailed monitoring"
36
+ type = bool
37
+ default = true
38
+ }
39
+
40
+ # List
41
+ variable "allowed_cidr_blocks" {
42
+ description = "CIDR blocks allowed to access"
43
+ type = list(string)
44
+ default = []
45
+ }
46
+
47
+ # Map
48
+ variable "tags" {
49
+ description = "Resource tags"
50
+ type = map(string)
51
+ default = {}
52
+ }
53
+
54
+ # Object with structure
55
+ variable "database_config" {
56
+ description = "Database configuration"
57
+ type = object({
58
+ instance_class = string
59
+ allocated_storage = number
60
+ engine_version = string
61
+ backup_retention = number
62
+ })
63
+ default = {
64
+ instance_class = "db.t3.micro"
65
+ allocated_storage = 20
66
+ engine_version = "15.4"
67
+ backup_retention = 7
68
+ }
69
+ }
70
+
71
+ # Optional values (Terraform 1.3+)
72
+ variable "optional_config" {
73
+ description = "Optional configuration"
74
+ type = object({
75
+ required_field = string
76
+ optional_field = optional(string, "default")
77
+ optional_number = optional(number)
78
+ })
79
+ }
80
+ ```
81
+
82
+ **Techniques:**
83
+ - **Basic types:** Use string, number, bool, list, map for simple variables
84
+ - **Validation blocks:** Add business logic constraints like allowed values
85
+ - **Range validation:** Check numeric ranges with >= and <= operators
86
+ - **Complex types:** Use object() for structured configurations with nested fields
87
+ - **Optional fields:** Use optional(type, default) for flexible object schemas
88
+ - **Sensible defaults:** Provide practical defaults for common configurations
89
+ - **Early feedback:** Type and validation errors appear before plan phase
90
+
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: threejs-guidelines
3
+ description: >-
4
+ Trigger on `.js/.ts` files with Three.js imports, `three` package usage, or 3D scene code. Use when building vanilla Three.js applications. Apply for scene setup, meshes, materials, lighting, loaders, animation, interaction, shaders, post-processing, performance optimization. Keywords: Three.js, WebGL, WebGPU, Scene, Renderer, Mesh, BufferGeometry, MeshStandardMaterial, GLTFLoader, Raycaster, ShaderMaterial, EffectComposer, InstancedMesh.
5
+ ---
6
+
7
+ # Three.js Coding Guidelines
8
+
9
+ Vanilla Three.js for scene setup, rendering, meshes, materials, lights, animation, interaction, and effects.
10
+
11
+ ## Essentials
12
+
13
+ - **Scene structure** - Organize Object3D hierarchy; use Groups for logical organization, see [reference/scene-fundamentals.md](reference/scene-fundamentals.md)
14
+ - **Render loop** - Frame-rate independence with `clock.getDelta()`, see [reference/scene-fundamentals.md](reference/scene-fundamentals.md)
15
+ - **Disposal** - Dispose geometries, materials, textures to prevent memory leaks, see [reference/scene-fundamentals.md](reference/scene-fundamentals.md)
16
+ - **Pixel ratio** - Cap at 2 with `Math.min(devicePixelRatio, 2)`, see [reference/scene-fundamentals.md](reference/scene-fundamentals.md)
17
+ - **Color space** - Use `SRGBColorSpace` for colors, `NoColorSpace` for data, see [reference/textures.md](reference/textures.md)
18
+ - **Shadows** - Enable on renderer, light, mesh; keep frustum tight, see [reference/lighting-shadows.md](reference/lighting-shadows.md)
19
+
20
+ ## Core Topics
21
+
22
+ - Read [reference/scene-fundamentals.md](reference/scene-fundamentals.md) - Scene, Renderer, Object3D, cleanup, render loop
23
+ - Read [reference/geometry.md](reference/geometry.md) - Shapes, BufferGeometry, custom geometry, instancing
24
+ - Read [reference/cameras-controls.md](reference/cameras-controls.md) - Cameras, OrbitControls, FlyControls, viewport
25
+ - Read [reference/materials.md](reference/materials.md) - PBR materials, ShaderMaterial, properties
26
+ - Read [reference/textures.md](reference/textures.md) - Loading, UV mapping, render targets, environment
27
+ - Read [reference/lighting-shadows.md](reference/lighting-shadows.md) - Lights, shadows, IBL, light probes
28
+ - Read [reference/animation.md](reference/animation.md) - Keyframes, skeletal, morph targets, AnimationMixer
29
+ - Read [reference/interaction.md](reference/interaction.md) - Raycasting, selection, drag, coordinate conversion
30
+ - Read [reference/loaders.md](reference/loaders.md) - GLTF, FBX, textures, HDR, compression
31
+ - Read [reference/shaders.md](reference/shaders.md) - GLSL shaders, uniforms, varyings
32
+ - Read [reference/postprocessing.md](reference/postprocessing.md) - Bloom, DOF, SSAO, custom effects
33
+ - Read [reference/performance.md](reference/performance.md) - InstancedMesh, LOD, culling, batching, profiling
34
+ - Read [reference/patterns.md](reference/patterns.md) - Architecture patterns, asset management, state machines
35
+ - Read [reference/math.md](reference/math.md) - Vector3, Matrix4, Quaternion, Box3, curves, MathUtils
36
+ - Read [reference/node-materials.md](reference/node-materials.md) - TSL (Three Shading Language), node-based materials
37
+ - Read [reference/physics-vr.md](reference/physics-vr.md) - Physics engines (Rapier, Cannon), WebXR (VR/AR)
38
+ - Read [reference/webgpu.md](reference/webgpu.md) - WebGPU renderer, compute shaders, modern GPU
@@ -0,0 +1,26 @@
1
+ # animation: Animation System
2
+
3
+ **Guideline:** Use AnimationMixer for GLTF keyframe animations; use clock.getDelta() for frame-rate independent procedural animation.
4
+
5
+ **Rationale:** Mixer efficiently plays complex GLTF animations; delta time ensures consistent speed across frame rates.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const mixer = new THREE.AnimationMixer(gltf.scene);
10
+ const clip = THREE.AnimationClip.findByName(gltf.animations, 'Walk');
11
+ const action = mixer.clipAction(clip);
12
+ action.play();
13
+ const clock = new THREE.Clock();
14
+ renderer.setAnimationLoop(() => {
15
+ mixer.update(clock.getDelta());
16
+ renderer.render(scene, camera);
17
+ });
18
+ ```
19
+
20
+ **Techniques:**
21
+ - AnimationMixer: Create from scene root; plays multiple clips simultaneously
22
+ - AnimationAction: play(), stop(), reset(); loop modes (Repeat, Once, PingPong); timeScale for speed
23
+ - Blending: crossFadeTo(nextAction, duration) for smooth transitions; weight blending for layered animations
24
+ - Procedural: Use elapsed time with Math.sin/cos for smooth curves; delta time for frame-rate independence
25
+ - Keyframe creation: VectorKeyframeTrack (position), QuaternionKeyframeTrack (rotation), AnimationClip (combines tracks)
26
+ - Performance: Single mixer for multiple objects; stopAllAction() and uncacheRoot() for cleanup
@@ -0,0 +1,26 @@
1
+ # filename: cameras-controls
2
+
3
+ **Guideline:** Choose camera type (Perspective, Orthographic, Cube); select controls matching interaction (OrbitControls, FlyControls, PointerLockControls).
4
+
5
+ **Rationale:** Proper camera frustum prevents z-fighting; tight near/far prevents clipping; controls must match intended interaction pattern.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const camera = new THREE.PerspectiveCamera(75, w/h, 0.1, 1000);
10
+ camera.position.set(5, 5, 5);
11
+
12
+ const controls = new OrbitControls(camera, renderer.domElement);
13
+ controls.enableDamping = true;
14
+ controls.dampingFactor = 0.05;
15
+ controls.target.set(0, 0, 0);
16
+ controls.update();
17
+ ```
18
+
19
+ **Techniques:**
20
+ - Camera types: PerspectiveCamera (3D standard), OrthographicCamera (CAD/isometric), CubeCamera (reflections)
21
+ - Near/far planes: Large scenes use `near=1, far=100000`; small scenes `near=0.001, far=100` to avoid z-fighting
22
+ - OrbitControls: `enableDamping=true` for smooth motion; set `minDistance`/`maxDistance` and polar angle limits
23
+ - FlyControls: Pass `clock.getDelta()` to `.update()` for frame-rate independence
24
+ - PointerLockControls: Call `.lock()` on click; check `.isLocked`; use `.moveForward()`, `.moveRight()`
25
+ - Multi-camera: `.setViewport()`, `.setScissor()`, render twice for split-screen/PIP
26
+ - Coordinate conversion: `.project()` for world→screen; `.unproject()` for screen→world
@@ -0,0 +1,22 @@
1
+ # geometry: Geometry and BufferGeometry
2
+
3
+ **Guideline:** Use built-in geometries for standard shapes; create efficient custom BufferGeometry with position/UV/indices/normals; use InstancedMesh.
4
+
5
+ **Rationale:** Built-ins are optimized; proper BufferGeometry avoids redundant data; InstancedMesh enables thousands of copies in one draw call.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const geometry = new THREE.BufferGeometry();
10
+ geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));
11
+ geometry.setAttribute('uv', new THREE.BufferAttribute(uvs, 2));
12
+ geometry.setIndex(new THREE.BufferAttribute(indices, 1));
13
+ geometry.computeVertexNormals();
14
+ ```
15
+
16
+ **Techniques:**
17
+ - Built-ins: BoxGeometry, SphereGeometry, PlaneGeometry, CylinderGeometry, IcosahedronGeometry, etc.
18
+ - Path-based: LatheGeometry (vases), TubeGeometry (splines), ExtrudeGeometry (2D extrude), TextGeometry (fonts)
19
+ - Custom BufferGeometry: Position (required), UV, indices (reuse vertices), normals, bounds
20
+ - InstancedMesh: Per-instance transforms via setMatrixAt(); per-instance colors via setColorAt()
21
+ - Optimization: Merge geometries with BufferGeometryUtils; dispose with geometry.dispose()
22
+ - Morph targets: Blend multiple shape deformations with morphTargetInfluences
@@ -0,0 +1,25 @@
1
+ # interaction: Raycasting and User Interaction
2
+
3
+ **Guideline:** Convert screen to normalized device coordinates, then raycast; cache raycaster instance and track state for hover/drag.
4
+
5
+ **Rationale:** Raycasting picks objects; state tracking enables hover highlights and drag interactions; coordinate conversion is essential.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const raycaster = new THREE.Raycaster();
10
+ const pointer = new THREE.Vector2();
11
+ window.addEventListener('pointermove', (e) => {
12
+ pointer.x = (e.clientX / innerWidth) * 2 - 1;
13
+ pointer.y = -(e.clientY / innerHeight) * 2 + 1;
14
+ raycaster.setFromCamera(pointer, camera);
15
+ const hits = raycaster.intersectObjects(scene.children, true);
16
+ if (hits.length > 0) console.log(hits[0].object, hits[0].point);
17
+ });
18
+ ```
19
+
20
+ **Techniques:**
21
+ - NDC conversion: `pointer.x = (clientX / width) * 2 - 1`, `pointer.y = -(clientY / height) * 2 + 1`
22
+ - Intersection properties: object, point (world), distance, uv, face, instanceId
23
+ - Hover effects: Track state, restore original color on exit
24
+ - Drag implementation: pointerdown to start, pointermove to update, pointerup to release
25
+ - Performance: Filter interactive objects before raycast; don't raycast every frame on heavy scenes
@@ -0,0 +1,31 @@
1
+ # filename: lighting-shadows
2
+
3
+ **Guideline:** Use light types appropriate to scene; keep shadow frustums tight; leverage IBL (Environment maps) for realistic ambient lighting.
4
+
5
+ **Rationale:** Lighting creates atmosphere; tight shadow frustums improve quality; IBL is more efficient than many point lights for PBR.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ renderer.shadowMap.enabled = true;
10
+ renderer.shadowMap.type = THREE.PCFSoftShadowMap;
11
+
12
+ const dirLight = new THREE.DirectionalLight(0xffffff, 1);
13
+ dirLight.castShadow = true;
14
+ dirLight.shadow.camera.left = -10;
15
+ dirLight.shadow.camera.right = 10;
16
+ mesh.castShadow = true;
17
+ mesh.receiveShadow = true;
18
+
19
+ new RGBELoader().load('env.hdr', (tex) => {
20
+ tex.mapping = THREE.EquirectangularReflectionMapping;
21
+ scene.environment = tex;
22
+ });
23
+ ```
24
+
25
+ **Techniques:**
26
+ - Light types: AmbientLight (fill), HemisphereLight (sky/ground outdoors), DirectionalLight (sun), PointLight (bulb), SpotLight (flashlight)
27
+ - Shadow types: PCFSoftShadowMap (best quality); tight frustum (camera.left/right/top/bottom) and mapSize (512-2048)
28
+ - Shadow bias: `.bias = -0.0001`, `.normalBias = 0.02` to fix acne/peter-panning
29
+ - IBL: Load HDR with RGBELoader; set `scene.environment` and `scene.background`
30
+ - Performance: Limit to 3-5 lights; use contact shadows or baked lighting for static scenes
31
+ - Helpers: DirectionalLightHelper, PointLightHelper, CameraHelper for debug
@@ -0,0 +1,29 @@
1
+ # filename: loaders
2
+
3
+ **Guideline:** Use GLTFLoader with Draco compression for 3D models; wrap loaders in async/await; use LoadingManager for progress tracking.
4
+
5
+ **Rationale:** GLTF/GLB is web standard; Draco reduces file size 90%+; async prevents UI blocking; manager centralizes progress.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ async function loadModel(url) {
10
+ return new Promise((resolve, reject) => {
11
+ new GLTFLoader().load(url, resolve, undefined, reject);
12
+ });
13
+ }
14
+ const gltf = await loadModel('model.glb');
15
+ scene.add(gltf.scene);
16
+
17
+ // With Draco compression
18
+ const dracoLoader = new DRACOLoader();
19
+ dracoLoader.setDecoderPath('https://www.gstatic.com/draco/v1.5.6/');
20
+ new GLTFLoader().setDRACOLoader(dracoLoader).load('model.glb', ...);
21
+ ```
22
+
23
+ **Techniques:**
24
+ - GLTFLoader: Primary format; animations in `gltf.animations`; use `traverse()` for shadow/material setup
25
+ - Draco: Reduce geometry size 90%+; requires decoder path setup
26
+ - KTX2 textures: Compressed texture format via `ktx2Loader.setTranscoderPath()`
27
+ - LoadingManager: Centralize `onProgress`/`onLoad`/`onError` across multiple loaders
28
+ - Parallel loading: `Promise.all([loadModel(), loadModel()])` for concurrent assets
29
+ - Export best practices: Enable Draco/KTX2 in 3D tools; use `gltf-transform` CLI for compression
@@ -0,0 +1,25 @@
1
+ # filename: materials
2
+
3
+ **Guideline:** Choose material type based on performance needs; reuse material instances; handle transparency with proper depth writes and render order.
4
+
5
+ **Rationale:** Material complexity directly impacts framerate; fewer unique materials reduce draw calls; transparency requires depth-aware rendering.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const pbr = new THREE.MeshStandardMaterial({
10
+ color: 0xffffff,
11
+ roughness: 0.5,
12
+ metalness: 0.0,
13
+ map: texture,
14
+ normalMap: normalTex,
15
+ envMap: envTex
16
+ });
17
+ // Reuse: mesh1.material = pbr; mesh2.material = pbr;
18
+ ```
19
+
20
+ **Techniques:**
21
+ - Material types: MeshBasicMaterial (fastest, unlit), Lambert (matte), Phong (shiny), Standard/Physical (PBR realistic)
22
+ - PBR properties: roughness 0=mirror/1=diffuse; metalness 0=dielectric/1=metal; use maps for per-pixel variation
23
+ - Transparency: `.alphaTest` for hard edges (fast); `.transparent=true` + `.depthWrite=false` + `.renderOrder` for smooth (slow)
24
+ - Blending: `AdditiveBlending` for glow/fire; `MultiplyBlending` for shadows
25
+ - Performance: Material pooling with Map; reuse instances; use `onBeforeCompile()` for shader hacks; dispose() to prevent leaks
@@ -0,0 +1,27 @@
1
+ # filename: math
2
+
3
+ **Guideline:** Use Three.js math classes (Vector3, Matrix4, Quaternion) and reuse instances to avoid garbage collection in animation loops.
4
+
5
+ **Rationale:** Three.js math classes are GPU-optimized; allocating new instances every frame causes GC stalls and framerate drops.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ // Reuse pattern: Define once, mutate in loop
10
+ const v3_1 = new THREE.Vector3();
11
+ for (let i = 0; i < objects.length; i++) {
12
+ v3_1.copy(objects[i].position).normalize();
13
+ // Use v3_1...
14
+ }
15
+
16
+ // Vector operations
17
+ v.add(other); v.multiplyScalar(2); v.lerp(target, 0.5);
18
+ // Quaternion: q.slerp(target, t); Matrix4: m.compose(pos, quat, scale);
19
+ ```
20
+
21
+ **Techniques:**
22
+ - Vector3: `.set()`, `.copy()`, `.add()`, `.multiplyScalar()`, `.normalize()`, `.dot()`, `.cross()`, `.lerp()`
23
+ - Quaternion: `.setFromAxisAngle()`, `.slerp()` for smooth rotation interpolation avoiding gimbal lock
24
+ - Matrix4: `.compose()` combines position/quaternion/scale; use `.invert()` for transforms
25
+ - Color: `.setHSL()`, `.lerp()` for smooth color transitions
26
+ - Bounding volumes: Box3/Sphere for collision detection with `.intersectsBox()`, `.containsPoint()`
27
+ - MathUtils: `degToRad()`, `lerp()`, `clamp()`, `smoothstep()` for common operations
@@ -0,0 +1,32 @@
1
+ # filename: node-materials
2
+
3
+ **Guideline:** Use TSL (Three Shading Language) for materials that work across WebGL and WebGPU; compose shader nodes instead of writing GLSL.
4
+
5
+ **Rationale:** TSL provides type-safe, composable nodes compiling to GLSL (WebGL) and WGSL (WebGPU); supports future renderers without code changes.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ import {float, vec3, mix, sin, uniform} from 'three/tsl';
10
+
11
+ const timeUniform = uniform(float, 'time');
12
+ const material = new THREE.MeshStandardNodeMaterial({
13
+ color: mix(
14
+ vec3(1.0, 0.0, 0.0),
15
+ vec3(0.0, 0.0, 1.0),
16
+ sin(timeUniform).mul(0.5).add(0.5)
17
+ ),
18
+ });
19
+ timeUniform.value = clock.getElapsedTime();
20
+ ```
21
+
22
+ **Techniques:**
23
+ - TSL nodes: `float()`, `vec2/3/4()`, `sin()`, `cos()`, `mix()`, `step()`, `normalize()`
24
+ - Uniforms: `uniform(type, name)` for runtime control; update `.value` each frame
25
+ - Varyings: `varying(type)` for vertex→fragment data passing
26
+ - Functions: `Fn([args], returnType, ({params}) => {...})` for reusable shader logic
27
+ - Textures: `texture(textureObject)` for sampling; `storageTexture()` for compute read/write
28
+ - Positions: `positionLocal`, `positionWorld`, `normalWorld` for vertex data
29
+ - Material types: MeshBasicNodeMaterial, MeshStandardNodeMaterial, MeshPhysicalNodeMaterial
30
+ - Lighting: `lightingContext()` for advanced PBR lighting effects
31
+ - Composition: Operators like `.mul()`, `.add()`, `.dot()`, `.cross()` chain naturally
32
+ - WebGPU: TSL materials compile to WGSL automatically; works with both renderers
@@ -0,0 +1,29 @@
1
+ # filename: patterns
2
+
3
+ **Guideline:** Organize scenes in Groups; implement proper cleanup to prevent memory leaks; use delta time for frame-rate independent updates.
4
+
5
+ **Rationale:** Hierarchical organization enables efficient transforms; cleanup prevents GPU memory exhaustion; delta time ensures consistent movement across devices.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ const scene = new THREE.Scene();
10
+ const clock = new THREE.Clock();
11
+ const world = new THREE.Group();
12
+ world.add(player, enemies, effects);
13
+ scene.add(world);
14
+
15
+ function animate() {
16
+ const delta = clock.getDelta();
17
+ player.position.x += moveSpeed * delta;
18
+ mesh.rotation.y += angularVelocity * delta;
19
+ renderer.render(scene, camera);
20
+ }
21
+ ```
22
+
23
+ **Techniques:**
24
+ - Scene hierarchy: Group objects (world → player/enemies/effects) for batch transforms
25
+ - Frame-rate independence: Multiply movement by `clock.getDelta()`; use `getElapsedTime()` for animations
26
+ - Cleanup pattern: Dispose geometry/materials; `mixer.stopAllAction()`, remove listeners, call on `beforeunload`
27
+ - Object pooling: Reuse bullets/particles with `.visible` flag instead of create/destroy for performance
28
+ - Component pattern: Encapsulate entities (Player class with update/takeDamage methods)
29
+ - Event bus: Centralize game events for decoupled communication between systems