-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.pre-commit-config.yaml
More file actions
131 lines (120 loc) · 4.25 KB
/
.pre-commit-config.yaml
File metadata and controls
131 lines (120 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Pre-commit hooks for asset-aware-mcp
# Install: uv run pre-commit install
# Run all: uv run pre-commit run --all-files
# Update: uv run pre-commit autoupdate
default_language_version:
python: python3
repos:
# ── General file hygiene ────────────────────────────────────
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- id: end-of-file-fixer
- id: check-yaml
args: [--unsafe] # allow custom YAML tags
- id: check-toml
- id: check-json
types: [json]
- id: check-added-large-files
args: [--maxkb=1024]
- id: check-merge-conflict
- id: check-symlinks
- id: debug-statements
- id: detect-private-key
- id: mixed-line-ending
args: [--fix=lf]
# ── Python: Ruff (lint + format) ────────────────────────────
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.7
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
types_or: [python, pyi]
- id: ruff-format
types_or: [python, pyi]
# ── Python: MyPy type checking ──────────────────────────────
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.15.0
hooks:
- id: mypy
args: [--ignore-missing-imports]
additional_dependencies:
- pydantic>=2.0.0
- types-PyYAML>=6.0.0
pass_filenames: false
entry: mypy src
types: [python]
# ── Security: Bandit ────────────────────────────────────────
- repo: https://github.com/PyCQA/bandit
rev: 1.8.3
hooks:
- id: bandit
args: [-c, pyproject.toml, -r]
additional_dependencies: ["bandit[toml]"]
files: ^src/
# ── Commit message: Conventional Commits ────────────────────
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v4.0.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args:
- feat
- fix
- docs
- refactor
- test
- chore
- style
- perf
- ci
- build
- revert
# ── TypeScript / VS Code Extension ──────────────────────────
- repo: local
hooks:
# ESLint for TypeScript
- id: eslint-vsx
name: eslint (vscode-extension)
entry: cmd /c "cd vscode-extension && npx eslint ."
language: system
files: ^vscode-extension/src/.*\.[tj]sx?$
pass_filenames: false
# TypeScript compile check
- id: tsc-vsx
name: tsc compile (vscode-extension)
entry: cmd /c "cd vscode-extension && npx tsc -p ./ --noEmit"
language: system
files: ^vscode-extension/src/.*\.tsx?$
pass_filenames: false
# Mocha unit tests (vscode-extension)
- id: mocha-vsx
name: mocha unit tests (vscode-extension)
entry: cmd /c "cd vscode-extension && npm run test:unit"
language: system
files: ^vscode-extension/src/.*\.tsx?$
pass_filenames: false
stages: [pre-push]
verbose: true
# ── Local hooks ─────────────────────────────────────────────
- repo: local
hooks:
# Commit size guard (max 30 files per commit)
- id: commit-size-guard
name: commit-size-guard (max 30 files)
entry: python scripts/commit_size_guard.py
language: python
always_run: true
pass_filenames: false
stages: [pre-commit]
# Quick pytest smoke (unit tests only, skip slow)
- id: pytest-smoke
name: pytest-smoke (unit tests)
entry: uv run pytest tests/unit -x -q --timeout=30 --no-header
language: system
always_run: true
pass_filenames: false
stages: [pre-push]
verbose: true