@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.
- package/.claude-plugin/plugin.json +21 -0
- package/commands/code-align.md +108 -0
- package/commands/code-harden.md +74 -0
- package/commands/code-simplify.md +145 -0
- package/commands/git-commit.md +146 -0
- package/commands/insights-extract.md +109 -0
- package/commands/insights-integrate.md +100 -0
- package/commands/plan-continue.md +167 -0
- package/commands/plan-create.md +107 -0
- package/commands/plan-research.md +113 -0
- package/commands/plan-subplans-create.md +111 -0
- package/commands/plan-tdd-create.md +128 -0
- package/commands/plan-update.md +99 -0
- package/commands/plan-validate.md +100 -0
- package/commands/plan-worktree-abandon.md +104 -0
- package/commands/plan-worktree-create.md +92 -0
- package/commands/plan-worktree-merge.md +132 -0
- package/package.json +44 -0
- package/skills/astro-guidelines/SKILL.md +23 -0
- package/skills/astro-guidelines/reference/accessibility.md +31 -0
- package/skills/astro-guidelines/reference/components.md +42 -0
- package/skills/astro-guidelines/reference/content-collections.md +32 -0
- package/skills/astro-guidelines/reference/islands-architecture.md +26 -0
- package/skills/astro-guidelines/reference/project-structure.md +32 -0
- package/skills/c99-game-opinionated-guidelines/SKILL.md +43 -0
- package/skills/c99-game-opinionated-guidelines/reference/builder-pattern.md +29 -0
- package/skills/c99-game-opinionated-guidelines/reference/coordinate-system.md +27 -0
- package/skills/c99-game-opinionated-guidelines/reference/geometry-pipeline.md +29 -0
- package/skills/c99-game-opinionated-guidelines/reference/math-types.md +31 -0
- package/skills/c99-game-opinionated-guidelines/reference/mesh-types.md +32 -0
- package/skills/c99-game-opinionated-guidelines/reference/physics-patterns.md +28 -0
- package/skills/c99-game-opinionated-guidelines/reference/spatial-structures.md +26 -0
- package/skills/c99-game-opinionated-guidelines/reference/tagged-unions.md +40 -0
- package/skills/c99-game-opinionated-guidelines/reference/vertex-packing.md +38 -0
- package/skills/c99-guidelines/SKILL.md +29 -0
- package/skills/c99-guidelines/reference/compound-literals.md +33 -0
- package/skills/c99-guidelines/reference/const-correctness.md +32 -0
- package/skills/c99-guidelines/reference/designated-initializers.md +32 -0
- package/skills/c99-guidelines/reference/error-handling.md +49 -0
- package/skills/c99-guidelines/reference/inline-functions.md +37 -0
- package/skills/c99-guidelines/reference/memory-management.md +35 -0
- package/skills/c99-opinionated-guidelines/SKILL.md +44 -0
- package/skills/c99-opinionated-guidelines/reference/alignment.md +50 -0
- package/skills/c99-opinionated-guidelines/reference/caller-owns-memory.md +38 -0
- package/skills/c99-opinionated-guidelines/reference/compound-literals.md +33 -0
- package/skills/c99-opinionated-guidelines/reference/const-correctness.md +32 -0
- package/skills/c99-opinionated-guidelines/reference/data-oriented-design.md +42 -0
- package/skills/c99-opinionated-guidelines/reference/designated-initializers.md +32 -0
- package/skills/c99-opinionated-guidelines/reference/error-handling.md +49 -0
- package/skills/c99-opinionated-guidelines/reference/file-naming.md +33 -0
- package/skills/c99-opinionated-guidelines/reference/implementation-variants.md +35 -0
- package/skills/c99-opinionated-guidelines/reference/inline-functions.md +37 -0
- package/skills/c99-opinionated-guidelines/reference/memory-management.md +35 -0
- package/skills/c99-opinionated-guidelines/reference/safety-validations.md +32 -0
- package/skills/c99-opinionated-guidelines/reference/testing-patterns.md +39 -0
- package/skills/cmake-guidelines/SKILL.md +31 -0
- package/skills/cmake-guidelines/reference/compile-options.md +34 -0
- package/skills/cmake-guidelines/reference/fetchcontent.md +32 -0
- package/skills/cmake-guidelines/reference/find-package.md +29 -0
- package/skills/cmake-guidelines/reference/generator-expressions.md +34 -0
- package/skills/cmake-guidelines/reference/installation.md +38 -0
- package/skills/cmake-guidelines/reference/project-structure.md +40 -0
- package/skills/cmake-guidelines/reference/target-types.md +37 -0
- package/skills/cmake-guidelines/reference/testing.md +30 -0
- package/skills/cmake-guidelines/reference/visibility-specifiers.md +32 -0
- package/skills/content-guidelines/SKILL.md +36 -0
- package/skills/content-guidelines/reference/humanize.md +30 -0
- package/skills/content-guidelines/reference/news.md +28 -0
- package/skills/content-guidelines/reference/travelguide.md +31 -0
- package/skills/docker-guidelines/SKILL.md +23 -0
- package/skills/docker-guidelines/reference/docker-compose.md +40 -0
- package/skills/docker-guidelines/reference/layer-caching.md +25 -0
- package/skills/docker-guidelines/reference/multi-stage-builds.md +37 -0
- package/skills/docker-guidelines/reference/production-config.md +32 -0
- package/skills/docker-guidelines/reference/security.md +27 -0
- package/skills/express.js-guidelines/SKILL.md +32 -0
- package/skills/express.js-guidelines/reference/app-setup.md +39 -0
- package/skills/express.js-guidelines/reference/authentication.md +39 -0
- package/skills/express.js-guidelines/reference/controllers.md +49 -0
- package/skills/express.js-guidelines/reference/error-handling.md +54 -0
- package/skills/express.js-guidelines/reference/project-structure.md +29 -0
- package/skills/express.js-guidelines/reference/responses.md +30 -0
- package/skills/express.js-guidelines/reference/routes.md +29 -0
- package/skills/express.js-guidelines/reference/testing.md +39 -0
- package/skills/express.js-guidelines/reference/validation.md +41 -0
- package/skills/general-fp-guidelines/SKILL.md +28 -0
- package/skills/general-oop-guidelines/SKILL.md +28 -0
- package/skills/git-guidelines/SKILL.md +46 -0
- package/skills/git-guidelines/reference/commit.md +32 -0
- package/skills/git-guidelines/reference/merge-resolve.md +38 -0
- package/skills/git-guidelines/reference/worktree-abandon.md +48 -0
- package/skills/git-guidelines/reference/worktree-cleanup.md +40 -0
- package/skills/git-guidelines/reference/worktree-commit.md +46 -0
- package/skills/git-guidelines/reference/worktree-create.md +42 -0
- package/skills/git-guidelines/reference/worktree-merge.md +45 -0
- package/skills/git-guidelines/reference/worktree-validate.md +44 -0
- package/skills/hono-guidelines/SKILL.md +49 -0
- package/skills/hono-guidelines/reference/application-structure.md +53 -0
- package/skills/hono-guidelines/reference/context-storage.md +46 -0
- package/skills/hono-guidelines/reference/cookie-handling.md +63 -0
- package/skills/hono-guidelines/reference/error-handling.md +69 -0
- package/skills/hono-guidelines/reference/middleware-combine.md +47 -0
- package/skills/hono-guidelines/reference/middleware-patterns.md +58 -0
- package/skills/hono-guidelines/reference/platform-runtime.md +41 -0
- package/skills/hono-guidelines/reference/security-middleware.md +60 -0
- package/skills/hono-guidelines/reference/validation-type-safety.md +43 -0
- package/skills/hono-guidelines/reference/websocket-support.md +59 -0
- package/skills/hono-opinionated-guidelines/SKILL.md +49 -0
- package/skills/hono-opinionated-guidelines/reference/application-structure.md +53 -0
- package/skills/hono-opinionated-guidelines/reference/body-limit.md +57 -0
- package/skills/hono-opinionated-guidelines/reference/context-storage.md +46 -0
- package/skills/hono-opinionated-guidelines/reference/controllers.md +38 -0
- package/skills/hono-opinionated-guidelines/reference/cookie-handling.md +63 -0
- package/skills/hono-opinionated-guidelines/reference/error-handling.md +69 -0
- package/skills/hono-opinionated-guidelines/reference/middleware-combine.md +47 -0
- package/skills/hono-opinionated-guidelines/reference/middleware-patterns.md +58 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-explicit-status-codes.md +61 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-inline-handlers.md +56 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-router-hierarchy.md +64 -0
- package/skills/hono-opinionated-guidelines/reference/openapi-spec-generation.md +57 -0
- package/skills/hono-opinionated-guidelines/reference/platform-runtime.md +41 -0
- package/skills/hono-opinionated-guidelines/reference/router-selection.md +34 -0
- package/skills/hono-opinionated-guidelines/reference/security-middleware.md +60 -0
- package/skills/hono-opinionated-guidelines/reference/validation-type-safety.md +43 -0
- package/skills/hono-opinionated-guidelines/reference/websocket-support.md +59 -0
- package/skills/insights-guidelines/SKILL.md +28 -0
- package/skills/insights-guidelines/reference/insights-extract.md +31 -0
- package/skills/insights-guidelines/reference/insights-integrate.md +35 -0
- package/skills/instruction-guidelines/SKILL.md +26 -0
- package/skills/instruction-guidelines/reference/assimilate.md +38 -0
- package/skills/instruction-guidelines/reference/simplify.md +46 -0
- package/skills/instruction-guidelines/reference/sync.md +41 -0
- package/skills/kubernetes-guidelines/SKILL.md +28 -0
- package/skills/kubernetes-guidelines/reference/configmaps-secrets.md +34 -0
- package/skills/kubernetes-guidelines/reference/deployments.md +55 -0
- package/skills/kubernetes-guidelines/reference/kustomize.md +41 -0
- package/skills/kubernetes-guidelines/reference/network-policies.md +53 -0
- package/skills/kubernetes-guidelines/reference/services.md +36 -0
- package/skills/kubernetes-guidelines/reference/validation.md +32 -0
- package/skills/lua-guidelines/SKILL.md +29 -0
- package/skills/lua-guidelines/reference/coroutines.md +66 -0
- package/skills/lua-guidelines/reference/error-handling.md +41 -0
- package/skills/lua-guidelines/reference/idiomatic-patterns.md +40 -0
- package/skills/lua-guidelines/reference/input-validation.md +42 -0
- package/skills/lua-guidelines/reference/local-variables.md +33 -0
- package/skills/lua-guidelines/reference/metatables.md +52 -0
- package/skills/lua-guidelines/reference/module-pattern.md +37 -0
- package/skills/lua-guidelines/reference/string-concatenation.md +31 -0
- package/skills/lua-opinionated-guidelines/SKILL.md +32 -0
- package/skills/lua-opinionated-guidelines/reference/cache-lookups.md +43 -0
- package/skills/lua-opinionated-guidelines/reference/coroutines.md +66 -0
- package/skills/lua-opinionated-guidelines/reference/error-handling.md +41 -0
- package/skills/lua-opinionated-guidelines/reference/idiomatic-patterns.md +40 -0
- package/skills/lua-opinionated-guidelines/reference/input-validation.md +42 -0
- package/skills/lua-opinionated-guidelines/reference/jit-friendly-tables.md +57 -0
- package/skills/lua-opinionated-guidelines/reference/local-variables.md +33 -0
- package/skills/lua-opinionated-guidelines/reference/metatables.md +52 -0
- package/skills/lua-opinionated-guidelines/reference/module-pattern.md +37 -0
- package/skills/lua-opinionated-guidelines/reference/string-concatenation.md +31 -0
- package/skills/moon-guidelines/SKILL.md +30 -0
- package/skills/moon-guidelines/reference/docker-multistage.md +42 -0
- package/skills/moon-guidelines/reference/project-constraints.md +25 -0
- package/skills/moon-guidelines/reference/query-language.md +27 -0
- package/skills/moon-guidelines/reference/tag-based-filtering.md +28 -0
- package/skills/moon-guidelines/reference/task-configuration.md +38 -0
- package/skills/moon-guidelines/reference/task-inheritance.md +30 -0
- package/skills/motion-react-guidelines/SKILL.md +66 -0
- package/skills/motion-react-guidelines/reference/3d-effects.md +35 -0
- package/skills/motion-react-guidelines/reference/entrance.md +36 -0
- package/skills/motion-react-guidelines/reference/exit.md +35 -0
- package/skills/motion-react-guidelines/reference/gestures.md +23 -0
- package/skills/motion-react-guidelines/reference/layout.md +39 -0
- package/skills/motion-react-guidelines/reference/motion-values.md +33 -0
- package/skills/motion-react-guidelines/reference/performance.md +32 -0
- package/skills/motion-react-guidelines/reference/scroll.md +38 -0
- package/skills/motion-react-guidelines/reference/spring-physics.md +40 -0
- package/skills/motion-react-guidelines/reference/stagger.md +34 -0
- package/skills/motion-react-guidelines/reference/svg-path.md +33 -0
- package/skills/motion-react-guidelines/reference/text-effects.md +39 -0
- package/skills/plan-guidelines/SKILL.md +56 -0
- package/skills/plan-guidelines/reference/code-align.md +23 -0
- package/skills/plan-guidelines/reference/code-barrels-remove.md +24 -0
- package/skills/plan-guidelines/reference/code-comments-remove.md +28 -0
- package/skills/plan-guidelines/reference/code-harden.md +30 -0
- package/skills/plan-guidelines/reference/code-shared-extract.md +25 -0
- package/skills/plan-guidelines/reference/code-simplify.md +33 -0
- package/skills/plan-guidelines/reference/code-template-extract.md +34 -0
- package/skills/plan-guidelines/reference/code-template-scaffold.md +36 -0
- package/skills/plan-guidelines/reference/general-research.md +35 -0
- package/skills/plan-guidelines/reference/plan-create.md +37 -0
- package/skills/plan-guidelines/reference/plan-tdd-create.md +44 -0
- package/skills/plan-guidelines/reference/todos.md +39 -0
- package/skills/presentation-guidelines/SKILL.md +25 -0
- package/skills/presentation-guidelines/reference/presentation-create.md +41 -0
- package/skills/presentation-guidelines/reference/presentation-motion-scaffold.md +38 -0
- package/skills/python-guidelines/SKILL.md +32 -0
- package/skills/python-guidelines/reference/async-await-patterns.md +62 -0
- package/skills/python-guidelines/reference/caching-functions.md +47 -0
- package/skills/python-guidelines/reference/dataclasses-type-hints.md +63 -0
- package/skills/python-guidelines/reference/exception-handling.md +72 -0
- package/skills/python-guidelines/reference/generators-comprehensions.md +54 -0
- package/skills/python-guidelines/reference/pathlib-file-ops.md +60 -0
- package/skills/python-guidelines/reference/resource-management.md +58 -0
- package/skills/python-guidelines/reference/string-formatting.md +41 -0
- package/skills/python-guidelines/reference/type-checking.md +47 -0
- package/skills/react-guidelines/SKILL.md +105 -0
- package/skills/react-guidelines/reference/accessibility.md +31 -0
- package/skills/react-guidelines/reference/activity-effect-event.md +42 -0
- package/skills/react-guidelines/reference/component-design.md +57 -0
- package/skills/react-guidelines/reference/hooks.md +39 -0
- package/skills/react-guidelines/reference/migration-anti-patterns.md +33 -0
- package/skills/react-guidelines/reference/migration-deprecations.md +109 -0
- package/skills/react-guidelines/reference/migration-paradigm-shifts.md +33 -0
- package/skills/react-guidelines/reference/migration-typescript.md +95 -0
- package/skills/react-guidelines/reference/new-hooks.md +94 -0
- package/skills/react-guidelines/reference/performance-optimization.md +41 -0
- package/skills/react-guidelines/reference/react-compiler.md +34 -0
- package/skills/react-guidelines/reference/server-components.md +99 -0
- package/skills/react-guidelines/reference/state-management.md +72 -0
- package/skills/react-guidelines/reference/suspense-streaming.md +36 -0
- package/skills/remotion-guidelines/SKILL.md +67 -0
- package/skills/remotion-guidelines/reference/animations.md +121 -0
- package/skills/remotion-guidelines/reference/assets.md +21 -0
- package/skills/remotion-guidelines/reference/captions.md +33 -0
- package/skills/remotion-guidelines/reference/charts.md +35 -0
- package/skills/remotion-guidelines/reference/compositions.md +40 -0
- package/skills/remotion-guidelines/reference/dom-measurement.md +82 -0
- package/skills/remotion-guidelines/reference/gifs.md +33 -0
- package/skills/remotion-guidelines/reference/lottie.md +41 -0
- package/skills/remotion-guidelines/reference/maps.md +26 -0
- package/skills/remotion-guidelines/reference/media.md +39 -0
- package/skills/remotion-guidelines/reference/mediabunny.md +28 -0
- package/skills/remotion-guidelines/reference/sequencing.md +44 -0
- package/skills/remotion-guidelines/reference/text.md +24 -0
- package/skills/remotion-guidelines/reference/three-d.md +33 -0
- package/skills/remotion-guidelines/reference/timing.md +22 -0
- package/skills/remotion-guidelines/reference/transitions.md +52 -0
- package/skills/shell-scripting-guidelines/SKILL.md +31 -0
- package/skills/shell-scripting-guidelines/reference/argument-parsing.md +67 -0
- package/skills/shell-scripting-guidelines/reference/common-patterns.md +46 -0
- package/skills/shell-scripting-guidelines/reference/error-handling.md +62 -0
- package/skills/shell-scripting-guidelines/reference/functions.md +66 -0
- package/skills/shell-scripting-guidelines/reference/idempotency.md +57 -0
- package/skills/shell-scripting-guidelines/reference/parameter-expansion.md +38 -0
- package/skills/shell-scripting-guidelines/reference/posix-compatibility.md +53 -0
- package/skills/shell-scripting-guidelines/reference/quoting.md +42 -0
- package/skills/shell-scripting-guidelines/reference/script-template.md +70 -0
- package/skills/shell-scripting-guidelines/reference/strict-mode.md +41 -0
- package/skills/shell-scripting-guidelines/reference/validation.md +30 -0
- package/skills/skill-guidelines/SKILL.md +33 -0
- package/skills/skill-guidelines/reference/assimilate.md +51 -0
- package/skills/skill-guidelines/reference/create.md +48 -0
- package/skills/skill-guidelines/reference/extract.md +48 -0
- package/skills/skill-guidelines/reference/simplify.md +56 -0
- package/skills/sql-postgresql-guidelines/SKILL.md +31 -0
- package/skills/sql-postgresql-guidelines/reference/constraints.md +47 -0
- package/skills/sql-postgresql-guidelines/reference/cte-patterns.md +42 -0
- package/skills/sql-postgresql-guidelines/reference/data-types.md +46 -0
- package/skills/sql-postgresql-guidelines/reference/indexing.md +45 -0
- package/skills/sql-postgresql-guidelines/reference/jsonb.md +54 -0
- package/skills/sql-postgresql-guidelines/reference/performance.md +46 -0
- package/skills/sql-postgresql-guidelines/reference/role-based-access.md +47 -0
- package/skills/sql-postgresql-guidelines/reference/row-level-security.md +66 -0
- package/skills/strudel-guidelines/SKILL.md +52 -0
- package/skills/strudel-guidelines/reference/arrangement.md +24 -0
- package/skills/strudel-guidelines/reference/conditionals.md +22 -0
- package/skills/strudel-guidelines/reference/effects.md +22 -0
- package/skills/strudel-guidelines/reference/genre-ambient.md +26 -0
- package/skills/strudel-guidelines/reference/genre-harsh.md +21 -0
- package/skills/strudel-guidelines/reference/genre-trance.md +23 -0
- package/skills/strudel-guidelines/reference/layering.md +22 -0
- package/skills/strudel-guidelines/reference/mini-notation.md +74 -0
- package/skills/strudel-guidelines/reference/modulation.md +22 -0
- package/skills/strudel-guidelines/reference/scales-harmony.md +20 -0
- package/skills/strudel-guidelines/reference/sounds.md +89 -0
- package/skills/strudel-guidelines/reference/tempo-timing.md +23 -0
- package/skills/terraform-guidelines/SKILL.md +28 -0
- package/skills/terraform-guidelines/reference/advanced-patterns.md +88 -0
- package/skills/terraform-guidelines/reference/locals.md +53 -0
- package/skills/terraform-guidelines/reference/module-definition.md +81 -0
- package/skills/terraform-guidelines/reference/module-structure.md +51 -0
- package/skills/terraform-guidelines/reference/remote-state.md +38 -0
- package/skills/terraform-guidelines/reference/root-module.md +71 -0
- package/skills/terraform-guidelines/reference/typed-variables.md +90 -0
- package/skills/threejs-guidelines/SKILL.md +38 -0
- package/skills/threejs-guidelines/reference/animation.md +26 -0
- package/skills/threejs-guidelines/reference/cameras-controls.md +26 -0
- package/skills/threejs-guidelines/reference/geometry.md +22 -0
- package/skills/threejs-guidelines/reference/interaction.md +25 -0
- package/skills/threejs-guidelines/reference/lighting-shadows.md +31 -0
- package/skills/threejs-guidelines/reference/loaders.md +29 -0
- package/skills/threejs-guidelines/reference/materials.md +25 -0
- package/skills/threejs-guidelines/reference/math.md +27 -0
- package/skills/threejs-guidelines/reference/node-materials.md +32 -0
- package/skills/threejs-guidelines/reference/patterns.md +29 -0
- package/skills/threejs-guidelines/reference/performance.md +24 -0
- package/skills/threejs-guidelines/reference/physics-vr.md +36 -0
- package/skills/threejs-guidelines/reference/postprocessing.md +26 -0
- package/skills/threejs-guidelines/reference/scene-fundamentals.md +26 -0
- package/skills/threejs-guidelines/reference/shaders.md +28 -0
- package/skills/threejs-guidelines/reference/textures.md +21 -0
- package/skills/threejs-guidelines/reference/webgpu.md +34 -0
- package/skills/typescript-guidelines/SKILL.md +37 -0
- package/skills/typescript-guidelines/reference/async-without-await.md +32 -0
- package/skills/typescript-guidelines/reference/avoid-barrel-exports.md +25 -0
- package/skills/typescript-guidelines/reference/avoid-eslint-disable.md +28 -0
- package/skills/typescript-guidelines/reference/avoid-reexports.md +26 -0
- package/skills/typescript-guidelines/reference/env-access-bracket-notation.md +29 -0
- package/skills/typescript-guidelines/reference/numeric-separator-enforcement.md +30 -0
- package/skills/typescript-guidelines/reference/template-literals-require-string-conversion.md +26 -0
- package/skills/typescript-guidelines/reference/unbound-method-references.md +32 -0
- package/skills/typescript-guidelines/reference/unnecessary-async-keywords.md +37 -0
- package/skills/typescript-to-lua-guidelines/SKILL.md +33 -0
- package/skills/typescript-to-lua-guidelines/reference/avoiding-heavy-features.md +41 -0
- package/skills/typescript-to-lua-guidelines/reference/coroutine-patterns.md +49 -0
- package/skills/typescript-to-lua-guidelines/reference/function-patterns.md +59 -0
- package/skills/typescript-to-lua-guidelines/reference/lua-interop.md +49 -0
- package/skills/typescript-to-lua-guidelines/reference/module-organization.md +42 -0
- package/skills/typescript-to-lua-guidelines/reference/multi-return-functions.md +47 -0
- package/skills/typescript-to-lua-guidelines/reference/namespaces-vs-classes.md +52 -0
- package/skills/typescript-to-lua-guidelines/reference/performance-tips.md +68 -0
- package/skills/typescript-to-lua-guidelines/reference/stable-tables.md +60 -0
- package/skills/typescript-to-lua-guidelines/reference/tsconfig.md +46 -0
- package/skills/typescript-to-lua-guidelines/reference/tstl-decorators.md +61 -0
- package/skills/typescript-to-lua-guidelines/reference/type-safety.md +79 -0
- package/skills/vitest-guidelines/SKILL.md +32 -0
- package/skills/vitest-guidelines/reference/cors-preflight-status-code.md +34 -0
- package/skills/vitest-guidelines/reference/http-testing.md +57 -0
- package/skills/vitest-guidelines/reference/json-response-type-safety.md +40 -0
- package/skills/vitest-guidelines/reference/mock-patterns.md +53 -0
- package/skills/vitest-guidelines/reference/project-references-path-resolution.md +36 -0
- package/skills/vitest-guidelines/reference/test-organization.md +25 -0
- package/skills/vitest-guidelines/reference/timestamp-testing.md +55 -0
- package/skills/vitest-guidelines/reference/type-safety.md +55 -0
- package/skills/vitest-guidelines/reference/typescript-config.md +43 -0
- package/skills/zod-guidelines/SKILL.md +33 -0
- package/skills/zod-guidelines/reference/default-values-output-type.md +63 -0
- package/skills/zod-guidelines/reference/migration-string-validators.md +38 -0
- package/skills/zod-guidelines/reference/migration-v4.md +46 -0
- package/skills/zod-guidelines/reference/schema-organization.md +73 -0
- package/skills/zod-guidelines/reference/validation-patterns.md +37 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# fetchcontent: Dependency Management with FetchContent
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use FetchContent to fetch and build external dependencies from source at configure time.
|
|
4
|
+
|
|
5
|
+
**Rationale:** FetchContent ensures dependencies are built with the same compiler and settings as your project, providing reproducible builds without system installation.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
include(FetchContent)
|
|
11
|
+
|
|
12
|
+
# Fetch external dependency
|
|
13
|
+
FetchContent_Declare(
|
|
14
|
+
fmt
|
|
15
|
+
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
|
|
16
|
+
GIT_TAG 10.1.1
|
|
17
|
+
GIT_SHALLOW TRUE
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
FetchContent_MakeAvailable(fmt)
|
|
21
|
+
|
|
22
|
+
# Use the dependency
|
|
23
|
+
add_executable(app src/main.cpp)
|
|
24
|
+
target_link_libraries(app PRIVATE fmt::fmt)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Techniques:**
|
|
28
|
+
- FetchContent_Declare(): Declare dependency with git repo and version pin
|
|
29
|
+
- GIT_TAG: Pin exact version for reproducible builds
|
|
30
|
+
- GIT_SHALLOW: Use shallow clone for faster fetching
|
|
31
|
+
- FetchContent_MakeAvailable(): Fetch and populate dependency with one call
|
|
32
|
+
- Populate: Use FetchContent_GetProperties() for conditional population control
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# find-package: Dependency Management with find_package
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use find_package to locate and link system-installed dependencies.
|
|
4
|
+
|
|
5
|
+
**Rationale:** System-installed packages are pre-built and optimized for the platform, reducing build times and disk usage when available.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# Find system-installed package
|
|
11
|
+
find_package(Boost 1.80 REQUIRED COMPONENTS system filesystem)
|
|
12
|
+
|
|
13
|
+
add_executable(app src/main.cpp)
|
|
14
|
+
target_link_libraries(app PRIVATE Boost::system Boost::filesystem)
|
|
15
|
+
|
|
16
|
+
# Optional dependency
|
|
17
|
+
find_package(OpenSSL)
|
|
18
|
+
if(OpenSSL_FOUND)
|
|
19
|
+
target_link_libraries(app PRIVATE OpenSSL::SSL OpenSSL::Crypto)
|
|
20
|
+
target_compile_definitions(app PRIVATE HAVE_OPENSSL=1)
|
|
21
|
+
endif()
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Techniques:**
|
|
25
|
+
- REQUIRED: Fail build if package not found, use for mandatory dependencies
|
|
26
|
+
- COMPONENTS: Specify individual package parts to reduce linking
|
|
27
|
+
- Namespaced targets: Use Boost::system, OpenSSL::SSL for safe target linking
|
|
28
|
+
- \*_FOUND variable: Check if optional dependency is available before using
|
|
29
|
+
- Conditional linking: Add target_compile_definitions when dependencies found
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# generator-expressions: Generator Expressions
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use generator expressions for conditional and context-dependent CMake settings.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Generator expressions evaluate at build time, allowing different settings based on compiler, platform, configuration, or build/install context.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# Build/Install interface paths
|
|
11
|
+
target_include_directories(mylib PUBLIC
|
|
12
|
+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
13
|
+
$<INSTALL_INTERFACE:include>
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
# Compiler-specific options
|
|
17
|
+
target_compile_options(mylib PRIVATE
|
|
18
|
+
$<$<CXX_COMPILER_ID:GNU>:-fno-rtti>
|
|
19
|
+
$<$<CXX_COMPILER_ID:MSVC>:/GR->
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Configuration and platform-specific settings
|
|
23
|
+
target_compile_definitions(mylib PRIVATE
|
|
24
|
+
$<$<CONFIG:Debug>:DEBUG_MODE=1>
|
|
25
|
+
$<$<PLATFORM_ID:Linux>:LINUX_BUILD>
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Techniques:**
|
|
30
|
+
- BUILD_INTERFACE/INSTALL_INTERFACE: Different paths for build vs installed consumption
|
|
31
|
+
- CXX_COMPILER_ID: Detect compiler and apply vendor-specific flags
|
|
32
|
+
- CONFIG: Apply Debug or Release build-specific settings
|
|
33
|
+
- PLATFORM_ID: Apply Linux, Windows, Darwin-specific settings
|
|
34
|
+
- Nested conditions: Chain $<$<X>:$<Y:value>>> for complex logic
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# installation: Installation
|
|
2
|
+
|
|
3
|
+
**Guideline:** Configure installation rules to enable package distribution and consumption via find_package.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Proper installation allows your library to be installed system-wide or in custom locations and discovered by other CMake projects.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# Install targets with export
|
|
11
|
+
install(TARGETS mylib app
|
|
12
|
+
EXPORT mylib-targets
|
|
13
|
+
LIBRARY DESTINATION lib
|
|
14
|
+
ARCHIVE DESTINATION lib
|
|
15
|
+
RUNTIME DESTINATION bin
|
|
16
|
+
INCLUDES DESTINATION include
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
# Install headers
|
|
20
|
+
install(DIRECTORY include/
|
|
21
|
+
DESTINATION include
|
|
22
|
+
FILES_MATCHING PATTERN "*.h"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# Export targets for find_package discovery
|
|
26
|
+
install(EXPORT mylib-targets
|
|
27
|
+
FILE mylib-targets.cmake
|
|
28
|
+
NAMESPACE mylib::
|
|
29
|
+
DESTINATION lib/cmake/mylib
|
|
30
|
+
)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Techniques:**
|
|
34
|
+
- install(TARGETS): Install libraries and executables with type-specific destinations
|
|
35
|
+
- EXPORT: Create importable CMake files for downstream find_package() calls
|
|
36
|
+
- DESTINATION: Set lib/bin/include paths for each artifact type
|
|
37
|
+
- NAMESPACE: Prefix exported targets (mylib::) to prevent naming conflicts
|
|
38
|
+
- install(DIRECTORY): Install headers with glob patterns for selective inclusion
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# project-structure: Basic Project Structure
|
|
2
|
+
|
|
3
|
+
**Guideline:** Set up CMake projects with modern target-based configuration using CMake 3.20 or higher.
|
|
4
|
+
|
|
5
|
+
**Rationale:** A well-structured CMakeLists.txt establishes build requirements, project metadata, and target definitions that form the foundation for maintainable builds.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
cmake_minimum_required(VERSION 3.20)
|
|
11
|
+
project(demo VERSION 1.0.0 DESCRIPTION "Example" LANGUAGES C CXX)
|
|
12
|
+
|
|
13
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
14
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
15
|
+
|
|
16
|
+
# Build library
|
|
17
|
+
add_library(core src/core.cpp src/utils.cpp)
|
|
18
|
+
target_include_directories(core PUBLIC
|
|
19
|
+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
20
|
+
$<INSTALL_INTERFACE:include>
|
|
21
|
+
)
|
|
22
|
+
target_compile_features(core PUBLIC cxx_std_20)
|
|
23
|
+
|
|
24
|
+
# Build executable
|
|
25
|
+
add_executable(app src/main.cpp)
|
|
26
|
+
target_link_libraries(app PRIVATE core)
|
|
27
|
+
|
|
28
|
+
# Testing
|
|
29
|
+
enable_testing()
|
|
30
|
+
add_executable(core_test tests/core_test.cpp)
|
|
31
|
+
target_link_libraries(core_test PRIVATE core)
|
|
32
|
+
add_test(NAME core_test COMMAND core_test)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Techniques:**
|
|
36
|
+
- cmake_minimum_required(): Set 3.20+ for modern CMake features
|
|
37
|
+
- project(): Declare name, version, description, and required languages
|
|
38
|
+
- add_library/add_executable(): Create targets for libraries and binaries
|
|
39
|
+
- target_include_directories(): Configure include paths with generator expressions
|
|
40
|
+
- target_compile_features(): Require specific C++ standard like cxx_std_20
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# target-types: Target Types
|
|
2
|
+
|
|
3
|
+
**Guideline:** Choose appropriate target types based on how the code will be consumed.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Different target types optimize for different use cases: shared libraries for runtime linking, static for embedding, header-only for templates, object for reusing compiled code.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# Normal library (static or shared based on BUILD_SHARED_LIBS)
|
|
11
|
+
add_library(mylib src/lib.cpp)
|
|
12
|
+
|
|
13
|
+
# Explicit static library
|
|
14
|
+
add_library(static_lib STATIC src/static.cpp)
|
|
15
|
+
|
|
16
|
+
# Explicit shared library
|
|
17
|
+
add_library(shared_lib SHARED src/shared.cpp)
|
|
18
|
+
|
|
19
|
+
# Header-only library
|
|
20
|
+
add_library(header_only INTERFACE)
|
|
21
|
+
target_include_directories(header_only INTERFACE include)
|
|
22
|
+
|
|
23
|
+
# Object library for intermediate compilation
|
|
24
|
+
add_library(objects OBJECT src/common.cpp)
|
|
25
|
+
target_link_libraries(mylib PRIVATE objects)
|
|
26
|
+
|
|
27
|
+
# Executable and GUI app
|
|
28
|
+
add_executable(app src/main.cpp)
|
|
29
|
+
add_executable(gui WIN32 MACOSX_BUNDLE src/gui.cpp)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- add_library() without type: Let BUILD_SHARED_LIBS control static vs shared
|
|
34
|
+
- STATIC: Always statically link, good for embedded or single-binary scenarios
|
|
35
|
+
- SHARED: Dynamic library for runtime linking and flexible updates
|
|
36
|
+
- INTERFACE: Header-only library with no compiled code
|
|
37
|
+
- OBJECT: Intermediate object library for sharing compiled units across targets
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# testing: Testing with CTest
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use CTest to integrate automated testing into the build system.
|
|
4
|
+
|
|
5
|
+
**Rationale:** CTest provides a standardized way to run tests across platforms with features like timeouts, labels, and parallel execution.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# Enable testing
|
|
11
|
+
enable_testing()
|
|
12
|
+
|
|
13
|
+
# Add test executable
|
|
14
|
+
add_executable(unit_tests tests/test_core.cpp tests/test_utils.cpp)
|
|
15
|
+
target_link_libraries(unit_tests PRIVATE core gtest_main)
|
|
16
|
+
|
|
17
|
+
# Register test cases
|
|
18
|
+
add_test(NAME unit_tests COMMAND unit_tests)
|
|
19
|
+
add_test(NAME integration_test COMMAND app --test-mode WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
|
20
|
+
|
|
21
|
+
# Set test properties
|
|
22
|
+
set_tests_properties(unit_tests PROPERTIES TIMEOUT 30 LABELS "unit")
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Techniques:**
|
|
26
|
+
- enable_testing(): Enable the testing feature in CMake project
|
|
27
|
+
- add_test(): Register test executable or command with optional working directory
|
|
28
|
+
- set_tests_properties(): Set timeout, labels, or other test attributes
|
|
29
|
+
- add_executable() for tests: Build test binaries separately from production code
|
|
30
|
+
- LABELS: Tag tests for selective running with ctest -L filter
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# visibility-specifiers: Visibility Specifiers
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use PUBLIC, PRIVATE, and INTERFACE to control how target properties propagate to consumers.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Proper visibility prevents leaking implementation details and ensures consumers get only the dependencies they need, reducing coupling and build times.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```cmake
|
|
10
|
+
# PUBLIC: Library AND consumers need this
|
|
11
|
+
target_include_directories(mylib PUBLIC include)
|
|
12
|
+
target_compile_definitions(mylib PUBLIC USE_FEATURE=1)
|
|
13
|
+
|
|
14
|
+
# PRIVATE: Only library needs this
|
|
15
|
+
target_include_directories(mylib PRIVATE src/internal)
|
|
16
|
+
target_compile_definitions(mylib PRIVATE DEBUG_MODE=1)
|
|
17
|
+
|
|
18
|
+
# INTERFACE: Only consumers need this
|
|
19
|
+
add_library(header_only INTERFACE)
|
|
20
|
+
target_include_directories(header_only INTERFACE include)
|
|
21
|
+
|
|
22
|
+
# Linking with visibility
|
|
23
|
+
add_executable(app src/main.cpp)
|
|
24
|
+
target_link_libraries(app PRIVATE mylib PUBLIC common INTERFACE interface)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Techniques:**
|
|
28
|
+
- PUBLIC: Properties visible to both target and all downstream consumers
|
|
29
|
+
- PRIVATE: Properties used only by target, not propagated to consumers
|
|
30
|
+
- INTERFACE: Properties for consumers only, not used by target itself
|
|
31
|
+
- Consistent visibility: Apply same visibility to includes, links, definitions, options
|
|
32
|
+
- Minimize PUBLIC: Reduce PUBLIC properties to shrink transitive dependencies
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on content creation tasks with bilingual requirements. Use when creating bilingual content with structured formatting. Apply for news curation, port/ship guides, travel guides. Keywords: bilingual, CEFR, B1-B2 proficiency, content frontmatter, news articles, travel guides, humanize, web research.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Content Creation Guidelines
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
- **Research First** - Verify with web search and web fetch, triangulate facts
|
|
12
|
+
- **Bilingual Content** - Support multiple languages with CEFR proficiency levels
|
|
13
|
+
- **Structured Format** - Follow exact structure with proper front-matter
|
|
14
|
+
- **Natural Language** - CEFR B1-B2, personal "you" voice, no emojis, see [reference/humanize.md](reference/humanize.md)
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
- **Research** - Use WebSearch and WebFetch to gather and verify information
|
|
19
|
+
- **Draft** - Follow structured format with proper front-matter
|
|
20
|
+
- **Generate** - Create markdown files for each language
|
|
21
|
+
- **Validate** - Verify links, addresses, factual accuracy
|
|
22
|
+
|
|
23
|
+
## Language Standards
|
|
24
|
+
|
|
25
|
+
- **Proficiency** - CEFR B1-B2 by default (configurable)
|
|
26
|
+
- **Style** - Short sentences (<20 words), 60% informative / 40% conversational
|
|
27
|
+
- **Paraphrasing** - Never copy text verbatim from sources
|
|
28
|
+
|
|
29
|
+
## Progressive Disclosure
|
|
30
|
+
|
|
31
|
+
### Content Types
|
|
32
|
+
- Read [reference/news.md](reference/news.md) - Auto-curate latest news with bilingual summaries
|
|
33
|
+
- Read [reference/travelguide.md](reference/travelguide.md) - Multi-language travel destination guides
|
|
34
|
+
|
|
35
|
+
### Writing Quality
|
|
36
|
+
- Read [reference/humanize.md](reference/humanize.md) - Remove AI patterns and make text natural
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# humanize: Make Writing Sound Human
|
|
2
|
+
|
|
3
|
+
**Guideline:** Remove AI patterns from documentation to make it sound natural and professional.
|
|
4
|
+
|
|
5
|
+
**Rationale:** AI-generated text contains recognizable patterns (forced casual tone, filler phrases, excessive formatting) that diminish credibility and readability.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
Before:
|
|
10
|
+
```markdown
|
|
11
|
+
## Phase 1: Setup (Est. 2-3 days)
|
|
12
|
+
Let's dive in! TD-01: Configure Database ✅
|
|
13
|
+
This involves database connection. In other words:
|
|
14
|
+
- Connect to PostgreSQL - primary data store
|
|
15
|
+
- Set up migrations - easy fix though
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
After:
|
|
19
|
+
```markdown
|
|
20
|
+
## Setup
|
|
21
|
+
Configure database by connecting to PostgreSQL as primary data store and setting up migrations.
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Techniques:**
|
|
25
|
+
- Remove task IDs: Strip TD-01, TASK-001, phase structures, time estimations
|
|
26
|
+
- Replace filler: Remove "Let's dive in", "here's the thing", "easy fix though"
|
|
27
|
+
- Simplify punctuation: Use commas instead of dashes (", " not " - ")
|
|
28
|
+
- Prose over bullets: Use paragraphs where logical flow works better
|
|
29
|
+
- Remove enthusiasm: Eliminate excessive exclamation marks, emojis, meta-commentary
|
|
30
|
+
- Keep accuracy: Maintain technical precision while removing fluff
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# news: Auto-Curate Latest News Stories
|
|
2
|
+
|
|
3
|
+
**Guideline:** Research and write news stories in multiple languages with verified facts triangulated from 3+ sources.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Bilingual news requires triangulating sources to discard clickbait while paraphrasing to avoid plagiarism and maintain credibility.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
---
|
|
11
|
+
title: "Headline (35-45 words)"
|
|
12
|
+
slug: "story-slug"
|
|
13
|
+
summary: "Concise summary"
|
|
14
|
+
created_at: "2024-01-24T12:00:00Z"
|
|
15
|
+
image_url: "royalty-free-url"
|
|
16
|
+
lang: "en"
|
|
17
|
+
---
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Write in CEFR B1-B2 level with short sentences (<20 words) and bullet points for skimming.
|
|
21
|
+
|
|
22
|
+
**Techniques:**
|
|
23
|
+
- WebSearch verification: Find 3+ credible sources per story, use date filters
|
|
24
|
+
- Triangulate facts: Cross-check claims, discard unsourced or clickbait content
|
|
25
|
+
- Paraphrase: Never copy verbatim, use original wording while preserving meaning
|
|
26
|
+
- Language standards: Target CEFR B1-B2 with natural, concise prose
|
|
27
|
+
- Headlines: Write 35-45 word summaries that are authoritative yet friendly
|
|
28
|
+
- Filename format: Use `slug.lang.md` convention for bilingual organization
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# travelguide: Create Comprehensive Travel Guides
|
|
2
|
+
|
|
3
|
+
**Guideline:** Create multi-language travel guides balancing engaging narrative with practical, web-verifiable information.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Comprehensive guides help travelers plan effectively while capturing destination essence through knowledgeable narrative.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
Structure:
|
|
10
|
+
1. Introduction (200-300 words): Hook, key logistics, duration
|
|
11
|
+
2. Logistics (400-500 words): Location, hours, transport, tips
|
|
12
|
+
3. Attractions (500-600 words): 3-5 essential with access, duration, cost, hours, tip
|
|
13
|
+
4. Itineraries (600-800 words): Budget/family/premium types, half/full-day options
|
|
14
|
+
5. Practical Info (400-500 words): Payment, language, weather, safety, customs
|
|
15
|
+
|
|
16
|
+
Front-matter:
|
|
17
|
+
```yaml
|
|
18
|
+
title: "Destination Name"
|
|
19
|
+
slug: "destination-slug"
|
|
20
|
+
summary: "Brief summary"
|
|
21
|
+
created_at: "ISO timestamp"
|
|
22
|
+
lang: "en"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Techniques:**
|
|
26
|
+
- WebSearch research: Gather current, comprehensive information before writing
|
|
27
|
+
- Narrative style: Write as knowledgeable friend, pack practical value into prose
|
|
28
|
+
- Language standards: CEFR B1-B2, <20 word sentences, **bold** for critical details
|
|
29
|
+
- Attractions details: Include access methods, duration, cost, hours, insider tips
|
|
30
|
+
- Accessibility: Include information for travelers with disabilities
|
|
31
|
+
- Verification: All information must be web-verifiable and current
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docker-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on `Dockerfile`, `docker-compose.yml`, `.dockerignore` files. Use when writing Docker configurations for containerized applications. Apply for multi-stage builds, security hardening, production deployments. Keywords: Dockerfile, multi-stage, alpine/distroless, layer caching, non-root, secrets, health checks, BuildKit.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Docker Coding Guidelines
|
|
8
|
+
|
|
9
|
+
## Essentials
|
|
10
|
+
|
|
11
|
+
- **Build optimization** - Multi-stage builds, small base images (alpine/distroless), see [reference/multi-stage-builds.md](reference/multi-stage-builds.md)
|
|
12
|
+
- **Layer caching** - Order layers for caching, copy lockfiles before source, see [reference/layer-caching.md](reference/layer-caching.md)
|
|
13
|
+
- **Security** - Run as non-root, least privilege, no secrets in images, see [reference/security.md](reference/security.md)
|
|
14
|
+
- **Configuration** - Externalize config via env/volumes, pin versions, see [reference/production-config.md](reference/production-config.md)
|
|
15
|
+
- **Quality** - Use BuildKit and hadolint, add health endpoints, see [reference/production-config.md](reference/production-config.md)
|
|
16
|
+
|
|
17
|
+
## Progressive disclosure
|
|
18
|
+
|
|
19
|
+
- Read [reference/multi-stage-builds.md](reference/multi-stage-builds.md) - When creating production images or optimizing build process
|
|
20
|
+
- Read [reference/layer-caching.md](reference/layer-caching.md) - When builds are slow or cache invalidates frequently
|
|
21
|
+
- Read [reference/security.md](reference/security.md) - When hardening images or handling secrets
|
|
22
|
+
- Read [reference/production-config.md](reference/production-config.md) - When adding health checks or configuring for orchestration
|
|
23
|
+
- Read [reference/docker-compose.md](reference/docker-compose.md) - When defining multi-service local development environments
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# docker-compose: Docker Compose Configuration
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use Docker Compose for development with proper secrets, volumes, and health checks.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Simplifies multi-container orchestration during development; secrets, volumes, and health checks mirror production while maintaining security.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
services:
|
|
11
|
+
app:
|
|
12
|
+
build: {context: ., target: runtime}
|
|
13
|
+
environment:
|
|
14
|
+
- NODE_ENV=production
|
|
15
|
+
- DATABASE_URL_FILE=/run/secrets/db_url
|
|
16
|
+
secrets: [db_url]
|
|
17
|
+
volumes: [app-data:/app/data]
|
|
18
|
+
ports: ["3000:3000"]
|
|
19
|
+
healthcheck:
|
|
20
|
+
test: ["CMD", "node", "healthcheck.js"]
|
|
21
|
+
interval: 30s
|
|
22
|
+
timeout: 3s
|
|
23
|
+
retries: 3
|
|
24
|
+
restart: unless-stopped
|
|
25
|
+
|
|
26
|
+
secrets:
|
|
27
|
+
db_url:
|
|
28
|
+
file: ./secrets/db_url.txt
|
|
29
|
+
|
|
30
|
+
volumes:
|
|
31
|
+
app-data:
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Techniques:**
|
|
35
|
+
- Build configuration: Specify build context and target stage in compose
|
|
36
|
+
- Secrets management: Use secrets section for sensitive data, never environment vars
|
|
37
|
+
- Volume mounting: Mount volumes for persistent data matching production layout
|
|
38
|
+
- Health checks: Configure health checks matching Dockerfile definitions
|
|
39
|
+
- Restart policy: Set `unless-stopped` for development persistence
|
|
40
|
+
- Port mapping: Expose ports for local development access
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# layer-caching: Layer Caching Strategy
|
|
2
|
+
|
|
3
|
+
**Guideline:** Order Dockerfile commands least-to-most frequently changing to maximize cache reuse.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Docker caches each layer; changes invalidate subsequent layers. Proper ordering minimizes rebuild time.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```dockerfile
|
|
10
|
+
FROM node:22-alpine
|
|
11
|
+
WORKDIR /app
|
|
12
|
+
COPY package-lock.json ./
|
|
13
|
+
RUN npm ci
|
|
14
|
+
COPY . .
|
|
15
|
+
RUN npm run build
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Techniques:**
|
|
19
|
+
- Copy lockfiles first: package-lock.json, poetry.lock rarely change
|
|
20
|
+
- Install dependencies: Run before copying source to cache dependency layer
|
|
21
|
+
- Copy source last: src/, config files change frequently
|
|
22
|
+
- Build commands: Run after source copy, invalidates only build layer
|
|
23
|
+
- Order principle: Static → dependencies → source → build
|
|
24
|
+
- Cache validation: Check Docker BUILDKIT with --progress=plain for cache hits
|
|
25
|
+
- Multi-stage: Use separate stages for different cache patterns
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# multi-stage-builds: Multi-Stage Build Pattern
|
|
2
|
+
|
|
3
|
+
**Guideline:** Separate build and runtime stages to minimize production image size and attack surface.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Multi-stage builds use full-featured build envs while keeping runtime images minimal; reduces size, attack surface, deployment time.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```dockerfile
|
|
10
|
+
# syntax=docker/dockerfile:1.7
|
|
11
|
+
|
|
12
|
+
FROM node:22-alpine AS deps
|
|
13
|
+
WORKDIR /app
|
|
14
|
+
COPY package.json pnpm-lock.yaml ./
|
|
15
|
+
RUN corepack enable && pnpm i --frozen-lockfile
|
|
16
|
+
|
|
17
|
+
FROM node:22-alpine AS build
|
|
18
|
+
WORKDIR /app
|
|
19
|
+
COPY --from=deps /app/node_modules node_modules
|
|
20
|
+
COPY . .
|
|
21
|
+
RUN pnpm build
|
|
22
|
+
|
|
23
|
+
FROM gcr.io/distroless/nodejs22
|
|
24
|
+
WORKDIR /app
|
|
25
|
+
USER nonroot:nonroot
|
|
26
|
+
COPY --from=build /app/dist dist
|
|
27
|
+
ENV NODE_ENV=production
|
|
28
|
+
EXPOSE 3000
|
|
29
|
+
CMD ["dist/server.js"]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- Stage separation: Use distinct dependencies, build, and runtime stages
|
|
34
|
+
- Artifact copying: Copy only necessary outputs between stages
|
|
35
|
+
- Minimal runtime: Use distroless or alpine for production image
|
|
36
|
+
- Named stages: Use AS for clarity in multi-stage builds
|
|
37
|
+
- Size optimization: Reduces image size by excluding build tools from runtime
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# production-config: Production Configuration
|
|
2
|
+
|
|
3
|
+
**Guideline:** Configure with health checks, externalized config, proper lifecycle management.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Health checks enable failure detection, env vars allow deployment-specific config, volumes preserve data.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```dockerfile
|
|
10
|
+
# syntax=docker/dockerfile:1.7
|
|
11
|
+
FROM node:22-alpine
|
|
12
|
+
WORKDIR /app
|
|
13
|
+
|
|
14
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
|
15
|
+
CMD node healthcheck.js || exit 1
|
|
16
|
+
|
|
17
|
+
ENV NODE_ENV=production PORT=3000 LOG_LEVEL=info
|
|
18
|
+
|
|
19
|
+
VOLUME /app/data
|
|
20
|
+
|
|
21
|
+
EXPOSE 3000
|
|
22
|
+
USER node:node
|
|
23
|
+
CMD ["node", "dist/server.js"]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Techniques:**
|
|
27
|
+
- Health checks: Add HEALTHCHECK for orchestration failure detection
|
|
28
|
+
- Environment config: Use ENV for deployment-specific configuration
|
|
29
|
+
- Persistent volumes: Define VOLUME for data that must survive restarts
|
|
30
|
+
- Port exposure: Use EXPOSE to document container ports
|
|
31
|
+
- Non-root user: Set USER for security and orchestration requirements
|
|
32
|
+
- BuildKit syntax: Use syntax directive for advanced features
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# security: Security Best Practices
|
|
2
|
+
|
|
3
|
+
**Guideline:** Pin versions, run non-root, externalize secrets to limit attack surface.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Multiple defense layers: pinned versions prevent supply chain attacks, non-root limits breach damage, externalized secrets prevent leaks.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```dockerfile
|
|
10
|
+
FROM node:22.1.0-alpine3.19
|
|
11
|
+
|
|
12
|
+
RUN addgroup -g 1001 -S nodejs && \
|
|
13
|
+
adduser -S nodejs -u 1001
|
|
14
|
+
USER nodejs:nodejs
|
|
15
|
+
|
|
16
|
+
ENV DATABASE_URL_FILE=/run/secrets/db_url
|
|
17
|
+
|
|
18
|
+
RUN mkdir /tmp/app-cache && chown nodejs:nodejs /tmp/app-cache
|
|
19
|
+
VOLUME /tmp/app-cache
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Techniques:**
|
|
23
|
+
- Version pinning: Pin base image version including OS version for supply chain security
|
|
24
|
+
- Non-root user: Create and use non-root USER to limit breach damage
|
|
25
|
+
- Secret externalization: Never copy secrets into image; use environment or mounts
|
|
26
|
+
- Read-only filesystem: Use read-only root with writable VOLUME for security
|
|
27
|
+
- Defense layers: Combine multiple tactics (pinning, user, secrets) for defense-in-depth
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: express.js-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on `*.ts` files with Express imports or `@types/express`. Use when building Express 5+ API servers. Apply for route organization, error handling, authentication, testing. Keywords: Express, routes, controllers, middleware, Zod validation, JWT, error handling, CORS, Morgan.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Express.js Coding Guidelines
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- Express ≥ 5, TypeScript ≥ 5.8, Helmet/CORS/Morgan, Zod.
|
|
12
|
+
|
|
13
|
+
## Essentials
|
|
14
|
+
|
|
15
|
+
- **Project structure** - Routes, controllers, middleware as separate modules, see [reference/project-structure.md](reference/project-structure.md)
|
|
16
|
+
- **Input validation** - Validate params/body/query with Zod at route edges, see [reference/validation.md](reference/validation.md)
|
|
17
|
+
- **Error handling** - Central error handler, never leak stack traces in prod, see [reference/error-handling.md](reference/error-handling.md)
|
|
18
|
+
- **Authentication** - JWT auth with role/permission middleware, see [reference/authentication.md](reference/authentication.md)
|
|
19
|
+
- **Response format** - Consistent JSON shape and status codes, see [reference/responses.md](reference/responses.md)
|
|
20
|
+
- **Testing** - Unit-test controllers/middleware, integration-test routes, see [reference/testing.md](reference/testing.md)
|
|
21
|
+
|
|
22
|
+
## Progressive disclosure
|
|
23
|
+
|
|
24
|
+
- Read [reference/project-structure.md](reference/project-structure.md) - When organizing a new Express project
|
|
25
|
+
- Read [reference/routes.md](reference/routes.md) - When defining REST endpoints or route patterns
|
|
26
|
+
- Read [reference/controllers.md](reference/controllers.md) - When implementing request handlers
|
|
27
|
+
- Read [reference/validation.md](reference/validation.md) - When adding input validation to routes
|
|
28
|
+
- Read [reference/authentication.md](reference/authentication.md) - When implementing JWT auth or session management
|
|
29
|
+
- Read [reference/error-handling.md](reference/error-handling.md) - When centralizing error responses
|
|
30
|
+
- Read [reference/responses.md](reference/responses.md) - When standardizing API response formats
|
|
31
|
+
- Read [reference/app-setup.md](reference/app-setup.md) - When configuring Express app initialization
|
|
32
|
+
- Read [reference/testing.md](reference/testing.md) - When writing unit or integration tests
|