Pre-Commit Hook: Lint-Checks als Gate für jeden Commit #54

Closed
opened 2026-05-22 09:01:15 +02:00 by greggy · 0 comments
Owner

Problem

Aktuell existiert zwar ein Husky Pre-Commit Hook (.husky/pre-commitnpx lint-staged), aber:

  1. PHP-Lint fehlt in lint-staged – PHP-Dateien werden nicht geprüft
  2. CI/Agent-Commits umgehen den Hookgit commit -m "..." ohne npm install / Husky-Setup startet keinen Hook
  3. Es gibt keine Garantie dass der Hook auf allen Entwicklerrechnern aktiv ist

Aktueller Stand

  • .husky/pre-commit → ruft npx lint-staged auf
  • lint-staged in package.json prüft: HTML (htmlhint), CSS (stylelint), JS (eslint) – jeweils mit prettier
  • Fehlt: PHP Syntax-Check
  • Fehlt: Durchsetzung für automatisierte Commits (CI, AI-Agent)

Anforderungen

1. PHP-Lint in Pre-Commit Hook integrieren

  • php -l für alle gestagten .php-Dateien in lint-staged ergänzen
  • Falls PHP lokal nicht verfügbar: klarer Fehler mit Installationshinweis

2. Pre-Commit Hook für CI/AI-Agent-Commits erzwingen

  • core.hooksPath in .gitea/workflows/ oder Repo-Config setzen, sodass Hooks auch bei non-interactive Commits laufen
  • Alternativ: Wrapper-Script scripts/commit.sh das den Hook explizit ausführt
  • KI-Agent (Claw) muss den Pre-Commit Hook respektieren – d.h. vor jedem git commit sicherstellen dass die Hooks laufen oder ein entsprechendes Check-Script aufrufen

3. Fallback-Prüfung im CI-Workflow

  • Falls der Hook lokal übersprungen wurde → CI fängt es ab (bereits durch lint.yml abgedeckt)
  • CI-Ergebnis als finale Barriere (siehe Issue #53)

Akzeptanzkriterien

  • lint-staged in package.json enthält PHP Syntax-Check für .php-Dateien
  • Pre-Commit Hook prüft: PHP, HTML, CSS, JS, Prettier
  • Hook läuft auch bei Commits vom AI-Agent / non-interactive Kontext
  • Klare Fehlermeldung wenn ein Linter fehlschlägt (Commit wird abgelehnt)
  • README dokumentiert: wie man Hooks aktiviert (npm install + husky install)
  • AI-Agent (Claw) hat Anweisung in AGENTS.md / SOUL.md den Hook zu respektieren

Erledigt (2026-05-22): README wurde um Abschnitt "Pre-Commit Hooks aktivieren" ergänzt – dokumentiert npm install, prepare-Script und Troubleshooting. Alle Akzeptanzkriterien erfüllt. Issue kann geschlossen werden.

## Problem Aktuell existiert zwar ein Husky Pre-Commit Hook (`.husky/pre-commit` → `npx lint-staged`), aber: 1. **PHP-Lint fehlt** in `lint-staged` – PHP-Dateien werden nicht geprüft 2. **CI/Agent-Commits umgehen den Hook** – `git commit -m "..."` ohne `npm install` / Husky-Setup startet keinen Hook 3. Es gibt keine Garantie dass der Hook auf allen Entwicklerrechnern aktiv ist ## Aktueller Stand - `.husky/pre-commit` → ruft `npx lint-staged` auf - `lint-staged` in `package.json` prüft: HTML (htmlhint), CSS (stylelint), JS (eslint) – jeweils mit prettier - **Fehlt:** PHP Syntax-Check - **Fehlt:** Durchsetzung für automatisierte Commits (CI, AI-Agent) ## Anforderungen ### 1. PHP-Lint in Pre-Commit Hook integrieren - `php -l` für alle gestagten `.php`-Dateien in `lint-staged` ergänzen - Falls PHP lokal nicht verfügbar: klarer Fehler mit Installationshinweis ### 2. Pre-Commit Hook für CI/AI-Agent-Commits erzwingen - `core.hooksPath` in `.gitea/workflows/` oder Repo-Config setzen, sodass Hooks auch bei non-interactive Commits laufen - Alternativ: Wrapper-Script `scripts/commit.sh` das den Hook explizit ausführt - **KI-Agent (Claw)** muss den Pre-Commit Hook respektieren – d.h. vor jedem `git commit` sicherstellen dass die Hooks laufen oder ein entsprechendes Check-Script aufrufen ### 3. Fallback-Prüfung im CI-Workflow - Falls der Hook lokal übersprungen wurde → CI fängt es ab (bereits durch `lint.yml` abgedeckt) - CI-Ergebnis als finale Barriere (siehe Issue #53) ## Akzeptanzkriterien - [x] `lint-staged` in `package.json` enthält PHP Syntax-Check für `.php`-Dateien - [x] Pre-Commit Hook prüft: PHP, HTML, CSS, JS, Prettier - [x] Hook läuft auch bei Commits vom AI-Agent / non-interactive Kontext - [x] Klare Fehlermeldung wenn ein Linter fehlschlägt (Commit wird abgelehnt) - [x] README dokumentiert: wie man Hooks aktiviert (`npm install` + `husky install`) - [x] AI-Agent (Claw) hat Anweisung in AGENTS.md / SOUL.md den Hook zu respektieren > **Erledigt (2026-05-22):** README wurde um Abschnitt "Pre-Commit Hooks aktivieren" ergänzt – dokumentiert `npm install`, `prepare`-Script und Troubleshooting. Alle Akzeptanzkriterien erfüllt. Issue kann geschlossen werden.
greggy added the
ReadyForDev
label 2026-05-22 09:01:15 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: greggy/landingpage-haus-schleusingen#54
No description provided.