KC's Workspace
    Preparing search index...

    Module @kcconfigs/lefthook - v0.1.1

    @kcconfigs/lefthook

    Shared Lefthook configuration for Git hooks. Provides composable presets, features, and individual hook definitions that can be mixed and matched via Lefthook's extends mechanism.

    • Lefthook: 2.0.0 or higher
    pnpm add --save-dev @kcconfigs/lefthook
    

    Then install the Git hooks:

    lefthook install
    

    Create a lefthook.yaml at your repository root and extend the default preset along with the hooks you need:

    # $schema: https://raw.githubusercontent.com/evilmartians/lefthook/v2.0.9/schema.json

    extends:
    - ./node_modules/@kcconfigs/lefthook/src/presets/default.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/commit-msg/commitlint.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-commit/biome-check.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-push/vitest.yaml

    templates:
    pm_cmd: pnpm

    Presets bundle multiple features together for convenience.

    Name Import path Description
    default @kcconfigs/lefthook Enables strict and minimal-output features

    Features configure Lefthook behavior and can be extended individually.

    Name Import path Description
    strict @kcconfigs/lefthook/features/strict Asserts Lefthook is installed and enforces minimum version 2.0.0
    minimal-output @kcconfigs/lefthook/features/minimal-output Limits output to metadata, summary, and execution output for cleaner logs

    Each hook is a standalone YAML file that can be extended independently. All hooks use the {pm_cmd} template variable for the package manager command (see Templates).

    Hook Import path Description
    commitlint @kcconfigs/lefthook/hooks/commit-msg/commitlint Validates commit messages with commitlint

    Pre-commit hooks run on staged files and autofix where possible (stage_fixed: true).

    Hook Import path Glob Description
    biome-check @kcconfigs/lefthook/hooks/pre-commit/biome-check JS/TS/JSON files Runs biome check --fix --unsafe
    biome-format @kcconfigs/lefthook/hooks/pre-commit/biome-format JS/TS/JSON files Runs biome format --fix --unsafe
    biome-lint @kcconfigs/lefthook/hooks/pre-commit/biome-lint JS/TS/JSON files Runs biome lint --fix --unsafe
    ls-lint @kcconfigs/lefthook/hooks/pre-commit/ls-lint All staged files Validates file naming conventions
    textlint @kcconfigs/lefthook/hooks/pre-commit/textlint *.md, *.txt Lints and fixes text/Markdown files
    type-check @kcconfigs/lefthook/hooks/pre-commit/type-check *.ts, *.tsx, *.d.cts/mts Runs tsc --noEmit
    vitest @kcconfigs/lefthook/hooks/pre-commit/vitest JS/TS files Runs the test suite via Vitest

    Pre-push hooks run broader validation checks before pushing. Unlike pre-commit hooks, these do not autofix files.

    Hook Import path Glob Description
    biome-check @kcconfigs/lefthook/hooks/pre-push/biome-check JS/TS/JSON files Runs biome check (read-only)
    biome-format @kcconfigs/lefthook/hooks/pre-push/biome-format JS/TS/JSON files Runs biome format (read-only)
    biome-lint @kcconfigs/lefthook/hooks/pre-push/biome-lint JS/TS/JSON files Runs biome lint (read-only)
    type-check @kcconfigs/lefthook/hooks/pre-push/type-check *.ts, *.tsx, *.d.cts/mts Runs tsc --noEmit
    vitest @kcconfigs/lefthook/hooks/pre-push/vitest JS/TS files Runs the full test suite via Vitest

    Hooks reference the {pm_cmd} Lefthook template variable so they stay package-manager agnostic. Define it in your lefthook.yaml:

    templates:
    pm_cmd: pnpm # or npm, yarn, bun

    A full working configuration used in this monorepo:

    # $schema: https://raw.githubusercontent.com/evilmartians/lefthook/v2.0.9/schema.json

    extends:
    # Preset (strict + minimal-output)
    - ./node_modules/@kcconfigs/lefthook/src/presets/default.yaml

    # Commit message validation
    - ./node_modules/@kcconfigs/lefthook/src/hooks/commit-msg/commitlint.yaml

    # Pre-commit hooks
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-commit/type-check.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-commit/biome-check.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-commit/textlint.yaml
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-commit/ls-lint.yaml

    # Pre-push hooks
    - ./node_modules/@kcconfigs/lefthook/src/hooks/pre-push/vitest.yaml

    templates:
    pm_cmd: pnpm