f1ea6a15a6
- cspell-words.txt: удалено сломанное `ofеrtу` (кириллица в латыни, пропущено мимо словаря; нормальные `оферта`/`оферты` уже есть). - .gitignore: `.playwright-mcp/` → `**/.playwright-mcp/` (артефакт может появиться в любом подкаталоге, не только в корне). - pa11y.config.json: добавлен `web/03-deals.html` (готовый прототип №03, ранее не попадал в a11y-check). - lefthook.yml: pre-push +lychee-links — битые ссылки ловятся до push, как и было задумано (Прил. Н §1, в комментарии было, в jobs не было). - CLAUDE.md §4: `gitleaks detect` / `gitleaks protect` → `./bin/gitleaks.exe ...` (на Windows бинарь в `bin/`, не в PATH). - README.md: подпись `Прил. Л v0.1 от 05.05.2026` → `v0.4 от 06.05.2026`, синхронизация с таблицей версий (последняя запись v0.4). Линтеры (markdownlint, cspell на затронутых .md) — чисто. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79 lines
3.8 KiB
YAML
79 lines
3.8 KiB
YAML
# =============================================================================
|
||
# lefthook.yml — Лидпоток (фаза 0)
|
||
# =============================================================================
|
||
# Документация: https://lefthook.dev
|
||
# Установка хуков: npx lefthook install
|
||
# Удаление хуков: npx lefthook uninstall
|
||
# Ручной pre-commit: npx lefthook run pre-commit
|
||
# Пропуск (один раз): LEFTHOOK=0 git commit -m "..."
|
||
#
|
||
# Принципы (Прил. Н §1):
|
||
# - Pre-commit для быстрых проверок: gitleaks, markdownlint, cspell, Stylelint
|
||
# - Pre-push для медленных: полный gitleaks по истории + lychee
|
||
# - Pa11y — только в CI (требует Chromium)
|
||
# =============================================================================
|
||
|
||
min_version: 2.0.0
|
||
|
||
# Pre-commit: проверки на staged-файлах перед каждым git commit
|
||
pre-commit:
|
||
parallel: false
|
||
jobs:
|
||
# 1. gitleaks — поиск ПДн / токенов / API-ключей в staged
|
||
# Правило §5.2 правил Claude. Блокирует коммит при находке.
|
||
- name: gitleaks
|
||
run: ./bin/gitleaks.exe protect --staged --config .gitleaks.toml --no-banner
|
||
fail_text: |
|
||
gitleaks нашёл потенциальные ПДн / токены / API-ключи в diff.
|
||
Если это маска / тестовое значение — добавь в allowlist .gitleaks.toml.
|
||
Если реальные данные — удали и используй маски (+7XXXXXXXXXX, ***@***).
|
||
|
||
# 2. markdownlint — стиль Markdown с авто-fix
|
||
- name: markdownlint
|
||
glob: "*.md"
|
||
run: npx markdownlint-cli2 --fix {staged_files}
|
||
stage_fixed: true
|
||
fail_text: |
|
||
markdownlint нашёл проблемы, которые не исправляются автоматически.
|
||
Запусти `npm run lint:md:fix` или поправь руками.
|
||
|
||
# 3. cspell — орфография на staged .md
|
||
- name: cspell
|
||
glob: "*.md"
|
||
run: npx cspell --no-progress --no-summary {staged_files}
|
||
fail_text: |
|
||
cspell нашёл слова, отсутствующие в словаре.
|
||
Если это валидное слово проекта — добавь в cspell-words.txt.
|
||
Если опечатка — поправь.
|
||
|
||
# 4. Stylelint — стиль CSS в HTML-прототипах
|
||
- name: stylelint
|
||
glob: "*.html"
|
||
run: npx stylelint {staged_files}
|
||
fail_text: |
|
||
Stylelint нашёл проблемы в CSS прототипа.
|
||
Запусти `npx stylelint --fix <file>` где возможно.
|
||
|
||
# Pre-push: проверки перед git push (медленнее, но реже запускаются)
|
||
pre-push:
|
||
parallel: false
|
||
jobs:
|
||
# 5. Полный gitleaks-скан всей истории (не только staged)
|
||
- name: gitleaks-full-history
|
||
run: ./bin/gitleaks.exe detect --source . --no-banner --config .gitleaks.toml --redact
|
||
fail_text: |
|
||
gitleaks нашёл утечки в истории коммитов.
|
||
Перед push разберись с каждой находкой.
|
||
|
||
# 6. lychee — проверка всех ссылок в .md / .html (медленно, но ловит битые ссылки до push)
|
||
- name: lychee-links
|
||
run: ./bin/lychee.exe --config .lychee.toml "docs/**/*.md" "db/**/*.md" "*.md" "web/**/*.html"
|
||
fail_text: |
|
||
lychee нашёл битые ссылки.
|
||
Запусти `npm run links` локально, поправь URL или добавь в `.lychee.toml` exclude.
|
||
|
||
# Подавить служебный вывод
|
||
skip_output:
|
||
- meta
|
||
- skips
|