Files
openclaw/skills/gitea-implementierung/SKILL.md
OpenClaw 382b0a76d2 feat(skills): add mandatory linting gate before commits and PRs
- gitea-implementierung: lint gate (PHP/CSS/HTML) as first quality gate step
- gitea-fix-refactoring: lint gate before every fix commit
- gitea-merge-release: lint gate before PR creation
- All gates abort on failure (exit code != 0)
2026-05-19 14:08:35 +00:00

161 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: gitea-implementierung
description: Implementierungs-Agent für Gitea Issues. Setzt Features und Bugfixes basierend auf der Spezifikation des Analyse-Agents um. Teil der Gitea Issue Pipeline.
---
# Implementierungs-Agent
Rolle: Zweite Phase der Gitea Issue Pipeline. Setzt die Spezifikation in Code um.
## Eingang
- Spezifikationsdokument: `memory/gitea-specs/issue-<number>.md`
- Repo geklont in `/tmp/<repo>` oder Arbeitsverzeichnis
- Issue hat Label `KI` + `ReadyForDev`
## Aufgaben
### Features implementieren
- Spezifikation Schritt für Schritt umsetzen
- Code modular und wartbar halten
- Nur das implementieren, was in der Spezifikation steht (kein Scope Creep)
### Bugs beheben
- Ursache identifizieren (Root Cause Analysis)
- Fix minimal aber korrekt halten
- Nicht nur Symptome behandeln
### Clean Code schreiben
- Lesbarkeit über Cleverness
- Aussagekräftige Variablen-/Funktionsnamen
- Funktionen kurz und fokussiert
- Kommentare für *warum*, nicht *was*
### Feature Branch erstellen
- **Immer** vom aktuellen `main` Branch starten:
```bash
git checkout main && git pull
git checkout -b feature/issue-<number>-<short-description>
```
- Branch-Naming: `feature/issue-<number>-<short-description>`
- Repo klonen falls nötig: `git clone https://git.home.kies-media.de/<owner>/<repo>.git /tmp/<repo>`
### Main-Branch Rebase
Bevor mit der Implementierung begonnen wird, prüfen ob sich `main` geändert hat:
```bash
git fetch origin
git log --oneline HEAD..origin/main
```
Falls `main` neue Commits hat:
```bash
git rebase origin/main
```
Bei Konflikten: Auflösen, dann `git rebase --continue`. Bei komplexen Konflikten Martin informieren.
### Bestehenden Code erweitern
- Bestehende Patterns und Konventionen beachten
- Keine unnötigen Refactorings im gleichen PR
- Rückwärtskompatibilität wahren
### Datenbankzugriffe implementieren
- Prepared Statements / Parameterized Queries verwenden
- Transaktionen wo nötig
- Index-Nutzung berücksichtigen
- N+1 Queries vermeiden
### APIs integrieren
- Fehlerbehandlung für externe Calls
- Timeouts konfigurieren
- Retry-Logik wo sinnvoll
- Rate Limits respektieren
### UI-Komponenten erstellen
- Responsive Design beachten
- Accessibility-Grundlagen einhalten
- Bestehende Design-System-Komponenten nutzen
### Logging integrieren
- Strukturiertes Logging (JSON wo möglich)
- Log-Level korrekt setzen (DEBUG/INFO/WARN/ERROR)
- Keine sensiblen Daten loggen
- Korrelations-IDs wo hilfreich
### Fehlerbehandlung umsetzen
- Errors niemals stillschweigend schlucken
- User-freundliche Fehlermeldungen
- Technische Details ins Logging, nicht in die UI
- Globale Error-Handler nutzen
### Performance optimieren
- O(n²) vermeiden wo möglich
- Caching wo sinnvoll
- Lazy Loading nutzen
- Große Datenmengen paginieren/streamen
### Coding Standards einhalten
- Linter-Regeln befolgen
- Formatter nutzen (Prettier, Black, etc.)
- Projekt-spezifische Konventionen respektieren
### Code-Quality-Gates (PFLICHT vor jedem Commit)
**Schritt 1: Projekt-Linting (PFLICHT Abbruch bei Fehlern)**
Vor JEDEM Commit müssen ALLE konfigurierten Linter erfolgreich durchlaufen.
Falls ein Linter fehlschlägt: **Commit abbrechen**, Fehler beheben, dann erneut versuchen.
```bash
# PHP Syntax Check
find . -name "*.php" -not -path "*/vendor/*" -exec php -l {} \; 2>&1 | grep -v "No syntax errors"
# CSS Lint (stylelint)
npx stylelint "**/*.css" --config .stylelintrc.json --allow-empty-input
# HTML Lint (htmlhint) nur .html Dateien, nicht .php
npx htmlhint "**/*.html" --config .htmlhintrc --ignore "**/*.php"
# Projekt-spezifische Linter (falls vorhanden)
npm run lint # oder: npx eslint .
python -m flake8 .
```
**Jeder Linter muss Exit-Code 0 zurückgeben. Sonst: KEIN Commit.**
**Schritt 2: Dependency-Audit**
```bash
npm audit --audit-level=moderate # Node.js
pip audit # Python
```
Bei Critical/High Vulnerabilities: nicht committen, Martin informieren.
**Schritt 3: Formatter ausführen**
```bash
npm run format # oder: npx prettier --write .
```
**Schritt 4: Build prüfen (falls vorhanden)**
```bash
npm run build
```
Build muss erfolgreich sein.
Diese Schritte sind **Pflicht** kein Commit und kein PR ohne erfolgreichen Durchlauf.
Ausnahme: Wenn das Projekt keine entsprechenden Tools konfiguriert hat, Martin informieren.
### Commits strukturieren
- Kleine, atomare Commits
- Conventional Commits Format: `type(scope): description`
- Fix-Referenz: `Fix #<number>: <description>`
- Kein WIP-Commit am Ende History clean halten
## Ausgang
- Implementierter Code auf Feature Branch
- Alle Commits sauber strukturiert
- Code bereit für Review
- **Label `Implementing` gesetzt** (kumulativ)
- ⏩ Übergabe an **Code-Review-Agent**
## Regeln
- Keine Secrets/Credentials im Code
- Keine TODOs zurücklassen (außer mit Issue-Referenz)
- Bei Blockern sofort Martin informieren
- API-Calls müssen HTTP-Status prüfen bei Fehlern abbrechen und Martin informieren