6ff05fd7ea
Установлены 9 инструментов фазы 0 + lefthook для pre-commit/pre-push hooks. Конфиги в корне: - package.json + package-lock.json (10 dev-deps, 7 npm-скриптов) - .markdownlint.json + .markdownlintignore — стиль Markdown - cspell.json + cspell-words.txt — орфография ru/en + 350+ проектных терминов - .lychee.toml — проверка ссылок с игнором плейсхолдеров - .stylelintrc.json — стиль CSS в HTML-прототипах - .gitleaks.toml — 8 кастомных правил для РФ-контекста (телефон, ИНН, ОГРН, паспорт, Yandex Cloud-tokens, webhook secrets) + allowlist для масок - pa11y.config.json — WCAG 2.1 AA для web/01-login.html и web/02-dashboard.html - .mcp.json — 3 MCP-сервера (Playwright, GitHub через офиц. hosted endpoint, PostgreSQL — заглушка) - .gitignore — node_modules, bin/*, артефакты + задел на фазы 1–3 - .claude/settings.json — permissions allow/deny + хук авто-fix .md - lefthook.yml — pre-commit (gitleaks + markdownlint + cspell + stylelint) и pre-push (полный gitleaks по истории) Связано: docs/Tooling_v8_3.md (Прил. Н v1.0) — реестр 28 инструментов в 4 фазах; CLAUDE.md в корне — оперативная карта приоритета правил и команд. Архитектурных изменений в проекте: 0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
72 lines
3.4 KiB
YAML
72 lines
3.4 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 разберись с каждой находкой.
|
||
|
||
# Подавить служебный вывод
|
||
skip_output:
|
||
- meta
|
||
- skips
|