@xonovex/skills 0.1.9 → 0.1.15
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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +130 -21
- package/package.json +1 -1
- package/skills/astro-guidelines/reference/accessibility.md +1 -0
- package/skills/astro-guidelines/reference/components.md +12 -3
- package/skills/astro-guidelines/reference/content-collections.md +1 -0
- package/skills/astro-guidelines/reference/islands-architecture.md +6 -2
- package/skills/astro-guidelines/reference/project-structure.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/builder-pattern.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/coordinate-system.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/geometry-pipeline.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/math-types.md +2 -1
- package/skills/c99-game-opinionated-guidelines/reference/mesh-types.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/physics-patterns.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/spatial-structures.md +2 -1
- package/skills/c99-game-opinionated-guidelines/reference/tagged-unions.md +1 -0
- package/skills/c99-game-opinionated-guidelines/reference/vertex-packing.md +1 -0
- package/skills/c99-guidelines/reference/compound-literals.md +1 -0
- package/skills/c99-guidelines/reference/const-correctness.md +1 -0
- package/skills/c99-guidelines/reference/designated-initializers.md +1 -0
- package/skills/c99-guidelines/reference/error-handling.md +1 -0
- package/skills/c99-guidelines/reference/inline-functions.md +1 -0
- package/skills/c99-guidelines/reference/memory-management.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/alignment.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/caller-owns-memory.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/compound-literals.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/const-correctness.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/data-oriented-design.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/designated-initializers.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/error-handling.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/file-naming.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/implementation-variants.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/inline-functions.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/memory-management.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/safety-validations.md +1 -0
- package/skills/c99-opinionated-guidelines/reference/testing-patterns.md +1 -0
- package/skills/cmake-guidelines/reference/compile-options.md +2 -1
- package/skills/cmake-guidelines/reference/fetchcontent.md +1 -0
- package/skills/cmake-guidelines/reference/find-package.md +2 -1
- package/skills/cmake-guidelines/reference/generator-expressions.md +1 -0
- package/skills/cmake-guidelines/reference/installation.md +1 -0
- package/skills/cmake-guidelines/reference/project-structure.md +1 -0
- package/skills/cmake-guidelines/reference/target-types.md +1 -0
- package/skills/cmake-guidelines/reference/testing.md +1 -0
- package/skills/cmake-guidelines/reference/visibility-specifiers.md +1 -0
- package/skills/content-guidelines/SKILL.md +2 -0
- package/skills/content-guidelines/reference/humanize.md +6 -0
- package/skills/content-guidelines/reference/news.md +1 -0
- package/skills/content-guidelines/reference/travelguide.md +3 -0
- package/skills/docker-guidelines/reference/docker-compose.md +1 -0
- package/skills/docker-guidelines/reference/layer-caching.md +1 -0
- package/skills/docker-guidelines/reference/multi-stage-builds.md +1 -0
- package/skills/docker-guidelines/reference/production-config.md +1 -0
- package/skills/docker-guidelines/reference/security.md +1 -0
- package/skills/express.js-guidelines/reference/app-setup.md +4 -1
- package/skills/express.js-guidelines/reference/authentication.md +18 -6
- package/skills/express.js-guidelines/reference/controllers.md +5 -1
- package/skills/express.js-guidelines/reference/error-handling.md +6 -1
- package/skills/express.js-guidelines/reference/project-structure.md +1 -0
- package/skills/express.js-guidelines/reference/responses.md +1 -0
- package/skills/express.js-guidelines/reference/routes.md +27 -4
- package/skills/express.js-guidelines/reference/testing.md +1 -0
- package/skills/express.js-guidelines/reference/validation.md +4 -1
- package/skills/git-guidelines/SKILL.md +2 -0
- package/skills/git-guidelines/reference/commit.md +2 -1
- package/skills/git-guidelines/reference/merge-resolve.md +1 -0
- package/skills/git-guidelines/reference/worktree-abandon.md +1 -0
- package/skills/git-guidelines/reference/worktree-cleanup.md +1 -0
- package/skills/git-guidelines/reference/worktree-commit.md +1 -0
- package/skills/git-guidelines/reference/worktree-create.md +1 -0
- package/skills/git-guidelines/reference/worktree-merge.md +1 -0
- package/skills/git-guidelines/reference/worktree-validate.md +1 -0
- package/skills/hono-guidelines/reference/application-structure.md +6 -7
- package/skills/hono-guidelines/reference/context-storage.md +1 -0
- package/skills/hono-guidelines/reference/cookie-handling.md +1 -0
- package/skills/hono-guidelines/reference/error-handling.md +1 -0
- package/skills/hono-guidelines/reference/middleware-combine.md +1 -0
- package/skills/hono-guidelines/reference/middleware-patterns.md +1 -0
- package/skills/hono-guidelines/reference/platform-runtime.md +1 -0
- package/skills/hono-guidelines/reference/security-middleware.md +1 -0
- package/skills/hono-guidelines/reference/validation-type-safety.md +1 -0
- package/skills/hono-guidelines/reference/websocket-support.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/application-structure.md +6 -7
- package/skills/hono-opinionated-guidelines/reference/body-limit.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/context-storage.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/controllers.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/cookie-handling.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/error-handling.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/middleware-combine.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/middleware-patterns.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-explicit-status-codes.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-inline-handlers.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-router-hierarchy.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-spec-generation.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/platform-runtime.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/router-selection.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/security-middleware.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/validation-type-safety.md +1 -0
- package/skills/hono-opinionated-guidelines/reference/websocket-support.md +1 -0
- package/skills/insights-guidelines/SKILL.md +2 -0
- package/skills/insights-guidelines/reference/insights-extract.md +1 -0
- package/skills/insights-guidelines/reference/insights-integrate.md +1 -0
- package/skills/instruction-guidelines/reference/assimilate.md +1 -0
- package/skills/instruction-guidelines/reference/simplify.md +2 -0
- package/skills/instruction-guidelines/reference/sync.md +9 -3
- package/skills/kubernetes-guidelines/reference/configmaps-secrets.md +1 -0
- package/skills/kubernetes-guidelines/reference/deployments.md +1 -0
- package/skills/kubernetes-guidelines/reference/kustomize.md +1 -0
- package/skills/kubernetes-guidelines/reference/network-policies.md +1 -0
- package/skills/kubernetes-guidelines/reference/services.md +1 -0
- package/skills/kubernetes-guidelines/reference/validation.md +1 -0
- package/skills/lua-guidelines/reference/coroutines.md +1 -0
- package/skills/lua-guidelines/reference/error-handling.md +1 -0
- package/skills/lua-guidelines/reference/idiomatic-patterns.md +1 -0
- package/skills/lua-guidelines/reference/input-validation.md +1 -0
- package/skills/lua-guidelines/reference/local-variables.md +1 -0
- package/skills/lua-guidelines/reference/metatables.md +1 -0
- package/skills/lua-guidelines/reference/module-pattern.md +1 -0
- package/skills/lua-guidelines/reference/string-concatenation.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/cache-lookups.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/coroutines.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/error-handling.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/idiomatic-patterns.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/input-validation.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/jit-friendly-tables.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/local-variables.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/metatables.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/module-pattern.md +1 -0
- package/skills/lua-opinionated-guidelines/reference/string-concatenation.md +1 -0
- package/skills/moon-guidelines/SKILL.md +16 -2
- package/skills/moon-guidelines/reference/docker-multistage.md +1 -0
- package/skills/moon-guidelines/reference/migration-v2.md +107 -0
- package/skills/moon-guidelines/reference/project-constraints.md +65 -7
- package/skills/moon-guidelines/reference/query-language.md +54 -11
- package/skills/moon-guidelines/reference/tag-based-filtering.md +72 -7
- package/skills/moon-guidelines/reference/task-configuration.md +46 -14
- package/skills/moon-guidelines/reference/task-inheritance.md +91 -16
- package/skills/motion-react-guidelines/SKILL.md +2 -4
- package/skills/motion-react-guidelines/reference/3d-effects.md +3 -2
- package/skills/motion-react-guidelines/reference/entrance.md +10 -5
- package/skills/motion-react-guidelines/reference/exit.md +3 -2
- package/skills/motion-react-guidelines/reference/gestures.md +2 -0
- package/skills/motion-react-guidelines/reference/layout.md +10 -6
- package/skills/motion-react-guidelines/reference/motion-values.md +2 -0
- package/skills/motion-react-guidelines/reference/performance.md +3 -2
- package/skills/motion-react-guidelines/reference/scroll.md +7 -3
- package/skills/motion-react-guidelines/reference/spring-physics.md +2 -0
- package/skills/motion-react-guidelines/reference/stagger.md +9 -5
- package/skills/motion-react-guidelines/reference/svg-path.md +2 -0
- package/skills/motion-react-guidelines/reference/text-effects.md +15 -8
- package/skills/plan-guidelines/SKILL.md +2 -0
- package/skills/plan-guidelines/reference/code-align.md +2 -0
- package/skills/plan-guidelines/reference/code-barrels-remove.md +5 -3
- package/skills/plan-guidelines/reference/code-comments-remove.md +4 -2
- package/skills/plan-guidelines/reference/code-harden.md +7 -5
- package/skills/plan-guidelines/reference/code-shared-extract.md +3 -1
- package/skills/plan-guidelines/reference/code-simplify.md +2 -0
- package/skills/plan-guidelines/reference/code-template-extract.md +2 -0
- package/skills/plan-guidelines/reference/code-template-scaffold.md +2 -0
- package/skills/plan-guidelines/reference/general-research.md +2 -0
- package/skills/plan-guidelines/reference/plan-create.md +2 -0
- package/skills/plan-guidelines/reference/plan-tdd-create.md +2 -0
- package/skills/plan-guidelines/reference/todos.md +2 -0
- package/skills/presentation-guidelines/reference/presentation-create.md +4 -0
- package/skills/presentation-guidelines/reference/presentation-motion-scaffold.md +2 -0
- package/skills/python-guidelines/reference/async-await-patterns.md +1 -0
- package/skills/python-guidelines/reference/caching-functions.md +1 -0
- package/skills/python-guidelines/reference/dataclasses-type-hints.md +1 -0
- package/skills/python-guidelines/reference/exception-handling.md +1 -0
- package/skills/python-guidelines/reference/generators-comprehensions.md +1 -0
- package/skills/python-guidelines/reference/pathlib-file-ops.md +1 -0
- package/skills/python-guidelines/reference/resource-management.md +1 -0
- package/skills/python-guidelines/reference/string-formatting.md +1 -0
- package/skills/python-guidelines/reference/type-checking.md +1 -0
- package/skills/react-guidelines/SKILL.md +20 -19
- package/skills/react-guidelines/reference/accessibility.md +6 -2
- package/skills/react-guidelines/reference/activity-effect-event.md +7 -9
- package/skills/react-guidelines/reference/component-design.md +1 -0
- package/skills/react-guidelines/reference/hooks.md +19 -8
- package/skills/react-guidelines/reference/migration-anti-patterns.md +9 -4
- package/skills/react-guidelines/reference/migration-deprecations.md +16 -15
- package/skills/react-guidelines/reference/migration-paradigm-shifts.md +8 -3
- package/skills/react-guidelines/reference/migration-typescript.md +1 -0
- package/skills/react-guidelines/reference/new-hooks.md +16 -15
- package/skills/react-guidelines/reference/performance-optimization.md +4 -2
- package/skills/react-guidelines/reference/react-compiler.md +13 -10
- package/skills/react-guidelines/reference/server-components.md +21 -21
- package/skills/react-guidelines/reference/state-management.md +1 -0
- package/skills/react-guidelines/reference/suspense-streaming.md +3 -1
- package/skills/remotion-guidelines/SKILL.md +7 -1
- package/skills/remotion-guidelines/reference/animations.md +2 -1
- package/skills/remotion-guidelines/reference/assets.md +2 -0
- package/skills/remotion-guidelines/reference/captions.md +5 -2
- package/skills/remotion-guidelines/reference/charts.md +15 -2
- package/skills/remotion-guidelines/reference/compositions.md +3 -1
- package/skills/remotion-guidelines/reference/dom-measurement.md +16 -6
- package/skills/remotion-guidelines/reference/gifs.md +5 -3
- package/skills/remotion-guidelines/reference/lottie.md +16 -14
- package/skills/remotion-guidelines/reference/maps.md +4 -2
- package/skills/remotion-guidelines/reference/media.md +9 -7
- package/skills/remotion-guidelines/reference/mediabunny.md +6 -3
- package/skills/remotion-guidelines/reference/sequencing.md +10 -8
- package/skills/remotion-guidelines/reference/text.md +3 -1
- package/skills/remotion-guidelines/reference/three-d.md +2 -0
- package/skills/remotion-guidelines/reference/timing.md +10 -6
- package/skills/remotion-guidelines/reference/transitions.md +16 -10
- package/skills/shell-scripting-guidelines/reference/argument-parsing.md +1 -0
- package/skills/shell-scripting-guidelines/reference/common-patterns.md +1 -0
- package/skills/shell-scripting-guidelines/reference/error-handling.md +1 -0
- package/skills/shell-scripting-guidelines/reference/functions.md +1 -0
- package/skills/shell-scripting-guidelines/reference/idempotency.md +1 -0
- package/skills/shell-scripting-guidelines/reference/parameter-expansion.md +1 -0
- package/skills/shell-scripting-guidelines/reference/posix-compatibility.md +1 -0
- package/skills/shell-scripting-guidelines/reference/quoting.md +1 -0
- package/skills/shell-scripting-guidelines/reference/script-template.md +1 -0
- package/skills/shell-scripting-guidelines/reference/strict-mode.md +1 -0
- package/skills/shell-scripting-guidelines/reference/validation.md +1 -0
- package/skills/skill-guidelines/SKILL.md +2 -2
- package/skills/skill-guidelines/reference/assimilate.md +5 -0
- package/skills/skill-guidelines/reference/create.md +1 -0
- package/skills/skill-guidelines/reference/extract.md +1 -0
- package/skills/skill-guidelines/reference/simplify.md +7 -3
- package/skills/sql-postgresql-guidelines/reference/constraints.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/cte-patterns.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/data-types.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/indexing.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/jsonb.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/performance.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/role-based-access.md +1 -0
- package/skills/sql-postgresql-guidelines/reference/row-level-security.md +1 -0
- package/skills/strudel-guidelines/SKILL.md +3 -3
- package/skills/strudel-guidelines/reference/arrangement.md +7 -5
- package/skills/strudel-guidelines/reference/conditionals.md +5 -3
- package/skills/strudel-guidelines/reference/effects.md +7 -4
- package/skills/strudel-guidelines/reference/genre-ambient.md +28 -7
- package/skills/strudel-guidelines/reference/genre-harsh.md +10 -3
- package/skills/strudel-guidelines/reference/genre-trance.md +9 -5
- package/skills/strudel-guidelines/reference/layering.md +4 -2
- package/skills/strudel-guidelines/reference/mini-notation.md +29 -28
- package/skills/strudel-guidelines/reference/modulation.md +5 -2
- package/skills/strudel-guidelines/reference/scales-harmony.md +4 -4
- package/skills/strudel-guidelines/reference/sounds.md +30 -31
- package/skills/strudel-guidelines/reference/tempo-timing.md +7 -5
- package/skills/terraform-guidelines/reference/advanced-patterns.md +1 -0
- package/skills/terraform-guidelines/reference/locals.md +1 -1
- package/skills/terraform-guidelines/reference/module-definition.md +1 -1
- package/skills/terraform-guidelines/reference/module-structure.md +1 -1
- package/skills/terraform-guidelines/reference/remote-state.md +1 -1
- package/skills/terraform-guidelines/reference/root-module.md +1 -1
- package/skills/terraform-guidelines/reference/typed-variables.md +1 -1
- package/skills/threejs-guidelines/reference/animation.md +3 -1
- package/skills/threejs-guidelines/reference/cameras-controls.md +3 -1
- package/skills/threejs-guidelines/reference/geometry.md +4 -2
- package/skills/threejs-guidelines/reference/interaction.md +3 -1
- package/skills/threejs-guidelines/reference/lighting-shadows.md +3 -1
- package/skills/threejs-guidelines/reference/loaders.md +2 -0
- package/skills/threejs-guidelines/reference/materials.md +3 -1
- package/skills/threejs-guidelines/reference/math.md +5 -1
- package/skills/threejs-guidelines/reference/node-materials.md +5 -3
- package/skills/threejs-guidelines/reference/patterns.md +2 -0
- package/skills/threejs-guidelines/reference/performance.md +2 -0
- package/skills/threejs-guidelines/reference/physics-vr.md +2 -0
- package/skills/threejs-guidelines/reference/postprocessing.md +13 -7
- package/skills/threejs-guidelines/reference/scene-fundamentals.md +3 -1
- package/skills/threejs-guidelines/reference/shaders.md +4 -2
- package/skills/threejs-guidelines/reference/textures.md +4 -2
- package/skills/threejs-guidelines/reference/webgpu.md +4 -2
- package/skills/typescript-guidelines/reference/async-without-await.md +1 -0
- package/skills/typescript-guidelines/reference/avoid-barrel-exports.md +2 -1
- package/skills/typescript-guidelines/reference/avoid-eslint-disable.md +1 -0
- package/skills/typescript-guidelines/reference/avoid-reexports.md +4 -3
- package/skills/typescript-guidelines/reference/env-access-bracket-notation.md +1 -0
- package/skills/typescript-guidelines/reference/numeric-separator-enforcement.md +1 -0
- package/skills/typescript-guidelines/reference/template-literals-require-string-conversion.md +1 -0
- package/skills/typescript-guidelines/reference/unbound-method-references.md +1 -0
- package/skills/typescript-guidelines/reference/unnecessary-async-keywords.md +1 -0
- package/skills/typescript-to-lua-guidelines/reference/avoiding-heavy-features.md +27 -10
- package/skills/typescript-to-lua-guidelines/reference/coroutine-patterns.md +16 -14
- package/skills/typescript-to-lua-guidelines/reference/function-patterns.md +19 -13
- package/skills/typescript-to-lua-guidelines/reference/lua-interop.md +22 -20
- package/skills/typescript-to-lua-guidelines/reference/module-organization.md +19 -9
- package/skills/typescript-to-lua-guidelines/reference/multi-return-functions.md +14 -10
- package/skills/typescript-to-lua-guidelines/reference/namespaces-vs-classes.md +20 -12
- package/skills/typescript-to-lua-guidelines/reference/performance-tips.md +24 -22
- package/skills/typescript-to-lua-guidelines/reference/stable-tables.md +23 -21
- package/skills/typescript-to-lua-guidelines/reference/tsconfig.md +2 -0
- package/skills/typescript-to-lua-guidelines/reference/tstl-decorators.md +21 -16
- package/skills/typescript-to-lua-guidelines/reference/type-safety.md +22 -22
- package/skills/vitest-guidelines/reference/cors-preflight-status-code.md +1 -0
- package/skills/vitest-guidelines/reference/http-testing.md +1 -0
- package/skills/vitest-guidelines/reference/json-response-type-safety.md +1 -0
- package/skills/vitest-guidelines/reference/mock-patterns.md +1 -0
- package/skills/vitest-guidelines/reference/project-references-path-resolution.md +1 -0
- package/skills/vitest-guidelines/reference/test-organization.md +1 -0
- package/skills/vitest-guidelines/reference/timestamp-testing.md +1 -0
- package/skills/vitest-guidelines/reference/type-safety.md +1 -0
- package/skills/vitest-guidelines/reference/typescript-config.md +1 -0
- package/skills/zod-guidelines/reference/default-values-output-type.md +1 -0
- package/skills/zod-guidelines/reference/migration-string-validators.md +1 -0
- package/skills/zod-guidelines/reference/migration-v4.md +1 -0
- package/skills/zod-guidelines/reference/schema-organization.md +1 -0
- package/skills/zod-guidelines/reference/validation-patterns.md +13 -4
package/README.md
CHANGED
|
@@ -5,38 +5,147 @@ Xonovex coding guidelines and workflow skills for Claude Code.
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
# Install as npm package
|
|
9
|
+
npm install @xonovex/skills
|
|
10
|
+
|
|
11
|
+
# Or add the Xonovex marketplace (from within Claude Code)
|
|
12
|
+
/plugin marketplace add xonovex/platform
|
|
13
|
+
|
|
14
|
+
# Install the skills plugin
|
|
15
|
+
/plugin install xonovex@xonovex-platform
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or test locally during development:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
claude --plugin-dir ./packages/plugins/skills
|
|
9
22
|
```
|
|
10
23
|
|
|
11
|
-
|
|
24
|
+
Skills are namespaced as `/xonovex:<skill-name>` (e.g., `/xonovex:typescript-guidelines`).
|
|
25
|
+
|
|
26
|
+
## Coding Guidelines
|
|
27
|
+
|
|
28
|
+
Auto-triggered guidelines that activate based on file type and context.
|
|
29
|
+
|
|
30
|
+
### Languages
|
|
31
|
+
|
|
32
|
+
| Skill | Description |
|
|
33
|
+
| --------------------------------- | ---------------------------------------------------------------------------- |
|
|
34
|
+
| `typescript-guidelines` | TypeScript Node.js ESM with strict mode, async/await, and Zod validation |
|
|
35
|
+
| `python-guidelines` | Python 3.12+ with async/await, dataclasses, type hints, and pytest |
|
|
36
|
+
| `c99-guidelines` | Modern C99 with memory management, type safety, and error handling |
|
|
37
|
+
| `c99-opinionated-guidelines` | Opinionated C99 for systems/game/embedded with data-oriented design and SIMD |
|
|
38
|
+
| `c99-game-opinionated-guidelines` | Game engine patterns: caller-owns-memory, inverse mass, SoA optimization |
|
|
39
|
+
| `lua-guidelines` | Lua 5.4+ with module patterns, tables, coroutines, and error handling |
|
|
40
|
+
| `lua-opinionated-guidelines` | LuaJIT performance patterns with JIT-friendly tables and pre-allocation |
|
|
41
|
+
| `typescript-to-lua-guidelines` | TypeScript-to-Lua transpilation with TSTL 1.24+ |
|
|
42
|
+
| `shell-scripting-guidelines` | POSIX shell scripts with strict mode, quoting, and idempotency |
|
|
43
|
+
| `sql-postgresql-guidelines` | PostgreSQL 15+ with CTEs, indexing, JSONB, and row-level security |
|
|
12
44
|
|
|
13
|
-
|
|
45
|
+
### Frameworks
|
|
14
46
|
|
|
15
|
-
|
|
47
|
+
| Skill | Description |
|
|
48
|
+
| ----------------------------- | -------------------------------------------------------------------------- |
|
|
49
|
+
| `react-guidelines` | React 19+ with Server Components, Form Actions, and React Compiler |
|
|
50
|
+
| `astro-guidelines` | Astro static sites with islands architecture and content collections |
|
|
51
|
+
| `hono-guidelines` | Hono 4.0+ API servers with validation, middleware, and WebSocket |
|
|
52
|
+
| `hono-opinionated-guidelines` | Opinionated Hono with inline OpenAPI handlers and router selection |
|
|
53
|
+
| `express.js-guidelines` | Express 5+ API servers with route organization and Zod validation |
|
|
54
|
+
| `motion-react-guidelines` | React animations with Motion: gestures, scroll effects, layout transitions |
|
|
55
|
+
| `remotion-guidelines` | Programmatic video with React using frame-driven animations |
|
|
56
|
+
| `threejs-guidelines` | Vanilla Three.js with scene setup, materials, shaders, and post-processing |
|
|
16
57
|
|
|
17
|
-
|
|
18
|
-
- **Frameworks**: React, Express.js, Hono, Astro, Three.js, Remotion
|
|
19
|
-
- **Infrastructure**: Docker, Kubernetes, Terraform, CMake
|
|
20
|
-
- **Tools**: Git, Vitest, Zod, Motion
|
|
58
|
+
### Infrastructure & Build
|
|
21
59
|
|
|
22
|
-
|
|
60
|
+
| Skill | Description |
|
|
61
|
+
| ----------------------- | ------------------------------------------------------------------------- |
|
|
62
|
+
| `docker-guidelines` | Docker multi-stage builds, security hardening, and optimization |
|
|
63
|
+
| `kubernetes-guidelines` | Kubernetes manifests with GitOps, Kustomize, and multi-environment config |
|
|
64
|
+
| `terraform-guidelines` | Terraform 1.12+ with module design and environment isolation |
|
|
65
|
+
| `cmake-guidelines` | CMake 3.20+ target-based builds and dependency management |
|
|
66
|
+
| `moon-guidelines` | Moonrepo monorepo task management with inheritance and project tagging |
|
|
23
67
|
|
|
24
|
-
###
|
|
68
|
+
### Testing & Validation
|
|
25
69
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
70
|
+
| Skill | Description |
|
|
71
|
+
| ------------------- | ---------------------------------------------------------------------- |
|
|
72
|
+
| `vitest-guidelines` | Vitest 3+ with type safety, HTTP testing, and mock patterns |
|
|
73
|
+
| `zod-guidelines` | Zod 4.0+ runtime validation with schema composition and type inference |
|
|
74
|
+
|
|
75
|
+
### Paradigms
|
|
76
|
+
|
|
77
|
+
| Skill | Description |
|
|
78
|
+
| ------------------------ | ------------------------------------------------------------------------- |
|
|
79
|
+
| `general-fp-guidelines` | Functional programming with pure functions, immutability, and composition |
|
|
80
|
+
| `general-oop-guidelines` | Object-oriented programming with SOLID principles and design patterns |
|
|
81
|
+
|
|
82
|
+
### Meta & Content
|
|
83
|
+
|
|
84
|
+
| Skill | Description |
|
|
85
|
+
| ------------------------- | ---------------------------------------------------------------------------- |
|
|
86
|
+
| `git-guidelines` | Git conventional commits, merge conflict resolution, and worktree management |
|
|
87
|
+
| `skill-guidelines` | Creating and managing guideline skills with progressive disclosure |
|
|
88
|
+
| `plan-guidelines` | Planning research and analysis tasks with code alignment and simplification |
|
|
89
|
+
| `insights-guidelines` | Extracting insights from development sessions and integrating into skills |
|
|
90
|
+
| `instruction-guidelines` | Working with AGENTS.md/CLAUDE.md project instruction files |
|
|
91
|
+
| `content-guidelines` | Bilingual content creation with structured formatting and CEFR levels |
|
|
92
|
+
| `presentation-guidelines` | Creating presentations from codebase analysis with diagrams and Motion |
|
|
93
|
+
| `strudel-guidelines` | Algorithmic music generation with Strudel.cc and mini-notation |
|
|
94
|
+
|
|
95
|
+
## Workflow
|
|
96
|
+
|
|
97
|
+
Plan-driven development workflow with worktree isolation and parallel execution.
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
+---------------------+ +---------------------+ +---------------------+
|
|
101
|
+
| Research | | Planning | | Worktree Setup |
|
|
102
|
+
+---------------------+ +---------------------+ +---------------------+
|
|
103
|
+
| /plan-research |---->| /plan-create |---->| /plan-worktree- |
|
|
104
|
+
| - viability | | /plan-subplans- | | create |
|
|
105
|
+
| - alternatives | | create | | |
|
|
106
|
+
+---------------------+ | /plan-tdd-create | +---------------------+
|
|
107
|
+
+---------------------+ |
|
|
108
|
+
+------------------------------------------------------+
|
|
109
|
+
|
|
|
110
|
+
v
|
|
111
|
+
+---------------------+ +---------------------+ +---------------------+
|
|
112
|
+
| Development Loop | | Code Quality | | Merge |
|
|
113
|
+
+---------------------+ +---------------------+ +---------------------+
|
|
114
|
+
| /plan-continue |---->| /code-simplify |---->| /plan-worktree- |
|
|
115
|
+
| (implement) | | /code-harden | | merge |
|
|
116
|
+
| /plan-validate | | /code-align | | /git-commit --push |
|
|
117
|
+
| /insights-extract | | | +---------------------+
|
|
118
|
+
| /plan-update | +---------------------+ |
|
|
119
|
+
+---------------------+ | |
|
|
120
|
+
^ | v
|
|
121
|
+
| | +---------------------+
|
|
122
|
+
+--- more subplans? ---+ | Done |
|
|
123
|
+
+---------------------+
|
|
124
|
+
|
|
125
|
+
Parallel: Multiple agents work on parallel subplan groups in separate worktrees
|
|
126
|
+
Learning: /insights-integrate merges learnings into guidelines for future sessions
|
|
127
|
+
```
|
|
33
128
|
|
|
34
129
|
### Workflow Commands
|
|
35
130
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
131
|
+
| Command | Description |
|
|
132
|
+
| ------------------------ | -------------------------------------------------------------- |
|
|
133
|
+
| `/plan-research` | Research codebase and web for viability and alternatives |
|
|
134
|
+
| `/plan-create` | Create a high-level plan with research for user review |
|
|
135
|
+
| `/plan-tdd-create` | Create a TDD plan with atomic test step proposals |
|
|
136
|
+
| `/plan-subplans-create` | Generate detailed subplans with parallel execution detection |
|
|
137
|
+
| `/plan-continue` | Resume work from an existing plan document |
|
|
138
|
+
| `/plan-validate` | Verify that plan objectives have been fully achieved |
|
|
139
|
+
| `/plan-update` | Update plan status, phase, and timestamps |
|
|
140
|
+
| `/plan-worktree-create` | Create a git worktree for isolated feature development |
|
|
141
|
+
| `/plan-worktree-merge` | Merge feature worktree back to source with conflict resolution |
|
|
142
|
+
| `/plan-worktree-abandon` | Document and abandon a feature with reason and learnings |
|
|
143
|
+
| `/code-simplify` | Analyze code for consolidation and dead code removal |
|
|
144
|
+
| `/code-harden` | Analyze code for type safety, validation, and error handling |
|
|
145
|
+
| `/code-align` | Compare two implementations for structural differences |
|
|
146
|
+
| `/git-commit` | Auto-generate conventional commit messages with optional push |
|
|
147
|
+
| `/insights-extract` | Extract development mistakes and lessons from the session |
|
|
148
|
+
| `/insights-integrate` | Convert extracted insights into guideline skills |
|
|
40
149
|
|
|
41
150
|
## License
|
|
42
151
|
|
package/package.json
CHANGED
|
@@ -16,8 +16,9 @@ interface Props {
|
|
|
16
16
|
variant?: "default" | "featured";
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
const {
|
|
19
|
+
const {title, description, href, variant = "default"} = Astro.props;
|
|
20
20
|
---
|
|
21
|
+
|
|
21
22
|
<div class={`card card--${variant}`}>
|
|
22
23
|
<h3>{title}</h3>
|
|
23
24
|
{description && <p>{description}</p>}
|
|
@@ -29,12 +30,20 @@ const { title, description, href, variant = "default" } = Astro.props;
|
|
|
29
30
|
</div>
|
|
30
31
|
</div>
|
|
31
32
|
<style>
|
|
32
|
-
.card {
|
|
33
|
-
|
|
33
|
+
.card {
|
|
34
|
+
border: 1px solid #ddd;
|
|
35
|
+
padding: 1rem;
|
|
36
|
+
border-radius: 8px;
|
|
37
|
+
}
|
|
38
|
+
.card--featured {
|
|
39
|
+
border-color: #0066cc;
|
|
40
|
+
background: #f0f8ff;
|
|
41
|
+
}
|
|
34
42
|
</style>
|
|
35
43
|
```
|
|
36
44
|
|
|
37
45
|
**Techniques:**
|
|
46
|
+
|
|
38
47
|
- Astro components: Create `.astro` components for static presentational UI
|
|
39
48
|
- Props typing: Use TypeScript interfaces for type-safe component props
|
|
40
49
|
- Slots composition: Leverage slots for flexible component composition
|
|
@@ -25,6 +25,7 @@ export const collections = {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Collection schemas: Define Zod schemas in `src/content/config.ts` for validation
|
|
29
30
|
- Directory structure: Organize content in `src/content/[collection-name]/` directories
|
|
30
31
|
- Query functions: Use `getCollection()` and `getEntry()` for type-safe queries
|
|
@@ -11,14 +11,18 @@
|
|
|
11
11
|
import Counter from "../components/Counter.tsx";
|
|
12
12
|
import SearchBar from "../components/SearchBar.tsx";
|
|
13
13
|
---
|
|
14
|
+
|
|
14
15
|
<Layout title="Home">
|
|
15
16
|
<h1>Static Content</h1>
|
|
16
|
-
<Counter client:visible />
|
|
17
|
-
|
|
17
|
+
<Counter client:visible />
|
|
18
|
+
<!-- Hydrate on viewport entry -->
|
|
19
|
+
<SearchBar client:load />
|
|
20
|
+
<!-- Hydrate immediately -->
|
|
18
21
|
</Layout>
|
|
19
22
|
```
|
|
20
23
|
|
|
21
24
|
**Techniques:**
|
|
25
|
+
|
|
22
26
|
- Static by default: Build pages with Astro components that render zero JavaScript
|
|
23
27
|
- Framework components: Import React, Vue, Svelte only for interactive features
|
|
24
28
|
- client:load: Hydrate immediately for critical interactive components
|
|
@@ -22,6 +22,7 @@ status_t status = sphere_mesh3d_build(&mesh, 1.0f, 32, 16);
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
**Techniques:**
|
|
25
|
+
|
|
25
26
|
- Query phase: Call `*_req()` to get exact vertex/index counts needed
|
|
26
27
|
- Caller allocation: Choose strategy (stack, malloc, arena) for complete control
|
|
27
28
|
- Build phase: Call `*_build()` to fill pre-allocated caller buffer
|
|
@@ -20,6 +20,7 @@ matrix4f_t view_lh = matrix4f_look_at_lh(eye, target, up);
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
**Techniques:**
|
|
23
|
+
|
|
23
24
|
- Right-handed default: Use +X right, +Y up, +Z forward as base convention
|
|
24
25
|
- CCW winding: Define front faces with counter-clockwise vertex order
|
|
25
26
|
- Suffix variants: Provide `_rh` and `_lh` function suffixes for explicit systems
|
|
@@ -22,6 +22,7 @@ mesh3d_pack_3f_4u8(packed, &mesh, color);
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
**Techniques:**
|
|
25
|
+
|
|
25
26
|
- Analytic layer: Define shapes like `sphere3d_t`, `circle2d_t` for physics/logic
|
|
26
27
|
- Discrete layer: Build indexed meshes from analytic shapes with builder pattern
|
|
27
28
|
- Packing layer: Convert mesh to GPU-ready vertex formats (interleaved/streaming)
|
|
@@ -24,7 +24,8 @@ m.columns[3] = (vec4f_t){.x = tx, .y = ty, .z = tz, .w = 1.0f};
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
**Techniques:**
|
|
27
|
-
|
|
27
|
+
|
|
28
|
+
- 16-byte alignment: Pad vec3 with \_pad field for SIMD-friendly 16B size
|
|
28
29
|
- Union design: Combine named fields with array access for flexibility
|
|
29
30
|
- Column-major matrices: Store matrix4f_t as 4 column vectors
|
|
30
31
|
- Quaternion format: Use x, y, z, w order with normalization constraint
|
|
@@ -25,6 +25,7 @@ typedef struct {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Capacity tracking: Maintain separate count and capacity for dynamic growth
|
|
29
30
|
- Builder pattern: Use `{shape}_mesh{dim}_{req|build}` naming convention
|
|
30
31
|
- Optional data: Include normals/UVs in mesh3d for advanced rendering
|
|
@@ -21,6 +21,7 @@ void apply_impulse(rigidbody_t *rb, vec3f_t impulse) {
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
**Techniques:**
|
|
24
|
+
|
|
24
25
|
- Inverse mass: Store `inv_mass` (1/mass); zero for static bodies to disable movement
|
|
25
26
|
- Bit flags: Use `uint32_t` with bitmask enums for state like ACTIVE, SLEEPING
|
|
26
27
|
- Sync maps: Index maps decouple physics arrays from entity system arrays
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Guideline:** Use dimension-suffixed structures (grid, tree, bvh) for broad-phase queries. Choose by density/pattern.
|
|
4
4
|
|
|
5
|
-
**Rationale:** Different structures suit different spatial distributions; dimension suffixes (_2d, _3d) enable consistent APIs across dimensions.
|
|
5
|
+
**Rationale:** Different structures suit different spatial distributions; dimension suffixes (\_2d, \_3d) enable consistent APIs across dimensions.
|
|
6
6
|
|
|
7
7
|
**Example:**
|
|
8
8
|
|
|
@@ -19,6 +19,7 @@ uint32_t cell_idx = cell_y * g->cells_x + cell_x;
|
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
**Techniques:**
|
|
22
|
+
|
|
22
23
|
- Uniform grids: Use for dense/uniform object distributions with O(1) insertion
|
|
23
24
|
- Quadtrees/Octrees: Use for sparse/varying density with O(log n) operations
|
|
24
25
|
- BVH structures: Use for static geometry and ray casting queries
|
|
@@ -33,6 +33,7 @@ float shape_volume(const shape_t *s) {
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
**Techniques:**
|
|
36
|
+
|
|
36
37
|
- Type enum: Define all variant types in single enum for exhaustiveness
|
|
37
38
|
- Union members: Create named structs within union for each type variant
|
|
38
39
|
- Switch dispatch: Use switch on type field with no default clause
|
|
@@ -31,6 +31,7 @@ size_t mesh3d_pack_size(const mesh3d_t *m, vertex_format_t fmt) {
|
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Techniques:**
|
|
34
|
+
|
|
34
35
|
- Vertex format naming: Use `vertex_{components}_{types}_t` (e.g., `vertex_3f_4u8_t`)
|
|
35
36
|
- Interleaved layout: Pack all attributes per-vertex in single buffer
|
|
36
37
|
- Streaming layout: Separate position/normal/UV into different buffers
|
|
@@ -26,6 +26,7 @@ void example(void) {
|
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
**Techniques:**
|
|
29
|
+
|
|
29
30
|
- Inline syntax: Use `(Type){initializer-list}` to create temporaries inline
|
|
30
31
|
- With designators: Combine with designated initializers for clarity
|
|
31
32
|
- Function arguments: Create temporary structs directly in function calls
|
|
@@ -25,6 +25,7 @@ const char *get_name(void) {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Read-only parameters: Mark function parameters with const when not modified
|
|
29
30
|
- Pointer variants: Distinguish `const T *p` (pointer to const) vs `T *const p` (const pointer)
|
|
30
31
|
- Return values: Use const for immutable return values to prevent modification
|
|
@@ -25,6 +25,7 @@ int days[12] = {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Field syntax: Use `.field = value` for struct initialization with clarity
|
|
29
30
|
- Array syntax: Use `[index] = value` for sparse array initialization
|
|
30
31
|
- Partial init: Unspecified fields are automatically zeroed without explicit values
|
|
@@ -42,6 +42,7 @@ error_t load_file(const char *path, char **out, size_t *len) {
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
**Techniques:**
|
|
45
|
+
|
|
45
46
|
- Error enums: Define descriptive error types with zero for success
|
|
46
47
|
- Output parameters: Use pointers to return multiple results alongside error codes
|
|
47
48
|
- Error checking: Always check return values immediately after function calls
|
|
@@ -30,6 +30,7 @@ int result = clampi(x++, 0, 10);
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
**Techniques:**
|
|
33
|
+
|
|
33
34
|
- Replace macros: Replace function-like macros with `static inline` functions
|
|
34
35
|
- Type-specific variants: Create `clampi`, `clampf` instead of generic macro
|
|
35
36
|
- Header placement: Use inline functions in headers for no multiple definition issues
|
|
@@ -28,6 +28,7 @@ void dynamic_array(size_t size) {
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**Techniques:**
|
|
31
|
+
|
|
31
32
|
- Default stack: Use stack allocation for fixed-size data by default
|
|
32
33
|
- Heap when needed: Use malloc/calloc only for dynamic or longer-lived data
|
|
33
34
|
- Malloc/free pairing: Always pair every malloc with corresponding free call
|
|
@@ -43,6 +43,7 @@ void *aligned_alloc_16(size_t size) {
|
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Techniques:**
|
|
46
|
+
|
|
46
47
|
- SIMD alignment: Pad vec3 to 16-byte aligned structures for SIMD instructions
|
|
47
48
|
- Compiler directives: Use `_Alignas(16)` for explicit struct field alignment
|
|
48
49
|
- SoA layout: Align array-of-structures for batch SIMD operations
|
|
@@ -31,6 +31,7 @@ status_t entity_add(entity_system_t *sys, float x, float y) {
|
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Techniques:**
|
|
34
|
+
|
|
34
35
|
- Functions receive pointers: Accept caller-provided storage instead of allocating
|
|
35
36
|
- Init functions: Bind library state to caller-owned arrays with capacity tracking
|
|
36
37
|
- Status returns: Return status codes, never allocated pointers
|
|
@@ -26,6 +26,7 @@ void example(void) {
|
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
**Techniques:**
|
|
29
|
+
|
|
29
30
|
- Inline syntax: Use `(Type){initializer-list}` to create temporaries inline
|
|
30
31
|
- With designators: Combine with designated initializers for clarity
|
|
31
32
|
- Function arguments: Create temporary structs directly in function calls
|
|
@@ -25,6 +25,7 @@ const char *get_name(void) {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Read-only parameters: Mark function parameters with const when not modified
|
|
29
30
|
- Pointer variants: Distinguish `const T *p` (pointer to const) vs `T *const p` (const pointer)
|
|
30
31
|
- Return values: Use const for immutable return values to prevent modification
|
|
@@ -35,6 +35,7 @@ for (size_t i = 0; i < system.count; i++) {
|
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
**Techniques:**
|
|
38
|
+
|
|
38
39
|
- Separate fields: Move frequently accessed fields into their own arrays
|
|
39
40
|
- Cache locality: Sequential memory access maximizes CPU cache utilization
|
|
40
41
|
- Array sync: Keep indices synchronized across all component arrays
|
|
@@ -25,6 +25,7 @@ int days[12] = {
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- Field syntax: Use `.field = value` for struct initialization with clarity
|
|
29
30
|
- Array syntax: Use `[index] = value` for sparse array initialization
|
|
30
31
|
- Partial init: Unspecified fields are automatically zeroed without explicit values
|
|
@@ -42,6 +42,7 @@ error_t load_file(const char *path, char **out, size_t *len) {
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
**Techniques:**
|
|
45
|
+
|
|
45
46
|
- Error enums: Define descriptive error types with zero for success
|
|
46
47
|
- Output parameters: Use pointers to return multiple results alongside error codes
|
|
47
48
|
- Error checking: Always check return values immediately after function calls
|
|
@@ -28,6 +28,7 @@ void vec3_dot_soa(float *out, const vec3_soa_t *a, const vec3_soa_t *b) {
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**Techniques:**
|
|
31
|
+
|
|
31
32
|
- Scalar single: Start with single-object reference implementation for debugging
|
|
32
33
|
- AoS batch: Add batch processing for struct arrays (1.5x speedup)
|
|
33
34
|
- SoA batch: Add cache-friendly variant for large workloads (2-3x speedup)
|
|
@@ -30,6 +30,7 @@ int result = clampi(x++, 0, 10);
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
**Techniques:**
|
|
33
|
+
|
|
33
34
|
- Replace macros: Replace function-like macros with `static inline` functions
|
|
34
35
|
- Type-specific variants: Create `clampi`, `clampf` instead of generic macro
|
|
35
36
|
- Header placement: Use inline functions in headers for no multiple definition issues
|
|
@@ -28,6 +28,7 @@ void dynamic_array(size_t size) {
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**Techniques:**
|
|
31
|
+
|
|
31
32
|
- Default stack: Use stack allocation for fixed-size data by default
|
|
32
33
|
- Heap when needed: Use malloc/calloc only for dynamic or longer-lived data
|
|
33
34
|
- Malloc/free pairing: Always pair every malloc with corresponding free call
|
|
@@ -32,6 +32,7 @@ void test_vec3_dot_soa_parity(void) {
|
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
**Techniques:**
|
|
35
|
+
|
|
35
36
|
- Typed assertions: Use `assert_int_eq`, `assert_float_eq`, `assert_ptr_not_null`
|
|
36
37
|
- Epsilon values: Use 1e-4f general, 1e-5f cumulative, 5e-4f for SIMD
|
|
37
38
|
- Scalar tests: Validate against known values for correctness
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# compile-options: Compile Options and Definitions
|
|
2
2
|
|
|
3
|
-
**Guideline:** Set compiler flags, definitions, and features on targets using
|
|
3
|
+
**Guideline:** Set compiler flags, definitions, and features on targets using target*compile*\* commands with appropriate visibility.
|
|
4
4
|
|
|
5
5
|
**Rationale:** Target-scoped settings prevent pollution of the global build environment and allow different targets to have different requirements.
|
|
6
6
|
|
|
@@ -27,6 +27,7 @@ target_compile_features(mylib PUBLIC cxx_std_20)
|
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
**Techniques:**
|
|
30
|
+
|
|
30
31
|
- target_compile_options(): Set compiler-specific flags with generator expressions
|
|
31
32
|
- target_compile_definitions(): Define preprocessor macros with visibility control
|
|
32
33
|
- target_compile_features(): Require C++ standard using cxx_std_20, cxx_std_17, etc
|
|
@@ -25,6 +25,7 @@ target_link_libraries(app PRIVATE fmt::fmt)
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- FetchContent_Declare(): Declare dependency with git repo and version pin
|
|
29
30
|
- GIT_TAG: Pin exact version for reproducible builds
|
|
30
31
|
- GIT_SHALLOW: Use shallow clone for faster fetching
|
|
@@ -22,8 +22,9 @@ endif()
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
**Techniques:**
|
|
25
|
+
|
|
25
26
|
- REQUIRED: Fail build if package not found, use for mandatory dependencies
|
|
26
27
|
- COMPONENTS: Specify individual package parts to reduce linking
|
|
27
28
|
- Namespaced targets: Use Boost::system, OpenSSL::SSL for safe target linking
|
|
28
|
-
-
|
|
29
|
+
- \*\_FOUND variable: Check if optional dependency is available before using
|
|
29
30
|
- Conditional linking: Add target_compile_definitions when dependencies found
|
|
@@ -27,6 +27,7 @@ target_compile_definitions(mylib PRIVATE
|
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
**Techniques:**
|
|
30
|
+
|
|
30
31
|
- BUILD_INTERFACE/INSTALL_INTERFACE: Different paths for build vs installed consumption
|
|
31
32
|
- CXX_COMPILER_ID: Detect compiler and apply vendor-specific flags
|
|
32
33
|
- CONFIG: Apply Debug or Release build-specific settings
|
|
@@ -31,6 +31,7 @@ install(EXPORT mylib-targets
|
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Techniques:**
|
|
34
|
+
|
|
34
35
|
- install(TARGETS): Install libraries and executables with type-specific destinations
|
|
35
36
|
- EXPORT: Create importable CMake files for downstream find_package() calls
|
|
36
37
|
- DESTINATION: Set lib/bin/include paths for each artifact type
|
|
@@ -33,6 +33,7 @@ add_test(NAME core_test COMMAND core_test)
|
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
**Techniques:**
|
|
36
|
+
|
|
36
37
|
- cmake_minimum_required(): Set 3.20+ for modern CMake features
|
|
37
38
|
- project(): Declare name, version, description, and required languages
|
|
38
39
|
- add_library/add_executable(): Create targets for libraries and binaries
|
|
@@ -30,6 +30,7 @@ add_executable(gui WIN32 MACOSX_BUNDLE src/gui.cpp)
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
**Techniques:**
|
|
33
|
+
|
|
33
34
|
- add_library() without type: Let BUILD_SHARED_LIBS control static vs shared
|
|
34
35
|
- STATIC: Always statically link, good for embedded or single-binary scenarios
|
|
35
36
|
- SHARED: Dynamic library for runtime linking and flexible updates
|
|
@@ -23,6 +23,7 @@ set_tests_properties(unit_tests PROPERTIES TIMEOUT 30 LABELS "unit")
|
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
**Techniques:**
|
|
26
|
+
|
|
26
27
|
- enable_testing(): Enable the testing feature in CMake project
|
|
27
28
|
- add_test(): Register test executable or command with optional working directory
|
|
28
29
|
- set_tests_properties(): Set timeout, labels, or other test attributes
|
|
@@ -25,6 +25,7 @@ target_link_libraries(app PRIVATE mylib PUBLIC common INTERFACE interface)
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Techniques:**
|
|
28
|
+
|
|
28
29
|
- PUBLIC: Properties visible to both target and all downstream consumers
|
|
29
30
|
- PRIVATE: Properties used only by target, not propagated to consumers
|
|
30
31
|
- INTERFACE: Properties for consumers only, not used by target itself
|