{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/root\/.claude\/projects\/-var-www\/memory\/feedback_code_standards.md",
"content": "---\nname: Strenge Code-Standards (DDD\/Hexagonal, MaxLOC 80 hart)\ndescription: User fordert für Crawler-Projekt harte Code-Grenzen, SRP\/SoC\/DRY, keine Umgehung\ntype: feedback\n---\n\n**Regel:** Für das Crawler-Projekt (und als bevorzugter Stil generell):\n- MaxLOC **80 hart** für Methoden\/Funktionen **und** Klassen (exkl. Kommentare, Leerzeilen, Docstrings).\n- 50 LOC ist Soft-Empfehlung.\n- Max. 200 LOC pro Datei, Cyclomatic ≤ 8, Params ≤ 4, Nesting ≤ 3.\n- Architektur: DDD + Hexagonal (Ports & Adapters), Dependency-Direction von außen nach innen.\n- Fokus: SRP + SoC + DRY — \"dann ist die MaxLOC-Grenze ohnehin kein Problem\".\n\n**Why:** Explizite Ansage: \"ja, hart. nicht umgehen.\" Ziel ist enforcement-by-tooling statt Goodwill; große Adapter\/Controller werden aggressiv aufgeteilt statt LOC-Grenzen zu dehnen.\n\n**How to apply:**\n- Keine Umgehung (kein `# noqa`, keine Splits nur um Linter zu befriedigen — echte SRP).\n- Repository-Klassen werden pro Entity getrennt (CrawlRepository, PageRepository, … je max 80 LOC).\n- Quality-Gateways verbindlich; Skripte liegen unter `crawler\/scripts\/` (`max_loc_linter.py`, `htmx_lint.py`, `schema_drift.py`, `check.sh`).\n- Bei neuem Code: immer ruff --select=ALL + mypy --strict + eigener max_loc_linter + import-linter ausführen.\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/root\/.claude\/projects\/-var-www\/memory\/feedback_code_standards.md",
"content": "---\nname: Strenge Code-Standards (DDD\/Hexagonal, MaxLOC 80 hart)\ndescription: User fordert für Crawler-Projekt harte Code-Grenzen, SRP\/SoC\/DRY, keine Umgehung\ntype: feedback\noriginSessionId: 2b9b2950-1c8c-4dc4-9b8f-a72bf528c2bc\n---\n**Regel:** Für das Crawler-Projekt (und als bevorzugter Stil generell):\n- MaxLOC **80 hart** für Methoden\/Funktionen **und** Klassen (exkl. Kommentare, Leerzeilen, Docstrings).\n- 50 LOC ist Soft-Empfehlung.\n- Max. 200 LOC pro Datei, Cyclomatic ≤ 8, Params ≤ 4, Nesting ≤ 3.\n- Architektur: DDD + Hexagonal (Ports & Adapters), Dependency-Direction von außen nach innen.\n- Fokus: SRP + SoC + DRY — \"dann ist die MaxLOC-Grenze ohnehin kein Problem\".\n\n**Why:** Explizite Ansage: \"ja, hart. nicht umgehen.\" Ziel ist enforcement-by-tooling statt Goodwill; große Adapter\/Controller werden aggressiv aufgeteilt statt LOC-Grenzen zu dehnen.\n\n**How to apply:**\n- Keine Umgehung (kein `# noqa`, keine Splits nur um Linter zu befriedigen — echte SRP).\n- Repository-Klassen werden pro Entity getrennt (CrawlRepository, PageRepository, … je max 80 LOC).\n- Quality-Gateways verbindlich; Skripte liegen unter `crawler\/scripts\/` (`max_loc_linter.py`, `htmx_lint.py`, `schema_drift.py`, `check.sh`).\n- Bei neuem Code: immer ruff --select=ALL + mypy --strict + eigener max_loc_linter + import-linter ausführen.\n",
"structuredPatch": [],
"originalFile": null,
"userModified": false
}
}