repos: - repo: https://github.com/compilerla/conventional-pre-commit rev: v2.4.0 hooks: - id: conventional-pre-commit stages: [commit-msg] - repo: https://github.com/gitleaks/gitleaks rev: v8.21.2 hooks: - id: gitleaks stages: ['pre-commit'] - repo: https://github.com/jumanjihouse/pre-commit-hooks rev: 3.0.0 hooks: - id: shellcheck args: [--severity=warning] stages: ['pre-commit'] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.5.0 hooks: - id: end-of-file-fixer stages: ['pre-commit'] - id: check-json stages: ['pre-commit'] - id: pretty-format-json stages: ['pre-commit'] args: [--autofix] - id: check-yaml stages: ['pre-commit'] - id: trailing-whitespace stages: ['pre-commit'] - id: check-merge-conflict stages: ['pre-commit'] - id: detect-private-key stages: ['pre-commit'] - id: check-toml stages: ['pre-commit'] - id: check-ast stages: ['pre-commit'] - repo: local hooks: - id: run-tests name: Run test suite description: Run all test-*.sh files and bats suite entry: bash tests/run-tests.sh language: system stages: [pre-push] pass_filenames: false always_run: true - id: check-manifests name: Check plugin manifests description: Validate marketplace.json and plugin.json paths entry: bash scripts/check-manifests.sh language: system stages: [pre-push] pass_filenames: false always_run: true - id: validate-plugins name: Validate plugins description: Run claude plugin validate --strict on every plugin directory entry: bash -c 'for d in plugins/*/; do claude plugin validate --strict "$d" || exit 1; done' language: system stages: [pre-push] pass_filenames: false always_run: true - id: validate-marketplace name: Validate marketplace manifest description: Run claude plugin validate --strict on the root marketplace manifest entry: claude plugin validate --strict .claude-plugin/marketplace.json language: system stages: [pre-push] pass_filenames: false always_run: true - id: skill-frontmatter stages: ['pre-commit'] name: SKILL.md frontmatter validation description: Ensure SKILL.md files have required frontmatter fields entry: bash language: system files: 'SKILL\.md$' args: - -c - | for f in "$@"; do if [[ -f "$f" ]]; then if ! grep -q "^name:" "$f" || ! grep -q "^description:" "$f"; then echo "ERROR: $f is missing required frontmatter fields (name: and description:)" exit 1 fi fi done - id: vale-audit-prefilter stages: ['pre-commit'] name: Vale audit prefilter description: Run Vale against skill/agent markdown files as a deterministic prefilter for skill-audit/agent-audit entry: scripts/vale-wrap.sh --config .vale.ini language: script files: '^plugins/[^/]+/(skills/[^/]+/SKILL\.md|agents/[^/]+\.md)$' pass_filenames: true - repo: meta hooks: - id: check-hooks-apply - id: check-useless-excludes