Erzwingt Struktur über Überschriften statt horizontaler Trennlinien. - Custom Rule hooks/markdownlint-rules/no-hr.js erkennt --- / *** / ___ über das markdown-it-Token "hr" und liefert fixInfo zum Entfernen. - .markdownlint-cli2.jsonc aktiviert no-hr und deaktiviert MD013/MD040/MD041/MD060 (Begründung jeweils inline kommentiert). - hooks/auto-format.sh erweitert um md|markdown-Zweig mit zwei --fix-Pässen (zweiter Pass räumt MD012-Doppel-Leerzeilen auf, die nach HR-Entfernung entstehen). - bootstrap.sh installiert markdownlint-cli2 idempotent via npm -g. Verifiziert: - Custom Rule meldet --- und *** als Verstoß. - Zwei --fix-Pässe entfernen Trennlinien und überflüssige Leerzeilen, Endzustand 0 Fehler. - Bestehende README in /home/martin/Darktable/README.md ist nach Konfig-Anpassung 0 Fehler. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
50 lines
1.4 KiB
Bash
Executable File
50 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# PostToolUse-Hook: Formatiert geänderte Dateien nach Edit/Write
|
|
# Wird von settings.json nach Edit- und Write-Tool-Aufrufen ausgeführt
|
|
|
|
set -euo pipefail
|
|
|
|
# Dateiname aus Umgebungsvariable (Claude Code setzt CLAUDE_TOOL_INPUT_FILE_PATH)
|
|
FILE="${CLAUDE_TOOL_INPUT_FILE_PATH:-}"
|
|
|
|
if [[ -z "$FILE" || ! -f "$FILE" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
EXT="${FILE##*.}"
|
|
|
|
case "$EXT" in
|
|
py)
|
|
if command -v ruff &>/dev/null; then
|
|
ruff format --quiet "$FILE" 2>/dev/null || true
|
|
ruff check --fix --quiet "$FILE" 2>/dev/null || true
|
|
fi
|
|
;;
|
|
js|ts|vue|jsx|tsx)
|
|
DIR=$(dirname "$FILE")
|
|
if [[ -f "$DIR/package.json" ]] || [[ -f "$DIR/../package.json" ]]; then
|
|
if [[ -x "$DIR/node_modules/.bin/eslint" ]] || [[ -x "$DIR/../node_modules/.bin/eslint" ]]; then
|
|
npx eslint --fix --quiet "$FILE" 2>/dev/null || true
|
|
fi
|
|
fi
|
|
;;
|
|
sh)
|
|
if command -v shellcheck &>/dev/null; then
|
|
shellcheck "$FILE" || true
|
|
fi
|
|
;;
|
|
md|markdown)
|
|
if command -v markdownlint-cli2 &>/dev/null; then
|
|
# Erster Pass: entfernt Trennlinien und sonstige fixbare Verstöße.
|
|
# Zweiter Pass: räumt die nun verwaisten Mehrfach-Leerzeilen auf (MD012).
|
|
for _ in 1 2; do
|
|
markdownlint-cli2 \
|
|
--config /mnt/projekte/claude-workflow/.markdownlint-cli2.jsonc \
|
|
--fix "$FILE" >/dev/null 2>&1 || true
|
|
done
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
exit 0
|