@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,39 @@
|
|
|
1
|
+
# app-setup: Basic Application Setup
|
|
2
|
+
|
|
3
|
+
**Guideline:** Configure Express app with security, logging, body parsing, routes, and error handling in correct order.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Middleware order matters - security first, error handler last ensures proper request processing.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
const app = express();
|
|
11
|
+
|
|
12
|
+
// Security middleware (first)
|
|
13
|
+
app.use(helmet());
|
|
14
|
+
app.use(cors({origin: process.env.ALLOWED_ORIGINS?.split(","), credentials: true}));
|
|
15
|
+
|
|
16
|
+
// Logging and parsing
|
|
17
|
+
app.use(morgan("combined"));
|
|
18
|
+
app.use(express.json());
|
|
19
|
+
app.use(express.urlencoded({extended: true}));
|
|
20
|
+
|
|
21
|
+
// Routes
|
|
22
|
+
app.use("/api/users", userRoutes);
|
|
23
|
+
app.use("/api/auth", authRoutes);
|
|
24
|
+
|
|
25
|
+
// 404 handler
|
|
26
|
+
app.use((req, res) => res.status(404).json({error: "Not found"}));
|
|
27
|
+
|
|
28
|
+
// Error handler (last)
|
|
29
|
+
app.use(errorHandler);
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- Middleware order: Security → logging → parsing → routes → 404 → error handler
|
|
34
|
+
- helmet(): Add security headers (CSP, HSTS, X-Frame-Options, etc)
|
|
35
|
+
- cors(): Configure allowed origins and credentials for cross-origin requests
|
|
36
|
+
- morgan(): Log HTTP requests in combined format
|
|
37
|
+
- express.json()/urlencoded(): Parse request bodies
|
|
38
|
+
- 404 handler: Catch unmatched routes before error handler
|
|
39
|
+
- Error handler: Must be last, receives 4 parameters (err, req, res, next)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# authentication: JWT Authentication
|
|
2
|
+
|
|
3
|
+
**Guideline:** Implement JWT-based auth with middleware for authentication and role verification.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Stateless JWT tokens enable scalable authentication; role-based middleware enforces authorization at route level.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
declare global { namespace Express {
|
|
11
|
+
interface Request { user?: JwtPayload; }
|
|
12
|
+
}}
|
|
13
|
+
|
|
14
|
+
export function requireAuth(req: Request, res: Response, next: NextFunction): void {
|
|
15
|
+
const token = req.headers.authorization?.replace("Bearer ", "");
|
|
16
|
+
if (!token) return res.status(401).json({error: "Missing token"});
|
|
17
|
+
try {
|
|
18
|
+
req.user = jwt.verify(token, process.env.JWT_SECRET!) as JwtPayload;
|
|
19
|
+
next();
|
|
20
|
+
} catch { res.status(401).json({error: "Invalid token"}); }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function requireRole(...roles: string[]) {
|
|
24
|
+
return (req: Request, res: Response, next: NextFunction): void => {
|
|
25
|
+
if (!req.user) return res.status(401).json({error: "Not authenticated"});
|
|
26
|
+
if (!roles.includes(req.user.role)) return res.status(403).json({error: "Insufficient"});
|
|
27
|
+
next();
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- Extend Express Request: Add optional user property with JwtPayload interface
|
|
34
|
+
- requireAuth middleware: Verify Bearer token from Authorization header, attach user to request
|
|
35
|
+
- requireRole middleware: Check user role against allowed roles, return 403 if insufficient
|
|
36
|
+
- Sign tokens: Include userId, email, role with 7-day expiration
|
|
37
|
+
- Bearer scheme: Use "Bearer TOKEN" format in Authorization header
|
|
38
|
+
- Hash passwords: Compare with bcrypt instead of storing plaintext
|
|
39
|
+
- Status codes: 401 for missing/invalid auth, 403 for insufficient permissions
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# controllers: Controller Pattern
|
|
2
|
+
|
|
3
|
+
**Guideline:** Implement async controllers with typed request/response, wrap in try-catch, pass errors to next().
|
|
4
|
+
|
|
5
|
+
**Rationale:** Type-safe handlers with proper error handling ensure predictable API behavior.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
export async function list(
|
|
11
|
+
req: Request<{}, {}, {}, ListUsersQuery>,
|
|
12
|
+
res: Response,
|
|
13
|
+
next: NextFunction,
|
|
14
|
+
): Promise<void> {
|
|
15
|
+
try {
|
|
16
|
+
const {page, limit} = req.query;
|
|
17
|
+
const result = await userService.list({page, limit});
|
|
18
|
+
res.json({data: result.users, pagination: {page, limit, total: result.total}});
|
|
19
|
+
} catch (error) {
|
|
20
|
+
next(error);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function getById(
|
|
25
|
+
req: Request<UserParams>,
|
|
26
|
+
res: Response,
|
|
27
|
+
next: NextFunction,
|
|
28
|
+
): Promise<void> {
|
|
29
|
+
try {
|
|
30
|
+
const user = await userService.getById(req.params.id);
|
|
31
|
+
if (!user) {
|
|
32
|
+
res.status(404).json({error: "User not found"});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
res.json({data: user});
|
|
36
|
+
} catch (error) {
|
|
37
|
+
next(error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Techniques:**
|
|
43
|
+
- Type generics: Use Request<Params, ResBody, ReqBody, Query> for type safety
|
|
44
|
+
- Return Promise<void>: Indicates async function that doesn't return a value
|
|
45
|
+
- Try-catch: Wrap all async logic and pass errors to next(error)
|
|
46
|
+
- Validate first: Check for missing resources (404) before returning data
|
|
47
|
+
- Service layer: Call business logic via injected service dependencies
|
|
48
|
+
- Error handler: Pass errors to next() for centralized error handling
|
|
49
|
+
- Standard responses: Return {data: value} or {error: message} structures
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# error-handling: Centralized Error Handler
|
|
2
|
+
|
|
3
|
+
**Guideline:** Implement single error handler middleware that handles Zod errors, custom errors, and hides stack traces in production.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Centralized error handling ensures consistent error responses and prevents information leakage.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
export function errorHandler(
|
|
11
|
+
err: unknown,
|
|
12
|
+
req: Request,
|
|
13
|
+
res: Response,
|
|
14
|
+
next: NextFunction,
|
|
15
|
+
): void {
|
|
16
|
+
console.error("Error:", err);
|
|
17
|
+
|
|
18
|
+
if (err instanceof ZodError) {
|
|
19
|
+
res.status(400).json({error: "Validation error", details: err.flatten()});
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (err instanceof Error) {
|
|
24
|
+
if (err.name === "NotFoundError") {
|
|
25
|
+
res.status(404).json({error: err.message});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (err.name === "UnauthorizedError") {
|
|
29
|
+
res.status(401).json({error: err.message});
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (err.name === "ForbiddenError") {
|
|
33
|
+
res.status(403).json({error: err.message});
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (process.env.NODE_ENV !== "production") {
|
|
38
|
+
res.status(500).json({error: "Internal server error", message: err.message, stack: err.stack});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
res.status(500).json({error: "Internal server error"});
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Techniques:**
|
|
48
|
+
- Four parameters: (err, req, res, next) required for Express to recognize error handler
|
|
49
|
+
- Zod handling: Check instanceof ZodError, return 400 with details
|
|
50
|
+
- Custom errors: Match error.name against NotFoundError, UnauthorizedError, ForbiddenError
|
|
51
|
+
- Development mode: Show error.message and error.stack when NODE_ENV !== "production"
|
|
52
|
+
- Production mode: Hide details, return generic "Internal server error" message
|
|
53
|
+
- Register last: Error handler must be last middleware in app.use() chain
|
|
54
|
+
- Logging: Log errors to console for debugging and monitoring
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# project-structure: Application Structure
|
|
2
|
+
|
|
3
|
+
**Guideline:** Organize Express apps with separated concerns - routes, controllers, middleware, schemas in dedicated directories.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Clear separation prevents tight coupling and improves maintainability in larger codebases.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
src/
|
|
11
|
+
├── app.ts
|
|
12
|
+
├── server.ts
|
|
13
|
+
├── routes/ # Route definitions with middleware chains
|
|
14
|
+
├── controllers/ # Business logic handlers
|
|
15
|
+
├── middleware/ # Auth, validation, error handling
|
|
16
|
+
├── schemas/ # Zod schemas for validation
|
|
17
|
+
├── services/ # Database/external service logic
|
|
18
|
+
├── types/ # TypeScript type extensions
|
|
19
|
+
└── utils/ # Helper functions
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Techniques:**
|
|
23
|
+
- routes/: Define route handlers with middleware chaining, avoid business logic
|
|
24
|
+
- controllers/: Implement typed handlers with try-catch, call services
|
|
25
|
+
- middleware/: Auth, validation, CORS, logging, error handling middleware
|
|
26
|
+
- schemas/: Zod schemas for type-safe request/response validation
|
|
27
|
+
- services/: Database queries, external APIs, business logic
|
|
28
|
+
- types/: Extend Express Request/Response interfaces globally
|
|
29
|
+
- Separation: Keep concerns isolated, each file has single responsibility
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# responses: Response Patterns and Status Codes
|
|
2
|
+
|
|
3
|
+
**Guideline:** Use consistent JSON response shapes with appropriate HTTP status codes.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Standardized responses simplify client-side handling and follow HTTP semantics.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// Success
|
|
11
|
+
res.json({data: result});
|
|
12
|
+
|
|
13
|
+
// Success with pagination
|
|
14
|
+
res.json({data: items, pagination: {page: 1, limit: 20, total: 100}});
|
|
15
|
+
|
|
16
|
+
// Error
|
|
17
|
+
res.status(400).json({error: "Validation failed", details: {...}});
|
|
18
|
+
|
|
19
|
+
// No content (deletion)
|
|
20
|
+
res.status(204).send();
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Techniques:**
|
|
24
|
+
- Data wrapper: Wrap all responses in {data: ...} or {error: ...} envelope
|
|
25
|
+
- Status 200: GET, PUT, PATCH success - return {data: modified}
|
|
26
|
+
- Status 201: POST success - return {data: created} with Location header
|
|
27
|
+
- Status 204: DELETE success - return no content
|
|
28
|
+
- Status 400: Validation errors - return {error: "message", details: {...}}
|
|
29
|
+
- Status 401/403: Auth errors - return {error: "message"}
|
|
30
|
+
- Status 404/5xx: Return {error: message} via error handler
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# routes: Routes with Validation and Auth
|
|
2
|
+
|
|
3
|
+
**Guideline:** Chain validation and auth middleware before controller handlers in route definitions.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Declarative middleware chaining ensures validation/auth happens before business logic.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
const router = express.Router();
|
|
11
|
+
|
|
12
|
+
router.get("/", requireAuth, validateQuery(ListUsersQuerySchema), usersController.list);
|
|
13
|
+
router.get("/:id", requireAuth, validateParams(UserParamsSchema), usersController.getById);
|
|
14
|
+
router.post("/", validateBody(CreateUserSchema), usersController.create);
|
|
15
|
+
router.patch("/:id", requireAuth, validateParams(UserParamsSchema), validateBody(UpdateUserSchema), usersController.update);
|
|
16
|
+
router.delete("/:id", requireAuth, requireRole("admin"), validateParams(UserParamsSchema), usersController.remove);
|
|
17
|
+
|
|
18
|
+
export {router as userRoutes};
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Techniques:**
|
|
22
|
+
- Middleware order: Auth (requireAuth) before validation before controller
|
|
23
|
+
- requireAuth: Verify JWT token and attach user to request
|
|
24
|
+
- requireRole: Check user role after requireAuth
|
|
25
|
+
- validateBody: Validate req.body against Zod schema
|
|
26
|
+
- validateParams: Validate req.params against Zod schema
|
|
27
|
+
- validateQuery: Validate req.query against Zod schema
|
|
28
|
+
- Controller last: Place controller handler after all middleware
|
|
29
|
+
- Type safety: Import schema types for typed Request generics in controllers
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# testing: API Testing Pattern
|
|
2
|
+
|
|
3
|
+
**Guideline:** Test API endpoints using supertest with realistic request/response scenarios.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Integration tests validate the full middleware chain and response format.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import request from "supertest";
|
|
11
|
+
import {app} from "../src/app";
|
|
12
|
+
|
|
13
|
+
describe("POST /api/users", () => {
|
|
14
|
+
it("should create user with valid data", async () => {
|
|
15
|
+
const res = await request(app).post("/api/users").send({
|
|
16
|
+
email: "test@example.com",
|
|
17
|
+
name: "Test User",
|
|
18
|
+
password: "securepassword",
|
|
19
|
+
});
|
|
20
|
+
expect(res.status).toBe(201);
|
|
21
|
+
expect(res.body.data).toHaveProperty("id");
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("should return 400 for invalid email", async () => {
|
|
25
|
+
const res = await request(app).post("/api/users").send({email: "invalid"});
|
|
26
|
+
expect(res.status).toBe(400);
|
|
27
|
+
expect(res.body).toHaveProperty("error");
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- supertest: Make HTTP requests to Express app without network
|
|
34
|
+
- request(app).get/post/patch/delete(): Chain HTTP verb with URL path
|
|
35
|
+
- .send(): Pass request body as JSON
|
|
36
|
+
- expect(res.status).toBe(201): Assert HTTP status code
|
|
37
|
+
- expect(res.body.data): Assert response structure
|
|
38
|
+
- Integration testing: Validate full middleware chain, validation, handlers
|
|
39
|
+
- Realistic scenarios: Test valid/invalid inputs, edge cases, error responses
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# validation: Zod Validation Pattern
|
|
2
|
+
|
|
3
|
+
**Guideline:** Validate request params, body, and query at route edges using reusable Zod middleware.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Early validation prevents invalid data from reaching business logic, provides consistent error responses.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// schemas/users.ts
|
|
11
|
+
export const CreateUserSchema = z.object({
|
|
12
|
+
email: z.string().email(),
|
|
13
|
+
name: z.string().min(1).max(100),
|
|
14
|
+
password: z.string().min(8),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const UserParamsSchema = z.object({id: z.string().uuid()});
|
|
18
|
+
|
|
19
|
+
export type CreateUser = z.infer<typeof CreateUserSchema>;
|
|
20
|
+
|
|
21
|
+
// middleware/validate.ts
|
|
22
|
+
export function validateBody<T extends z.ZodType>(schema: T) {
|
|
23
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
24
|
+
const result = schema.safeParse(req.body);
|
|
25
|
+
if (!result.success) {
|
|
26
|
+
return res.status(400).json({error: "Validation failed", details: result.error.flatten()});
|
|
27
|
+
}
|
|
28
|
+
req.body = result.data;
|
|
29
|
+
next();
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Techniques:**
|
|
35
|
+
- Define schemas: Create Zod objects for body, params, query with strict types
|
|
36
|
+
- Type inference: Use z.infer<typeof Schema> to export TypeScript types
|
|
37
|
+
- safeParse: Use safeParse() instead of parse() to avoid exceptions
|
|
38
|
+
- Middleware pattern: Create validateBody/validateParams/validateQuery factories
|
|
39
|
+
- Type generics: Accept T extends z.ZodType for reusable middleware
|
|
40
|
+
- Error response: Return 400 with result.error.flatten() containing field errors
|
|
41
|
+
- Transform: Use .transform(Number) and .pipe() to coerce and validate strings
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: general-fp-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on functional programming patterns, immutability, pure functions. Use for FP-style coding principles. Apply when preferring composition over inheritance, module-level functions, explicit context passing. Keywords: functional programming, pure functions, immutability, composition, module functions, explicit context, stateless.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# General Functional Programming Guidelines
|
|
8
|
+
|
|
9
|
+
## Core principles
|
|
10
|
+
|
|
11
|
+
- Modular design: Prefer module-level functions; pass explicit context; avoid classes.
|
|
12
|
+
- Immutability: Favor immutable data; use pure functions without side effects.
|
|
13
|
+
- Composition: Build complex behavior by composing simple functions.
|
|
14
|
+
- Type safety: Use types consistently; derive from generated/parent types; enable strict modes.
|
|
15
|
+
- Clear structure: Split logic into small, focused files/functions.
|
|
16
|
+
|
|
17
|
+
## Best practices
|
|
18
|
+
|
|
19
|
+
- Readability: Prefer clarity over cleverness; name things well.
|
|
20
|
+
- Errors: Handle and propagate explicitly; never swallow silently.
|
|
21
|
+
- Tests: Add/maintain tests to prevent regressions.
|
|
22
|
+
- State: Pass state explicitly; avoid global or shared mutable state.
|
|
23
|
+
|
|
24
|
+
## Code quality
|
|
25
|
+
|
|
26
|
+
- Linting: Fix root causes of warnings; never suppress with disable comments.
|
|
27
|
+
- Validation: Run typecheck, lint, build, test after each major change (all must pass).
|
|
28
|
+
- Organization: Order pattern matching from most specific to most general.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: general-oop-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on object-oriented patterns, class hierarchies, encapsulation. Use for OOP-style coding principles. Apply when using inheritance, polymorphism, encapsulated state. Keywords: object-oriented, classes, inheritance, polymorphism, encapsulation, SOLID, design patterns, interfaces.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# General Object-Oriented Programming Guidelines
|
|
8
|
+
|
|
9
|
+
## Core principles
|
|
10
|
+
|
|
11
|
+
- Encapsulation: Keep state private; expose behavior through methods.
|
|
12
|
+
- Inheritance: Use for shared behavior; prefer composition when appropriate.
|
|
13
|
+
- Polymorphism: Program to interfaces; use abstract classes for shared implementation.
|
|
14
|
+
- Type safety: Use types consistently; derive from generated/parent types; enable strict modes.
|
|
15
|
+
- Clear structure: Split logic into focused classes with single responsibilities.
|
|
16
|
+
|
|
17
|
+
## Best practices
|
|
18
|
+
|
|
19
|
+
- Readability: Prefer clarity over cleverness; name things well.
|
|
20
|
+
- Errors: Handle and propagate explicitly; never swallow silently.
|
|
21
|
+
- Tests: Add/maintain tests to prevent regressions.
|
|
22
|
+
- SOLID: Single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.
|
|
23
|
+
|
|
24
|
+
## Code quality
|
|
25
|
+
|
|
26
|
+
- Linting: Fix root causes of warnings; never suppress with disable comments.
|
|
27
|
+
- Validation: Run typecheck, lint, build, test after each major change (all must pass).
|
|
28
|
+
- Design patterns: Apply appropriate patterns (Factory, Strategy, Observer) when they simplify code.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-guidelines
|
|
3
|
+
description: >-
|
|
4
|
+
Trigger on git operations and merge conflict situations. Use when working with git operations. Apply for conventional commits, merge conflict resolution, worktree management. Keywords: git, conventional commits, feat/fix/chore/docs, merge conflicts, worktrees, commit messages, history rewrite.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Git Guidelines
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
- **Conventional Commits** - Use type prefixes (feat, fix, chore, docs, refactor, test, ci), see [reference/commit.md](reference/commit.md)
|
|
12
|
+
- **Auto-Generate Messages** - Analyze changed files and context, see [reference/commit.md](reference/commit.md)
|
|
13
|
+
- **Isolated Development** - Use worktrees for feature branches, see [reference/worktree-create.md](reference/worktree-create.md)
|
|
14
|
+
- **Validate Before Merge** - Run typecheck/lint/build/test, see [reference/worktree-validate.md](reference/worktree-validate.md)
|
|
15
|
+
|
|
16
|
+
## Commit Operations
|
|
17
|
+
|
|
18
|
+
- **Auto-commit** - Analyze changes, infer type, generate message, optional push, see [reference/commit.md](reference/commit.md)
|
|
19
|
+
|
|
20
|
+
## Conflict Resolution
|
|
21
|
+
|
|
22
|
+
- **Detect and classify** - Find conflicts, suggest strategy (ours/theirs/merge), see [reference/merge-resolve.md](reference/merge-resolve.md)
|
|
23
|
+
- **Validate** - Run typecheck/lint after resolution before staging, see [reference/merge-resolve.md](reference/merge-resolve.md)
|
|
24
|
+
|
|
25
|
+
## Worktree Operations
|
|
26
|
+
|
|
27
|
+
- **Create** - `<worktree>-feature-<name>` directory with branch, see [reference/worktree-create.md](reference/worktree-create.md)
|
|
28
|
+
- **Commit** - Auto-commit with plan context, see [reference/worktree-commit.md](reference/worktree-commit.md)
|
|
29
|
+
- **Validate** - Pre-merge validation checkpoint, see [reference/worktree-validate.md](reference/worktree-validate.md)
|
|
30
|
+
- **Merge** - Merge feature back to source branch, see [reference/worktree-merge.md](reference/worktree-merge.md)
|
|
31
|
+
- **Cleanup** - Remove stale and merged worktrees, see [reference/worktree-cleanup.md](reference/worktree-cleanup.md)
|
|
32
|
+
- **Abandon** - Document and remove failed feature, see [reference/worktree-abandon.md](reference/worktree-abandon.md)
|
|
33
|
+
|
|
34
|
+
## Progressive Disclosure
|
|
35
|
+
|
|
36
|
+
### Commit Operations
|
|
37
|
+
- Read [reference/commit.md](reference/commit.md) - Commit with auto-generated conventional messages
|
|
38
|
+
- Read [reference/merge-resolve.md](reference/merge-resolve.md) - Detect and resolve merge conflicts with AI assistance
|
|
39
|
+
|
|
40
|
+
### Worktree Operations
|
|
41
|
+
- Read [reference/worktree-create.md](reference/worktree-create.md) - Create feature worktree with branch
|
|
42
|
+
- Read [reference/worktree-commit.md](reference/worktree-commit.md) - Auto-commit with plan context
|
|
43
|
+
- Read [reference/worktree-validate.md](reference/worktree-validate.md) - Pre-merge validation checkpoint
|
|
44
|
+
- Read [reference/worktree-merge.md](reference/worktree-merge.md) - Merge feature back to source branch
|
|
45
|
+
- Read [reference/worktree-cleanup.md](reference/worktree-cleanup.md) - Remove stale and merged worktrees
|
|
46
|
+
- Read [reference/worktree-abandon.md](reference/worktree-abandon.md) - Document and remove failed feature
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# commit: Auto-Commit with Smart Messages
|
|
2
|
+
|
|
3
|
+
**Guideline:** Commit with conventional format `<type>: <description>` by auto-detecting type from file changes and generating descriptive messages.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Auto-generating messages from file changes maintains consistent commit style with minimal effort while accurately reflecting what changed in each commit.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Changes in 3 test files
|
|
11
|
+
$ git commit
|
|
12
|
+
test: add validation tests for user registration
|
|
13
|
+
|
|
14
|
+
# Changes in documentation
|
|
15
|
+
$ git commit
|
|
16
|
+
docs: update authentication flow diagram
|
|
17
|
+
|
|
18
|
+
# Bug fix in service layer
|
|
19
|
+
$ git commit
|
|
20
|
+
fix: handle null pointer in user service
|
|
21
|
+
|
|
22
|
+
# New feature implementation
|
|
23
|
+
$ git commit
|
|
24
|
+
feat: add OAuth2 provider integration
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Techniques:**
|
|
28
|
+
- Detect changes via `git status --porcelain` and `git diff --stat`
|
|
29
|
+
- Auto-detect type from file patterns: test (*.test.ts), docs (*.md), ci, chore (package.json), feat (new), fix (small), refactor (large)
|
|
30
|
+
- Generate message from file patterns and diff stats
|
|
31
|
+
- Commit with `git add -A && git commit -m "<type>: <description>"`
|
|
32
|
+
- Optionally push with `git push -o ci.skip origin HEAD:<branch>`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# merge-resolve: Detect and Resolve Merge Conflicts
|
|
2
|
+
|
|
3
|
+
**Guideline:** Detect, classify, and resolve merge conflicts with auto-resolution for simple cases and strategies for complex conflicts.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Simple conflicts like import statements and dependencies can be auto-resolved, while complex conflicts require manual decision-making based on strategies like keeping ours/theirs/merging intelligently.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Detecting conflicts
|
|
11
|
+
$ git status --porcelain
|
|
12
|
+
UU src/services/auth.ts
|
|
13
|
+
AA package.json
|
|
14
|
+
DD src/utils/old-helper.ts
|
|
15
|
+
|
|
16
|
+
# Auto-resolve simple import statement conflicts
|
|
17
|
+
# package.json: merge both dependency versions
|
|
18
|
+
|
|
19
|
+
# Manual resolution for function body conflict
|
|
20
|
+
# Review auth.ts and choose strategy (ours/theirs/merge)
|
|
21
|
+
|
|
22
|
+
# Validate after resolution
|
|
23
|
+
$ npm run typecheck && npm run lint
|
|
24
|
+
TypeScript: PASS
|
|
25
|
+
ESLint: PASS
|
|
26
|
+
|
|
27
|
+
# Stage and complete merge
|
|
28
|
+
$ git add .
|
|
29
|
+
$ git commit -m "merge: resolve conflicts with feature branch"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Techniques:**
|
|
33
|
+
- Detect conflicts via `git status --porcelain` (UU, AA, DD markers)
|
|
34
|
+
- Classify as simple (auto-resolvable: imports, dependencies, additions) or complex (manual: functions, types, logic)
|
|
35
|
+
- Auto-resolve imports by merging lists, dependencies by newer version, additions by including both
|
|
36
|
+
- For complex conflicts prompt for strategy: ours, theirs, or manual merge
|
|
37
|
+
- Validate with `npm run typecheck && npm run lint` before staging
|
|
38
|
+
- Stage resolved files with `git add` only after validation passes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# worktree-abandon: Document and Abandon Feature
|
|
2
|
+
|
|
3
|
+
**Guideline:** Document why feature is abandoned and clean up worktree to preserve learnings for future decisions.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Recording abandonment reasons and learnings prevents repeated failed attempts and provides valuable context for future development decisions.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Document abandonment in insights/abandoned-features/
|
|
11
|
+
cat > insights/abandoned-features/auth-redesign-2026-01.md << 'EOF'
|
|
12
|
+
## Feature: Authentication UI Redesign
|
|
13
|
+
|
|
14
|
+
**Goal:** Redesign login form with multi-step experience
|
|
15
|
+
|
|
16
|
+
**Work Completed:**
|
|
17
|
+
- Step 1: Email validation form (80% complete)
|
|
18
|
+
- Step 2: Password reset flow (30% complete)
|
|
19
|
+
- Custom TOTP implementation (blocked by deps)
|
|
20
|
+
|
|
21
|
+
**Reason for Abandonment:**
|
|
22
|
+
Third-party auth provider API changed requirements. Multi-step approach conflicts with new spec.
|
|
23
|
+
|
|
24
|
+
**Alternative:** Use updated provider's OAuth 2.0 flow, leverage built-in MFA.
|
|
25
|
+
|
|
26
|
+
**Learnings:** Don't commit to custom flow when third-party alternatives exist. Test assumptions with provider early.
|
|
27
|
+
|
|
28
|
+
**Time Invested:** 12 hours across 5 commits
|
|
29
|
+
**Date:** 2026-01-15
|
|
30
|
+
**Branch:** auth/redesign-feature
|
|
31
|
+
EOF
|
|
32
|
+
|
|
33
|
+
# Clean up worktree and branch
|
|
34
|
+
git worktree remove ../services-feature-auth-redesign
|
|
35
|
+
git branch -D auth/redesign-feature
|
|
36
|
+
|
|
37
|
+
# Push archived branch to preserve history
|
|
38
|
+
git tag abandoned/auth-redesign-2026-01 origin/auth/redesign-feature
|
|
39
|
+
git push origin abandoned/auth-redesign-2026-01
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Techniques:**
|
|
43
|
+
- Verify in feature worktree
|
|
44
|
+
- Gather context: feature name, plan, commits, work completed
|
|
45
|
+
- Prompt for abandonment reason
|
|
46
|
+
- Document in `insights/abandoned-features/<feature>-<date>.md`
|
|
47
|
+
- Clean up: `git worktree remove <path>` and `git branch -D <branch>`
|
|
48
|
+
- Clean git config entries
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# worktree-cleanup: Clean Up Stale and Merged Worktrees
|
|
2
|
+
|
|
3
|
+
**Guideline:** Remove stale and merged feature worktrees to keep workspace clean and organized.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Prevents workspace clutter from old feature worktrees by identifying merged worktrees (fully integrated) and stale worktrees (30+ days without changes).
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# List all worktrees and their status
|
|
11
|
+
git worktree list
|
|
12
|
+
|
|
13
|
+
# Output:
|
|
14
|
+
# /home/user/project 9a3c5e2 [master]
|
|
15
|
+
# /home/user/project-feature-auth 7f2b1d8 [feature/auth-redesign] (merged)
|
|
16
|
+
# /home/user/project-feature-db c4a8e1f [feature/db-migration] (30+ days no commits)
|
|
17
|
+
|
|
18
|
+
# Cleanup will identify and remove merged/stale worktrees
|
|
19
|
+
# Merged: feature/auth-redesign (fully merged into master)
|
|
20
|
+
# Stale: feature/db-migration (70 days since last commit)
|
|
21
|
+
|
|
22
|
+
# Remove merged worktree
|
|
23
|
+
git worktree remove ../project-feature-auth
|
|
24
|
+
git branch -d feature/auth-redesign
|
|
25
|
+
|
|
26
|
+
# Remove stale worktree (but keep if uncommitted changes)
|
|
27
|
+
git worktree remove ../project-feature-db --force
|
|
28
|
+
git branch -d feature/db-migration
|
|
29
|
+
|
|
30
|
+
# Verify cleanup
|
|
31
|
+
git worktree list
|
|
32
|
+
# Only main worktree remains
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Techniques:**
|
|
36
|
+
- List worktrees: `git worktree list`
|
|
37
|
+
- Identify feature worktrees with `*-feature-*` pattern
|
|
38
|
+
- Check merge status: `git branch --merged <source>`
|
|
39
|
+
- Categorize: merged, stale (>30 days no commits), active
|
|
40
|
+
- Remove selected: `git worktree remove <path>` + `git branch -d <branch>`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# worktree-commit: Auto-Commit in Worktree with Plan Context
|
|
2
|
+
|
|
3
|
+
**Guideline:** Commit worktree changes with auto-generated messages enhanced by plan context to align with implementation objectives.
|
|
4
|
+
|
|
5
|
+
**Rationale:** Extending auto-commit with plan awareness generates contextual messages that document not just what changed, but how it aligns with the overall feature plan.
|
|
6
|
+
|
|
7
|
+
**Example:**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# In feature worktree: services-feature-auth-flow
|
|
11
|
+
cd ../services-feature-auth-flow
|
|
12
|
+
|
|
13
|
+
# Add implementation and tests
|
|
14
|
+
# services/auth/flow.ts (220 lines)
|
|
15
|
+
# services/auth/__tests__/flow.test.ts (180 lines)
|
|
16
|
+
|
|
17
|
+
# Worktree detects changes and generates message with plan context
|
|
18
|
+
git status --porcelain
|
|
19
|
+
# M services/auth/flow.ts
|
|
20
|
+
# A services/auth/__tests__/flow.test.ts
|
|
21
|
+
|
|
22
|
+
# Plan stored in git config was: "Implement email+password flow with TOTP"
|
|
23
|
+
# Auto-generated message:
|
|
24
|
+
# "feat: Implement email+password flow with TOTP
|
|
25
|
+
#
|
|
26
|
+
# Add LoginFlow component with email validation and TOTP verification.
|
|
27
|
+
# Test coverage: happy path, invalid email, expired TOTP."
|
|
28
|
+
|
|
29
|
+
git add -A
|
|
30
|
+
git commit -m "feat: Implement email+password flow with TOTP
|
|
31
|
+
|
|
32
|
+
Add LoginFlow component with email validation and TOTP verification.
|
|
33
|
+
Test coverage: happy path, invalid email, expired TOTP."
|
|
34
|
+
|
|
35
|
+
# Optional: push with CI skip
|
|
36
|
+
git push -o ci.skip origin HEAD:services/feature/auth-flow
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Techniques:**
|
|
40
|
+
- Detect worktree name from directory
|
|
41
|
+
- Check changes: `git status --porcelain`
|
|
42
|
+
- Analyze changed files: test, docs, source, config
|
|
43
|
+
- Read plan: `git config branch.<branch>.plan`
|
|
44
|
+
- Generate message using file patterns, diff stats, plan context
|
|
45
|
+
- Commit: `git add -A && git commit -m "<type>: <description>"`
|
|
46
|
+
- Optionally push: `git push -o ci.skip origin HEAD:<branch>`
|