claudeos-core 2.3.2 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +790 -74
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.de.md +374 -876
- package/README.es.md +374 -875
- package/README.fr.md +374 -875
- package/README.hi.md +374 -875
- package/README.ja.md +374 -875
- package/README.ko.md +374 -874
- package/README.md +374 -876
- package/README.ru.md +374 -877
- package/README.vi.md +374 -875
- package/README.zh-CN.md +374 -874
- package/SECURITY.md +51 -0
- package/bin/commands/init.js +192 -37
- package/content-validator/index.js +97 -4
- package/health-checker/index.js +44 -10
- package/package.json +92 -90
- package/pass-json-validator/index.js +58 -7
- package/pass-prompts/templates/angular/pass3.md +15 -14
- package/pass-prompts/templates/common/claude-md-scaffold.md +81 -0
- package/pass-prompts/templates/common/pass3-footer.md +104 -0
- package/pass-prompts/templates/java-spring/pass3.md +19 -18
- package/pass-prompts/templates/kotlin-spring/pass3.md +23 -22
- package/pass-prompts/templates/node-express/pass3.md +18 -17
- package/pass-prompts/templates/node-fastify/pass3.md +11 -10
- package/pass-prompts/templates/node-nestjs/pass3.md +11 -10
- package/pass-prompts/templates/node-nextjs/pass3.md +18 -17
- package/pass-prompts/templates/node-vite/pass3.md +11 -10
- package/pass-prompts/templates/python-django/pass3.md +18 -17
- package/pass-prompts/templates/python-fastapi/pass3.md +18 -17
- package/pass-prompts/templates/python-flask/pass3.md +9 -8
- package/pass-prompts/templates/vue-nuxt/pass3.md +9 -8
- package/plan-installer/domain-grouper.js +45 -5
- package/plan-installer/index.js +11 -1
- package/plan-installer/scanners/scan-java.js +98 -2
- package/plan-installer/stack-detector.js +44 -0
package/README.de.md
CHANGED
|
@@ -1,1016 +1,514 @@
|
|
|
1
1
|
# ClaudeOS-Core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/claudeos-core)
|
|
4
|
+
[](https://github.com/claudeos-core/claudeos-core/actions/workflows/test.yml)
|
|
5
|
+
[](https://github.com/claudeos-core/claudeos-core/actions/workflows/test.yml)
|
|
6
|
+
[](https://nodejs.org/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/claudeos-core)
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
npx claudeos-core init
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
ClaudeOS-Core liest Ihre Codebasis, extrahiert jedes Muster, das es findet, und generiert einen vollständigen Satz von Standards, Rules, Skills und Guides, die auf _Ihr_ Projekt zugeschnitten sind. Wenn Sie danach Claude Code sagen „Erstelle ein CRUD für Bestellungen", erzeugt er Code, der exakt Ihren bestehenden Mustern entspricht.
|
|
10
|
-
|
|
11
|
-
[🇺🇸 English](./README.md) · [🇰🇷 한국어](./README.ko.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇯🇵 日本語](./README.ja.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Warum ClaudeOS-Core?
|
|
16
|
-
|
|
17
|
-
Jedes andere Claude-Code-Tool funktioniert so:
|
|
18
|
-
|
|
19
|
-
> **Mensch beschreibt das Projekt → LLM generiert Dokumentation**
|
|
20
|
-
|
|
21
|
-
ClaudeOS-Core funktioniert so:
|
|
22
|
-
|
|
23
|
-
> **Code analysiert Ihren Quellcode → Code erstellt einen maßgeschneiderten Prompt → LLM generiert Dokumentation → Code verifiziert den Output**
|
|
24
|
-
|
|
25
|
-
Das ist kein kleiner Unterschied. Hier ist, warum das wichtig ist:
|
|
26
|
-
|
|
27
|
-
### Das Kernproblem: LLMs raten. Code rät nicht.
|
|
28
|
-
|
|
29
|
-
Wenn Sie Claude bitten, „dieses Projekt zu analysieren", **rät** er Ihren Stack, Ihr ORM, Ihre Domain-Struktur.
|
|
30
|
-
Er sieht möglicherweise `spring-boot` in Ihrer `build.gradle`, übersieht aber, dass Sie MyBatis verwenden (nicht JPA).
|
|
31
|
-
Er erkennt vielleicht ein `user/`-Verzeichnis, bemerkt aber nicht, dass Ihr Projekt layer-first-Paketierung (Pattern A) verwendet, nicht domain-first (Pattern B).
|
|
32
|
-
|
|
33
|
-
**ClaudeOS-Core rät nicht.** Bevor Claude Ihr Projekt überhaupt sieht, hat Node.js-Code bereits:
|
|
34
|
-
|
|
35
|
-
- `build.gradle` / `package.json` / `pyproject.toml` geparst und Ihren Stack, ORM, DB und Paketmanager **bestätigt**
|
|
36
|
-
- Ihre Verzeichnisstruktur gescannt und Ihre Domain-Liste mit Dateianzahl **bestätigt**
|
|
37
|
-
- Ihre Projektstruktur in eines der 5 Java-Muster, Kotlin CQRS/BFF oder Next.js App Router/FSD klassifiziert
|
|
38
|
-
- Domains in optimal dimensionierte Gruppen aufgeteilt, die in Claudes Context-Fenster passen
|
|
39
|
-
- Einen stack-spezifischen Prompt mit allen bestätigten Fakten zusammengestellt
|
|
40
|
-
|
|
41
|
-
Wenn Claude den Prompt erhält, bleibt nichts mehr zu raten. Der Stack ist bestätigt. Die Domains sind bestätigt. Das Strukturmuster ist bestätigt. Claudes einzige Aufgabe besteht darin, Dokumentation zu generieren, die diesen **bestätigten Fakten** entspricht.
|
|
42
|
-
|
|
43
|
-
### Das Ergebnis
|
|
44
|
-
|
|
45
|
-
Andere Tools produzieren „allgemein gute" Dokumentation.
|
|
46
|
-
ClaudeOS-Core produziert Dokumentation, die weiß, dass Ihr Projekt `ApiResponse.ok()` verwendet (nicht `ResponseEntity.success()`), dass Ihre MyBatis-XML-Mapper in `src/main/resources/mybatis/mappers/` liegen und dass Ihre Paketstruktur `com.company.module.{domain}.controller` lautet — weil es Ihren tatsächlichen Code gelesen hat.
|
|
47
|
-
|
|
48
|
-
### Vorher & Nachher
|
|
49
|
-
|
|
50
|
-
**Ohne ClaudeOS-Core** — Sie bitten Claude Code, ein Order-CRUD zu erstellen:
|
|
51
|
-
```
|
|
52
|
-
❌ Verwendet JPA-Style-Repository (Ihr Projekt verwendet MyBatis)
|
|
53
|
-
❌ Erstellt ResponseEntity.success() (Ihr Wrapper ist ApiResponse.ok())
|
|
54
|
-
❌ Platziert Dateien in order/controller/ (Ihr Projekt nutzt controller/order/)
|
|
55
|
-
❌ Generiert englische Kommentare (Ihr Team schreibt deutsche Kommentare)
|
|
56
|
-
→ Sie verbringen 20 Minuten damit, jede generierte Datei zu korrigieren
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**Mit ClaudeOS-Core** — `.claude/rules/` enthält bereits Ihre bestätigten Muster:
|
|
60
|
-
```
|
|
61
|
-
✅ Generiert MyBatis-Mapper + XML (aus build.gradle erkannt)
|
|
62
|
-
✅ Verwendet ApiResponse.ok() (aus Ihrem tatsächlichen Quellcode extrahiert)
|
|
63
|
-
✅ Platziert Dateien in controller/order/ (Pattern A durch Struktur-Scan bestätigt)
|
|
64
|
-
✅ Deutsche Kommentare (--lang de angewendet)
|
|
65
|
-
→ Der generierte Code entspricht sofort Ihren Projektkonventionen
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Dieser Unterschied summiert sich. 10 Aufgaben/Tag × 20 Minuten gespart = **über 3 Stunden/Tag**.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Qualitätssicherung nach der Generierung (v2.3.0)
|
|
10
|
+
**Sorgen Sie dafür, dass Claude Code beim ersten Versuch den Konventionen IHRES Projekts folgt — nicht generischen Defaults.**
|
|
73
11
|
|
|
74
|
-
|
|
12
|
+
Ein deterministischer Node.js-Scanner liest zuerst Ihren Code; eine 4-Pass-Claude-Pipeline schreibt anschließend den vollständigen Satz — `CLAUDE.md` + automatisch geladenes `.claude/rules/` + Standards + Skills + L4-Memory. 10 Ausgabesprachen, 5 Post-Generation-Validatoren und eine explizite Pfad-Allowlist, die das LLM daran hindert, Dateien oder Frameworks zu erfinden, die nicht in Ihrem Code stehen.
|
|
75
13
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
Jede generierte `CLAUDE.md` wird gegen 25 strukturelle Invarianten geprüft, die nur sprachinvariante Signale verwenden: Markdown-Syntax (`^## `, `^### `), literale Dateinamen (`decision-log.md`, `failure-patterns.md` — werden nie übersetzt), Anzahl der Abschnitte, Anzahl der Unterabschnitte pro Abschnitt und Anzahl der Tabellenzeilen. Derselbe Validator liefert Byte für Byte identische Urteile für eine `CLAUDE.md`, die in Englisch, Koreanisch, Japanisch, Vietnamesisch, Hindi, Russisch, Spanisch, Chinesisch, Französisch oder Deutsch generiert wurde.
|
|
79
|
-
|
|
80
|
-
Die sprachübergreifende Garantie wird durch Test-Fixtures in allen 10 Sprachen verifiziert, einschließlich Bad-Case-Fixtures in 6 dieser Sprachen, die identische Fehlersignaturen erzeugen. Wenn eine Invariante bei einem vietnamesischen Projekt fehlschlägt, ist die Lösung dieselbe wie bei einem deutschen Projekt.
|
|
81
|
-
|
|
82
|
-
### `content-validator [10/10]` — Prüfung von Pfadangaben und MANIFEST-Konsistenz
|
|
83
|
-
|
|
84
|
-
Liest jede in Backticks eingefasste Pfadreferenz (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) aus allen generierten `.md`-Dateien und verifiziert sie gegen das tatsächliche Dateisystem. Fängt zwei Klassen von LLM-Fehlern ab, die bisher kein Tool erkannt hat:
|
|
85
|
-
|
|
86
|
-
- **`STALE_PATH`** — wenn Pass 3 oder Pass 4 einen plausiblen, aber nicht existierenden Pfad erfindet. Drei kanonische Klassen: (1) **Bezeichner-zu-Dateiname-Renormalisierung** — Ableiten eines Dateinamens aus einer TypeScript-Konstante in ALL_CAPS oder einer Java-Annotation, obwohl die tatsächliche Datei einer anderen Namenskonvention folgt; (2) **Framework-konventionelle Entry-Point-Erfindung** — Annahme einer Standard-Einstiegsdatei (Vites main-Modul, Next.js app-router providers usw.) in einem Projekt, das ein anderes Layout gewählt hat; (3) **Erfindung eines plausibel benannten Utility** — Zitieren eines konkreten Dateinamens für einen Helper, der „natürlich" unter einem sichtbaren Verzeichnis existieren würde.
|
|
87
|
-
- **`MANIFEST_DRIFT`** — wenn `claudeos-core/skills/00.shared/MANIFEST.md` einen Skill registriert, den `CLAUDE.md §6` nicht erwähnt (oder umgekehrt). Erkennt das häufige Orchestrator-plus-Sub-Skills-Layout, bei dem `CLAUDE.md §6` ein Einstiegspunkt und `MANIFEST.md` das vollständige Register ist — Sub-Skills werden als über ihren übergeordneten Orchestrator abgedeckt betrachtet.
|
|
88
|
-
|
|
89
|
-
Der Validator ist gepaart mit Prompt-Time-Prävention in `pass3-footer.md` und `pass4.md`: Anti-Pattern-Blöcke dokumentieren die spezifischen Halluzinationsklassen (Parent-Directory-Präfix, Vite/MSW/Vitest/Jest/RTL-Bibliothekskonventionen), und explizite positive Guidance weist an, Regeln nach Verzeichnis zu scopen, wenn ein konkreter Dateiname nicht in `pass3a-facts.md` steht.
|
|
90
|
-
|
|
91
|
-
### Validierung auf beliebigem Projekt ausführen
|
|
14
|
+
Funktioniert auf [**12 Stacks**](#supported-stacks) (inklusive Monorepos) — ein einziger `npx`-Befehl, ohne Konfiguration, resume-sicher, idempotent.
|
|
92
15
|
|
|
93
16
|
```bash
|
|
94
|
-
npx claudeos-core health # alle Validatoren — einzelnes Go/No-Go-Urteil
|
|
95
|
-
npx claudeos-core lint # nur strukturelle Invarianten von CLAUDE.md (beliebige Sprache)
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Unterstützte Stacks
|
|
101
|
-
|
|
102
|
-
| Stack | Erkennung | Analysetiefe |
|
|
103
|
-
|---|---|---|
|
|
104
|
-
| **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 Paketmuster | 10 Kategorien, 59 Unterpunkte |
|
|
105
|
-
| **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF Auto-Erkennung | 12 Kategorien, 95 Unterpunkte |
|
|
106
|
-
| **Node.js / Express** | `package.json` | 9 Kategorien, 57 Unterpunkte |
|
|
107
|
-
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 Kategorien, 68 Unterpunkte |
|
|
108
|
-
| **Next.js / React** | `package.json`, `next.config.*`, FSD-Unterstützung | 9 Kategorien, 55 Unterpunkte |
|
|
109
|
-
| **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 Kategorien, 58 Unterpunkte |
|
|
110
|
-
| **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 Kategorien, 55 Unterpunkte |
|
|
111
|
-
| **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 Kategorien, 58 Unterpunkte |
|
|
112
|
-
| **Node.js / Fastify** | `package.json` | 10 Kategorien, 62 Unterpunkte |
|
|
113
|
-
| **Vite / React SPA** | `package.json`, `vite.config.*` | 9 Kategorien, 55 Unterpunkte |
|
|
114
|
-
| **Angular** | `package.json`, `angular.json` | 12 Kategorien, 78 Unterpunkte |
|
|
115
|
-
|
|
116
|
-
Automatisch erkannt: Sprache und Version, Framework und Version (einschließlich Vite als SPA-Framework), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy usw.), Datenbank (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), Paketmanager (Gradle, Maven, npm, yarn, pnpm, pip, poetry), Architektur (CQRS, BFF — aus Modulnamen), Multi-Modul-Struktur (aus settings.gradle), Monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces), **Laufzeitkonfiguration aus `.env.example`** (v2.2.0 — extrahiert port/host/API-target aus über 16 Konventions-Variablennamen in den Frameworks Vite · Next.js · Nuxt · Angular · Node · Python).
|
|
117
|
-
|
|
118
|
-
**Sie geben nichts an. Alles wird automatisch erkannt.**
|
|
119
|
-
|
|
120
|
-
### `.env`-basierte Laufzeitkonfiguration (v2.2.0)
|
|
121
|
-
|
|
122
|
-
v2.2.0 fügt `lib/env-parser.js` hinzu, damit die generierte `CLAUDE.md` widerspiegelt, was das Projekt tatsächlich deklariert, statt Framework-Defaults.
|
|
123
|
-
|
|
124
|
-
- **Suchreihenfolge**: `.env.example` (kanonisch, committet) → `.env.local.example` → `.env.sample` → `.env.template` → `.env` → `.env.local` → `.env.development`. Die `.example`-Variante gewinnt, weil sie die entwickler-neutrale Shape-of-Truth ist, nicht die lokalen Overrides eines einzelnen Contributors.
|
|
125
|
-
- **Erkannte Port-Variablen-Konventionen**: `VITE_PORT` / `VITE_DEV_PORT` / `VITE_DESKTOP_PORT` / `NEXT_PUBLIC_PORT` / `NUXT_PORT` / `NG_PORT` / `APP_PORT` / `SERVER_PORT` / `HTTP_PORT` / `DEV_PORT` / `FLASK_RUN_PORT` / `UVICORN_PORT` / `DJANGO_PORT` / generisches `PORT`. Framework-spezifische Namen gewinnen gegenüber dem generischen `PORT`, wenn beide vorhanden sind.
|
|
126
|
-
- **Host & API-Target**: `VITE_DEV_HOST` / `VITE_API_TARGET` / `NEXT_PUBLIC_API_URL` / `NUXT_PUBLIC_API_BASE` / `BACKEND_URL` / `PROXY_TARGET` usw.
|
|
127
|
-
- **Priorität**: Spring Boots `application.yml` `server.port` gewinnt weiterhin (framework-native Config), dann der in `.env` deklarierte Port, dann der Framework-Default (Vite 5173, Next.js 3000, Django 8000 usw.) als letzte Rückfall-Option.
|
|
128
|
-
- **Redaction sensibler Variablen**: Werte von Variablen, die den Mustern `PASSWORD` / `SECRET` / `TOKEN` / `API_KEY` / `ACCESS_KEY` / `PRIVATE_KEY` / `CREDENTIAL` / `JWT_SECRET` / `CLIENT_SECRET` / `SESSION_SECRET` / `BEARER` / `SALT` entsprechen, werden durch `***REDACTED***` ersetzt, bevor sie einen nachgelagerten Generator erreichen. Defense-in-Depth gegen versehentlich committed Secrets in `.env.example`. `DATABASE_URL` ist explizit auf der Allowlist für die Stack-Detector-DB-Identifikations-Back-Compat.
|
|
129
|
-
|
|
130
|
-
### Java-Domain-Erkennung (5 Muster mit Fallback)
|
|
131
|
-
|
|
132
|
-
| Priorität | Muster | Struktur | Beispiel |
|
|
133
|
-
|---|---|---|---|
|
|
134
|
-
| A | Layer-first | `controller/{domain}/` | `controller/user/UserController.java` |
|
|
135
|
-
| B | Domain-first | `{domain}/controller/` | `user/controller/UserController.java` |
|
|
136
|
-
| D | Modul-Präfix | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
|
|
137
|
-
| E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
|
|
138
|
-
| C | Flach | `controller/*.java` | `controller/UserController.java` → extrahiert `user` aus Klassenname |
|
|
139
|
-
|
|
140
|
-
Service-only-Domains (ohne Controller) werden ebenfalls über die Verzeichnisse `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/` erkannt. Übersprungen: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` usw.
|
|
141
|
-
|
|
142
|
-
### Kotlin Multi-Modul Domain-Erkennung
|
|
143
|
-
|
|
144
|
-
Für Kotlin-Projekte mit Gradle-Multi-Modul-Struktur (z. B. CQRS-Monorepo):
|
|
145
|
-
|
|
146
|
-
| Schritt | Aktion | Beispiel |
|
|
147
|
-
|---|---|---|
|
|
148
|
-
| 1 | Scan von `settings.gradle.kts` nach `include()` | Findet 14 Module |
|
|
149
|
-
| 2 | Modultyp aus dem Namen ableiten | `reservation-command-server` → Typ: `command` |
|
|
150
|
-
| 3 | Domain aus dem Modulnamen extrahieren | `reservation-command-server` → Domain: `reservation` |
|
|
151
|
-
| 4 | Gleiche Domain über Module gruppieren | `reservation-command-server` + `common-query-server` → 1 Domain |
|
|
152
|
-
| 5 | Architektur erkennen | Besitzt `command`- + `query`-Module → CQRS |
|
|
153
|
-
|
|
154
|
-
Unterstützte Modultypen: `command`, `query`, `bff`, `integration`, `standalone`, `library`. Geteilte Bibliotheken (`shared-lib`, `integration-lib`) werden als spezielle Domains erkannt.
|
|
155
|
-
|
|
156
|
-
### Frontend-Domain-Erkennung
|
|
157
|
-
|
|
158
|
-
- **App Router**: `app/{domain}/page.tsx` (Next.js)
|
|
159
|
-
- **Pages Router**: `pages/{domain}/index.tsx`
|
|
160
|
-
- **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
|
|
161
|
-
- **RSC/Client-Split**: Erkennt das `client.tsx`-Muster, verfolgt die Trennung von Server-/Client-Komponenten
|
|
162
|
-
- **Nicht-standardisierte verschachtelte Pfade**: Erkennt Pages, Components und FSD-Layer unter `src/*/`-Pfaden (z. B. `src/admin/pages/dashboard/`, `src/admin/components/form/`, `src/admin/features/billing/`)
|
|
163
|
-
- **Plattform-/Tier-Split-Erkennung (v2.0.0)**: Erkennt `src/{platform}/{subapp}/`-Layouts — `{platform}` kann ein Device-/Target-Keyword sein (`desktop`, `pc`, `web`, `mobile`, `mc`, `mo`, `sp`, `tablet`, `tab`, `pwa`, `tv`, `ctv`, `ott`, `watch`, `wear`) oder ein Zugriffsebenen-Keyword (`admin`, `cms`, `backoffice`, `back-office`, `portal`). Liefert pro `(platform, subapp)`-Paar eine Domain mit dem Namen `{platform}-{subapp}` und pro Domain Zählungen für Routes/Components/Layouts/Hooks. Läuft parallel für Angular, Next.js, React und Vue (Multi-Extension-Glob `{tsx,jsx,ts,js,vue}`). Erfordert ≥2 Quelldateien pro Subapp, um rauschende 1-Datei-Domains zu vermeiden.
|
|
164
|
-
- **Monorepo-Plattform-Split (v2.0.0)**: Der Plattform-Scan matched zusätzlich `{apps,packages}/*/src/{platform}/{subapp}/` (Turborepo/pnpm-Workspace mit `src/`) und `{apps,packages}/{platform}/{subapp}/` (Workspaces ohne `src/`-Wrapper).
|
|
165
|
-
- **Fallback E — routes-Datei (v2.0.0)**: Wenn primäre Scanner + Fallbacks A–D alle 0 zurückgeben, wird `**/routes/*.{tsx,jsx,ts,js,vue}` geglobbt und nach dem Parent-of-`routes`-Verzeichnisnamen gruppiert. Erfasst React-Router-File-Routing-Projekte (CRA/Vite + `react-router`), die weder Next.js-`page.tsx` noch FSD-Layouts entsprechen. Generische Parent-Namen (`src`, `app`, `pages`) werden herausgefiltert.
|
|
166
|
-
- **Config-Fallback**: Erkennt Next.js/Vite/Nuxt aus Config-Dateien, wenn nicht in `package.json` (Monorepo-Unterstützung)
|
|
167
|
-
- **Deep-Directory-Fallback**: Für React-/CRA-/Vite-/Vue-/RN-Projekte scannt `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` in beliebiger Tiefe
|
|
168
|
-
- **Geteilte Ignore-Listen (v2.0.0)**: Alle Scanner teilen sich `BUILD_IGNORE_DIRS` (`node_modules`, `build`, `dist`, `out`, `.next`, `.nuxt`, `.svelte-kit`, `.angular`, `.turbo`, `.cache`, `.parcel-cache`, `coverage`, `storybook-static`, `.vercel`, `.netlify`) und `TEST_FILE_IGNORE` (spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`), damit Build-Outputs und Test-Fixtures die Datei-Zähler pro Domain nicht aufblähen.
|
|
169
|
-
|
|
170
|
-
### Scanner-Overrides (v2.0.0)
|
|
171
|
-
|
|
172
|
-
Legen Sie optional eine `.claudeos-scan.json` im Projekt-Root ab, um Scanner-Defaults zu erweitern, ohne das Toolkit zu editieren. Alle Felder sind **additiv** — User-Einträge erweitern die Defaults, ersetzen sie niemals:
|
|
173
|
-
|
|
174
|
-
```json
|
|
175
|
-
{
|
|
176
|
-
"frontendScan": {
|
|
177
|
-
"platformKeywords": ["kiosk"],
|
|
178
|
-
"skipSubappNames": ["legacy"],
|
|
179
|
-
"minSubappFiles": 3
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
| Feld | Default | Zweck |
|
|
185
|
-
|---|---|---|
|
|
186
|
-
| `platformKeywords` | eingebaute Liste oben | Zusätzliche `{platform}`-Keywords für den Platform-Scan (z. B. `kiosk`, `vr`, `embedded`) |
|
|
187
|
-
| `skipSubappNames` | nur strukturelle Dirs | Zusätzliche Subapp-Namen, die von der Platform-Scan-Domain-Emission ausgeschlossen werden |
|
|
188
|
-
| `minSubappFiles` | `2` | Überschreibt die Mindestdateianzahl, bevor eine Subapp zur Domain wird |
|
|
189
|
-
|
|
190
|
-
Fehlende Datei oder fehlerhaftes JSON → fällt stillschweigend auf Defaults zurück (kein Crash). Typischer Einsatz: Opt-in für eine kurze Abkürzung (`adm`, `bo`), die die eingebaute Liste als zu mehrdeutig ausschließt, oder Erhöhung von `minSubappFiles` für rauschende Monorepos.
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## Schnellstart
|
|
195
|
-
|
|
196
|
-
### Voraussetzungen
|
|
197
|
-
|
|
198
|
-
- **Node.js** v18+
|
|
199
|
-
- **Claude Code CLI** (installiert & authentifiziert)
|
|
200
|
-
|
|
201
|
-
### Installation
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
cd /your/project/root
|
|
205
|
-
|
|
206
|
-
# Option A: npx (empfohlen — keine Installation nötig)
|
|
207
|
-
npx claudeos-core init
|
|
208
|
-
|
|
209
|
-
# Option B: globale Installation
|
|
210
|
-
npm install -g claudeos-core
|
|
211
|
-
claudeos-core init
|
|
212
|
-
|
|
213
|
-
# Option C: Projekt-devDependency
|
|
214
|
-
npm install --save-dev claudeos-core
|
|
215
17
|
npx claudeos-core init
|
|
216
|
-
|
|
217
|
-
# Option D: git clone (für Entwicklung/Beiträge)
|
|
218
|
-
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
219
|
-
|
|
220
|
-
# Cross-Platform (PowerShell, CMD, Bash, Zsh — beliebiges Terminal)
|
|
221
|
-
node claudeos-core-tools/bin/cli.js init
|
|
222
|
-
|
|
223
|
-
# Linux/macOS (nur Bash)
|
|
224
|
-
bash claudeos-core-tools/bootstrap.sh
|
|
225
18
|
```
|
|
226
19
|
|
|
227
|
-
|
|
20
|
+
[🇺🇸 English](README.md) · [🇰🇷 한국어](README.ko.md) · [🇨🇳 中文](README.zh-CN.md) · [🇯🇵 日本語](README.ja.md) · [🇪🇸 Español](README.es.md) · [🇻🇳 Tiếng Việt](README.vi.md) · [🇮🇳 हिन्दी](README.hi.md) · [🇷🇺 Русский](README.ru.md) · [🇫🇷 Français](README.fr.md)
|
|
228
21
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
╔══════════════════════════════════════════════════╗
|
|
233
|
-
║ Sprache der generierten Dokumente wählen ║
|
|
234
|
-
╚══════════════════════════════════════════════════╝
|
|
235
|
-
|
|
236
|
-
Generierte Dateien (CLAUDE.md, Standards, Rules,
|
|
237
|
-
Skills, Guides) werden auf Deutsch geschrieben.
|
|
238
|
-
|
|
239
|
-
1. en — English
|
|
240
|
-
2. ko — 한국어 (Korean)
|
|
241
|
-
3. zh-CN — 简体中文 (Chinese Simplified)
|
|
242
|
-
4. ja — 日本語 (Japanese)
|
|
243
|
-
5. es — Español (Spanish)
|
|
244
|
-
6. vi — Tiếng Việt (Vietnamese)
|
|
245
|
-
7. hi — हिन्दी (Hindi)
|
|
246
|
-
8. ru — Русский (Russian)
|
|
247
|
-
9. fr — Français (French)
|
|
248
|
-
❯ 10. de — Deutsch (German)
|
|
249
|
-
|
|
250
|
-
↑↓ Bewegen 1-0 Springen Enter Auswählen ESC Abbrechen
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
Die Beschreibung ändert sich je nach Navigation zur ausgewählten Sprache. Um den Selector zu überspringen, übergeben Sie `--lang` direkt:
|
|
22
|
+
---
|
|
254
23
|
|
|
255
|
-
|
|
256
|
-
npx claudeos-core init --lang ko # Koreanisch
|
|
257
|
-
npx claudeos-core init --lang ja # Japanisch
|
|
258
|
-
npx claudeos-core init --lang en # Englisch (Default)
|
|
259
|
-
```
|
|
24
|
+
## Worum geht es?
|
|
260
25
|
|
|
261
|
-
|
|
26
|
+
Sie nutzen Claude Code. Es ist mächtig, aber jede Sitzung beginnt von vorn — es hat keine Erinnerung daran, wie _Ihr_ Projekt aufgebaut ist. Also fällt es auf „allgemein gute" Defaults zurück, die selten zu dem passen, was Ihr Team tatsächlich tut:
|
|
262
27
|
|
|
263
|
-
|
|
28
|
+
- Ihr Team verwendet **MyBatis**, aber Claude generiert JPA-Repositories.
|
|
29
|
+
- Ihr Response-Wrapper ist `ApiResponse.ok()`, aber Claude schreibt `ResponseEntity.success()`.
|
|
30
|
+
- Ihre Pakete sind layer-first (`controller/order/`), aber Claude erstellt domain-first (`order/controller/`).
|
|
31
|
+
- Ihre Fehler laufen durch zentrale Middleware, aber Claude verstreut `try/catch` in jedem Endpoint.
|
|
264
32
|
|
|
265
|
-
|
|
33
|
+
Sie hätten gerne pro Projekt einen `.claude/rules/`-Satz — Claude Code lädt ihn automatisch in jeder Sitzung — aber diese Regeln für jedes neue Repo per Hand zu schreiben dauert Stunden, und sie driften, sobald sich der Code weiterentwickelt.
|
|
266
34
|
|
|
267
|
-
|
|
35
|
+
**ClaudeOS-Core schreibt sie für Sie, aus Ihrem tatsächlichen Quellcode.** Ein deterministischer Node.js-Scanner liest zuerst Ihr Projekt (Stack, ORM, Paket-Layout, Konventionen, Dateipfade). Anschließend verwandelt eine 4-Pass-Claude-Pipeline die extrahierten Fakten in einen vollständigen Dokumentationssatz:
|
|
268
36
|
|
|
269
|
-
|
|
37
|
+
- **`CLAUDE.md`** — der Projekt-Index, den Claude in jeder Sitzung liest
|
|
38
|
+
- **`.claude/rules/`** — automatisch geladene Regeln pro Kategorie (`00.core` / `10.backend` / `20.frontend` / `30.security-db` / `40.infra` / `60.memory` / `70.domains` / `80.verification`)
|
|
39
|
+
- **`claudeos-core/standard/`** — Referenz-Dokumente (das „Warum" hinter jeder Regel)
|
|
40
|
+
- **`claudeos-core/skills/`** — wiederverwendbare Muster (CRUD-Scaffolding, Seitentemplates)
|
|
41
|
+
- **`claudeos-core/memory/`** — Decision-Log + Failure-Patterns, die mit dem Projekt mitwachsen
|
|
270
42
|
|
|
271
|
-
|
|
272
|
-
cd /your/project/root
|
|
43
|
+
Weil der Scanner Claude eine explizite Pfad-Allowlist übergibt, **kann das LLM keine Dateien oder Frameworks erfinden, die nicht in Ihrem Code stehen**. Fünf Post-Generation-Validatoren (`claude-md-validator`, `content-validator`, `pass-json-validator`, `plan-validator`, `sync-checker`) verifizieren die Ausgabe, bevor sie ausgeliefert wird — sprachunabhängig, sodass dieselben Regeln gelten, ob Sie auf Englisch, Deutsch oder in einer von 8 weiteren Sprachen generieren.
|
|
273
44
|
|
|
274
|
-
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
275
|
-
cd claudeos-core-tools && npm install && cd ..
|
|
276
45
|
```
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
# Rules (v2.0.0: 60.memory hinzugefügt)
|
|
282
|
-
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
|
|
283
|
-
|
|
284
|
-
# Standards
|
|
285
|
-
mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
|
|
286
|
-
|
|
287
|
-
# Skills
|
|
288
|
-
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
289
|
-
|
|
290
|
-
# Guide, Database, MCP, Generated, Memory (v2.0.0: memory hinzugefügt; v2.1.0: plan entfernt)
|
|
291
|
-
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
292
|
-
mkdir -p claudeos-core/{database,mcp-guide,generated,memory}
|
|
46
|
+
Vorher: Sie → Claude Code → "allgemein guter" Code → manuelle Korrekturen
|
|
47
|
+
Nachher: Sie → Claude Code → Code, der zu IHREM Projekt passt → einsetzbar
|
|
293
48
|
```
|
|
294
49
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
#### Schritt 3: plan-installer ausführen (Projektanalyse)
|
|
298
|
-
|
|
299
|
-
Dies scannt Ihr Projekt, erkennt den Stack, findet Domains, teilt sie in Gruppen auf und generiert Prompts.
|
|
50
|
+
---
|
|
300
51
|
|
|
301
|
-
|
|
302
|
-
|
|
52
|
+
## In einem realen Projekt sehen
|
|
53
|
+
|
|
54
|
+
Ausgeführt auf [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) — Java 11 · Spring Boot 2.6 · MyBatis · SQLite · 187 source files. Ergebnis: **75 generated files**, Gesamtdauer **53 Minuten**, alle Validatoren ✅.
|
|
55
|
+
|
|
56
|
+
<p align="center">
|
|
57
|
+
<img src="docs/assets/spring-boot-realworld-demo.gif" alt="ClaudeOS-Core init running on spring-boot-realworld-example-app — stack detection, 4-pass pipeline, validators, completion summary" width="769">
|
|
58
|
+
</p>
|
|
59
|
+
|
|
60
|
+
<details>
|
|
61
|
+
<summary><strong>📺 Terminal-Ausgabe (Textversion, zum Suchen & Kopieren)</strong></summary>
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
╔════════════════════════════════════════════════════╗
|
|
65
|
+
║ ClaudeOS-Core — Bootstrap (4-Pass) ║
|
|
66
|
+
╚════════════════════════════════════════════════════╝
|
|
67
|
+
Project root: spring-boot-realworld-example-app
|
|
68
|
+
Language: English (en)
|
|
69
|
+
|
|
70
|
+
[Phase 1] Detecting stack...
|
|
71
|
+
Language: java 11
|
|
72
|
+
Framework: spring-boot 2.6.3
|
|
73
|
+
Database: sqlite
|
|
74
|
+
ORM: mybatis
|
|
75
|
+
PackageMgr: gradle
|
|
76
|
+
|
|
77
|
+
[Phase 2] Scanning structure...
|
|
78
|
+
Backend: 2 domains
|
|
79
|
+
Total: 2 domains
|
|
80
|
+
Package: io.spring.infrastructure
|
|
81
|
+
|
|
82
|
+
[Phase 5] Active domains...
|
|
83
|
+
✅ 00.core ✅ 10.backend ⏭️ 20.frontend
|
|
84
|
+
✅ 30.security-db ✅ 40.infra
|
|
85
|
+
✅ 80.verification ✅ 90.optional
|
|
86
|
+
|
|
87
|
+
[4] Pass 1 — Deep analysis per domain group...
|
|
88
|
+
✅ pass1-1.json created (5m 34s)
|
|
89
|
+
[█████░░░░░░░░░░░░░░░] 25% (1/4)
|
|
90
|
+
|
|
91
|
+
[5] Pass 2 — Merging analysis results...
|
|
92
|
+
✅ pass2-merged.json created (4m 22s)
|
|
93
|
+
[██████████░░░░░░░░░░] 50% (2/4)
|
|
94
|
+
|
|
95
|
+
[6] Pass 3 — Generating all files...
|
|
96
|
+
🚀 Pass 3 split mode (3a → 3b → 3c → 3d-aux)
|
|
97
|
+
✅ 3a complete (2m 57s) — pass3a-facts.md (187-path allowlist)
|
|
98
|
+
✅ 3b complete (18m 49s) — CLAUDE.md + 19 standards + 20 rules
|
|
99
|
+
✅ 3c complete (12m 35s) — 13 skills + 9 guides
|
|
100
|
+
✅ 3d-aux complete (3m 18s) — database/ + mcp-guide/
|
|
101
|
+
🎉 Pass 3 split complete: 4/4 stages successful
|
|
102
|
+
[███████████████░░░░░] 75% (3/4)
|
|
103
|
+
|
|
104
|
+
[7] Pass 4 — Memory scaffolding...
|
|
105
|
+
📦 Pass 4 staged-rules: 6 rule files moved to .claude/rules/
|
|
106
|
+
✅ Pass 4 complete (5m)
|
|
107
|
+
📋 Gap-fill: all 12 expected files already present
|
|
108
|
+
[████████████████████] 100% (4/4)
|
|
109
|
+
|
|
110
|
+
╔═══════════════════════════════════════╗
|
|
111
|
+
║ ClaudeOS-Core — Health Checker ║
|
|
112
|
+
╚═══════════════════════════════════════╝
|
|
113
|
+
✅ plan-validator pass
|
|
114
|
+
✅ sync-checker pass
|
|
115
|
+
✅ content-validator pass
|
|
116
|
+
✅ pass-json-validator pass
|
|
117
|
+
✅ All systems operational
|
|
118
|
+
|
|
119
|
+
[Lint] ✅ CLAUDE.md structure valid (25 checks)
|
|
120
|
+
[Content] ✅ All content validation passed
|
|
121
|
+
Total: 0 advisories, 0 notes
|
|
122
|
+
|
|
123
|
+
╔════════════════════════════════════════════════════╗
|
|
124
|
+
║ ✅ ClaudeOS-Core — Complete ║
|
|
125
|
+
║ Files created: 75 ║
|
|
126
|
+
║ Domains analyzed: 1 group ║
|
|
127
|
+
║ L4 scaffolded: memory + rules ║
|
|
128
|
+
║ Output language: English ║
|
|
129
|
+
║ Total time: 53m 8s ║
|
|
130
|
+
╚════════════════════════════════════════════════════╝
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
</details>
|
|
134
|
+
|
|
135
|
+
<details>
|
|
136
|
+
<summary><strong>📄 Was in Ihrer <code>CLAUDE.md</code> landet (echter Auszug — Section 1 + 2)</strong></summary>
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
# CLAUDE.md — spring-boot-realworld-example-app
|
|
140
|
+
|
|
141
|
+
> Reference implementation of the RealWorld backend specification on
|
|
142
|
+
> Java 11 + Spring Boot 2.6, exposing both REST and GraphQL endpoints
|
|
143
|
+
> over a hexagonal MyBatis persistence layer.
|
|
144
|
+
|
|
145
|
+
## 1. Role Definition
|
|
146
|
+
|
|
147
|
+
As the senior developer for this repository, you are responsible for
|
|
148
|
+
writing, modifying, and reviewing code. Responses must be written in English.
|
|
149
|
+
A Java Spring Boot REST + GraphQL API server organized around a hexagonal
|
|
150
|
+
(ports & adapters) architecture, with a CQRS-lite read/write split inside
|
|
151
|
+
an XML-driven MyBatis persistence layer and JWT-based authentication.
|
|
152
|
+
|
|
153
|
+
## 2. Project Overview
|
|
154
|
+
|
|
155
|
+
| Item | Value |
|
|
156
|
+
|---|---|
|
|
157
|
+
| Language | Java 11 |
|
|
158
|
+
| Framework | Spring Boot 2.6.3 |
|
|
159
|
+
| Build Tool | Gradle (Groovy DSL) |
|
|
160
|
+
| Persistence | MyBatis 3 via `mybatis-spring-boot-starter:2.2.2` (no JPA) |
|
|
161
|
+
| Database | SQLite (`org.xerial:sqlite-jdbc:3.36.0.3`) — `dev.db` (default), `:memory:` (test) |
|
|
162
|
+
| Migration | Flyway — single baseline `V1__create_tables.sql` |
|
|
163
|
+
| API Style | REST (`io.spring.api.*`) + GraphQL via Netflix DGS `:4.9.21` |
|
|
164
|
+
| Authentication | JWT HS512 (`jjwt-api:0.11.2`) + Spring Security `PasswordEncoder` |
|
|
165
|
+
| Server Port | 8080 (default) |
|
|
166
|
+
| Test Stack | JUnit Jupiter 5, Mockito, AssertJ, rest-assured, spring-mock-mvc |
|
|
303
167
|
```
|
|
304
168
|
|
|
305
|
-
|
|
306
|
-
- `project-analysis.json` — erkannter Stack, Domains, Frontend-Infos
|
|
307
|
-
- `domain-groups.json` — Domain-Gruppen für Pass 1
|
|
308
|
-
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — Analyse-Prompts
|
|
309
|
-
- `pass2-prompt.md` — Merge-Prompt
|
|
310
|
-
- `pass3-prompt.md` — Pass-3-Prompt-Template mit vorangestelltem Phase-1-Block „Read Once, Extract Facts" (Rules A–E). Die automatisierte Pipeline teilt Pass 3 zur Laufzeit in mehrere Stages auf; dieses Template wird jeder Stage zugeführt.
|
|
311
|
-
- `pass3-context.json` — schlanke Projekt-Zusammenfassung (< 5 KB, nach Pass 2 erstellt), die Pass-3-Prompts gegenüber der vollen `pass2-merged.json` bevorzugen (v2.1.0)
|
|
312
|
-
- `pass4-prompt.md` — L4-Memory-Scaffolding-Prompt (v2.0.0; verwendet dasselbe `staging-override.md` für `60.memory/`-Rule-Schreibvorgänge)
|
|
169
|
+
Jeder Wert oben — die genauen Dependency-Koordinaten, der Dateiname `dev.db`, der Migrationsname `V1__create_tables.sql`, „no JPA" — wird vom Scanner aus `build.gradle` / `application.properties` / dem Quellbaum extrahiert, bevor Claude die Datei schreibt. Nichts wird geraten.
|
|
313
170
|
|
|
314
|
-
|
|
171
|
+
</details>
|
|
315
172
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
Führen Sie Pass 1 für jede Domain-Gruppe aus. Prüfen Sie `domain-groups.json` für die Anzahl der Gruppen.
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
# Anzahl der Gruppen prüfen
|
|
322
|
-
cat claudeos-core/generated/domain-groups.json | node -e "
|
|
323
|
-
const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
|
|
324
|
-
g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
|
|
325
|
-
"
|
|
326
|
-
|
|
327
|
-
# Pass 1 für jede Gruppe ausführen (Domains und Gruppennummer ersetzen)
|
|
328
|
-
# Hinweis: v1.6.1+ verwendet Node.js String.replace() statt perl — perl
|
|
329
|
-
# wird nicht mehr benötigt, und die Replacement-Function-Semantik verhindert
|
|
330
|
-
# Regex-Injection durch $/&/$1-Zeichen, die in Domain-Namen auftauchen können.
|
|
331
|
-
#
|
|
332
|
-
# Für Gruppe 1:
|
|
333
|
-
DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
|
|
334
|
-
const fs = require('fs');
|
|
335
|
-
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
336
|
-
const out = tpl
|
|
337
|
-
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
338
|
-
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
339
|
-
process.stdout.write(out);
|
|
340
|
-
" | claude -p --dangerously-skip-permissions
|
|
341
|
-
|
|
342
|
-
# Für Gruppe 2 (falls vorhanden):
|
|
343
|
-
DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
|
|
344
|
-
const fs = require('fs');
|
|
345
|
-
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
346
|
-
const out = tpl
|
|
347
|
-
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
348
|
-
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
349
|
-
process.stdout.write(out);
|
|
350
|
-
" | claude -p --dangerously-skip-permissions
|
|
351
|
-
|
|
352
|
-
# Für Frontend-Gruppen pass1-backend-prompt.md → pass1-frontend-prompt.md tauschen
|
|
353
|
-
```
|
|
173
|
+
<details>
|
|
174
|
+
<summary><strong>🛡️ Eine real automatisch geladene Regel (<code>.claude/rules/10.backend/01.controller-rules.md</code>)</strong></summary>
|
|
354
175
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
176
|
+
````markdown
|
|
177
|
+
---
|
|
178
|
+
paths:
|
|
179
|
+
- "**/*"
|
|
180
|
+
---
|
|
358
181
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
182
|
+
# Controller Rules
|
|
183
|
+
|
|
184
|
+
## REST (`io.spring.api.*`)
|
|
185
|
+
|
|
186
|
+
- Controllers are the SOLE response wrapper for HTTP — no aggregator/facade above them.
|
|
187
|
+
Return `ResponseEntity<?>` or a body Spring serializes via `JacksonCustomizations`.
|
|
188
|
+
- Each controller method calls exactly ONE application service method. Multi-source
|
|
189
|
+
composition lives in the application service.
|
|
190
|
+
- Controllers MUST NOT import `io.spring.infrastructure.*`. No direct `@Mapper` access.
|
|
191
|
+
- Validate command-param arguments with `@Valid`. Custom JSR-303 constraints live under
|
|
192
|
+
`io.spring.application.{aggregate}.*`.
|
|
193
|
+
- Resolve the current user via `@AuthenticationPrincipal User`.
|
|
194
|
+
- Let exceptions propagate to `io.spring.api.exception.CustomizeExceptionHandler`
|
|
195
|
+
(`@ControllerAdvice`). Do NOT `try/catch` business exceptions inside the controller.
|
|
196
|
+
|
|
197
|
+
## GraphQL (`io.spring.graphql.*`)
|
|
198
|
+
|
|
199
|
+
- DGS components (`@DgsComponent`) are the sole GraphQL response wrappers.
|
|
200
|
+
Use `@DgsQuery` / `@DgsData` / `@DgsMutation`.
|
|
201
|
+
- Resolve the current user via `io.spring.graphql.SecurityUtil.getCurrentUser()`.
|
|
202
|
+
|
|
203
|
+
## Examples
|
|
204
|
+
|
|
205
|
+
✅ Correct:
|
|
206
|
+
```java
|
|
207
|
+
@PostMapping
|
|
208
|
+
public ResponseEntity<?> createArticle(@AuthenticationPrincipal User user,
|
|
209
|
+
@Valid @RequestBody NewArticleParam param) {
|
|
210
|
+
Article article = articleCommandService.createArticle(param, user);
|
|
211
|
+
ArticleData data = articleQueryService.findById(article.getId(), user)
|
|
212
|
+
.orElseThrow(ResourceNotFoundException::new);
|
|
213
|
+
return ResponseEntity.ok(Map.of("article", data));
|
|
214
|
+
}
|
|
362
215
|
```
|
|
363
216
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
217
|
+
❌ Incorrect:
|
|
218
|
+
```java
|
|
219
|
+
@PostMapping
|
|
220
|
+
public ResponseEntity<?> create(@RequestBody NewArticleParam p) {
|
|
221
|
+
try {
|
|
222
|
+
articleCommandService.createArticle(p, currentUser);
|
|
223
|
+
} catch (Exception e) { // NO — let CustomizeExceptionHandler handle it
|
|
224
|
+
return ResponseEntity.status(500).body(e.getMessage()); // NO — leaks raw message
|
|
225
|
+
}
|
|
226
|
+
return ResponseEntity.ok().build();
|
|
227
|
+
}
|
|
375
228
|
```
|
|
229
|
+
````
|
|
376
230
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
Die automatisierte Pipeline führt diese Stages aus. Die Stage-Liste lautet:
|
|
380
|
-
|
|
381
|
-
| Stage | Schreibt | Anmerkungen |
|
|
382
|
-
|---|---|---|
|
|
383
|
-
| `3a` | `pass3a-facts.md` (5–10 KB destillierte Fact Sheet) | Liest `pass2-merged.json` einmal; spätere Stages referenzieren diese Datei |
|
|
384
|
-
| `3b-core` | `CLAUDE.md`, gemeinsame `standard/`, gemeinsame `.claude/rules/` | Projektübergreifende Dateien; kein domain-spezifischer Output |
|
|
385
|
-
| `3b-1..N` | Domain-spezifische `standard/60.domains/*.md` + Domain-Rules | Batch von ≤15 Domains pro Stage (automatisch geteilt ab 16 Domains) |
|
|
386
|
-
| `3c-core` | `guide/` (9 Dateien), `skills/00.shared/MANIFEST.md`, `skills/*/`-Orchestratoren | Geteilte Skills und alle nutzerorientierten Guides |
|
|
387
|
-
| `3c-1..N` | Domain-Sub-Skills unter `skills/20.frontend-page/scaffold-page-feature/` | Batch von ≤15 Domains pro Stage |
|
|
388
|
-
| `3d-aux` | `database/`, `mcp-guide/` | Fixe Größe, unabhängig von der Domain-Anzahl |
|
|
389
|
-
|
|
390
|
-
Für ein 1–15-Domain-Projekt expandiert das zu 4 Stages (`3a`, `3b-core`, `3c-core`, `3d-aux` — keine Batch-Unterteilung). Für 16–30 Domains sind es 8 Stages (`3b` und `3c` jeweils in 2 Batches unterteilt). Siehe [Auto-Scaling nach Projektgröße](#auto-scaling-nach-projektgröße) für die vollständige Tabelle.
|
|
231
|
+
Der Glob `paths: ["**/*"]` bedeutet, dass Claude Code diese Regel automatisch lädt, sobald Sie eine beliebige Datei im Projekt bearbeiten. Jeder Klassenname, Paketpfad und Exception-Handler in der Regel stammt direkt aus dem gescannten Quellcode — einschließlich des tatsächlichen `CustomizeExceptionHandler` und `JacksonCustomizations` des Projekts.
|
|
391
232
|
|
|
392
|
-
|
|
233
|
+
</details>
|
|
393
234
|
|
|
394
|
-
>
|
|
235
|
+
<details>
|
|
236
|
+
<summary><strong>🧠 Ein automatisch generierter <code>decision-log.md</code>-Seed (echter Auszug)</strong></summary>
|
|
395
237
|
|
|
396
|
-
|
|
238
|
+
```markdown
|
|
239
|
+
## 2026-04-26 — Hexagonal ports & adapters with MyBatis-only persistence
|
|
397
240
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
241
|
+
- **Context:** `io.spring.core.*` exposes `*Repository` ports (e.g.,
|
|
242
|
+
`io.spring.core.article.ArticleRepository`) implemented by
|
|
243
|
+
`io.spring.infrastructure.repository.MyBatis*Repository` adapters.
|
|
244
|
+
The domain layer has zero `org.springframework.*` /
|
|
245
|
+
`org.apache.ibatis.*` / `io.spring.infrastructure.*` imports.
|
|
246
|
+
- **Options considered:** JPA/Hibernate, Spring Data, MyBatis-Plus
|
|
247
|
+
`BaseMapper`. None adopted.
|
|
248
|
+
- **Decision:** MyBatis 3 (`mybatis-spring-boot-starter:2.2.2`) with
|
|
249
|
+
hand-written XML statements under `src/main/resources/mapper/*.xml`.
|
|
250
|
+
Hexagonal port/adapter wiring keeps the domain framework-free.
|
|
251
|
+
- **Consequences:** Every SQL lives in XML — `@Select`/`@Insert`/`@Update`/`@Delete`
|
|
252
|
+
annotations are forbidden. New aggregates require both a
|
|
253
|
+
`core.{aggregate}.{Aggregate}Repository` port AND a
|
|
254
|
+
`MyBatis{Aggregate}Repository` adapter; introducing a JPA repository would
|
|
255
|
+
split the persistence model.
|
|
401
256
|
```
|
|
402
257
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
> **v2.1.0 Gap-Fill:** Pass 4 stellt zudem sicher, dass `claudeos-core/skills/00.shared/MANIFEST.md` existiert. Wenn Pass 3c die Datei ausgelassen hat (möglich bei skill-spärlichen Projekten, weil die Stack-`pass3.md`-Templates `MANIFEST.md` unter den Generierungszielen listen, aber nicht als REQUIRED markieren), erzeugt das Gap-Fill einen minimalen Stub, damit `.claude/rules/50.sync/02.skills-sync.md` (v2.2.0-Pfad — die Anzahl der Sync-Regeln wurde von 3 auf 2 reduziert, was `03` war, ist jetzt `02`) stets ein gültiges Referenzziel hat. Idempotent: wird übersprungen, wenn die Datei bereits echten Inhalt hat (>20 Zeichen).
|
|
258
|
+
Pass 4 befüllt `decision-log.md` mit den aus `pass2-merged.json` extrahierten Architekturentscheidungen, damit zukünftige Sitzungen sich daran erinnern, _warum_ die Codebasis so aussieht, wie sie aussieht — nicht nur _wie_ sie aussieht. Jede Option („JPA/Hibernate", „MyBatis-Plus") und jede Konsequenz ist im tatsächlichen Dependency-Block der `build.gradle` verankert.
|
|
406
259
|
|
|
407
|
-
>
|
|
260
|
+
</details>
|
|
408
261
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
```bash
|
|
412
|
-
# Metadaten generieren (vor anderen Checks erforderlich)
|
|
413
|
-
node claudeos-core-tools/manifest-generator/index.js
|
|
414
|
-
|
|
415
|
-
# Alle Checks ausführen
|
|
416
|
-
node claudeos-core-tools/health-checker/index.js
|
|
262
|
+
---
|
|
417
263
|
|
|
418
|
-
|
|
419
|
-
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ Disk-Konsistenz
|
|
420
|
-
node claudeos-core-tools/sync-checker/index.js # Nicht registrierte/verwaiste Dateien
|
|
421
|
-
node claudeos-core-tools/content-validator/index.js # Dateiqualitäts-Checks (inkl. memory/-Sektion [9/9])
|
|
422
|
-
node claudeos-core-tools/pass-json-validator/index.js # Pass-1–4-JSON + Completion-Marker-Checks
|
|
423
|
-
```
|
|
264
|
+
## Quick Start
|
|
424
265
|
|
|
425
|
-
|
|
266
|
+
**Voraussetzungen:** Node.js 18+, [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installiert und authentifiziert.
|
|
426
267
|
|
|
427
268
|
```bash
|
|
428
|
-
#
|
|
429
|
-
|
|
269
|
+
# 1. In das Projekt-Root wechseln
|
|
270
|
+
cd my-spring-boot-project
|
|
430
271
|
|
|
431
|
-
#
|
|
432
|
-
head -30 CLAUDE.md
|
|
433
|
-
|
|
434
|
-
# Eine Standard-Datei prüfen
|
|
435
|
-
cat claudeos-core/standard/00.core/01.project-overview.md | head -20
|
|
436
|
-
|
|
437
|
-
# Rules prüfen
|
|
438
|
-
ls .claude/rules/*/
|
|
439
|
-
```
|
|
440
|
-
|
|
441
|
-
> **Tipp:** Wenn ein Schritt fehlschlägt, können Sie das Problem beheben und nur diesen Schritt erneut ausführen. Pass-1/2-Ergebnisse sind gecacht — wenn `pass1-N.json` oder `pass2-merged.json` bereits existiert, überspringt die automatisierte Pipeline diese. Verwenden Sie `npx claudeos-core init --force`, um vorherige Ergebnisse zu löschen und neu zu beginnen.
|
|
442
|
-
|
|
443
|
-
### Nutzung beginnen
|
|
444
|
-
|
|
445
|
-
```
|
|
446
|
-
# In Claude Code — einfach natürlich fragen:
|
|
447
|
-
"Erstelle ein CRUD für die order-Domain"
|
|
448
|
-
"Füge eine User-Authentifizierungs-API hinzu"
|
|
449
|
-
"Refactore diesen Code, um den Projektmustern zu entsprechen"
|
|
450
|
-
|
|
451
|
-
# Claude Code referenziert automatisch Ihre generierten Standards, Rules und Skills.
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## Wie es funktioniert — 4-Pass-Pipeline
|
|
457
|
-
|
|
458
|
-
```
|
|
272
|
+
# 2. init ausführen (analysiert den Code und bittet Claude, die Regeln zu schreiben)
|
|
459
273
|
npx claudeos-core init
|
|
460
|
-
│
|
|
461
|
-
├── [1] npm install ← Abhängigkeiten (~10s)
|
|
462
|
-
├── [2] Verzeichnisstruktur ← Ordner erstellen (~1s)
|
|
463
|
-
├── [3] plan-installer (Node.js) ← Projekt-Scan (~5s)
|
|
464
|
-
│ ├── Auto-Erkennung des Stacks (multi-stack-fähig)
|
|
465
|
-
│ ├── Domain-Liste extrahieren (getaggt: backend/frontend)
|
|
466
|
-
│ ├── In Domain-Gruppen aufteilen (pro Typ)
|
|
467
|
-
│ ├── pass3-context.json erstellen (schlanke Zusammenfassung, v2.1.0)
|
|
468
|
-
│ └── Stack-spezifische Prompts wählen (pro Typ)
|
|
469
|
-
│
|
|
470
|
-
├── [4] Pass 1 × N (claude -p) ← Tiefe Code-Analyse (~2-8min)
|
|
471
|
-
│ ├── ⚙️ Backend-Gruppen → backend-spezifischer Prompt
|
|
472
|
-
│ └── 🎨 Frontend-Gruppen → frontend-spezifischer Prompt
|
|
473
|
-
│
|
|
474
|
-
├── [5] Pass 2 × 1 (claude -p) ← Analyse-Merge (~1min)
|
|
475
|
-
│ └── Konsolidiert ALLE Pass-1-Ergebnisse zu pass2-merged.json
|
|
476
|
-
│
|
|
477
|
-
├── [6] Pass 3 (Split-Mode, v2.1.0) ← Alles generieren
|
|
478
|
-
│ │
|
|
479
|
-
│ ├── 3a × 1 (claude -p) ← Fakten-Extraktion (~5-10min)
|
|
480
|
-
│ │ └── pass2-merged.json einmal lesen → pass3a-facts.md
|
|
481
|
-
│ │
|
|
482
|
-
│ ├── 3b-core × 1 (claude -p) ← CLAUDE.md + gemeinsame standard/rules
|
|
483
|
-
│ ├── 3b-1..N × N (claude -p) ← Domain-Standards/-Rules (≤15 Domains/Batch)
|
|
484
|
-
│ │
|
|
485
|
-
│ ├── 3c-core × 1 (claude -p) ← Guides + geteilte Skills + MANIFEST.md
|
|
486
|
-
│ ├── 3c-1..N × N (claude -p) ← Domain-Sub-Skills (≤15 Domains/Batch)
|
|
487
|
-
│ │
|
|
488
|
-
│ └── 3d-aux × 1 (claude -p) ← database/ + mcp-guide/-Stubs
|
|
489
|
-
│
|
|
490
|
-
├── [7] Pass 4 × 1 (claude -p) ← Memory-Scaffolding (~30s-5min)
|
|
491
|
-
│ ├── Seeding von memory/ (decision-log, failure-patterns, …)
|
|
492
|
-
│ ├── 60.memory/-Regeln generieren
|
|
493
|
-
│ ├── "Memory (L4)"-Sektion an CLAUDE.md anhängen
|
|
494
|
-
│ └── Gap-Fill: skills/00.shared/MANIFEST.md sicherstellen (v2.1.0)
|
|
495
|
-
│
|
|
496
|
-
└── [8] Verifikation ← Health-Checker läuft automatisch
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### Warum 4 Passes?
|
|
500
274
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
**Pass 2** führt alle Pass-1-Ergebnisse zu einer einheitlichen Analyse zusammen: gemeinsame Muster (100 % geteilt), Mehrheitsmuster (50 %+ geteilt), domain-spezifische Muster, Anti-Patterns nach Schweregrad und Cross-Cutting-Concerns (Naming, Security, DB, Testing, Logging, Performance). Backend- und Frontend-Ergebnisse werden zusammengeführt.
|
|
504
|
-
|
|
505
|
-
**Pass 3** (Split-Mode, v2.1.0) nimmt die zusammengeführte Analyse und generiert das gesamte Datei-Ökosystem (CLAUDE.md, Rules, Standards, Skills, Guides) über mehrere sequenzielle `claude -p`-Aufrufe. Die zentrale Einsicht: Output-Akkumulations-Overflow ist nicht aus der Input-Größe vorhersagbar — Single-Call-Pass-3 funktionierte auf 2-Domain-Projekten einwandfrei und scheiterte bei ca. 5 Domains zuverlässig, wobei die Fehler-Grenze davon abhing, wie ausführlich jede Datei ausfiel. Split-Mode umgeht das strukturell — jede Stage startet mit einem frischen Context-Fenster und schreibt eine beschränkte Teilmenge von Dateien. Datei-übergreifende Konsistenz (der Hauptvorteil des Single-Call-Ansatzes) bleibt durch `pass3a-facts.md` erhalten, eine 5–10 KB große destillierte Fact Sheet, die jede spätere Stage referenziert.
|
|
506
|
-
|
|
507
|
-
Das Pass-3-Prompt-Template enthält zudem einen **Phase-1-Block „Read Once, Extract Facts"** mit fünf Regeln, die den Output weiter begrenzen:
|
|
508
|
-
|
|
509
|
-
- **Rule A** — Referenziere die Fact-Tabelle; lies `pass2-merged.json` nicht erneut.
|
|
510
|
-
- **Rule B** — Idempotentes Datei-Schreiben (überspringe, wenn das Ziel mit echtem Inhalt existiert), macht Pass 3 nach Unterbrechungen sicher wiederausführbar.
|
|
511
|
-
- **Rule C** — Datei-übergreifende Konsistenz über die Fact-Tabelle als Single Source of Truth erzwungen.
|
|
512
|
-
- **Rule D** — Output-Knappheit: eine Zeile (`[WRITE]`/`[SKIP]`) zwischen Datei-Schreibvorgängen, keine Wiederholung der Fact-Tabelle, kein Echoing des Datei-Inhalts.
|
|
513
|
-
- **Rule E** — Batch-Idempotenz-Prüfung: ein `Glob` zu PHASE-2-Beginn statt Per-Target-`Read`-Aufrufe.
|
|
514
|
-
|
|
515
|
-
In **v2.2.0** bettet Pass 3 zusätzlich ein deterministisches CLAUDE.md-Scaffold (`pass-prompts/templates/common/claude-md-scaffold.md`) inline in den Prompt ein. Dies fixiert die Titel und die Reihenfolge der 8 obersten Abschnitte, sodass die generierte `CLAUDE.md` nicht mehr zwischen Projekten drifted, während der Inhalt jedes Abschnitts sich weiterhin an jedes Projekt anpasst. Der neue `.env`-Parser des Stack-Detectors (`lib/env-parser.js`) liefert `stack.envInfo` an den Prompt, sodass Port/Host/API-Target-Zeilen mit dem übereinstimmen, was das Projekt tatsächlich deklariert, statt mit Framework-Defaults.
|
|
516
|
-
|
|
517
|
-
**Pass 4** baut die L4-Memory-Schicht auf: persistente Team-Wissensdateien (decision-log, failure-patterns, Compaction-Policy, auto-rule-update) plus die `60.memory/`-Regeln, die zukünftigen Sessions mitteilen, wann und wie diese Dateien gelesen/geschrieben werden sollen. Die Memory-Schicht ist das, was Claude Code erlaubt, Lehren über Sessions hinweg anzusammeln, anstatt sie jedes Mal neu zu entdecken. Wenn `--lang` nicht-englisch ist, wird der statische Fallback-Inhalt über Claude übersetzt, bevor er geschrieben wird. v2.1.0 fügt ein Gap-Fill für `skills/00.shared/MANIFEST.md` hinzu, falls Pass 3c es ausgelassen hat.
|
|
518
|
-
|
|
519
|
-
---
|
|
275
|
+
# 3. Fertig. Claude Code öffnen und loslegen — Ihre Regeln sind bereits geladen.
|
|
276
|
+
```
|
|
520
277
|
|
|
521
|
-
|
|
278
|
+
**Was Sie nach Abschluss von `init` erhalten:**
|
|
522
279
|
|
|
523
280
|
```
|
|
524
281
|
your-project/
|
|
525
|
-
│
|
|
526
|
-
├── CLAUDE.md ← Claude-Code-Einstiegspunkt (deterministische 8-Abschnitt-Struktur, v2.2.0)
|
|
527
|
-
│
|
|
528
282
|
├── .claude/
|
|
529
|
-
│ └── rules/
|
|
530
|
-
│ ├── 00.core/
|
|
531
|
-
│ ├── 10.backend/
|
|
532
|
-
│ ├── 20.frontend/
|
|
533
|
-
│ ├── 30.security-db/
|
|
534
|
-
│ ├── 40.infra/
|
|
535
|
-
│ ├── 50.sync/
|
|
536
|
-
│
|
|
537
|
-
│
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
│
|
|
541
|
-
│ │ ├──
|
|
542
|
-
│ │ ├──
|
|
543
|
-
│ │ ├──
|
|
544
|
-
│ │ ├──
|
|
545
|
-
│ │ ├──
|
|
546
|
-
│ │ ├──
|
|
547
|
-
│ │ ├──
|
|
548
|
-
│ │
|
|
549
|
-
│
|
|
550
|
-
│
|
|
551
|
-
│
|
|
552
|
-
│
|
|
553
|
-
│
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
│ │ ├── 00.core/ ← Overview, Architektur, Naming
|
|
559
|
-
│ │ ├── 10.backend-api/ ← API-Muster (stack-spezifisch)
|
|
560
|
-
│ │ ├── 20.frontend-ui/ ← Frontend-Muster (falls erkannt)
|
|
561
|
-
│ │ ├── 30.security-db/ ← Security, DB-Schema, Utilities
|
|
562
|
-
│ │ ├── 40.infra/ ← Config, Logging, CI/CD
|
|
563
|
-
│ │ ├── 50.verification/ ← Build-Verifikation, Testing
|
|
564
|
-
│ │ ├── 60.domains/ ← Pro-Domain-Standards (von Pass 3b-N geschrieben, v2.1.0)
|
|
565
|
-
│ │ └── 90.optional/ ← Optionale Konventionen (stack-spezifische Extras)
|
|
566
|
-
│ ├── skills/ ← CRUD-/Page-Scaffolding-Skills
|
|
567
|
-
│ │ └── 00.shared/MANIFEST.md ← Single Source of Truth für registrierte Skills
|
|
568
|
-
│ ├── guide/ ← Onboarding, FAQ, Troubleshooting (9 Dateien)
|
|
569
|
-
│ ├── database/ ← DB-Schema, Migration-Guide
|
|
570
|
-
│ ├── mcp-guide/ ← MCP-Server-Integrations-Guide
|
|
571
|
-
│ └── memory/ ← L4: Team-Wissen (4 Dateien) — committen
|
|
572
|
-
│ ├── decision-log.md ← „Warum" hinter Design-Entscheidungen
|
|
573
|
-
│ ├── failure-patterns.md ← Wiederkehrende Fehler & Fixes (Auto-Score — `npx claudeos-core memory score`)
|
|
574
|
-
│ ├── compaction.md ← 4-Stage-Compaction-Strategie (`npx claudeos-core memory compact` ausführen)
|
|
575
|
-
│ └── auto-rule-update.md ← Rule-Verbesserungs-Vorschläge (`npx claudeos-core memory propose-rules`)
|
|
576
|
-
│
|
|
577
|
-
└── claudeos-core-tools/ ← Dieses Toolkit (nicht ändern)
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
Jede Standard-Datei enthält ✅-korrekte Beispiele, ❌-fehlerhafte Beispiele und eine Regel-Zusammenfassungstabelle — alles aus Ihren tatsächlichen Code-Mustern abgeleitet, nicht aus generischen Templates.
|
|
581
|
-
|
|
582
|
-
> **Hinweis zu v2.1.0:** `claudeos-core/plan/` wird nicht mehr generiert. Master Plans waren ein internes Backup, das Claude Code zur Laufzeit nicht konsumierte, und ihre Aggregation in Pass 3 war eine primäre Ursache für Output-Akkumulations-Overflows. Verwenden Sie stattdessen `git` für Backup/Restore. Projekte, die von v2.0.x upgraden, können ein bestehendes `claudeos-core/plan/`-Verzeichnis bedenkenlos löschen.
|
|
583
|
-
|
|
584
|
-
### Gitignore-Empfehlungen
|
|
585
|
-
|
|
586
|
-
**Committen** (Team-Wissen — zum Teilen gedacht):
|
|
587
|
-
- `CLAUDE.md` — Claude-Code-Einstiegspunkt
|
|
588
|
-
- `.claude/rules/**` — automatisch geladene Regeln
|
|
589
|
-
- `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — generierte Dokumentation
|
|
590
|
-
- `claudeos-core/memory/**` — Entscheidungshistorie, Failure-Patterns, Rule-Vorschläge
|
|
591
|
-
|
|
592
|
-
**NICHT committen** (regenerierbare Build-Artefakte):
|
|
593
|
-
|
|
594
|
-
```gitignore
|
|
595
|
-
# ClaudeOS-Core — generierte Analyse & Übersetzungs-Cache
|
|
596
|
-
claudeos-core/generated/
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
Das `generated/`-Verzeichnis enthält Analyse-JSON (`pass1-*.json`, `pass2-merged.json`), Prompts (`pass1/2/3/4-prompt.md`), Pass-Completion-Marker (`pass3-complete.json`, `pass4-memory.json`), Übersetzungs-Cache (`.i18n-cache-<lang>.json`) und das transiente Staging-Verzeichnis (`.staged-rules/`) — alles durch erneutes Ausführen von `npx claudeos-core init` wiederherstellbar.
|
|
283
|
+
│ └── rules/ ← Auto-loaded by Claude Code
|
|
284
|
+
│ ├── 00.core/ (general rules — naming, architecture)
|
|
285
|
+
│ ├── 10.backend/ (backend stack rules, if any)
|
|
286
|
+
│ ├── 20.frontend/ (frontend stack rules, if any)
|
|
287
|
+
│ ├── 30.security-db/ (security & DB conventions)
|
|
288
|
+
│ ├── 40.infra/ (env, logging, CI/CD)
|
|
289
|
+
│ ├── 50.sync/ (doc-sync reminders — rules only)
|
|
290
|
+
│ ├── 60.memory/ (memory rules — Pass 4, rules only)
|
|
291
|
+
│ ├── 70.domains/{type}/ (per-domain rules, type = backend|frontend)
|
|
292
|
+
│ └── 80.verification/ (testing strategy + build verification reminders)
|
|
293
|
+
├── claudeos-core/
|
|
294
|
+
│ ├── standard/ ← Reference docs (mirror category structure)
|
|
295
|
+
│ │ ├── 00.core/ (project overview, architecture, naming)
|
|
296
|
+
│ │ ├── 10.backend/ (backend reference — if backend stack)
|
|
297
|
+
│ │ ├── 20.frontend/ (frontend reference — if frontend stack)
|
|
298
|
+
│ │ ├── 30.security-db/ (security & DB reference)
|
|
299
|
+
│ │ ├── 40.infra/ (env / logging / CI-CD reference)
|
|
300
|
+
│ │ ├── 70.domains/{type}/ (per-domain reference)
|
|
301
|
+
│ │ ├── 80.verification/ (build / startup / testing reference — standard only)
|
|
302
|
+
│ │ └── 90.optional/ (stack-specific extras — standard only)
|
|
303
|
+
│ ├── skills/ (reusable patterns Claude can apply)
|
|
304
|
+
│ ├── guide/ (how-to guides for common tasks)
|
|
305
|
+
│ ├── database/ (schema overview, migration guide)
|
|
306
|
+
│ ├── mcp-guide/ (MCP integration notes)
|
|
307
|
+
│ └── memory/ (decision log, failure patterns, compaction)
|
|
308
|
+
└── CLAUDE.md (the index Claude reads first)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Kategorien, die zwischen `rules/` und `standard/` denselben Zahlen-Präfix teilen, repräsentieren denselben konzeptuellen Bereich (z. B. `10.backend` rules ↔ `10.backend` standards). Nur in `rules/` vorhandene Kategorien: `50.sync` (Doc-Sync-Erinnerungen) und `60.memory` (Pass 4 Memory). Nur in `standard/` vorhandene Kategorie: `90.optional` (stackspezifische Ergänzungen ohne Durchsetzung). Alle übrigen Präfixe (`00`, `10`, `20`, `30`, `40`, `70`, `80`) tauchen sowohl in `rules/` als auch in `standard/` auf. Claude Code kennt jetzt Ihr Projekt.
|
|
600
312
|
|
|
601
313
|
---
|
|
602
314
|
|
|
603
|
-
##
|
|
604
|
-
|
|
605
|
-
Der Split-Mode von Pass 3 skaliert die Stage-Anzahl mit der Domain-Anzahl. Die Batch-Unterteilung greift ab 16 Domains, um jede Stage unter ~50 Output-Dateien zu halten — dem empirischen Sicherheitsbereich für `claude -p`, bevor Output-Akkumulations-Overflows einsetzen.
|
|
315
|
+
## Für wen ist das?
|
|
606
316
|
|
|
607
|
-
|
|
|
608
|
-
|
|
609
|
-
|
|
|
610
|
-
|
|
|
611
|
-
|
|
|
612
|
-
|
|
|
613
|
-
|
|
|
614
|
-
|
|
|
615
|
-
|
|
616
|
-
Stage-Anzahl-Formel (bei aktivierter Batch-Teilung): `1 (3a) + 1 (3b-core) + N (3b-1..N) + 1 (3c-core) + N (3c-1..N) + 1 (3d-aux) = 2N + 4`, wobei `N = ceil(totalDomains / 15)`.
|
|
317
|
+
| Sie sind... | Der Schmerzpunkt, den das Tool beseitigt |
|
|
318
|
+
|---|---|
|
|
319
|
+
| **Solo-Entwickler**, der ein neues Projekt mit Claude Code beginnt | „Claude in jeder Sitzung meine Konventionen beibringen" — vorbei. `CLAUDE.md` + 8-Kategorien-`.claude/rules/` in einem einzigen Lauf generiert. |
|
|
320
|
+
| **Team-Lead**, der gemeinsame Standards über mehrere Repos hinweg pflegt | `.claude/rules/` driften, wenn Leute Pakete umbenennen, ORMs wechseln oder Response-Wrapper ändern. ClaudeOS-Core synchronisiert deterministisch — gleicher Input, byte-identische Ausgabe, kein Diff-Rauschen. |
|
|
321
|
+
| **Bereits Claude-Code-Nutzer**, aber das Korrigieren generierten Codes leid | Falscher Response-Wrapper, falsches Paket-Layout, JPA wo Sie MyBatis nutzen, verstreutes `try/catch` während Ihr Projekt zentrale Middleware verwendet. Der Scanner extrahiert Ihre echten Konventionen; jeder Claude-Pass läuft gegen eine explizite Pfad-Allowlist. |
|
|
322
|
+
| **Onboarding in ein neues Repo** (bestehendes Projekt, Team-Beitritt) | `init` auf dem Repo ausführen und eine lebendige Architekturkarte erhalten: Stack-Tabelle in CLAUDE.md, schichtenweise Regeln mit ✅/❌-Beispielen, Decision-Log mit dem „Warum" hinter wesentlichen Entscheidungen (JPA vs. MyBatis, REST vs. GraphQL etc.). 5 Dateien lesen schlägt 5.000 Quelldateien lesen. |
|
|
323
|
+
| **Arbeiten auf Koreanisch / Japanisch / Chinesisch / 7 weiteren Sprachen** | Die meisten Claude-Code-Regelgeneratoren sind Englisch-only. ClaudeOS-Core schreibt den vollständigen Satz in **10 Sprachen** (`en/ko/ja/zh-CN/es/vi/hi/ru/fr/de`) mit **byte-identischer struktureller Validierung** — gleiches `claude-md-validator`-Verdikt unabhängig von der Ausgabesprache. |
|
|
324
|
+
| **Auf einem Monorepo arbeiten** (Turborepo, pnpm/yarn-Workspaces, Lerna) | Backend- und Frontend-Domänen werden in einem Lauf mit separaten Prompts analysiert; `apps/*/` und `packages/*/` werden automatisch durchlaufen; stackspezifische Regeln werden unter `70.domains/{type}/` emittiert. |
|
|
325
|
+
| **OSS-Beitrag oder Experimente** | Die Ausgabe ist gitignore-freundlich — `claudeos-core/` ist Ihr lokales Arbeitsverzeichnis, nur `CLAUDE.md` + `.claude/` müssen ausgeliefert werden. Resume-sicher bei Unterbrechungen; idempotent bei erneutem Aufruf (Ihre manuellen Regeländerungen überleben ohne `--force`). |
|
|
617
326
|
|
|
618
|
-
|
|
327
|
+
**Nicht passend, wenn:** Sie ein One-Size-Fits-All-Preset-Bundle aus Agents/Skills/Rules wollen, das ohne Scan-Schritt am ersten Tag funktioniert (siehe [docs/de/comparison.md](docs/de/comparison.md), wo was hinpasst), Ihr Projekt noch nicht zu einem der [unterstützten Stacks](#supported-stacks) passt, oder Sie nur eine einzelne `CLAUDE.md` benötigen (das eingebaute `claude /init` reicht — keine Notwendigkeit, ein weiteres Tool zu installieren).
|
|
619
328
|
|
|
620
329
|
---
|
|
621
330
|
|
|
622
|
-
##
|
|
331
|
+
## Wie funktioniert das?
|
|
623
332
|
|
|
624
|
-
ClaudeOS-Core
|
|
333
|
+
ClaudeOS-Core kehrt den üblichen Claude-Code-Workflow um:
|
|
625
334
|
|
|
626
|
-
```
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
# Einzelne Befehle
|
|
631
|
-
npx claudeos-core validate # Plan ↔ Disk-Vergleich
|
|
632
|
-
npx claudeos-core refresh # Disk → Plan-Sync
|
|
633
|
-
npx claudeos-core restore # Plan → Disk-Restore
|
|
634
|
-
|
|
635
|
-
# Oder node direkt verwenden (git-clone-User)
|
|
636
|
-
node claudeos-core-tools/health-checker/index.js
|
|
637
|
-
node claudeos-core-tools/manifest-generator/index.js
|
|
638
|
-
node claudeos-core-tools/plan-validator/index.js --check
|
|
639
|
-
node claudeos-core-tools/sync-checker/index.js
|
|
335
|
+
```
|
|
336
|
+
Üblich: Sie beschreiben das Projekt → Claude rät den Stack → Claude schreibt Docs
|
|
337
|
+
Hier: Code liest Ihren Stack → Code übergibt bestätigte Fakten an Claude → Claude schreibt Docs aus Fakten
|
|
640
338
|
```
|
|
641
339
|
|
|
642
|
-
|
|
643
|
-
|---|---|
|
|
644
|
-
| **manifest-generator** | Baut Metadaten-JSON (`rule-manifest.json`, `sync-map.json`, initialisiert `stale-report.json`); indexiert 7 Verzeichnisse einschließlich `memory/` (`totalMemory` in der Summary). v2.1.0: `plan-manifest.json` wird nicht mehr generiert, da Master Plans entfernt wurden. |
|
|
645
|
-
| **plan-validator** | Validiert Master-Plan-`<file>`-Blöcke gegen die Disk für Projekte, die noch ein `claudeos-core/plan/` besitzen (Legacy-Upgrade-Fall). v2.1.0: überspringt die Emission von `plan-sync-status.json`, wenn `plan/` fehlt oder leer ist — `stale-report.json` hält dennoch einen bestandenen No-op fest. |
|
|
646
|
-
| **sync-checker** | Erkennt nicht registrierte Dateien (auf Disk, aber nicht im Plan) und verwaiste Einträge — deckt 7 Verzeichnisse ab (in v2.0.0 `memory/` hinzugefügt). Beendet sich sauber, wenn `sync-map.json` keine Mappings hat (v2.1.0-Default-Zustand). |
|
|
647
|
-
| **content-validator** | 9-Sektionen-Qualitätscheck — leere Dateien, fehlende ✅/❌-Beispiele, erforderliche Sektionen plus L4-Memory-Scaffold-Integrität (decision-log-Heading-Dates, failure-pattern-Pflichtfelder, fence-aware Parsing) |
|
|
648
|
-
| **pass-json-validator** | Validiert Pass-1–4-JSON-Struktur plus die Completion-Marker `pass3-complete.json` (Split-Mode-Shape, v2.1.0) und `pass4-memory.json` |
|
|
340
|
+
Die Pipeline läuft in **drei Stufen**, mit Code auf beiden Seiten des LLM-Aufrufs:
|
|
649
341
|
|
|
650
|
-
|
|
342
|
+
**1. Schritt A — Scanner (deterministisch, kein LLM).** Ein Node.js-Scanner durchläuft Ihr Projekt-Root, liest `package.json` / `build.gradle` / `pom.xml` / `pyproject.toml`, parst `.env*`-Dateien (mit Sensitive-Variable-Redaction für `PASSWORD/SECRET/TOKEN/JWT_SECRET/...`), klassifiziert Ihr Architekturmuster (Javas 5 Muster A/B/C/D/E, Kotlin CQRS / Multi-Module, Next.js App- vs. Pages-Router, FSD, Components-Pattern), entdeckt Domänen und baut eine explizite Allowlist jedes existierenden Quelldateipfads. Ausgabe: `project-analysis.json` — die einzige Quelle der Wahrheit für alles, was folgt.
|
|
651
343
|
|
|
652
|
-
|
|
344
|
+
**2. Schritt B — 4-Pass-Claude-Pipeline (eingeschränkt durch die Fakten aus Schritt A).**
|
|
345
|
+
- **Pass 1** liest repräsentative Dateien pro Domänengruppe und extrahiert ~50–100 Konventionen pro Domäne — Response-Wrapper, Logging-Bibliotheken, Error-Handling, Naming-Konventionen, Test-Pattern. Läuft einmal pro Domänengruppe (`max 4 domains, 40 files per group`), sodass der Kontext nie überläuft.
|
|
346
|
+
- **Pass 2** führt alle domänenspezifischen Analysen zu einem projektweiten Bild zusammen und löst Widersprüche durch Wahl der dominanten Konvention auf.
|
|
347
|
+
- **Pass 3** schreibt `CLAUDE.md` + `.claude/rules/` + `claudeos-core/standard/` + Skills + Guides — aufgeteilt in Stages (`3a` Facts → `3b-core/3b-N` Rules+Standards → `3c-core/3c-N` Skills+Guides → `3d-aux` Database+MCP-Guide), sodass jeder Stage-Prompt ins LLM-Context-Window passt, selbst wenn `pass2-merged.json` groß ist. Bei ≥16-Domänen-Projekten werden 3b/3c in Batches von ≤15 Domänen unterteilt.
|
|
348
|
+
- **Pass 4** seedet die L4-Memory-Schicht (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`) und ergänzt universelle Scaffold-Regeln. Pass 4 ist es **untersagt, `CLAUDE.md` zu modifizieren** — Section 8 von Pass 3 ist autoritativ.
|
|
653
349
|
|
|
654
|
-
|
|
350
|
+
**3. Schritt C — Verifikation (deterministisch, kein LLM).** Fünf Validatoren prüfen die Ausgabe:
|
|
351
|
+
- `claude-md-validator` — 25 strukturelle Prüfungen auf `CLAUDE.md` (8 Sections, H3/H4-Counts, Memory-File-Eindeutigkeit, T1-Canonical-Heading-Invariante). Sprachunabhängig: gleiches Verdikt unabhängig von `--lang`.
|
|
352
|
+
- `content-validator` — 10 Content-Prüfungen, einschließlich Path-Claim-Verifikation (`STALE_PATH` fängt fabrizierte `src/...`-Referenzen ab) und MANIFEST-Drift-Erkennung.
|
|
353
|
+
- `pass-json-validator` — Pass-1/2/3/4-JSON-Wohlgeformtheit + stack-bewusste Section-Counts.
|
|
354
|
+
- `plan-validator` — Plan-↔-Disk-Konsistenz (Legacy, seit v2.1.0 weitgehend No-Op).
|
|
355
|
+
- `sync-checker` — Disk-↔-`sync-map.json`-Registrierungskonsistenz über 7 nachverfolgte Verzeichnisse hinweg.
|
|
655
356
|
|
|
656
|
-
|
|
357
|
+
Drei Schweregrad-Stufen (`fail` / `warn` / `advisory`), damit Warnungen CI niemals wegen LLM-Halluzinationen blockieren, die der Nutzer manuell beheben kann.
|
|
657
358
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
| `.claude/rules/00.core/*` | Wenn eine beliebige Datei editiert wird (`paths: ["**/*"]`) | Immer |
|
|
662
|
-
| `.claude/rules/10.backend/*` | Wenn eine beliebige Datei editiert wird (`paths: ["**/*"]`) | Immer |
|
|
663
|
-
| `.claude/rules/20.frontend/*` | Wenn eine Frontend-Datei editiert wird (eingeschränkt auf Component-/Page-/Style-Pfade) | Bedingt |
|
|
664
|
-
| `.claude/rules/30.security-db/*` | Wenn eine beliebige Datei editiert wird (`paths: ["**/*"]`) | Immer |
|
|
665
|
-
| `.claude/rules/40.infra/*` | Nur beim Editieren von Config/Infra-Dateien (eingeschränkte Pfade) | Bedingt |
|
|
666
|
-
| `.claude/rules/50.sync/*` | Nur beim Editieren von claudeos-core-Dateien (eingeschränkte Pfade) | Bedingt |
|
|
667
|
-
| `.claude/rules/60.memory/*` | Wenn `claudeos-core/memory/*` editiert wird (eingeschränkt auf Memory-Pfade) — weist an, **wie** die On-Demand-Memory-Schicht gelesen/geschrieben wird | Bedingt (v2.0.0) |
|
|
359
|
+
Die Invariante, die alles zusammenhält: **Claude darf nur Pfade zitieren, die tatsächlich in Ihrem Code existieren**, weil Schritt A eine endliche Allowlist übergibt. Versucht das LLM trotzdem etwas zu erfinden (selten, aber bei bestimmten Seeds möglich), fängt Schritt C es ab, bevor die Docs ausgeliefert werden.
|
|
360
|
+
|
|
361
|
+
Pass-Details, Marker-basiertes Resume, der Staged-Rules-Workaround für den Sensitive-Path-Block von Claude Codes `.claude/` und Stack-Erkennungs-Internals finden Sie in [docs/de/architecture.md](docs/de/architecture.md).
|
|
668
362
|
|
|
669
|
-
|
|
363
|
+
---
|
|
670
364
|
|
|
671
|
-
|
|
365
|
+
## Supported Stacks
|
|
672
366
|
|
|
673
|
-
|
|
674
|
-
- `claudeos-core/database/**` — DB-Schema (für Queries, Mapper, Migrationen)
|
|
675
|
-
- `claudeos-core/memory/**` (v2.0.0) — L4-Team-Wissensschicht; **nicht** auto-geladen (wäre bei jedem Gespräch zu rauschend). Stattdessen teilen die `60.memory/*`-Regeln Claude *wann* diese Dateien zu lesen sind: bei Session-Start (aktuelle `decision-log.md` überfliegen + High-Importance-`failure-patterns.md`), und append-on-demand bei Entscheidungen oder wiederkehrenden Fehlern.
|
|
367
|
+
12 Stacks, die automatisch aus Ihren Projektdateien erkannt werden:
|
|
676
368
|
|
|
677
|
-
|
|
369
|
+
**Backend:** Java/Spring Boot · Kotlin/Spring Boot · Node/Express · Node/Fastify · Node/NestJS · Python/Django · Python/FastAPI · Python/Flask
|
|
678
370
|
|
|
679
|
-
|
|
371
|
+
**Frontend:** Node/Next.js · Node/Vite · Angular · Vue/Nuxt
|
|
680
372
|
|
|
681
|
-
|
|
373
|
+
Multi-Stack-Projekte (z. B. Spring-Boot-Backend + Next.js-Frontend) funktionieren ohne weitere Konfiguration.
|
|
682
374
|
|
|
683
|
-
|
|
684
|
-
|---|---|
|
|
685
|
-
| `claudeos-core/plan/` | Master-Plan-Backups aus Legacy-Projekten (v2.0.x und älter). Wird in v2.1.0 nicht generiert. Falls vorhanden, lädt Claude Code es nicht automatisch — nur Read-on-Demand. |
|
|
686
|
-
| `claudeos-core/generated/` | Build-Metadaten-JSON, Prompts, Pass-Marker, Übersetzungs-Cache, `.staged-rules/`. Nicht zum Coden. |
|
|
687
|
-
| `claudeos-core/guide/` | Onboarding-Guides für Menschen. |
|
|
688
|
-
| `claudeos-core/mcp-guide/` | MCP-Server-Docs. Nicht zum Coden. |
|
|
689
|
-
| `claudeos-core/memory/` (Auto-Load) | **Auto-Load deaktiviert** by design — würde den Context bei jedem Gespräch aufblähen. Stattdessen on-demand über die `60.memory/*`-Regeln lesen (z. B. Session-Start-Scan von `failure-patterns.md`). Diese Dateien immer committen. |
|
|
375
|
+
Erkennungsregeln und welche Fakten jeder Scanner extrahiert, finden Sie in [docs/de/stacks.md](docs/de/stacks.md).
|
|
690
376
|
|
|
691
377
|
---
|
|
692
378
|
|
|
693
379
|
## Täglicher Workflow
|
|
694
380
|
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
```
|
|
698
|
-
# Claude Code einfach wie gewohnt benutzen — er referenziert Ihre Standards automatisch:
|
|
699
|
-
"Erstelle ein CRUD für die order-Domain"
|
|
700
|
-
"Füge eine User-Profile-Update-API hinzu"
|
|
701
|
-
"Refactore diesen Code, um den Projektmustern zu entsprechen"
|
|
702
|
-
```
|
|
703
|
-
|
|
704
|
-
### Nach manueller Bearbeitung von Standards
|
|
381
|
+
Drei Befehle decken etwa 95 % der Nutzung ab:
|
|
705
382
|
|
|
706
383
|
```bash
|
|
707
|
-
#
|
|
708
|
-
npx claudeos-core
|
|
709
|
-
|
|
710
|
-
# Verifizieren, dass alles konsistent ist
|
|
711
|
-
npx claudeos-core health
|
|
712
|
-
```
|
|
384
|
+
# Erstmaliger Aufruf in einem Projekt
|
|
385
|
+
npx claudeos-core init
|
|
713
386
|
|
|
714
|
-
|
|
387
|
+
# Nachdem Sie Standards oder Rules manuell bearbeitet haben
|
|
388
|
+
npx claudeos-core lint
|
|
715
389
|
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
# mehr generiert werden). Committen Sie Ihre generierten Dokumente
|
|
719
|
-
# regelmäßig, damit Sie einzelne Dateien zurücksetzen können, ohne
|
|
720
|
-
# neu zu generieren:
|
|
721
|
-
git checkout HEAD -- .claude/rules/ claudeos-core/
|
|
722
|
-
|
|
723
|
-
# Legacy (v2.0.x-Projekte mit noch vorhandenem claudeos-core/plan/):
|
|
724
|
-
npx claudeos-core restore
|
|
390
|
+
# Health-Check (vor Commits oder in CI ausführen)
|
|
391
|
+
npx claudeos-core health
|
|
725
392
|
```
|
|
726
393
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
Die L4-Memory-Schicht (`claudeos-core/memory/`) sammelt Team-Wissen über Sessions hinweg. Drei CLI-Subcommands halten sie gesund:
|
|
394
|
+
Zwei weitere für die Wartung der Memory-Schicht:
|
|
730
395
|
|
|
731
396
|
```bash
|
|
732
|
-
#
|
|
397
|
+
# Failure-Patterns-Log verdichten (regelmäßig ausführen)
|
|
733
398
|
npx claudeos-core memory compact
|
|
734
|
-
# Stage 1: alte Einträge zusammenfassen (>30 Tage, Body → eine Zeile)
|
|
735
|
-
# Stage 2: doppelte Headings mergen (Frequency summiert, letzter Fix behalten)
|
|
736
|
-
# Stage 3: Low-Importance + alt droppen (importance <3 UND lastSeen >60 Tage)
|
|
737
|
-
# Stage 4: 400-Zeilen-Cap pro Datei erzwingen (ältestes Low-Importance zuerst gedroppt)
|
|
738
|
-
|
|
739
|
-
# Score: failure-patterns.md-Einträge nach Importance neu ranken
|
|
740
|
-
npx claudeos-core memory score
|
|
741
|
-
# importance = round(frequency × 1.5 + recency × 5), bei 10 gecapped
|
|
742
|
-
# Ausführen nach dem Anhängen mehrerer neuer Failure-Patterns
|
|
743
399
|
|
|
744
|
-
#
|
|
400
|
+
# Häufige Failure-Patterns zu Vorschlagsregeln hochstufen
|
|
745
401
|
npx claudeos-core memory propose-rules
|
|
746
|
-
# Liest failure-patterns.md-Einträge mit frequency ≥ 3
|
|
747
|
-
# Berechnet Confidence (Sigmoid auf gewichteter Evidenz × Anker-Multiplikator)
|
|
748
|
-
# Schreibt Vorschläge nach memory/auto-rule-update.md (NICHT auto-angewendet)
|
|
749
|
-
# Confidence ≥ 0.70 verdient ernsthafte Prüfung; akzeptieren → Rule editieren + Entscheidung loggen
|
|
750
|
-
|
|
751
|
-
# v2.1.0: `memory --help` leitet jetzt zur Subcommand-Hilfe weiter (zuvor wurde die Top-Level-Hilfe angezeigt)
|
|
752
|
-
npx claudeos-core memory --help
|
|
753
402
|
```
|
|
754
403
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
Wann in Memory schreiben (Claude macht das on-demand, aber Sie können auch manuell editieren):
|
|
758
|
-
- **`decision-log.md`** — neuen Eintrag anhängen, wenn Sie zwischen konkurrierenden Mustern wählen, eine Bibliothek auswählen, eine Team-Konvention definieren oder entscheiden, etwas NICHT zu tun. Append-only; historische Einträge niemals editieren.
|
|
759
|
-
- **`failure-patterns.md`** — beim **zweiten Auftreten** eines wiederkehrenden Fehlers oder einer nicht offensichtlichen Root-Cause anhängen. Erstmalige Fehler brauchen keinen Eintrag.
|
|
760
|
-
- `compaction.md` und `auto-rule-update.md` — werden von den CLI-Subcommands oben generiert/verwaltet; nicht von Hand editieren.
|
|
761
|
-
|
|
762
|
-
### CI/CD-Integration
|
|
763
|
-
|
|
764
|
-
```yaml
|
|
765
|
-
# GitHub-Actions-Beispiel
|
|
766
|
-
- run: npx claudeos-core validate
|
|
767
|
-
# Exit-Code 1 blockiert den PR
|
|
768
|
-
|
|
769
|
-
# Optional: monatliches Memory-Housekeeping (separater Cron-Workflow)
|
|
770
|
-
- run: npx claudeos-core memory compact
|
|
771
|
-
- run: npx claudeos-core memory score
|
|
772
|
-
```
|
|
773
|
-
|
|
774
|
-
---
|
|
775
|
-
|
|
776
|
-
## Wie unterscheidet sich das?
|
|
777
|
-
|
|
778
|
-
### vs. andere Claude-Code-Tools
|
|
779
|
-
|
|
780
|
-
| | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
|
|
781
|
-
|---|---|---|---|---|---|
|
|
782
|
-
| **Ansatz** | Code analysiert zuerst, dann LLM generiert | Vorgefertigte Config-Presets | LLM designt Agent-Teams | LLM generiert Spec-Docs | LLM schreibt CLAUDE.md |
|
|
783
|
-
| **Liest Ihren Quellcode** | ✅ Deterministische statische Analyse | ❌ | ❌ | ❌ (LLM liest) | ❌ (LLM liest) |
|
|
784
|
-
| **Stack-Erkennung** | Code bestätigt (ORM, DB, Build-Tool, Pkg-Manager) | N/V (stack-agnostisch) | LLM rät | LLM rät | LLM rät |
|
|
785
|
-
| **Domain-Erkennung** | Code bestätigt (Java 5 Muster, Kotlin CQRS, Next.js FSD) | N/V | LLM rät | N/V | N/V |
|
|
786
|
-
| **Gleiches Projekt → gleiches Ergebnis** | ✅ Deterministische Analyse | ✅ (statische Dateien) | ❌ (LLM variiert) | ❌ (LLM variiert) | ❌ (LLM variiert) |
|
|
787
|
-
| **Handhabung großer Projekte** | Domain-Gruppen-Splitting (4 Domains / 40 Dateien pro Gruppe) | N/V | Kein Splitting | Kein Splitting | Context-Window-Limit |
|
|
788
|
-
| **Output** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40–50+ Dateien) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 Spec-Dokumente | CLAUDE.md (1 Datei) |
|
|
789
|
-
| **Output-Ort** | `.claude/rules/` (auto-geladen von Claude Code) | `.claude/` diverse | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
|
|
790
|
-
| **Post-Generierungs-Verifikation** | ✅ 5 automatisierte Validatoren | ❌ | ❌ | ❌ | ❌ |
|
|
791
|
-
| **Multi-Language-Output** | ✅ 10 Sprachen | ❌ | ❌ | ❌ | ❌ |
|
|
792
|
-
| **Multi-Stack** | ✅ Backend + Frontend simultan | ❌ Stack-agnostisch | ❌ | ❌ | Teilweise |
|
|
793
|
-
| **Persistente Memory-Schicht** | ✅ L4 — Decision-Log + Failure-Patterns + auto-bewertete Rule-Vorschläge (v2.0.0) | ❌ | ❌ | ❌ | ❌ |
|
|
794
|
-
| **Agent-Orchestrierung** | ❌ | ✅ 28 Agents | ✅ 6 Muster | ❌ | ❌ |
|
|
795
|
-
|
|
796
|
-
### Der Schlüsselunterschied in einem Satz
|
|
797
|
-
|
|
798
|
-
**Andere Tools geben Claude „allgemein gute Anweisungen". ClaudeOS-Core gibt Claude „Anweisungen, die aus Ihrem tatsächlichen Code extrahiert wurden".**
|
|
799
|
-
|
|
800
|
-
Deshalb hört Claude Code auf, JPA-Code in Ihrem MyBatis-Projekt zu generieren,
|
|
801
|
-
hört auf, `success()` zu verwenden, wenn Ihre Codebasis `ok()` nutzt,
|
|
802
|
-
und hört auf, `user/controller/`-Verzeichnisse zu erstellen, wenn Ihr Projekt `controller/user/` verwendet.
|
|
803
|
-
|
|
804
|
-
### Ergänzend, nicht konkurrierend
|
|
805
|
-
|
|
806
|
-
ClaudeOS-Core fokussiert sich auf **projektspezifische Regeln und Standards**.
|
|
807
|
-
Andere Tools fokussieren sich auf **Agent-Orchestrierung und Workflows**.
|
|
808
|
-
|
|
809
|
-
Sie können ClaudeOS-Core verwenden, um Ihre Projekt-Rules zu generieren, und darauf aufbauend ECC oder Harness für Agent-Teams und Workflow-Automatisierung. Sie lösen unterschiedliche Probleme.
|
|
404
|
+
Die vollständigen Optionen jedes Befehls finden Sie in [docs/de/commands.md](docs/de/commands.md).
|
|
810
405
|
|
|
811
406
|
---
|
|
812
407
|
|
|
813
|
-
##
|
|
814
|
-
|
|
815
|
-
**F: Modifiziert es meinen Quellcode?**
|
|
816
|
-
Nein. Es erstellt nur `CLAUDE.md`, `.claude/rules/` und `claudeos-core/`. Ihr bestehender Code wird niemals modifiziert.
|
|
817
|
-
|
|
818
|
-
**F: Wie viel kostet es?**
|
|
819
|
-
Es ruft `claude -p` mehrfach über die 4 Passes hinweg auf. Im v2.1.0-Split-Mode expandiert allein Pass 3 je nach Projektgröße in 4–14+ Stages (siehe [Auto-Scaling](#auto-scaling-nach-projektgröße)). Ein typisches kleines Projekt (1–15 Domains) verwendet insgesamt 8–9 `claude -p`-Aufrufe; ein 18-Domain-Projekt 11; ein 60-Domain-Projekt 15–17. Jede Stage läuft mit einem frischen Context-Fenster — die Token-Kosten pro Aufruf sind sogar niedriger als beim früheren Single-Call-Pass-3, weil keine Stage den gesamten Datei-Baum in einem Context halten muss. Wenn `--lang` nicht-englisch ist, kann der statische Fallback-Pfad einige zusätzliche `claude -p`-Aufrufe für Übersetzungen auslösen; Ergebnisse werden in `claudeos-core/generated/.i18n-cache-<lang>.json` gecacht, sodass nachfolgende Läufe sie wiederverwenden. Das liegt im Rahmen der normalen Claude-Code-Nutzung.
|
|
820
|
-
|
|
821
|
-
**F: Was ist der Pass-3-Split-Mode und warum wurde er in v2.1.0 eingeführt?**
|
|
822
|
-
Vor v2.1.0 führte Pass 3 einen einzigen `claude -p`-Aufruf aus, der den gesamten generierten Datei-Baum (`CLAUDE.md`, Standards, Rules, Skills, Guides — typischerweise 30–60 Dateien) in einer Antwort ausgeben musste. Das funktionierte bei kleinen Projekten, traf aber bei ca. 5 Domains zuverlässig auf `Prompt is too long`-Output-Akkumulations-Fehler. Der Fehler war nicht aus der Input-Größe vorhersagbar — er hing davon ab, wie ausführlich jede generierte Datei ausfiel, und konnte dasselbe Projekt intermittierend treffen. Der Split-Mode umgeht das Problem strukturell: Pass 3 wird in sequenzielle Stages aufgeteilt (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), jede ein separater `claude -p`-Aufruf mit frischem Context-Fenster. Die Konsistenz über Stages hinweg wird durch `pass3a-facts.md` erhalten, eine 5–10 KB große destillierte Fact Sheet, die jede spätere Stage referenziert, anstatt `pass2-merged.json` erneut zu lesen. Der `pass3-complete.json`-Marker trägt ein `groupsCompleted`-Array, sodass ein Crash während `3c-2` ab `3c-2` fortgesetzt wird (nicht ab `3a`), was doppelte Token-Kosten vermeidet.
|
|
823
|
-
**F: Soll ich die generierten Dateien in Git committen?**
|
|
824
|
-
Ja, empfohlen. Ihr Team kann dieselben Claude-Code-Standards teilen. Erwägen Sie, `claudeos-core/generated/` in `.gitignore` aufzunehmen (Analyse-JSON ist regenerierbar).
|
|
825
|
-
|
|
826
|
-
**F: Was ist mit Mixed-Stack-Projekten (z. B. Java-Backend + React-Frontend)?**
|
|
827
|
-
Vollständig unterstützt. ClaudeOS-Core erkennt beide Stacks automatisch, taggt Domains als `backend` oder `frontend` und verwendet stack-spezifische Analyse-Prompts für jeden. Pass 2 merged alles, und Pass 3 generiert sowohl Backend- als auch Frontend-Standards über seine Split-Stages hinweg — Backend-Domains landen in manchen 3b/3c-Batches, Frontend-Domains in anderen, wobei alle dieselbe `pass3a-facts.md` für Konsistenz referenzieren.
|
|
828
|
-
|
|
829
|
-
**F: Funktioniert es mit Turborepo / pnpm-Workspaces / Lerna-Monorepos?**
|
|
830
|
-
Ja. ClaudeOS-Core erkennt `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` oder `package.json#workspaces` und scannt automatisch Sub-Package-`package.json`-Dateien nach Framework/ORM/DB-Abhängigkeiten. Das Domain-Scanning deckt `apps/*/src/`- und `packages/*/src/`-Muster ab. Vom Monorepo-Root ausführen.
|
|
831
|
-
|
|
832
|
-
**F: Was passiert bei einem erneuten Lauf?**
|
|
833
|
-
Wenn vorherige Pass-1/2-Ergebnisse existieren, lässt Sie ein interaktiver Prompt wählen: **Continue** (von der Unterbrechungsstelle fortsetzen) oder **Fresh** (alles löschen und neu beginnen). Verwenden Sie `--force`, um den Prompt zu überspringen und immer frisch zu starten. Im v2.1.0-Split-Mode funktioniert der Pass-3-Resume auf Stage-Granularität — wenn der Lauf während `3c-2` crashte, setzt das nächste `init` ab `3c-2` fort, anstatt von `3a` neu zu starten (was die Token-Kosten verdoppeln würde). Der `pass3-complete.json`-Marker hält `mode: "split"` plus ein `groupsCompleted`-Array fest, um diese Logik zu steuern.
|
|
834
|
-
|
|
835
|
-
**F: Bekommt NestJS ein eigenes Template oder verwendet es das Express-Template?**
|
|
836
|
-
NestJS verwendet ein dediziertes `node-nestjs`-Template mit NestJS-spezifischen Analyse-Kategorien: `@Module`-, `@Injectable`-, `@Controller`-Decorators, Guards, Pipes, Interceptors, DI-Container, CQRS-Muster und `Test.createTestingModule`. Express-Projekte verwenden das separate `node-express`-Template.
|
|
837
|
-
|
|
838
|
-
**F: Was ist mit Vue-/Nuxt-Projekten?**
|
|
839
|
-
Vue/Nuxt verwendet ein dediziertes `vue-nuxt`-Template, das Composition API, `<script setup>`, defineProps/defineEmits, Pinia-Stores, `useFetch`/`useAsyncData`, Nitro-Server-Routes und `@nuxt/test-utils` abdeckt. Next.js-/React-Projekte verwenden das `node-nextjs`-Template.
|
|
840
|
-
|
|
841
|
-
**F: Unterstützt es Kotlin?**
|
|
842
|
-
Ja. ClaudeOS-Core erkennt Kotlin automatisch aus `build.gradle.kts` oder dem kotlin-Plugin in `build.gradle`. Es verwendet ein dediziertes `kotlin-spring`-Template mit Kotlin-spezifischer Analyse (Data Classes, Sealed Classes, Coroutines, Extension Functions, MockK usw.).
|
|
843
|
-
|
|
844
|
-
**F: Was ist mit CQRS- / BFF-Architektur?**
|
|
845
|
-
Für Kotlin-Multi-Modul-Projekte vollständig unterstützt. ClaudeOS-Core liest `settings.gradle.kts`, erkennt Modultypen (command, query, bff, integration) aus Modulnamen und gruppiert dieselbe Domain über Command-/Query-Module. Die generierten Standards enthalten separate Regeln für Command-Controller vs. Query-Controller, BFF-/Feign-Muster und Inter-Modul-Kommunikationskonventionen.
|
|
846
|
-
|
|
847
|
-
**F: Was ist mit Gradle-Multi-Modul-Monorepos?**
|
|
848
|
-
ClaudeOS-Core scannt alle Submodule (`**/src/main/kotlin/**/*.kt`) unabhängig von der Verschachtelungstiefe. Modultypen werden aus Naming-Konventionen abgeleitet (z. B. `reservation-command-server` → Domain: `reservation`, Typ: `command`). Geteilte Bibliotheken (`shared-lib`, `integration-lib`) werden ebenfalls erkannt.
|
|
849
|
-
|
|
850
|
-
**F: Was ist die L4-Memory-Schicht (v2.0.0)? Soll ich `claudeos-core/memory/` committen?**
|
|
851
|
-
Ja — `claudeos-core/memory/` **immer committen**. Es ist persistentes Team-Wissen: `decision-log.md` hält das *Warum* hinter architektonischen Entscheidungen fest (append-only), `failure-patterns.md` registriert wiederkehrende Fehler mit Importance-Scores, damit zukünftige Sessions sie vermeiden, `compaction.md` definiert die 4-Stage-Compaction-Policy, und `auto-rule-update.md` sammelt maschinell generierte Rule-Verbesserungs-Vorschläge. Anders als Rules (pfad-basiert auto-geladen) sind Memory-Dateien **on-demand** — Claude liest sie nur, wenn die `60.memory/*`-Regeln ihn dazu auffordern (z. B. Session-Start-Scan von High-Importance-Failures). Das hält Context-Kosten niedrig, während langfristiges Wissen erhalten bleibt.
|
|
852
|
-
|
|
853
|
-
**F: Was, wenn Pass 4 fehlschlägt?**
|
|
854
|
-
Die automatisierte Pipeline (`npx claudeos-core init`) hat einen statischen Fallback: Wenn `claude -p` fehlschlägt oder `pass4-prompt.md` fehlt, wird die Memory-Schicht direkt über `lib/memory-scaffold.js` aufgebaut. Wenn `--lang` nicht-englisch ist, **muss** der statische Fallback über die `claude`-CLI übersetzen — schlägt das ebenfalls fehl, bricht der Lauf mit `InitError` ab (kein stiller englischer Fallback). Erneut ausführen, wenn `claude` authentifiziert ist, oder `--lang en` verwenden, um die Übersetzung zu überspringen. Übersetzungsergebnisse werden in `claudeos-core/generated/.i18n-cache-<lang>.json` gecacht, sodass nachfolgende Läufe sie wiederverwenden.
|
|
408
|
+
## Was unterscheidet das hier
|
|
855
409
|
|
|
856
|
-
|
|
857
|
-
Siehe den Abschnitt [Memory-Schicht-Pflege](#memory-schicht-pflege-v200) oben. Kurzfassung: `compact` führt die 4-Stage-Policy aus (alte zusammenfassen, Duplikate mergen, Low-Importance-alt droppen, 400-Zeilen-Cap erzwingen); `score` ranked `failure-patterns.md` neu nach Importance (frequency × recency); `propose-rules` bringt Kandidaten für Rule-Ergänzungen aus wiederkehrenden Failures in `auto-rule-update.md` (nicht auto-angewendet — manuell prüfen und akzeptieren/ablehnen).
|
|
410
|
+
Die meisten Claude-Code-Dokumentationstools generieren aus einer Beschreibung (Sie sagen es dem Tool, das Tool sagt es Claude). ClaudeOS-Core generiert aus Ihrem tatsächlichen Quellcode (das Tool liest, das Tool sagt Claude, was bestätigt ist, Claude schreibt nur das Bestätigte).
|
|
858
411
|
|
|
859
|
-
|
|
860
|
-
v2.0.0 hat drei Pass-3-Silent-Failure-Guards hinzugefügt (Guard 3 deckt zwei Incomplete-Output-Varianten ab: H2 für `guide/` und H1 für `standard/skills`). Guard 1 („partieller staged-rules-Move") und Guard 3 („unvollständiger Output — fehlende/leere Guide-Dateien oder fehlender Standard-Sentinel / leere Skills") hängen nicht von bestehenden Regeln ab, aber Guard 2 („null Rules erkannt") schon — er feuert, wenn Claude die `staging-override.md`-Direktive ignoriert und direkt nach `.claude/` schreiben wollte (wo Claude Codes Sensitive-Path-Policy das blockiert). Stale-Rules aus einem früheren Lauf würden Guard 2 false-negative machen — daher wipet `--force`/`fresh` `.claude/rules/`, um eine saubere Erkennung sicherzustellen. **Manuelle Edits an Rule-Dateien gehen verloren** bei `--force`/`fresh`; vorher sichern, wenn nötig. (Hinweis zu v2.1.0: Guard 3 H1 prüft `plan/` nicht mehr, da Master Plans nicht mehr generiert werden.)
|
|
412
|
+
Drei konkrete Konsequenzen:
|
|
861
413
|
|
|
862
|
-
**
|
|
863
|
-
|
|
414
|
+
1. **Deterministische Stack-Erkennung.** Gleiches Projekt + gleicher Code = gleiche Ausgabe. Kein „Claude hat dieses Mal anders gewürfelt."
|
|
415
|
+
2. **Keine erfundenen Pfade.** Der Pass-3-Prompt nennt explizit jeden zulässigen Quellpfad; Claude kann keine Pfade zitieren, die nicht existieren.
|
|
416
|
+
3. **Multi-Stack-fähig.** Backend- und Frontend-Domänen verwenden im selben Lauf unterschiedliche Analyse-Prompts.
|
|
864
417
|
|
|
865
|
-
**
|
|
866
|
-
Ja für kleine Projekte (≤5 Domains) — die Single-Call-Manual-Anweisungen in [Schritt 6](#schritt-6-pass-3--gesamte-dokumentation-generieren-aufgeteilt-in-mehrere-stages) funktionieren weiterhin. Für größere Projekte sollten Sie `npx claudeos-core init` verwenden, weil der Split-Runner die Stage-für-Stage-Ausführung mit frischen Contexts orchestriert, die Batch-Unterteilung ab 16 Domains übernimmt, die korrekte `pass3-complete.json`-Marker-Form (`mode: "split"` + `groupsCompleted`) schreibt und staged-rules zwischen Stages verschiebt. Diese Orchestrierung händisch nachzubauen ist möglich, aber mühsam. Wenn Sie einen Grund haben, Stages manuell auszuführen (z. B. Debugging einer bestimmten Stage), können Sie `pass3-prompt.md` mit der passenden `STAGE:`-Direktive templaten und direkt an `claude -p` füttern — denken Sie aber daran, `.staged-rules/` nach jeder Stage zu verschieben und den Marker selbst zu aktualisieren.
|
|
867
|
-
|
|
868
|
-
**F: Mein Projekt wird von v2.0.x upgegradet und hat ein bestehendes `claudeos-core/plan/`-Verzeichnis. Was soll ich tun?**
|
|
869
|
-
Nichts erforderlich — v2.1.0-Tools ignorieren `plan/`, wenn es fehlt oder leer ist, und `plan-validator` handhabt Legacy-Projekte mit gefüllten `plan/`-Verzeichnissen weiterhin aus Abwärtskompatibilitätsgründen. Sie können `claudeos-core/plan/` bedenkenlos löschen, wenn Sie die Master-Plan-Backups nicht brauchen (die Git-History ist ohnehin das bessere Backup). Wenn Sie `plan/` behalten, aktualisiert `npx claudeos-core init` es nicht — neue Inhalte werden in v2.1.0 nicht mehr in Master Plans aggregiert. Die Verifikations-Tools handhaben beide Fälle sauber.
|
|
418
|
+
Einen seitlichen Scope-Vergleich mit anderen Tools finden Sie in [docs/de/comparison.md](docs/de/comparison.md). Der Vergleich beschreibt **was jedes Tool tut**, nicht **welches besser ist** — die meisten ergänzen sich.
|
|
870
419
|
|
|
871
420
|
---
|
|
872
421
|
|
|
873
|
-
##
|
|
874
|
-
|
|
875
|
-
```
|
|
876
|
-
pass-prompts/templates/
|
|
877
|
-
├── common/ # gemeinsame header/footer + pass4 + staging-override + CLAUDE.md scaffold (v2.2.0)
|
|
878
|
-
│ ├── header.md # Rolle + Ausgabeformat-Direktive (alle Passes)
|
|
879
|
-
│ ├── pass3-footer.md # Post-Pass-3 health-check-Anweisung + 5 CRITICAL Guardrail-Blöcke (v2.2.0)
|
|
880
|
-
│ ├── pass3-phase1.md # „Read Once, Extract Facts"-Block mit Rules A-E (v2.1.0)
|
|
881
|
-
│ ├── pass4.md # Memory-Scaffolding-Prompt (v2.0.0)
|
|
882
|
-
│ ├── staging-override.md # Leitet .claude/rules/**-Schreibvorgänge auf .staged-rules/** um (v2.0.0)
|
|
883
|
-
│ ├── claude-md-scaffold.md # Deterministische 8-Abschnitt-CLAUDE.md-Vorlage (v2.2.0)
|
|
884
|
-
│ └── lang-instructions.json # Ausgabedirektiven pro Sprache (10 Sprachen)
|
|
885
|
-
├── java-spring/ # Java / Spring Boot
|
|
886
|
-
├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
|
|
887
|
-
├── node-express/ # Node.js / Express
|
|
888
|
-
├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
|
|
889
|
-
├── node-fastify/ # Node.js / Fastify
|
|
890
|
-
├── node-nextjs/ # Next.js / React (App Router, RSC)
|
|
891
|
-
├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
|
|
892
|
-
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
893
|
-
├── angular/ # Angular
|
|
894
|
-
├── python-django/ # Python / Django (DRF)
|
|
895
|
-
├── python-fastapi/ # Python / FastAPI
|
|
896
|
-
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
897
|
-
```
|
|
898
|
-
|
|
899
|
-
`plan-installer` erkennt Ihren Stack/Ihre Stacks automatisch und setzt dann typ-spezifische Prompts zusammen. NestJS, Vue/Nuxt, Vite SPA und Flask verwenden jeweils dedizierte Templates mit framework-spezifischen Analyse-Kategorien (z. B. `@Module`/`@Injectable`/Guards für NestJS; `<script setup>`/Pinia/useFetch für Vue; Client-Side-Routing/`VITE_`-Env für Vite; Blueprint/`app.factory`/Flask-SQLAlchemy für Flask). Für Multi-Stack-Projekte werden separate `pass1-backend-prompt.md` und `pass1-frontend-prompt.md` generiert, während `pass3-prompt.md` die Generierungsziele beider Stacks kombiniert. In v2.1.0 wird dem Pass-3-Template `common/pass3-phase1.md` (der „Read Once, Extract Facts"-Block mit Rules A–E) vorangestellt, bevor es pro Split-Mode-Stage zugeschnitten wird. Pass 4 verwendet unabhängig vom Stack das gemeinsame `common/pass4.md`-Template (Memory-Scaffolding).
|
|
900
|
-
|
|
901
|
-
**In v2.2.0** bettet der Pass-3-Prompt zusätzlich `common/claude-md-scaffold.md` (die deterministische 8-Abschnitt-CLAUDE.md-Vorlage) inline zwischen dem phase1-Block und dem stack-spezifischen Körper ein — dies fixiert die Abschnittsstruktur, sodass generierte CLAUDE.md nicht zwischen Projekten abweichen, während der Inhalt weiterhin projektspezifisch angepasst wird. Vorlagen werden **English-first** geschrieben; die Sprachinjektion aus `lang-instructions.json` weist das LLM an, Abschnittstitel und Fließtext zum Emit-Zeitpunkt in die Zielausgabesprache zu übersetzen.
|
|
902
|
-
|
|
903
|
-
---
|
|
422
|
+
## Verifikation (nach der Generierung)
|
|
904
423
|
|
|
905
|
-
|
|
424
|
+
Nachdem Claude die Docs geschrieben hat, verifiziert Code sie. Fünf separate Validatoren:
|
|
906
425
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
- `
|
|
911
|
-
|
|
912
|
-
- `
|
|
913
|
-
- `
|
|
426
|
+
| Validator | Was er prüft | Aufruf durch |
|
|
427
|
+
|---|---|---|
|
|
428
|
+
| `claude-md-validator` | Strukturelle Invarianten von CLAUDE.md (8 Sektionen, sprachunabhängig) | `claudeos-core lint` |
|
|
429
|
+
| `content-validator` | Behauptete Pfade existieren wirklich; Manifest-Konsistenz | `health` (advisory) |
|
|
430
|
+
| `pass-json-validator` | Pass-1/2/3/4-Ausgaben sind wohlgeformtes JSON | `health` (warn) |
|
|
431
|
+
| `plan-validator` | Gespeicherter Plan stimmt mit der Festplatte überein | `health` (fail-on-error) |
|
|
432
|
+
| `sync-checker` | Festplattendateien stimmen mit `sync-map.json`-Registrierungen überein (Erkennung verwaister/nicht registrierter Einträge) | `health` (fail-on-error) |
|
|
914
433
|
|
|
915
|
-
|
|
434
|
+
Ein `health-checker` orchestriert die vier Laufzeit-Validatoren mit drei Schweregrad-Stufen (fail / warn / advisory) und beendet sich mit dem passenden Code für CI. `claude-md-validator` läuft separat über den `lint`-Befehl, weil strukturelle Drift ein Re-init-Signal ist und keine weiche Warnung. Jederzeit ausführbar:
|
|
916
435
|
|
|
917
436
|
```bash
|
|
918
|
-
|
|
919
|
-
npx claudeos-core init
|
|
920
|
-
```
|
|
921
|
-
|
|
922
|
-
**Was erkannt wird:**
|
|
923
|
-
- Abhängigkeiten aus `apps/web/package.json` (z. B. `next`, `react`) → Frontend-Stack
|
|
924
|
-
- Abhängigkeiten aus `apps/api/package.json` (z. B. `express`, `prisma`) → Backend-Stack
|
|
925
|
-
- Abhängigkeiten aus `packages/db/package.json` (z. B. `drizzle-orm`) → ORM/DB
|
|
926
|
-
- Benutzerdefinierte Workspace-Pfade aus `pnpm-workspace.yaml` (z. B. `services/*`)
|
|
927
|
-
|
|
928
|
-
**Domain-Scanning deckt auch Monorepo-Layouts ab:**
|
|
929
|
-
- `apps/api/src/modules/*/` und `apps/api/src/*/` für Backend-Domains
|
|
930
|
-
- `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` für Frontend-Domains
|
|
931
|
-
- `packages/*/src/*/` für Shared-Package-Domains
|
|
932
|
-
|
|
933
|
-
```
|
|
934
|
-
my-monorepo/ ← Hier ausführen: npx claudeos-core init
|
|
935
|
-
├── turbo.json ← Als Turborepo auto-erkannt
|
|
936
|
-
├── apps/
|
|
937
|
-
│ ├── web/ ← Next.js erkannt aus apps/web/package.json
|
|
938
|
-
│ │ ├── app/dashboard/ ← Frontend-Domain erkannt
|
|
939
|
-
│ │ └── package.json ← { "dependencies": { "next": "^14" } }
|
|
940
|
-
│ └── api/ ← Express erkannt aus apps/api/package.json
|
|
941
|
-
│ ├── src/modules/users/ ← Backend-Domain erkannt
|
|
942
|
-
│ └── package.json ← { "dependencies": { "express": "^4" } }
|
|
943
|
-
├── packages/
|
|
944
|
-
│ ├── db/ ← Drizzle erkannt aus packages/db/package.json
|
|
945
|
-
│ └── ui/
|
|
946
|
-
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
437
|
+
npx claudeos-core health
|
|
947
438
|
```
|
|
948
439
|
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
## Fehlerbehebung
|
|
952
|
-
|
|
953
|
-
**„claude: command not found"** — Claude Code CLI ist nicht installiert oder nicht im PATH. Siehe [Claude-Code-Docs](https://code.claude.com/docs/en/overview).
|
|
440
|
+
Die Prüfungen jedes Validators im Detail finden Sie in [docs/de/verification.md](docs/de/verification.md).
|
|
954
441
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
**„0 domains detected"** — Ihre Projektstruktur ist möglicherweise nicht-standardisiert. Siehe die Erkennungsmuster oben für Ihren Stack.
|
|
958
|
-
|
|
959
|
-
**„0 domains detected" bei einem Kotlin-Projekt** — Stellen Sie sicher, dass Ihr Projekt `build.gradle.kts` (oder `build.gradle` mit kotlin-Plugin) im Root hat und dass Quelldateien unter `**/src/main/kotlin/` liegen. Für Multi-Modul-Projekte stellen Sie sicher, dass `settings.gradle.kts` `include()`-Statements enthält. Single-Modul-Kotlin-Projekte (ohne `settings.gradle`) werden ebenfalls unterstützt — Domains werden aus der Package-/Class-Struktur unter `src/main/kotlin/` extrahiert.
|
|
442
|
+
---
|
|
960
443
|
|
|
961
|
-
|
|
444
|
+
## Memory Layer (optional, für lang laufende Projekte)
|
|
962
445
|
|
|
963
|
-
|
|
446
|
+
Seit v2.0 schreibt ClaudeOS-Core einen `claudeos-core/memory/`-Ordner mit vier Dateien:
|
|
964
447
|
|
|
965
|
-
|
|
448
|
+
- `decision-log.md` — append-only-Historie „warum wir X statt Y gewählt haben"
|
|
449
|
+
- `failure-patterns.md` — wiederkehrende Fehler mit Frequenz-/Wichtigkeitswerten
|
|
450
|
+
- `compaction.md` — wie Memory mit der Zeit automatisch verdichtet wird
|
|
451
|
+
- `auto-rule-update.md` — Muster, die zu neuen Regeln werden sollten
|
|
966
452
|
|
|
967
|
-
|
|
453
|
+
Sie können `npx claudeos-core memory propose-rules` ausführen, um Claude die jüngsten Failure-Patterns prüfen und neue Regeln vorschlagen zu lassen.
|
|
968
454
|
|
|
969
|
-
|
|
455
|
+
Das Memory-Modell und seinen Lebenszyklus beschreibt [docs/de/memory-layer.md](docs/de/memory-layer.md).
|
|
970
456
|
|
|
971
|
-
|
|
457
|
+
---
|
|
972
458
|
|
|
973
|
-
|
|
459
|
+
## FAQ
|
|
974
460
|
|
|
975
|
-
|
|
461
|
+
**F: Brauche ich einen Claude-API-Key?**
|
|
462
|
+
A: Nein. ClaudeOS-Core nutzt Ihre vorhandene Claude-Code-Installation — es leitet Prompts an `claude -p` auf Ihrem Rechner weiter. Keine zusätzlichen Konten.
|
|
976
463
|
|
|
977
|
-
|
|
464
|
+
**F: Überschreibt das meine bestehende CLAUDE.md oder `.claude/rules/`?**
|
|
465
|
+
A: Erstaufruf in einem frischen Projekt: Es legt sie an. Wiederaufruf ohne `--force` bewahrt Ihre Änderungen — Pass-Marker des vorherigen Laufs werden erkannt und die Passes übersprungen. Wiederaufruf mit `--force` löscht alles und generiert neu (Ihre Änderungen gehen verloren — genau das bedeutet `--force`). Siehe [docs/de/safety.md](docs/de/safety.md).
|
|
978
466
|
|
|
979
|
-
|
|
467
|
+
**F: Mein Stack wird nicht unterstützt. Kann ich einen hinzufügen?**
|
|
468
|
+
A: Ja. Neue Stacks brauchen ~3 Prompt-Templates und einen Domain-Scanner. Den 8-Schritte-Leitfaden finden Sie in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
980
469
|
|
|
981
|
-
|
|
470
|
+
**F: Wie generiere ich Docs auf Deutsch (oder einer anderen Sprache)?**
|
|
471
|
+
A: `npx claudeos-core init --lang de`. 10 Sprachen werden unterstützt: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
|
|
982
472
|
|
|
983
|
-
|
|
473
|
+
**F: Funktioniert das mit Monorepos?**
|
|
474
|
+
A: Ja — Turborepo (`turbo.json`), pnpm-Workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) und npm/yarn-Workspaces (`package.json#workspaces`) werden vom Stack-Detector erkannt. Jede App erhält ihre eigene Analyse. Andere Monorepo-Layouts (z. B. NX) werden nicht spezifisch erkannt, aber die generischen Muster `apps/*/` und `packages/*/` werden trotzdem von den stackspezifischen Scannern erfasst.
|
|
984
475
|
|
|
985
|
-
|
|
476
|
+
**F: Was, wenn Claude Code Regeln generiert, mit denen ich nicht einverstanden bin?**
|
|
477
|
+
A: Bearbeiten Sie sie direkt. Führen Sie dann `npx claudeos-core lint` aus, um zu prüfen, ob CLAUDE.md noch strukturell gültig ist. Ihre Änderungen bleiben bei späteren `init`-Aufrufen (ohne `--force`) erhalten — der Resume-Mechanismus überspringt Passes, deren Marker existieren.
|
|
986
478
|
|
|
987
|
-
|
|
479
|
+
**F: Wo melde ich Bugs?**
|
|
480
|
+
A: [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). Sicherheitsprobleme bitte in [SECURITY.md](SECURITY.md) nachlesen.
|
|
988
481
|
|
|
989
|
-
|
|
482
|
+
---
|
|
990
483
|
|
|
991
|
-
|
|
484
|
+
## Documentation
|
|
992
485
|
|
|
993
|
-
|
|
486
|
+
| Thema | Lesen Sie |
|
|
487
|
+
|---|---|
|
|
488
|
+
| Wie die 4-Pass-Pipeline funktioniert (tiefer als das Diagramm) | [docs/de/architecture.md](docs/de/architecture.md) |
|
|
489
|
+
| Visuelle Diagramme (Mermaid) der Architektur | [docs/de/diagrams.md](docs/de/diagrams.md) |
|
|
490
|
+
| Stack-Erkennung — wonach jeder Scanner sucht | [docs/de/stacks.md](docs/de/stacks.md) |
|
|
491
|
+
| Memory Layer — Decision Logs und Failure Patterns | [docs/de/memory-layer.md](docs/de/memory-layer.md) |
|
|
492
|
+
| Alle 5 Validatoren im Detail | [docs/de/verification.md](docs/de/verification.md) |
|
|
493
|
+
| Jeder CLI-Befehl und jede Option | [docs/de/commands.md](docs/de/commands.md) |
|
|
494
|
+
| Manuelle Installation (ohne `npx`) | [docs/de/manual-installation.md](docs/de/manual-installation.md) |
|
|
495
|
+
| Scanner-Overrides — `.claudeos-scan.json` | [docs/de/advanced-config.md](docs/de/advanced-config.md) |
|
|
496
|
+
| Sicherheit: Was bei Re-init erhalten bleibt | [docs/de/safety.md](docs/de/safety.md) |
|
|
497
|
+
| Vergleich mit ähnlichen Tools (Scope, nicht Qualität) | [docs/de/comparison.md](docs/de/comparison.md) |
|
|
498
|
+
| Fehler und Wiederherstellung | [docs/de/troubleshooting.md](docs/de/troubleshooting.md) |
|
|
994
499
|
|
|
995
500
|
---
|
|
996
501
|
|
|
997
502
|
## Mitwirken
|
|
998
503
|
|
|
999
|
-
Beiträge
|
|
504
|
+
Beiträge willkommen — Stack-Unterstützung hinzufügen, Prompts verbessern, Bugs beheben. Siehe [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
1000
505
|
|
|
1001
|
-
|
|
1002
|
-
- **IDE-Integration** — VS-Code-Extension, IntelliJ-Plugin
|
|
1003
|
-
- **CI/CD-Templates** — GitLab CI, CircleCI, Jenkins-Beispiele (GitHub Actions bereits ausgeliefert — siehe `.github/workflows/test.yml`)
|
|
1004
|
-
- **Testabdeckung** — Erweiterung der Test-Suite (derzeit 602 Tests über 30 Test-Dateien, die Scanner, Stack-Erkennung, Domain-Grouping, Plan-Parsing, Prompt-Generierung, CLI-Selectors, Monorepo-Erkennung, Vite-SPA-Erkennung, Verifikations-Tools, L4-Memory-Scaffold, Pass-2-Resume-Validierung, Pass-3-Guards 1/2/3 (H1-Sentinel + H2-BOM-aware-Empty-File + strikter Stale-Marker-Unlink), Pass-3-Split-Mode-Batch-Unterteilung, Pass-3-Partial-Marker-Resume (v2.1.0), Pass-4-Marker-Content-Validierung + Stale-Marker-Unlink-Striktheit + scaffoldSkillsManifest-Gap-Fill (v2.1.0), Translation-Env-Skip-Guard + Early-Fail-Fast + CI-Workflow, staged-rules-Move, lang-aware-Translation-Fallback, Master-Plan-Removal-Regressions-Suite (v2.1.0), Memory-Score/Compact-Formatting-Regression (v2.1.0) und AI-Work-Rules-Template-Struktur und `.env`-Parser Port/Host/API-Target-Extraktion + Redaction sensibler Variablen (v2.2.0) abdecken)
|
|
506
|
+
Verhaltenskodex und Sicherheitsrichtlinie finden Sie in [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) und [SECURITY.md](SECURITY.md).
|
|
1005
507
|
|
|
1006
|
-
|
|
508
|
+
## License
|
|
1007
509
|
|
|
1008
|
-
|
|
510
|
+
[ISC](LICENSE) — frei für jede Nutzung, einschließlich kommerziell.
|
|
1009
511
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
Erstellt von **claudeos-core** — [GitHub](https://github.com/claudeos-core) · [E-Mail](mailto:claudeoscore@gmail.com)
|
|
1013
|
-
|
|
1014
|
-
## Lizenz
|
|
512
|
+
---
|
|
1015
513
|
|
|
1016
|
-
|
|
514
|
+
<sub>Mit Sorgfalt gebaut von [@claudeos-core](https://github.com/claudeos-core). Wenn Ihnen das Tool Zeit gespart hat, hält ein ⭐ auf GitHub die Sichtbarkeit aufrecht.</sub>
|