@xonovex/skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/commands/code-align.md +108 -0
  3. package/commands/code-harden.md +74 -0
  4. package/commands/code-simplify.md +145 -0
  5. package/commands/git-commit.md +146 -0
  6. package/commands/insights-extract.md +109 -0
  7. package/commands/insights-integrate.md +100 -0
  8. package/commands/plan-continue.md +167 -0
  9. package/commands/plan-create.md +107 -0
  10. package/commands/plan-research.md +113 -0
  11. package/commands/plan-subplans-create.md +111 -0
  12. package/commands/plan-tdd-create.md +128 -0
  13. package/commands/plan-update.md +99 -0
  14. package/commands/plan-validate.md +100 -0
  15. package/commands/plan-worktree-abandon.md +104 -0
  16. package/commands/plan-worktree-create.md +92 -0
  17. package/commands/plan-worktree-merge.md +132 -0
  18. package/package.json +44 -0
  19. package/skills/astro-guidelines/SKILL.md +23 -0
  20. package/skills/astro-guidelines/reference/accessibility.md +31 -0
  21. package/skills/astro-guidelines/reference/components.md +42 -0
  22. package/skills/astro-guidelines/reference/content-collections.md +32 -0
  23. package/skills/astro-guidelines/reference/islands-architecture.md +26 -0
  24. package/skills/astro-guidelines/reference/project-structure.md +32 -0
  25. package/skills/c99-game-opinionated-guidelines/SKILL.md +43 -0
  26. package/skills/c99-game-opinionated-guidelines/reference/builder-pattern.md +29 -0
  27. package/skills/c99-game-opinionated-guidelines/reference/coordinate-system.md +27 -0
  28. package/skills/c99-game-opinionated-guidelines/reference/geometry-pipeline.md +29 -0
  29. package/skills/c99-game-opinionated-guidelines/reference/math-types.md +31 -0
  30. package/skills/c99-game-opinionated-guidelines/reference/mesh-types.md +32 -0
  31. package/skills/c99-game-opinionated-guidelines/reference/physics-patterns.md +28 -0
  32. package/skills/c99-game-opinionated-guidelines/reference/spatial-structures.md +26 -0
  33. package/skills/c99-game-opinionated-guidelines/reference/tagged-unions.md +40 -0
  34. package/skills/c99-game-opinionated-guidelines/reference/vertex-packing.md +38 -0
  35. package/skills/c99-guidelines/SKILL.md +29 -0
  36. package/skills/c99-guidelines/reference/compound-literals.md +33 -0
  37. package/skills/c99-guidelines/reference/const-correctness.md +32 -0
  38. package/skills/c99-guidelines/reference/designated-initializers.md +32 -0
  39. package/skills/c99-guidelines/reference/error-handling.md +49 -0
  40. package/skills/c99-guidelines/reference/inline-functions.md +37 -0
  41. package/skills/c99-guidelines/reference/memory-management.md +35 -0
  42. package/skills/c99-opinionated-guidelines/SKILL.md +44 -0
  43. package/skills/c99-opinionated-guidelines/reference/alignment.md +50 -0
  44. package/skills/c99-opinionated-guidelines/reference/caller-owns-memory.md +38 -0
  45. package/skills/c99-opinionated-guidelines/reference/compound-literals.md +33 -0
  46. package/skills/c99-opinionated-guidelines/reference/const-correctness.md +32 -0
  47. package/skills/c99-opinionated-guidelines/reference/data-oriented-design.md +42 -0
  48. package/skills/c99-opinionated-guidelines/reference/designated-initializers.md +32 -0
  49. package/skills/c99-opinionated-guidelines/reference/error-handling.md +49 -0
  50. package/skills/c99-opinionated-guidelines/reference/file-naming.md +33 -0
  51. package/skills/c99-opinionated-guidelines/reference/implementation-variants.md +35 -0
  52. package/skills/c99-opinionated-guidelines/reference/inline-functions.md +37 -0
  53. package/skills/c99-opinionated-guidelines/reference/memory-management.md +35 -0
  54. package/skills/c99-opinionated-guidelines/reference/safety-validations.md +32 -0
  55. package/skills/c99-opinionated-guidelines/reference/testing-patterns.md +39 -0
  56. package/skills/cmake-guidelines/SKILL.md +31 -0
  57. package/skills/cmake-guidelines/reference/compile-options.md +34 -0
  58. package/skills/cmake-guidelines/reference/fetchcontent.md +32 -0
  59. package/skills/cmake-guidelines/reference/find-package.md +29 -0
  60. package/skills/cmake-guidelines/reference/generator-expressions.md +34 -0
  61. package/skills/cmake-guidelines/reference/installation.md +38 -0
  62. package/skills/cmake-guidelines/reference/project-structure.md +40 -0
  63. package/skills/cmake-guidelines/reference/target-types.md +37 -0
  64. package/skills/cmake-guidelines/reference/testing.md +30 -0
  65. package/skills/cmake-guidelines/reference/visibility-specifiers.md +32 -0
  66. package/skills/content-guidelines/SKILL.md +36 -0
  67. package/skills/content-guidelines/reference/humanize.md +30 -0
  68. package/skills/content-guidelines/reference/news.md +28 -0
  69. package/skills/content-guidelines/reference/travelguide.md +31 -0
  70. package/skills/docker-guidelines/SKILL.md +23 -0
  71. package/skills/docker-guidelines/reference/docker-compose.md +40 -0
  72. package/skills/docker-guidelines/reference/layer-caching.md +25 -0
  73. package/skills/docker-guidelines/reference/multi-stage-builds.md +37 -0
  74. package/skills/docker-guidelines/reference/production-config.md +32 -0
  75. package/skills/docker-guidelines/reference/security.md +27 -0
  76. package/skills/express.js-guidelines/SKILL.md +32 -0
  77. package/skills/express.js-guidelines/reference/app-setup.md +39 -0
  78. package/skills/express.js-guidelines/reference/authentication.md +39 -0
  79. package/skills/express.js-guidelines/reference/controllers.md +49 -0
  80. package/skills/express.js-guidelines/reference/error-handling.md +54 -0
  81. package/skills/express.js-guidelines/reference/project-structure.md +29 -0
  82. package/skills/express.js-guidelines/reference/responses.md +30 -0
  83. package/skills/express.js-guidelines/reference/routes.md +29 -0
  84. package/skills/express.js-guidelines/reference/testing.md +39 -0
  85. package/skills/express.js-guidelines/reference/validation.md +41 -0
  86. package/skills/general-fp-guidelines/SKILL.md +28 -0
  87. package/skills/general-oop-guidelines/SKILL.md +28 -0
  88. package/skills/git-guidelines/SKILL.md +46 -0
  89. package/skills/git-guidelines/reference/commit.md +32 -0
  90. package/skills/git-guidelines/reference/merge-resolve.md +38 -0
  91. package/skills/git-guidelines/reference/worktree-abandon.md +48 -0
  92. package/skills/git-guidelines/reference/worktree-cleanup.md +40 -0
  93. package/skills/git-guidelines/reference/worktree-commit.md +46 -0
  94. package/skills/git-guidelines/reference/worktree-create.md +42 -0
  95. package/skills/git-guidelines/reference/worktree-merge.md +45 -0
  96. package/skills/git-guidelines/reference/worktree-validate.md +44 -0
  97. package/skills/hono-guidelines/SKILL.md +49 -0
  98. package/skills/hono-guidelines/reference/application-structure.md +53 -0
  99. package/skills/hono-guidelines/reference/context-storage.md +46 -0
  100. package/skills/hono-guidelines/reference/cookie-handling.md +63 -0
  101. package/skills/hono-guidelines/reference/error-handling.md +69 -0
  102. package/skills/hono-guidelines/reference/middleware-combine.md +47 -0
  103. package/skills/hono-guidelines/reference/middleware-patterns.md +58 -0
  104. package/skills/hono-guidelines/reference/platform-runtime.md +41 -0
  105. package/skills/hono-guidelines/reference/security-middleware.md +60 -0
  106. package/skills/hono-guidelines/reference/validation-type-safety.md +43 -0
  107. package/skills/hono-guidelines/reference/websocket-support.md +59 -0
  108. package/skills/hono-opinionated-guidelines/SKILL.md +49 -0
  109. package/skills/hono-opinionated-guidelines/reference/application-structure.md +53 -0
  110. package/skills/hono-opinionated-guidelines/reference/body-limit.md +57 -0
  111. package/skills/hono-opinionated-guidelines/reference/context-storage.md +46 -0
  112. package/skills/hono-opinionated-guidelines/reference/controllers.md +38 -0
  113. package/skills/hono-opinionated-guidelines/reference/cookie-handling.md +63 -0
  114. package/skills/hono-opinionated-guidelines/reference/error-handling.md +69 -0
  115. package/skills/hono-opinionated-guidelines/reference/middleware-combine.md +47 -0
  116. package/skills/hono-opinionated-guidelines/reference/middleware-patterns.md +58 -0
  117. package/skills/hono-opinionated-guidelines/reference/openapi-explicit-status-codes.md +61 -0
  118. package/skills/hono-opinionated-guidelines/reference/openapi-inline-handlers.md +56 -0
  119. package/skills/hono-opinionated-guidelines/reference/openapi-router-hierarchy.md +64 -0
  120. package/skills/hono-opinionated-guidelines/reference/openapi-spec-generation.md +57 -0
  121. package/skills/hono-opinionated-guidelines/reference/platform-runtime.md +41 -0
  122. package/skills/hono-opinionated-guidelines/reference/router-selection.md +34 -0
  123. package/skills/hono-opinionated-guidelines/reference/security-middleware.md +60 -0
  124. package/skills/hono-opinionated-guidelines/reference/validation-type-safety.md +43 -0
  125. package/skills/hono-opinionated-guidelines/reference/websocket-support.md +59 -0
  126. package/skills/insights-guidelines/SKILL.md +28 -0
  127. package/skills/insights-guidelines/reference/insights-extract.md +31 -0
  128. package/skills/insights-guidelines/reference/insights-integrate.md +35 -0
  129. package/skills/instruction-guidelines/SKILL.md +26 -0
  130. package/skills/instruction-guidelines/reference/assimilate.md +38 -0
  131. package/skills/instruction-guidelines/reference/simplify.md +46 -0
  132. package/skills/instruction-guidelines/reference/sync.md +41 -0
  133. package/skills/kubernetes-guidelines/SKILL.md +28 -0
  134. package/skills/kubernetes-guidelines/reference/configmaps-secrets.md +34 -0
  135. package/skills/kubernetes-guidelines/reference/deployments.md +55 -0
  136. package/skills/kubernetes-guidelines/reference/kustomize.md +41 -0
  137. package/skills/kubernetes-guidelines/reference/network-policies.md +53 -0
  138. package/skills/kubernetes-guidelines/reference/services.md +36 -0
  139. package/skills/kubernetes-guidelines/reference/validation.md +32 -0
  140. package/skills/lua-guidelines/SKILL.md +29 -0
  141. package/skills/lua-guidelines/reference/coroutines.md +66 -0
  142. package/skills/lua-guidelines/reference/error-handling.md +41 -0
  143. package/skills/lua-guidelines/reference/idiomatic-patterns.md +40 -0
  144. package/skills/lua-guidelines/reference/input-validation.md +42 -0
  145. package/skills/lua-guidelines/reference/local-variables.md +33 -0
  146. package/skills/lua-guidelines/reference/metatables.md +52 -0
  147. package/skills/lua-guidelines/reference/module-pattern.md +37 -0
  148. package/skills/lua-guidelines/reference/string-concatenation.md +31 -0
  149. package/skills/lua-opinionated-guidelines/SKILL.md +32 -0
  150. package/skills/lua-opinionated-guidelines/reference/cache-lookups.md +43 -0
  151. package/skills/lua-opinionated-guidelines/reference/coroutines.md +66 -0
  152. package/skills/lua-opinionated-guidelines/reference/error-handling.md +41 -0
  153. package/skills/lua-opinionated-guidelines/reference/idiomatic-patterns.md +40 -0
  154. package/skills/lua-opinionated-guidelines/reference/input-validation.md +42 -0
  155. package/skills/lua-opinionated-guidelines/reference/jit-friendly-tables.md +57 -0
  156. package/skills/lua-opinionated-guidelines/reference/local-variables.md +33 -0
  157. package/skills/lua-opinionated-guidelines/reference/metatables.md +52 -0
  158. package/skills/lua-opinionated-guidelines/reference/module-pattern.md +37 -0
  159. package/skills/lua-opinionated-guidelines/reference/string-concatenation.md +31 -0
  160. package/skills/moon-guidelines/SKILL.md +30 -0
  161. package/skills/moon-guidelines/reference/docker-multistage.md +42 -0
  162. package/skills/moon-guidelines/reference/project-constraints.md +25 -0
  163. package/skills/moon-guidelines/reference/query-language.md +27 -0
  164. package/skills/moon-guidelines/reference/tag-based-filtering.md +28 -0
  165. package/skills/moon-guidelines/reference/task-configuration.md +38 -0
  166. package/skills/moon-guidelines/reference/task-inheritance.md +30 -0
  167. package/skills/motion-react-guidelines/SKILL.md +66 -0
  168. package/skills/motion-react-guidelines/reference/3d-effects.md +35 -0
  169. package/skills/motion-react-guidelines/reference/entrance.md +36 -0
  170. package/skills/motion-react-guidelines/reference/exit.md +35 -0
  171. package/skills/motion-react-guidelines/reference/gestures.md +23 -0
  172. package/skills/motion-react-guidelines/reference/layout.md +39 -0
  173. package/skills/motion-react-guidelines/reference/motion-values.md +33 -0
  174. package/skills/motion-react-guidelines/reference/performance.md +32 -0
  175. package/skills/motion-react-guidelines/reference/scroll.md +38 -0
  176. package/skills/motion-react-guidelines/reference/spring-physics.md +40 -0
  177. package/skills/motion-react-guidelines/reference/stagger.md +34 -0
  178. package/skills/motion-react-guidelines/reference/svg-path.md +33 -0
  179. package/skills/motion-react-guidelines/reference/text-effects.md +39 -0
  180. package/skills/plan-guidelines/SKILL.md +56 -0
  181. package/skills/plan-guidelines/reference/code-align.md +23 -0
  182. package/skills/plan-guidelines/reference/code-barrels-remove.md +24 -0
  183. package/skills/plan-guidelines/reference/code-comments-remove.md +28 -0
  184. package/skills/plan-guidelines/reference/code-harden.md +30 -0
  185. package/skills/plan-guidelines/reference/code-shared-extract.md +25 -0
  186. package/skills/plan-guidelines/reference/code-simplify.md +33 -0
  187. package/skills/plan-guidelines/reference/code-template-extract.md +34 -0
  188. package/skills/plan-guidelines/reference/code-template-scaffold.md +36 -0
  189. package/skills/plan-guidelines/reference/general-research.md +35 -0
  190. package/skills/plan-guidelines/reference/plan-create.md +37 -0
  191. package/skills/plan-guidelines/reference/plan-tdd-create.md +44 -0
  192. package/skills/plan-guidelines/reference/todos.md +39 -0
  193. package/skills/presentation-guidelines/SKILL.md +25 -0
  194. package/skills/presentation-guidelines/reference/presentation-create.md +41 -0
  195. package/skills/presentation-guidelines/reference/presentation-motion-scaffold.md +38 -0
  196. package/skills/python-guidelines/SKILL.md +32 -0
  197. package/skills/python-guidelines/reference/async-await-patterns.md +62 -0
  198. package/skills/python-guidelines/reference/caching-functions.md +47 -0
  199. package/skills/python-guidelines/reference/dataclasses-type-hints.md +63 -0
  200. package/skills/python-guidelines/reference/exception-handling.md +72 -0
  201. package/skills/python-guidelines/reference/generators-comprehensions.md +54 -0
  202. package/skills/python-guidelines/reference/pathlib-file-ops.md +60 -0
  203. package/skills/python-guidelines/reference/resource-management.md +58 -0
  204. package/skills/python-guidelines/reference/string-formatting.md +41 -0
  205. package/skills/python-guidelines/reference/type-checking.md +47 -0
  206. package/skills/react-guidelines/SKILL.md +105 -0
  207. package/skills/react-guidelines/reference/accessibility.md +31 -0
  208. package/skills/react-guidelines/reference/activity-effect-event.md +42 -0
  209. package/skills/react-guidelines/reference/component-design.md +57 -0
  210. package/skills/react-guidelines/reference/hooks.md +39 -0
  211. package/skills/react-guidelines/reference/migration-anti-patterns.md +33 -0
  212. package/skills/react-guidelines/reference/migration-deprecations.md +109 -0
  213. package/skills/react-guidelines/reference/migration-paradigm-shifts.md +33 -0
  214. package/skills/react-guidelines/reference/migration-typescript.md +95 -0
  215. package/skills/react-guidelines/reference/new-hooks.md +94 -0
  216. package/skills/react-guidelines/reference/performance-optimization.md +41 -0
  217. package/skills/react-guidelines/reference/react-compiler.md +34 -0
  218. package/skills/react-guidelines/reference/server-components.md +99 -0
  219. package/skills/react-guidelines/reference/state-management.md +72 -0
  220. package/skills/react-guidelines/reference/suspense-streaming.md +36 -0
  221. package/skills/remotion-guidelines/SKILL.md +67 -0
  222. package/skills/remotion-guidelines/reference/animations.md +121 -0
  223. package/skills/remotion-guidelines/reference/assets.md +21 -0
  224. package/skills/remotion-guidelines/reference/captions.md +33 -0
  225. package/skills/remotion-guidelines/reference/charts.md +35 -0
  226. package/skills/remotion-guidelines/reference/compositions.md +40 -0
  227. package/skills/remotion-guidelines/reference/dom-measurement.md +82 -0
  228. package/skills/remotion-guidelines/reference/gifs.md +33 -0
  229. package/skills/remotion-guidelines/reference/lottie.md +41 -0
  230. package/skills/remotion-guidelines/reference/maps.md +26 -0
  231. package/skills/remotion-guidelines/reference/media.md +39 -0
  232. package/skills/remotion-guidelines/reference/mediabunny.md +28 -0
  233. package/skills/remotion-guidelines/reference/sequencing.md +44 -0
  234. package/skills/remotion-guidelines/reference/text.md +24 -0
  235. package/skills/remotion-guidelines/reference/three-d.md +33 -0
  236. package/skills/remotion-guidelines/reference/timing.md +22 -0
  237. package/skills/remotion-guidelines/reference/transitions.md +52 -0
  238. package/skills/shell-scripting-guidelines/SKILL.md +31 -0
  239. package/skills/shell-scripting-guidelines/reference/argument-parsing.md +67 -0
  240. package/skills/shell-scripting-guidelines/reference/common-patterns.md +46 -0
  241. package/skills/shell-scripting-guidelines/reference/error-handling.md +62 -0
  242. package/skills/shell-scripting-guidelines/reference/functions.md +66 -0
  243. package/skills/shell-scripting-guidelines/reference/idempotency.md +57 -0
  244. package/skills/shell-scripting-guidelines/reference/parameter-expansion.md +38 -0
  245. package/skills/shell-scripting-guidelines/reference/posix-compatibility.md +53 -0
  246. package/skills/shell-scripting-guidelines/reference/quoting.md +42 -0
  247. package/skills/shell-scripting-guidelines/reference/script-template.md +70 -0
  248. package/skills/shell-scripting-guidelines/reference/strict-mode.md +41 -0
  249. package/skills/shell-scripting-guidelines/reference/validation.md +30 -0
  250. package/skills/skill-guidelines/SKILL.md +33 -0
  251. package/skills/skill-guidelines/reference/assimilate.md +51 -0
  252. package/skills/skill-guidelines/reference/create.md +48 -0
  253. package/skills/skill-guidelines/reference/extract.md +48 -0
  254. package/skills/skill-guidelines/reference/simplify.md +56 -0
  255. package/skills/sql-postgresql-guidelines/SKILL.md +31 -0
  256. package/skills/sql-postgresql-guidelines/reference/constraints.md +47 -0
  257. package/skills/sql-postgresql-guidelines/reference/cte-patterns.md +42 -0
  258. package/skills/sql-postgresql-guidelines/reference/data-types.md +46 -0
  259. package/skills/sql-postgresql-guidelines/reference/indexing.md +45 -0
  260. package/skills/sql-postgresql-guidelines/reference/jsonb.md +54 -0
  261. package/skills/sql-postgresql-guidelines/reference/performance.md +46 -0
  262. package/skills/sql-postgresql-guidelines/reference/role-based-access.md +47 -0
  263. package/skills/sql-postgresql-guidelines/reference/row-level-security.md +66 -0
  264. package/skills/strudel-guidelines/SKILL.md +52 -0
  265. package/skills/strudel-guidelines/reference/arrangement.md +24 -0
  266. package/skills/strudel-guidelines/reference/conditionals.md +22 -0
  267. package/skills/strudel-guidelines/reference/effects.md +22 -0
  268. package/skills/strudel-guidelines/reference/genre-ambient.md +26 -0
  269. package/skills/strudel-guidelines/reference/genre-harsh.md +21 -0
  270. package/skills/strudel-guidelines/reference/genre-trance.md +23 -0
  271. package/skills/strudel-guidelines/reference/layering.md +22 -0
  272. package/skills/strudel-guidelines/reference/mini-notation.md +74 -0
  273. package/skills/strudel-guidelines/reference/modulation.md +22 -0
  274. package/skills/strudel-guidelines/reference/scales-harmony.md +20 -0
  275. package/skills/strudel-guidelines/reference/sounds.md +89 -0
  276. package/skills/strudel-guidelines/reference/tempo-timing.md +23 -0
  277. package/skills/terraform-guidelines/SKILL.md +28 -0
  278. package/skills/terraform-guidelines/reference/advanced-patterns.md +88 -0
  279. package/skills/terraform-guidelines/reference/locals.md +53 -0
  280. package/skills/terraform-guidelines/reference/module-definition.md +81 -0
  281. package/skills/terraform-guidelines/reference/module-structure.md +51 -0
  282. package/skills/terraform-guidelines/reference/remote-state.md +38 -0
  283. package/skills/terraform-guidelines/reference/root-module.md +71 -0
  284. package/skills/terraform-guidelines/reference/typed-variables.md +90 -0
  285. package/skills/threejs-guidelines/SKILL.md +38 -0
  286. package/skills/threejs-guidelines/reference/animation.md +26 -0
  287. package/skills/threejs-guidelines/reference/cameras-controls.md +26 -0
  288. package/skills/threejs-guidelines/reference/geometry.md +22 -0
  289. package/skills/threejs-guidelines/reference/interaction.md +25 -0
  290. package/skills/threejs-guidelines/reference/lighting-shadows.md +31 -0
  291. package/skills/threejs-guidelines/reference/loaders.md +29 -0
  292. package/skills/threejs-guidelines/reference/materials.md +25 -0
  293. package/skills/threejs-guidelines/reference/math.md +27 -0
  294. package/skills/threejs-guidelines/reference/node-materials.md +32 -0
  295. package/skills/threejs-guidelines/reference/patterns.md +29 -0
  296. package/skills/threejs-guidelines/reference/performance.md +24 -0
  297. package/skills/threejs-guidelines/reference/physics-vr.md +36 -0
  298. package/skills/threejs-guidelines/reference/postprocessing.md +26 -0
  299. package/skills/threejs-guidelines/reference/scene-fundamentals.md +26 -0
  300. package/skills/threejs-guidelines/reference/shaders.md +28 -0
  301. package/skills/threejs-guidelines/reference/textures.md +21 -0
  302. package/skills/threejs-guidelines/reference/webgpu.md +34 -0
  303. package/skills/typescript-guidelines/SKILL.md +37 -0
  304. package/skills/typescript-guidelines/reference/async-without-await.md +32 -0
  305. package/skills/typescript-guidelines/reference/avoid-barrel-exports.md +25 -0
  306. package/skills/typescript-guidelines/reference/avoid-eslint-disable.md +28 -0
  307. package/skills/typescript-guidelines/reference/avoid-reexports.md +26 -0
  308. package/skills/typescript-guidelines/reference/env-access-bracket-notation.md +29 -0
  309. package/skills/typescript-guidelines/reference/numeric-separator-enforcement.md +30 -0
  310. package/skills/typescript-guidelines/reference/template-literals-require-string-conversion.md +26 -0
  311. package/skills/typescript-guidelines/reference/unbound-method-references.md +32 -0
  312. package/skills/typescript-guidelines/reference/unnecessary-async-keywords.md +37 -0
  313. package/skills/typescript-to-lua-guidelines/SKILL.md +33 -0
  314. package/skills/typescript-to-lua-guidelines/reference/avoiding-heavy-features.md +41 -0
  315. package/skills/typescript-to-lua-guidelines/reference/coroutine-patterns.md +49 -0
  316. package/skills/typescript-to-lua-guidelines/reference/function-patterns.md +59 -0
  317. package/skills/typescript-to-lua-guidelines/reference/lua-interop.md +49 -0
  318. package/skills/typescript-to-lua-guidelines/reference/module-organization.md +42 -0
  319. package/skills/typescript-to-lua-guidelines/reference/multi-return-functions.md +47 -0
  320. package/skills/typescript-to-lua-guidelines/reference/namespaces-vs-classes.md +52 -0
  321. package/skills/typescript-to-lua-guidelines/reference/performance-tips.md +68 -0
  322. package/skills/typescript-to-lua-guidelines/reference/stable-tables.md +60 -0
  323. package/skills/typescript-to-lua-guidelines/reference/tsconfig.md +46 -0
  324. package/skills/typescript-to-lua-guidelines/reference/tstl-decorators.md +61 -0
  325. package/skills/typescript-to-lua-guidelines/reference/type-safety.md +79 -0
  326. package/skills/vitest-guidelines/SKILL.md +32 -0
  327. package/skills/vitest-guidelines/reference/cors-preflight-status-code.md +34 -0
  328. package/skills/vitest-guidelines/reference/http-testing.md +57 -0
  329. package/skills/vitest-guidelines/reference/json-response-type-safety.md +40 -0
  330. package/skills/vitest-guidelines/reference/mock-patterns.md +53 -0
  331. package/skills/vitest-guidelines/reference/project-references-path-resolution.md +36 -0
  332. package/skills/vitest-guidelines/reference/test-organization.md +25 -0
  333. package/skills/vitest-guidelines/reference/timestamp-testing.md +55 -0
  334. package/skills/vitest-guidelines/reference/type-safety.md +55 -0
  335. package/skills/vitest-guidelines/reference/typescript-config.md +43 -0
  336. package/skills/zod-guidelines/SKILL.md +33 -0
  337. package/skills/zod-guidelines/reference/default-values-output-type.md +63 -0
  338. package/skills/zod-guidelines/reference/migration-string-validators.md +38 -0
  339. package/skills/zod-guidelines/reference/migration-v4.md +46 -0
  340. package/skills/zod-guidelines/reference/schema-organization.md +73 -0
  341. package/skills/zod-guidelines/reference/validation-patterns.md +37 -0
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: strudel-guidelines
3
+ description: >-
4
+ Trigger on Strudel music generation, `.strudel` files, live coding music tasks. Use when generating algorithmic music with Strudel.cc. Apply for pattern composition, effects processing, genre-specific production, browser-based live coding. Keywords: Strudel, TidalCycles, live coding, algorithmic music, mini-notation, patterns, electronic music, trance, ambient, techno.
5
+ ---
6
+
7
+ # Strudel Music Coding Guidelines
8
+
9
+ ## Requirements
10
+
11
+ - Browser with https://strudel.cc/ (no installation needed)
12
+ - Copy-paste code, Ctrl+Enter to play, Ctrl+. to stop
13
+
14
+ ## Essentials
15
+
16
+ - **Tempo** - Set BPM first with `setcpm(BPM/4)`, see [reference/tempo-timing.md](reference/tempo-timing.md)
17
+ - **Mini-notation** - Space-separated sequences, `*` multiply, `/` divide, `<>` alternate, `[]` subdivide, `~` rest, see [reference/mini-notation.md](reference/mini-notation.md)
18
+ - **Layering** - Use `stack()` to combine patterns, each layer independent, see [reference/layering.md](reference/layering.md)
19
+ - **Sounds** - Drums: `bd`, `sd`, `hh`, `oh`, `cp`; Synths: `sine`, `sawtooth`, `square`, `triangle`, see [reference/sounds.md](reference/sounds.md)
20
+ - **Effects** - `.gain()`, `.lpf()`, `.room()`, `.delay()`, `.shape()`, `.crush()`, see [reference/effects.md](reference/effects.md)
21
+ - **Modulation** - `sine.range(a,b).slow(n)` for sweeps, `perlin` for organic variation, see [reference/modulation.md](reference/modulation.md)
22
+ - **Conditional** - `.every(n, fn)`, `.sometimes(fn)`, `.degradeBy(p)` for variation, see [reference/conditionals.md](reference/conditionals.md)
23
+ - **Structure** - Use `.mask()` for sections, `arrange()` for song form, see [reference/arrangement.md](reference/arrangement.md)
24
+
25
+ ## Example
26
+
27
+ ```javascript
28
+ setcpm(138/4)
29
+
30
+ stack(
31
+ s("bd*4").gain(0.8),
32
+ s("~ cp ~ cp").gain(0.5).room(0.3),
33
+ s("hh*16").gain(0.3).lpf(sine.range(800, 4000).slow(4)),
34
+ note("a2*8").sound("sawtooth").lpf(700).gain(0.5),
35
+ note("<a3 f3 c4 g3>").sound("sawtooth").lpf(2000).room(0.8).gain(0.3)
36
+ )
37
+ ```
38
+
39
+ ## Progressive Disclosure
40
+
41
+ - Read [reference/mini-notation.md](reference/mini-notation.md) - When learning pattern syntax or fixing notation errors
42
+ - Read [reference/sounds.md](reference/sounds.md) - When selecting instruments or troubleshooting missing sounds
43
+ - Read [reference/effects.md](reference/effects.md) - When applying audio processing or creating textures
44
+ - Read [reference/modulation.md](reference/modulation.md) - When adding movement and dynamic variation
45
+ - Read [reference/conditionals.md](reference/conditionals.md) - When creating algorithmic variation
46
+ - Read [reference/layering.md](reference/layering.md) - When combining multiple patterns
47
+ - Read [reference/tempo-timing.md](reference/tempo-timing.md) - When setting tempo or working with time
48
+ - Read [reference/arrangement.md](reference/arrangement.md) - When structuring full compositions
49
+ - Read [reference/genre-trance.md](reference/genre-trance.md) - When producing uplifting/hard trance
50
+ - Read [reference/genre-ambient.md](reference/genre-ambient.md) - When creating atmospheric soundscapes
51
+ - Read [reference/genre-harsh.md](reference/genre-harsh.md) - When making experimental/industrial music
52
+ - Read [reference/scales-harmony.md](reference/scales-harmony.md) - When working with melodies and chords
@@ -0,0 +1,24 @@
1
+ # arrangement: Song Structure and Arrangement
2
+
3
+ **Guideline:** Organize compositions into distinct sections using `.mask()` and `arrange()` to build tension, peaks, and release.
4
+
5
+ **Rationale:** Structured arrangements create emotional arcs; static loops lack engagement and dynamics.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ arrange(
10
+ [4, intro], // 4 cycles
11
+ [4, buildup], // Building tension
12
+ [8, drop], // Climax
13
+ [4, breakdown], // Release
14
+ [8, drop] // Return
15
+ )
16
+ ```
17
+
18
+ **Techniques:**
19
+ - `.mask("1 1 0 0 0 0 0 0")`: Play first half of 8-subdivision cycle
20
+ - `arrange([cycles, pattern], ...)`: Sequence sections with precise lengths
21
+ - `.every(n, x => x.fast(2))`: Accelerate rhythms to build intensity
22
+ - Layer stacking: Add/remove instruments progressively for tension
23
+ - Filter sweeps: Use `saw.range(200, 3000).slow(16)` for gradual builds
24
+ - Classic EDM: intro→buildup→drop→breakdown→buildup→drop→outro
@@ -0,0 +1,22 @@
1
+ # conditionals: Conditional and Probabilistic Transformations
2
+
3
+ **Guideline:** Use `.every(n, fn)`, probability functions, and `.degradeBy()` to add algorithmic variation without manual editing.
4
+
5
+ **Rationale:** Procedural variation creates organic, evolving patterns; manual static edits sound lifeless and repetitive.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ // Evolving drum pattern
10
+ s("bd*4")
11
+ .every(4, x => x.fast(2)) // Double speed every 4 cycles
12
+ .every(8, x => x.gain(0.5)) // Quieter every 8 cycles
13
+ .sometimes(x => x.speed(0.5)) // Occasional pitch drop
14
+ ```
15
+
16
+ **Techniques:**
17
+ - `.every(n, fn)`: Apply transformation periodically (repeats every n cycles)
18
+ - `.sometimes()`, `.often()`, `.rarely()`, `.almostAlways()`: Probabilistic 50%, 75%, 10%, 90%
19
+ - `.degradeBy(0.7)`: Keep only 70% of events (sparse/glitchy feel)
20
+ - `.jux(fn)`: Apply to right channel only (stereo width effect)
21
+ - `.stut(4, 0.5, 1/16)`: Echo/stutter with decay
22
+ - `.scramble()`, `.shuffle()`: Randomize event order or rotate subdivisions
@@ -0,0 +1,22 @@
1
+ # effects: Audio Effects and Processing
2
+
3
+ **Guideline:** Chain effects with dot notation; balance gain staging, use filters for EQ, and add space with reverb/delay.
4
+
5
+ **Rationale:** Tasteful effects shape tone and add movement; poor gain staging causes clipping or loss of clarity.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ // Acid bass
10
+ note("c2*8").sound("sawtooth")
11
+ .lpf(sine.range(300, 1500).slow(4)) // Sweep filter
12
+ .lpq(12) // High resonance
13
+ .gain(0.5)
14
+ ```
15
+
16
+ **Techniques:**
17
+ - Gain staging: kick 0.7-0.85, bass 0.5-0.6, leads 0.4-0.6, hats 0.2-0.35
18
+ - `.lpf(cutoff)`, `.hpf(cutoff)`: Shape frequency space (sub-bass 40-100Hz, muddy 300-600Hz)
19
+ - `.lpq(resonance)`: Add peak at filter cutoff for acid sweeps
20
+ - `.room(0.5)`, `.delay(0.3)`: Create space without muddying mix
21
+ - `.shape(0.3)`, `.crush(8)`: Distortion and bit-reduction for texture
22
+ - `.attack(0.1).sustain(0.5).release(0.3)`: Control envelope shape
@@ -0,0 +1,26 @@
1
+ # genre-ambient: Ambient and Atmospheric Music
2
+
3
+ **Guideline:** Create atmospheric soundscapes with slow tempos, sparse elements, heavy reverb, and gradual evolution.
4
+
5
+ **Rationale:** Ambient music relies on slow pacing, delayed effects, and minimal change to create meditative, immersive atmospheres.
6
+
7
+ **Example:**
8
+
9
+ ```javascript
10
+ setcpm(70/4) // 70 BPM
11
+
12
+ stack(
13
+ note("c2").sound("sine").attack(3).sustain(8).release(4).room(0.9).gain(0.25).slow(8),
14
+ note("<c4 eb4 g4 bb4>").sound("triangle").attack(1).sustain(2).release(2)
15
+ .room(0.85).lpf(perlin.range(500, 2000).slow(8)).gain(0.2).slow(2),
16
+ note("g5 ~ ~ ~ ~ eb5 ~ ~").sound("sine").room(0.9).delay(0.6).delayfeedback(0.7).gain(0.2).degradeBy(0.4),
17
+ s("white").lpf(perlin.range(300, 800).slow(16)).gain(0.08)
18
+ )
19
+ ```
20
+
21
+ **Techniques:**
22
+ - Slow tempo (60-90 BPM): Use `setcpm(70/4)` for 70 BPM
23
+ - Heavy reverb: `.room(0.85-0.95)` for spatial depth
24
+ - Sparse elements: `.degradeBy(0.3-0.5)` to drop notes randomly
25
+ - Long envelopes: `.attack(2-4)` and `.release(3-4)` for gradual transitions
26
+ - Layered drones: Stack multiple sine/triangle notes at different octaves with `.slow()` modulation
@@ -0,0 +1,21 @@
1
+ # filename: genre-harsh
2
+
3
+ **Guideline:** Create harsh, experimental textures using extreme distortion, bit crushing, noise, and chaotic polyrhythms for intentional sonic destruction.
4
+
5
+ **Rationale:** Harsh music demands intentional degradation and dissonance; extreme effect values and dark scales create cohesive experimental aesthetics.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ stack(
10
+ s("bd(7,8)").gain(0.9).crush(5).shape(0.4),
11
+ note("[-12 -11 -10]*32").scale("A2:locrian").sound("sawtooth")
12
+ .lpf(perlin.range(400, 2000)).crush(5).shape(0.6).gain(0.5)
13
+ )
14
+ ```
15
+
16
+ **Techniques:**
17
+ - Extreme effects: `.crush(2-4)`, `.coarse(32-64)`, `.shape(0.8-2)` for maximum harshness
18
+ - Noise layers: `s("white")` with `.hpf()`, `.bpf()`, `.degradeBy()` for texture
19
+ - Dissonant scales: Locrian, Phrygian, chromatic clusters for dark tonality
20
+ - Glitch methods: `.degradeBy(0.7)`, `.scramble()`, `.stut(8, 0.5)` for chaos
21
+ - Polyrhythms: Competing time signatures `.bd(7,8)`, `.sd(5,8)`, `.hh(11,16)` for instability
@@ -0,0 +1,23 @@
1
+ # filename: genre-trance
2
+
3
+ **Guideline:** Build uplifting trance with four-on-the-floor kicks, rolling basslines, euphoric melodies, and filter sweeps at 138-145 BPM.
4
+
5
+ **Rationale:** Trance requires precise tempo, layered elements, and evolving filters; proper gain hierarchy and chord progressions maintain energy and emotional impact.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ setcpm(138/4)
10
+ stack(
11
+ s("bd*4").gain(0.85).lpf(150),
12
+ note("<a2 a2 f2 g2>*4").sound("sawtooth")
13
+ .lpf(sine.range(400, 1200).slow(4)).gain(0.52),
14
+ s("hh*16").gain(0.28).hpf(6000)
15
+ )
16
+ ```
17
+
18
+ **Techniques:**
19
+ - Tempo: `setcpm(138-145/4)` for classic to hard trance pacing
20
+ - Four-on-the-floor: `s("bd*4")` with punchy filtering `.lpf(150)`
21
+ - Rolling bass: `note("*8" or "*16")` with filter automation `.lpf(sine.range())`
22
+ - Filter sweeps: `.lpf(saw.range(200, 2000).slow(16))` for build tension
23
+ - Gain hierarchy: Kick 0.85, Bass 0.52, Lead 0.42, Pads 0.28, Hats 0.28
@@ -0,0 +1,22 @@
1
+ # filename: layering
2
+
3
+ **Guideline:** Use `stack()` to combine independent patterns organized by role (rhythm, bass, harmony, melody) with balanced gain levels.
4
+
5
+ **Rationale:** Clear layer hierarchy prevents overlap and mud; role-based organization enables independent editing and coherent mixes.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ stack(
10
+ s("bd*4").gain(0.8).lpf(150),
11
+ note("c2*8").sound("sawtooth").lpf(600).gain(0.5),
12
+ note("c5 e5 g5 e5").sound("sawtooth").lpf(3000).gain(0.4),
13
+ s("hh*16").gain(0.25).hpf(6000)
14
+ )
15
+ ```
16
+
17
+ **Techniques:**
18
+ - Layer hierarchy: Kick 0.8-0.9, Bass 0.5-0.6, Lead 0.4-0.5, Pads 0.2-0.4, Hats 0.2-0.4
19
+ - Multi-layer drums: `.late(0.01)` and `.late(0.02)` offsets for depth
20
+ - Role organization: Rhythm → Bass → Harmony → Melody → Texture in stack order
21
+ - Variable patterns: Define as `const layer = pattern` for clarity and reusability
22
+ - Combination functions: `stack()` simultaneous, `cat()` sequential per cycle, `arrange()` explicit counts
@@ -0,0 +1,74 @@
1
+ # mini-notation: Pattern Mini-Notation Syntax
2
+
3
+ **Guideline:** Use Strudel mini-notation operators to express rhythmic and melodic patterns concisely.
4
+
5
+ **Rationale:** Mini-notation provides compact syntax for complex structures without verbose function calls.
6
+
7
+ **Example:**
8
+
9
+ ```javascript
10
+ // Simple drum pattern
11
+ s("bd sd ~ sd") // Kick, snare, rest, snare
12
+
13
+ // Repeat with multiply
14
+ s("bd*4 hh*8") // 4 kicks, 8 hi-hats in one cycle
15
+
16
+ // Subdivisions
17
+ s("[bd sd] [hh hh]") // Two groups fitted in one step each
18
+
19
+ // Euclidean rhythm (3 hits over 8 steps)
20
+ s("bd(3,8)")
21
+
22
+ // Parallel layers
23
+ s("bd*4, hh*16") // Kick layer + hi-hat layer simultaneously
24
+
25
+ // Chord progression
26
+ note("<c3 e3 g3 b3>") // One note per cycle (ascending pattern)
27
+ ```
28
+
29
+ ## Core Operators
30
+
31
+ | Operator | Syntax | Description |
32
+ |----------|--------|-------------|
33
+ | Space | `a b c` | Sequential |
34
+ | Rest | `~` | Silence |
35
+ | Multiply | `a*4` | Repeat 4x |
36
+ | Divide | `a/2` | Stretch over 2 cycles |
37
+ | Subdivide | `[a b]` | Fit both in one step |
38
+ | Alternate | `<a b c>` | One per cycle |
39
+ | Elongate | `a@2` | Double duration |
40
+ | Replicate | `a!3` | Repeat 3x |
41
+ | Parallel | `a,b` | Simultaneous |
42
+ | Euclidean | `a(3,8)` | 3 hits over 8 |
43
+
44
+ ## Common Patterns
45
+
46
+ ```javascript
47
+ s("bd*4") // 4 kicks per cycle (trance)
48
+ s("~ hh ~ hh") // Offbeat hi-hats
49
+ s("~ sd ~ sd") // Backbeat snare
50
+ s("[bd sd]*2") // Kick-snare groups
51
+ s("bd*4, hh*8") // Parallel layers
52
+ s("bd(3,8)") // Euclidean rhythm
53
+ note("<c3 e3 g3 b3>") // Chord progression per cycle
54
+ ```
55
+
56
+ ## Nesting and Complexity
57
+
58
+ ```javascript
59
+ s("[bd [sd sd]] [hh hh hh hh]") // Complex nesting
60
+ note("[c3 e3] [g3 b3]") // Melodic subdivisions
61
+ s("[bd sd]*2, hh*16") // Layered rhythm
62
+ ```
63
+
64
+ **Techniques:**
65
+ - Space separator: Sequential patterns (a b c)
66
+ - Tilde (~): Rest/silence in pattern
67
+ - Multiply (*): Repeat pattern n times (a*4)
68
+ - Divide (/): Stretch pattern over n cycles
69
+ - Brackets []: Subdivide into tighter steps
70
+ - Angle brackets <>: Alternate one per cycle
71
+ - @ symbol: Elongate duration (a@2 doubles)
72
+ - ! symbol: Replicate pattern n times (a!3)
73
+ - Comma (,): Parallel/simultaneous patterns
74
+ - Euclidean notation: a(hits, steps) for rhythmic counting
@@ -0,0 +1,22 @@
1
+ # modulation: Dynamic Parameter Modulation
2
+
3
+ **Guideline:** Replace static values with signal generators (sine, perlin, rand) to create organic evolution and movement.
4
+
5
+ **Rationale:** Dynamic modulation adds life and interest; static values sound robotic and unmotivated.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ // Classic filter sweep
10
+ note("c2*8").sound("sawtooth")
11
+ .lpf(sine.range(200, 2000).slow(4))
12
+ .lpq(8)
13
+ .gain(0.5)
14
+ ```
15
+
16
+ **Techniques:**
17
+ - `sine.range(min, max).slow(n)`: Smooth, predictable LFO oscillation
18
+ - `saw.range(min, max).slow(n)`: Linear ramps for gradual builds
19
+ - `perlin.range(min, max)`: Smooth organic randomness (non-repetitive feel)
20
+ - `rand.range(min, max)`: True random per event (glitch effects)
21
+ - Common targets: `.lpf()`, `.gain()`, `.pan()`, `.room()`, `.lpq()` (resonance)
22
+ - Cycle-based: `.crush("<3 4 5 6>")` or `.gain("<0.8 0.9 1 0.85>")` for stepped changes
@@ -0,0 +1,20 @@
1
+ # filename: scales-harmony
2
+
3
+ **Guideline:** Use `.scale()` to constrain notes to a key and chord notation for harmonically coherent compositions with intentional emotional expression.
4
+
5
+ **Rationale:** Keys unify bass, chords, and melody; scales prevent dissonance and enable cohesive harmonic progression across all layers.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ note("<a1 f1 c2 g1>*2").scale("A3:minor").sound("sawtooth")
10
+ .lpf(400).gain(0.5),
11
+ note("<a3'min f3'maj c3'maj g3'maj>").sound("triangle")
12
+ .room(0.7).gain(0.3)
13
+ ```
14
+
15
+ **Techniques:**
16
+ - Scale constraint: `note("0 2 4 6").scale("C3:major")` to stay in key
17
+ - Chord notation: `note("c3'maj")`, `note("c3'min7")`, `note("c3'aug")` for harmony
18
+ - Progressions: i-VI-III-VII (trance), I-IV-V-I (house), vi-IV-I-V (pop)
19
+ - Scale moods: Major (happy), Minor (sad), Phrygian (dark), Locrian (metal)
20
+ - Transposition: `.add(12)` octave up, `.add(7)` fifth up for melodic variation
@@ -0,0 +1,89 @@
1
+ # sounds: Available Sounds and Instruments
2
+
3
+ **Guideline:** Use verified drum samples and synthesis waveforms; fall back to synthesis for unreliable samples.
4
+
5
+ **Rationale:** Not all sample names work in the web version. Verified sounds prevent silent patterns.
6
+
7
+ **Example:**
8
+
9
+ ```javascript
10
+ // Use verified drum sounds
11
+ s("bd sd hh ~ hh") // Always works in web version
12
+
13
+ // Switch drum banks
14
+ s("bd sd hh").bank("RolandTR808") // TR-808 drums
15
+
16
+ // Synthesis waveforms (always available)
17
+ note("c3").sound("sine") // Pure tone
18
+ note("c3").sound("sawtooth") // Bright sound
19
+
20
+ // Combination: Drums + melody
21
+ s("bd*4, hh*8").gain(0.7)
22
+ note("c3 e3 g3 c4").sound("sine").sustain(0.5)
23
+
24
+ // If melodic sample fails, use synthesis
25
+ note("c2").sound("sawtooth").lpf(400) // Fallback bass
26
+ ```
27
+
28
+ ## Verified Drum Samples
29
+
30
+ ```javascript
31
+ s("bd") // Kick drum
32
+ s("sd") // Snare
33
+ s("hh") // Hi-hat (closed)
34
+ s("oh") // Hi-hat (open)
35
+ s("cp") // Clap
36
+ s("rim") // Rimshot
37
+ s("lt") // Low tom
38
+ s("mt") // Mid tom
39
+ s("ht") // High tom
40
+ ```
41
+
42
+ ## Drum Banks
43
+
44
+ ```javascript
45
+ s("bd sd hh").bank("RolandTR909") // TR-909
46
+ s("bd sd hh").bank("RolandTR808") // TR-808
47
+ // Also: RolandTR707, AkaiLinn, ViscoSpaceDrum
48
+ ```
49
+
50
+ ## Synthesis Waveforms (Always Available)
51
+
52
+ ```javascript
53
+ note("c3").sound("sine") // Pure, smooth
54
+ note("c3").sound("sawtooth") // Bright, rich
55
+ note("c3").sound("square") // Hollow, vintage
56
+ note("c3").sound("triangle") // Warm, soft
57
+ ```
58
+
59
+ ## Verified Melodic Samples
60
+
61
+ ```javascript
62
+ note("c3").sound("piano")
63
+ note("c3").sound("epiano")
64
+ note("c3").sound("casio")
65
+ note("c2").sound("gm_acoustic_bass")
66
+ note("c2").sound("gm_synth_bass_1")
67
+ ```
68
+
69
+ ## Synthesis Alternative (for unreliable samples)
70
+
71
+ ```javascript
72
+ // Instead of pad sample:
73
+ note("c3").sound("sine")
74
+ .attack(0.5).sustain(2).release(1)
75
+ .room(0.8).gain(0.4)
76
+
77
+ // Instead of bass sample:
78
+ note("c2").sound("sawtooth").lpf(400).gain(0.6)
79
+ ```
80
+
81
+ **Techniques:**
82
+ - Verified drums: bd, sd, hh, oh, cp, rim, lt, mt, ht always work
83
+ - Drum banks: RolandTR909, RolandTR808, RolandTR707, AkaiLinn, ViscoSpaceDrum
84
+ - Synthesis waveforms: sine, sawtooth, square, triangle always available
85
+ - Melodic samples: piano, epiano, casio, gm_acoustic_bass, gm_synth_bass_1
86
+ - Fallback strategy: Use synthesis (sine/sawtooth) if samples fail
87
+ - Envelope control: attack(), sustain(), release() for shaping
88
+ - Effects: room(), lpf() (low-pass filter), gain() for tone shaping
89
+ - Test in browser: Verify sounds work in web version before performance
@@ -0,0 +1,23 @@
1
+ # tempo-timing: Tempo and Timing Control
2
+
3
+ **Guideline:** Set tempo with `setcpm(BPM/4)` first, then use `.slow()`, `.fast()`, `.early()`, `.late()` for timing control.
4
+
5
+ **Rationale:** Tempo anchors rhythmic relationships; timing modifiers create polyrhythms, syncopation, and groove feels.
6
+
7
+ **Example:**
8
+ ```javascript
9
+ setcpm(138/4) // 138 BPM (uplifting trance)
10
+ stack(
11
+ s("bd*4"), // Main beat
12
+ s("sd*3").slow(4/3), // 3-per-cycle polyrhythm
13
+ note("c4").slow(4).room(0.8) // 4-cycle pad
14
+ )
15
+ ```
16
+
17
+ **Techniques:**
18
+ - `setcpm(BPM/4)`: Set tempo (128=house, 138=trance, 170=drum&bass)
19
+ - `.slow(n)`: Pattern takes n cycles (half speed)
20
+ - `.fast(n)`: Pattern plays n times per cycle (double speed)
21
+ - `.early(0.125)`, `.late(0.125)`: Shift timing by fractions of cycle
22
+ - Polyrhythms: `.slow(4/3)` creates 3-per-cycle over 4-beat backdrop
23
+ - `.swing(0.2)`: Add medium swing feel
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: terraform-guidelines
3
+ description: >-
4
+ Trigger on `.tf` files, Terraform modules, `*.tfvars`. Use when writing Terraform 1.12+ for infrastructure as code. Apply for module design, environment isolation, state management. Keywords: Terraform, modules, variables, outputs, remote state, for_each, dynamic blocks, locals, environment isolation.
5
+ ---
6
+
7
+ # Terraform Coding Guidelines
8
+
9
+ ## Requirements
10
+
11
+ - Terraform ≥ 1.12; remote state; pinned providers; fmt/validate.
12
+
13
+ ## Essentials
14
+
15
+ - **Module design** - One responsibility per module, clear inputs/outputs, typed variables, see [reference/module-structure.md](reference/module-structure.md), [reference/module-definition.md](reference/module-definition.md), [reference/typed-variables.md](reference/typed-variables.md)
16
+ - **Composition** - Thin root modules, compose child modules, use locals for computed values, see [reference/root-module.md](reference/root-module.md), [reference/locals.md](reference/locals.md)
17
+ - **Environment isolation** - Separate envs (dirs + tfvars), isolate state per env, see [reference/root-module.md](reference/root-module.md), [reference/remote-state.md](reference/remote-state.md)
18
+ - **Advanced patterns** - Dynamic blocks, for_each, count, see [reference/advanced-patterns.md](reference/advanced-patterns.md)
19
+
20
+ ## Progressive disclosure
21
+
22
+ - Read [reference/module-structure.md](reference/module-structure.md) - When designing reusable Terraform modules
23
+ - Read [reference/module-definition.md](reference/module-definition.md) - When defining module inputs, outputs, or resources
24
+ - Read [reference/typed-variables.md](reference/typed-variables.md) - When adding variable validation or complex types
25
+ - Read [reference/locals.md](reference/locals.md) - When computing intermediate values or reducing duplication
26
+ - Read [reference/root-module.md](reference/root-module.md) - When organizing environment-specific configurations
27
+ - Read [reference/remote-state.md](reference/remote-state.md) - When configuring state backend or state isolation
28
+ - Read [reference/advanced-patterns.md](reference/advanced-patterns.md) - When using dynamic blocks, for_each, or count
@@ -0,0 +1,88 @@
1
+ # advanced-patterns: Advanced Terraform Patterns
2
+
3
+ **Guideline:** Use data sources, dynamic blocks, and for_each/count appropriately
4
+
5
+ **Rationale:** Advanced patterns enable flexible, maintainable infrastructure code
6
+
7
+ **Example:**
8
+
9
+ **Data Sources:**
10
+
11
+ ```hcl
12
+ data "aws_ami" "amazon_linux_2" {
13
+ most_recent = true
14
+ owners = ["amazon"]
15
+
16
+ filter {
17
+ name = "name"
18
+ values = ["amzn2-ami-hvm-*-x86_64-gp2"]
19
+ }
20
+ }
21
+
22
+ data "aws_availability_zones" "available" {
23
+ state = "available"
24
+ }
25
+
26
+ resource "aws_instance" "app" {
27
+ ami = data.aws_ami.amazon_linux_2.id
28
+ instance_type = "t3.micro"
29
+ }
30
+ ```
31
+
32
+ **Dynamic Blocks:**
33
+
34
+ ```hcl
35
+ resource "aws_security_group" "this" {
36
+ name = "${var.environment}-sg"
37
+ vpc_id = var.vpc_id
38
+
39
+ dynamic "ingress" {
40
+ for_each = var.ingress_rules
41
+
42
+ content {
43
+ from_port = ingress.value.from_port
44
+ to_port = ingress.value.to_port
45
+ protocol = ingress.value.protocol
46
+ cidr_blocks = ingress.value.cidr_blocks
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ **For_Each vs Count:**
53
+
54
+ ```hcl
55
+ # ✅ Use for_each for map-based resources
56
+ resource "aws_subnet" "private" {
57
+ for_each = local.subnet_cidrs
58
+
59
+ vpc_id = aws_vpc.this.id
60
+ cidr_block = each.value
61
+ availability_zone = each.key
62
+
63
+ tags = {
64
+ Name = "${var.environment}-private-${each.key}"
65
+ }
66
+ }
67
+
68
+ # ✅ Use count for simple repetition
69
+ resource "aws_instance" "worker" {
70
+ count = var.worker_count
71
+
72
+ ami = data.aws_ami.amazon_linux_2.id
73
+ instance_type = "t3.micro"
74
+
75
+ tags = {
76
+ Name = "${var.environment}-worker-${count.index + 1}"
77
+ }
78
+ }
79
+
80
+ # ❌ Avoid count with lists (order matters, causes unnecessary recreation)
81
+ ```
82
+
83
+ **Techniques:**
84
+ - **Data sources:** Query existing AWS resources without importing or creating them
85
+ - **Dynamic blocks:** Generate repeated nested blocks from variables or locals
86
+ - **For_each with maps:** Maintain consistent resource names when order changes
87
+ - **Count for simple repetition:** Use only for stateless resource duplication
88
+ - **Avoid count with lists:** Order changes cause unnecessary recreation and state corruption
@@ -0,0 +1,53 @@
1
+ # locals: Computed Values with Locals
2
+
3
+ **Guideline:** Use locals block for computed values, transformations, and conditional logic
4
+
5
+ **Rationale:** Locals reduce duplication, improve readability, and centralize computation logic
6
+
7
+ **Example:**
8
+
9
+ ```hcl
10
+ locals {
11
+ # Merge tags
12
+ common_tags = merge(
13
+ var.tags,
14
+ {
15
+ Environment = var.environment
16
+ ManagedBy = "terraform"
17
+ Timestamp = timestamp()
18
+ }
19
+ )
20
+
21
+ # Calculate values
22
+ subnet_count = length(var.availability_zones)
23
+
24
+ # Conditional values
25
+ instance_type = var.environment == "prod" ? "t3.large" : "t3.micro"
26
+
27
+ # Complex transformations
28
+ subnet_cidrs = {
29
+ for i, az in var.availability_zones :
30
+ az => cidrsubnet(var.vpc_cidr, 8, i)
31
+ }
32
+
33
+ # Flatten nested structures
34
+ security_rules = flatten([
35
+ for sg in var.security_groups : [
36
+ for rule in sg.rules : {
37
+ sg_name = sg.name
38
+ from_port = rule.from_port
39
+ to_port = rule.to_port
40
+ protocol = rule.protocol
41
+ }
42
+ ]
43
+ ])
44
+ }
45
+ ```
46
+
47
+ **Techniques:**
48
+ - **Tag merging:** Combine common tags with resource-specific tags using merge()
49
+ - **Calculated values:** Compute derived values like counts and indices once
50
+ - **Conditional logic:** Use ternary operators for environment-specific resource sizing
51
+ - **CIDR subnetting:** Transform VPC CIDR into subnet ranges using cidrsubnet()
52
+ - **Flattening:** Collapse nested structures for iteration with flatten()
53
+