claudeos-core 2.3.0 → 2.3.2
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 +740 -0
- package/README.de.md +1 -5
- package/README.es.md +1 -5
- package/README.fr.md +1 -5
- package/README.hi.md +1 -5
- package/README.ja.md +1 -5
- package/README.ko.md +1 -5
- package/README.md +2 -6
- package/README.ru.md +1 -5
- package/README.vi.md +1 -5
- package/README.zh-CN.md +1 -5
- package/bin/commands/init.js +378 -227
- package/content-validator/index.js +89 -9
- package/package.json +3 -3
- package/pass-prompts/templates/common/claude-md-scaffold.md +122 -20
- package/pass-prompts/templates/common/pass3-footer.md +193 -56
- package/pass-prompts/templates/common/pass3a-facts.md +48 -3
- package/pass-prompts/templates/common/pass4.md +78 -40
- package/pass-prompts/templates/java-spring/pass1.md +54 -0
- package/pass-prompts/templates/java-spring/pass3.md +1 -1
- package/pass-prompts/templates/kotlin-spring/pass1.md +45 -0
- package/pass-prompts/templates/kotlin-spring/pass3.md +1 -1
- package/plan-installer/index.js +23 -0
- package/plan-installer/pass3-context-builder.js +14 -0
- package/plan-installer/scanners/scan-frontend.js +2 -1
- package/plan-installer/source-paths.js +242 -0
- package/plan-installer/stack-detector.js +478 -42
package/README.de.md
CHANGED
|
@@ -83,7 +83,7 @@ Die sprachübergreifende Garantie wird durch Test-Fixtures in allen 10 Sprachen
|
|
|
83
83
|
|
|
84
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
85
|
|
|
86
|
-
- **`STALE_PATH`** — wenn Pass 3 oder Pass 4 einen plausiblen, aber nicht existierenden Pfad erfindet.
|
|
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
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
88
|
|
|
89
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.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # alle Validatoren — einzelnes Go/No-Go-Urteil
|
|
|
95
95
|
npx claudeos-core lint # nur strukturelle Invarianten von CLAUDE.md (beliebige Sprache)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Verifizierung in der realen Welt
|
|
99
|
-
|
|
100
|
-
v2.3.0 wurde vor dem Release end-to-end auf zwei realen koreanischen Schwesterprojekten validiert: einem Single-SPA-Vite-+-React-19-Frontend mit 14 Domänen und einem 8-Sub-Skill-`scaffold-page-feature`-Orchestrator sowie einem Spring-Boot-+-MyBatis-Backend mit 8 Domänen und einem 8-Sub-Skill-`scaffold-crud-feature`-Orchestrator, das sich mitten in einer PostgreSQL-→-MariaDB-Migration befindet. Beide landeten bei **0 Fehlern, 0 Warnungen** im kompletten Health-Check — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 strukturelle Invarianten bestanden — ohne eine einzige manuelle Bearbeitung der generierten Ausgabe.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Unterstützte Stacks
|
package/README.es.md
CHANGED
|
@@ -83,7 +83,7 @@ La garantía cross-idioma se verifica mediante fixtures de prueba en los 10 idio
|
|
|
83
83
|
|
|
84
84
|
Lee toda referencia de ruta entre backticks (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) de todos los archivos `.md` generados y las verifica contra el sistema de archivos real. Captura dos clases de fallo de LLM que ninguna herramienta detectaba antes:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — cuando Pass 3 o Pass 4 inventa una ruta plausible pero inexistente.
|
|
86
|
+
- **`STALE_PATH`** — cuando Pass 3 o Pass 4 inventa una ruta plausible pero inexistente. Tres clases canónicas: (1) **renormalización de identificador a nombre de archivo** — inferir un nombre de archivo a partir de una constante TypeScript en ALL_CAPS o una anotación Java cuando el archivo real sigue una convención de nombre diferente; (2) **invención de punto de entrada por convención de framework** — asumir un archivo de entrada estándar (el módulo main de Vite, los providers del app-router de Next.js, etc.) en un proyecto que eligió una disposición distinta; (3) **invención de utilidad con nombre plausible** — citar un nombre de archivo concreto para un helper que "existiría naturalmente" bajo un directorio visible.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — cuando `claudeos-core/skills/00.shared/MANIFEST.md` registra un skill que `CLAUDE.md §6` no menciona (o viceversa). Reconoce el layout común orchestrator + sub-skills donde `CLAUDE.md §6` es un punto de entrada y `MANIFEST.md` es el registro completo — los sub-skills se consideran cubiertos vía su orchestrator padre.
|
|
88
88
|
|
|
89
89
|
El validador se empareja con prevención en tiempo de prompt en `pass3-footer.md` y `pass4.md`: bloques de anti-patrón que documentan las clases específicas de alucinación (prefijo de directorio padre, convenciones de bibliotecas Vite/MSW/Vitest/Jest/RTL) y guía positiva explícita para definir el alcance de las reglas por directorio cuando un nombre de archivo concreto no está en `pass3a-facts.md`.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # todos los validadores — veredicto único go/no-
|
|
|
95
95
|
npx claudeos-core lint # solo invariantes estructurales de CLAUDE.md (cualquier idioma)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Verificación en el mundo real
|
|
99
|
-
|
|
100
|
-
v2.3.0 fue validado end-to-end en dos proyectos hermanos reales en coreano antes del lanzamiento: un frontend Vite + React 19 single-SPA con 14 dominios y un orchestrator `scaffold-page-feature` de 8 sub-skills, y un backend Spring Boot + MyBatis con 8 dominios y un orchestrator `scaffold-crud-feature` de 8 sub-skills en plena migración PostgreSQL → MariaDB. Ambos se asentaron en **0 errores, 0 advertencias** en el health check completo — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 invariantes estructurales pasando — sin ninguna edición manual sobre la salida generada.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Stacks Soportados
|
package/README.fr.md
CHANGED
|
@@ -83,7 +83,7 @@ La garantie cross-langue est vérifiée par des fixtures de test dans les 10 lan
|
|
|
83
83
|
|
|
84
84
|
Lit chaque référence de chemin entre backticks (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) dans tous les fichiers `.md` générés et les vérifie contre le vrai système de fichiers. Attrape deux classes d'échecs LLM que aucun outil ne détectait auparavant :
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — quand Pass 3 ou Pass 4 fabrique un chemin plausible mais inexistant.
|
|
86
|
+
- **`STALE_PATH`** — quand Pass 3 ou Pass 4 fabrique un chemin plausible mais inexistant. Trois classes canoniques : (1) **renormalisation identifiant → nom de fichier** — déduire un nom de fichier à partir d'une constante TypeScript en ALL_CAPS ou d'une annotation Java alors que le fichier réel suit une convention de nommage différente ; (2) **invention d'un point d'entrée par convention de framework** — supposer un fichier d'entrée standard (le module main de Vite, les providers d'app-router de Next.js, etc.) dans un projet ayant choisi une autre disposition ; (3) **invention d'un utilitaire au nom plausible** — citer un nom de fichier concret pour un helper qui « existerait naturellement » sous un répertoire visible.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — quand `claudeos-core/skills/00.shared/MANIFEST.md` enregistre un skill que `CLAUDE.md §6` ne mentionne pas (ou inversement). Reconnaît le layout courant orchestrator + sub-skills où `CLAUDE.md §6` est un point d'entrée et `MANIFEST.md` est le registre complet — les sub-skills sont considérés couverts via leur orchestrator parent.
|
|
88
88
|
|
|
89
89
|
Le validateur est couplé à une prévention au moment du prompt dans `pass3-footer.md` et `pass4.md` : des blocs anti-pattern documentant les classes spécifiques d'hallucination (préfixe de répertoire parent, conventions de bibliothèques Vite/MSW/Vitest/Jest/RTL) et une guidance positive explicite pour scope les règles par répertoire quand un nom de fichier concret n'est pas dans `pass3a-facts.md`.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # tous les validateurs — verdict go/no-go unique
|
|
|
95
95
|
npx claudeos-core lint # uniquement les invariants structurels de CLAUDE.md (n'importe quelle langue)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Vérification en conditions réelles
|
|
99
|
-
|
|
100
|
-
v2.3.0 a été validé end-to-end avant la release sur deux projets frères coréens réels : un frontend single-SPA Vite + React 19 avec 14 domaines et un orchestrator `scaffold-page-feature` à 8 sub-skills, et un backend Spring Boot + MyBatis avec 8 domaines et un orchestrator `scaffold-crud-feature` à 8 sub-skills en pleine migration PostgreSQL → MariaDB. Les deux se sont stabilisés à **0 erreurs, 0 avertissements** sur le health check complet — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 invariants structurels passent — sans aucune édition manuelle de la sortie générée.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Stacks Supportés
|
package/README.hi.md
CHANGED
|
@@ -83,7 +83,7 @@ Cross-language गारंटी को सभी 10 भाषाओं मे
|
|
|
83
83
|
|
|
84
84
|
सभी जेनरेट की गई `.md` फ़ाइलों से हर backticked path reference (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) पढ़ता है और उन्हें वास्तविक file system के खिलाफ सत्यापित करता है। दो क्लास की LLM failures पकड़ता है जो पहले कोई tool detect नहीं करता था:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — जब Pass 3 या Pass 4 एक plausible-but-nonexistent path गढ़ देता है।
|
|
86
|
+
- **`STALE_PATH`** — जब Pass 3 या Pass 4 एक plausible-but-nonexistent path गढ़ देता है। तीन प्रमुख वर्ग: (1) **पहचानकर्ता से फ़ाइलनाम पुनर्सामान्यीकरण** — ALL_CAPS TypeScript constant या Java annotation से फ़ाइलनाम infer करना जबकि वास्तविक फ़ाइल एक अलग नामकरण परंपरा का पालन करती है; (2) **फ़्रेमवर्क-परंपरागत प्रवेश बिंदु कल्पना** — एक अलग लेआउट चुनने वाले प्रोजेक्ट में मानक प्रवेश फ़ाइल (Vite का main मॉड्यूल, Next.js app-router providers, आदि) की मौजूदगी मान लेना; (3) **सुनने में सही लगने वाली उपयोगिता कल्पना** — दिखाई देने वाली directory के अंतर्गत "स्वाभाविक रूप से मौजूद होने वाले" helper के लिए एक विशिष्ट फ़ाइलनाम का उल्लेख करना।
|
|
87
87
|
- **`MANIFEST_DRIFT`** — जब `claudeos-core/skills/00.shared/MANIFEST.md` एक skill रजिस्टर करता है जिसका `CLAUDE.md §6` में उल्लेख नहीं है (या इसके विपरीत)। सामान्य orchestrator + sub-skills layout को पहचानता है, जहाँ `CLAUDE.md §6` एक entry point है और `MANIFEST.md` पूर्ण registry है — sub-skills को उनके parent orchestrator के माध्यम से cover माना जाता है।
|
|
88
88
|
|
|
89
89
|
Validator को `pass3-footer.md` और `pass4.md` में prompt-time prevention के साथ जोड़ा गया है: विशिष्ट hallucination classes (parent-directory prefix, Vite/MSW/Vitest/Jest/RTL library conventions) को document करने वाले anti-pattern blocks, और स्पष्ट positive guidance कि जब `pass3a-facts.md` में एक concrete filename नहीं है, तो rule को directory-scope से scope करें।
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # सभी validators — एक single go/no-go v
|
|
|
95
95
|
npx claudeos-core lint # केवल CLAUDE.md structural invariants (किसी भी भाषा में)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### वास्तविक-दुनिया सत्यापन
|
|
99
|
-
|
|
100
|
-
v2.3.0 को release से पहले दो वास्तविक कोरियाई sibling projects पर end-to-end validate किया गया था: एक 14-domain single-SPA Vite + React 19 frontend जिसमें 8 sub-skill `scaffold-page-feature` orchestrator है, और एक 8-domain Spring Boot + MyBatis backend जिसमें 8 sub-skill `scaffold-crud-feature` orchestrator है और PostgreSQL → MariaDB migration चल रहा है। दोनों पूर्ण health check पर **0 errors, 0 warnings** पर settle हुए — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 structural invariants pass — जेनरेटेड output पर कोई manual edit किए बिना।
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## सपोर्टेड स्टैक्स
|
package/README.ja.md
CHANGED
|
@@ -83,7 +83,7 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()`(`ResponseEntity.s
|
|
|
83
83
|
|
|
84
84
|
生成されたすべての `.md` ファイルからバッククォート付きのパス参照 (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) を読み取り、実際のファイルシステムと照合します。これまでどのツールも検出できなかった 2 つの LLM 失敗クラスを捕捉します:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — Pass 3 または Pass 4
|
|
86
|
+
- **`STALE_PATH`** — Pass 3 または Pass 4 がもっともらしいが実在しないパスを捏造した場合。3つの代表的クラス: (1) **識別子 → ファイル名の再正規化** — ALL_CAPS の TypeScript 定数や Java アノテーションから、実際のファイル名とは異なる命名規則のファイル名を推論; (2) **フレームワーク慣習の起点ファイル捏造** — 別のレイアウトを採用したプロジェクトに、フレームワーク標準の起点ファイル(Vite の main モジュール、Next.js app-router providers など)があると仮定; (3) **もっともらしいユーティリティ捏造** — 可視ディレクトリ配下に「自然に存在しそうな」ヘルパーの具体ファイル名を引用。
|
|
87
87
|
- **`MANIFEST_DRIFT`** — `claudeos-core/skills/00.shared/MANIFEST.md` に登録された skill が `CLAUDE.md §6` に言及されていない (または逆)。`CLAUDE.md §6` がエントリーポイントで `MANIFEST.md` が完全なレジストリとなる orchestrator + sub-skill レイアウトを認識し、sub-skill は親 orchestrator を介して間接的にカバーされると判定します。
|
|
88
88
|
|
|
89
89
|
validator は `pass3-footer.md` と `pass4.md` の prompt-time prevention とペアになります: 特定の幻覚クラス (親ディレクトリ接頭辞、Vite/MSW/Vitest/Jest/RTL ライブラリ慣習) を文書化した anti-pattern ブロックと、`pass3a-facts.md` に具体的なファイル名がない場合はルールをディレクトリ単位でスコープするという明示的な positive guidance。
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # すべての validator — 単一 go/no-go 判定
|
|
|
95
95
|
npx claudeos-core lint # CLAUDE.md 構造不変条件のみ (任意の言語)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### 実世界検証
|
|
99
|
-
|
|
100
|
-
v2.3.0 はリリース前に、実世界の韓国語姉妹プロジェクト 2 つで end-to-end 検証されました: 14 ドメイン + 8 サブスキルの `scaffold-page-feature` orchestrator を持つ single-SPA Vite + React 19 フロントエンド 1 つと、8 ドメイン + 8 サブスキルの `scaffold-crud-feature` orchestrator を持ち PostgreSQL → MariaDB 移行中の Spring Boot + MyBatis バックエンド 1 つ。両者とも full health check で **エラー 0、警告 0** に落ち着きました — `STALE_PATH` 0、`MANIFEST_DRIFT` 0、25/25 の構造不変条件すべて通過 — 生成された出力への手動編集は一切なし。
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## 対応スタック
|
package/README.ko.md
CHANGED
|
@@ -83,7 +83,7 @@ ClaudeOS-Core는 프로젝트가 `ApiResponse.ok()`를 쓴다는 것, MyBatis XM
|
|
|
83
83
|
|
|
84
84
|
생성된 모든 `.md` 파일에서 백틱으로 감싼 경로 참조(`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`)를 읽어 실제 파일 시스템과 대조합니다. 이전에는 어떤 도구도 감지하지 못했던 두 가지 LLM 실패 클래스를 잡아냅니다:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — Pass 3 또는 Pass 4가 그럴듯하지만 존재하지 않는 경로를 만들어낼 때.
|
|
86
|
+
- **`STALE_PATH`** — Pass 3 또는 Pass 4가 그럴듯하지만 존재하지 않는 경로를 만들어낼 때. 세 가지 대표 유형: (1) **식별자 → 파일명 재정규화** — ALL_CAPS TypeScript 상수나 Java 어노테이션에서 실제 파일명과 다른 규칙의 파일명을 추론; (2) **프레임워크 관습 진입점 날조** — 실제로는 다른 레이아웃을 택한 프로젝트에 프레임워크의 표준 진입점 파일(Vite의 main 모듈, Next.js app-router providers 등)이 존재한다고 가정; (3) **그럴듯한 유틸리티 날조** — 보이는 디렉토리 아래에 "자연스럽게 존재할 법한" 헬퍼의 구체적 파일명을 인용.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — `claudeos-core/skills/00.shared/MANIFEST.md`에 등록된 skill이 `CLAUDE.md §6`에 언급 안 되어 있거나 그 반대 상황. `CLAUDE.md §6`은 진입점이고 `MANIFEST.md`가 전체 레지스트리인 orchestrator + sub-skill 레이아웃을 인식해서, sub-skill은 부모 orchestrator를 통해 간접적으로 커버되는 것으로 판정합니다.
|
|
88
88
|
|
|
89
89
|
validator는 `pass3-footer.md`와 `pass4.md`의 prompt-time prevention과 짝을 이룹니다: 특정 환각 클래스(상위 디렉터리 접두사, Vite/MSW/Vitest/Jest/RTL 라이브러리 관례)를 문서화한 anti-pattern 블록과, `pass3a-facts.md`에 구체적인 파일명이 없을 때 규칙을 디렉터리 단위로 범위 지정하라는 명시적 positive guidance.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # 모든 validator — 단일 go/no-go 판정
|
|
|
95
95
|
npx claudeos-core lint # CLAUDE.md 구조 불변 조건만 (모든 언어)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### 실전 검증
|
|
99
|
-
|
|
100
|
-
v2.3.0은 릴리즈 전 두 개의 실제 한국어 자매 프로젝트에서 end-to-end로 검증되었습니다: 14 도메인 + 8-sub-skill `scaffold-page-feature` orchestrator를 가진 single-SPA Vite + React 19 frontend 1개와, 8 도메인 + 8-sub-skill `scaffold-crud-feature` orchestrator를 가지고 PostgreSQL → MariaDB 마이그레이션을 진행 중인 Spring Boot + MyBatis backend 1개. 둘 모두 full health check에서 **오류 0개, 경고 0개**에 안착했습니다 — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 구조 불변 조건 통과 — 생성된 결과에 대한 수동 편집 없이.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## 지원 스택
|
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ The cross-language guarantee is verified by test fixtures in all 10 languages, i
|
|
|
83
83
|
|
|
84
84
|
Reads every backticked path reference (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) from all generated `.md` files and verifies them against the actual file system. Catches two classes of LLM failure that no tool detected before:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — when Pass 3 or Pass 4 fabricates a plausible-but-nonexistent path.
|
|
86
|
+
- **`STALE_PATH`** — when Pass 3 or Pass 4 fabricates a plausible-but-nonexistent path. Three canonical classes: (1) **identifier-to-filename renormalization** — inferring a filename from an ALL_CAPS TypeScript constant or Java annotation when the actual filename lives under a different convention; (2) **framework-convention entry-point invention** — assuming a stock entry-point file (Vite's main module, Next.js app-router providers, etc.) in a project that chose a different layout; (3) **plausibly-named utility invention** — citing a concrete filename for a helper that "would naturally" exist under a seen directory.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — when `claudeos-core/skills/00.shared/MANIFEST.md` registers a skill that `CLAUDE.md §6` doesn't mention (or vice versa). Recognizes the common orchestrator + sub-skills layout where `CLAUDE.md §6` is an entry point and `MANIFEST.md` is the full registry — sub-skills are considered covered via their parent orchestrator.
|
|
88
88
|
|
|
89
89
|
The validator is paired with prompt-time prevention in `pass3-footer.md` and `pass4.md`: anti-pattern blocks documenting the specific hallucination classes (parent-directory prefix, Vite/MSW/Vitest/Jest/RTL library conventions), and explicit positive guidance to scope rules by directory when a concrete filename isn't in `pass3a-facts.md`.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # all validators — single go/no-go verdict
|
|
|
95
95
|
npx claudeos-core lint # CLAUDE.md structural invariants only (any language)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Real-world verification
|
|
99
|
-
|
|
100
|
-
v2.3.0 was validated end-to-end on two real-world Korean sibling projects before release: a single-SPA Vite + React 19 frontend with 14 domains and an 8-sub-skill `scaffold-page-feature` orchestrator, and a Spring Boot + MyBatis backend with 8 domains and an 8-sub-skill `scaffold-crud-feature` orchestrator undergoing a PostgreSQL → MariaDB migration. Both settled at **0 errors, 0 warnings** on the full health check — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 structural invariants passing — without any manual edits to the generated output.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Supported Stacks
|
|
@@ -648,7 +644,7 @@ node claudeos-core-tools/sync-checker/index.js
|
|
|
648
644
|
| **manifest-generator** | Builds metadata JSON (`rule-manifest.json`, `sync-map.json`, initializes `stale-report.json`); indexes 7 directories including `memory/` (`totalMemory` in summary). v2.1.0: `plan-manifest.json` is no longer generated since master plans were removed. |
|
|
649
645
|
| **plan-validator** | Validates master plan `<file>` blocks against disk for projects that still have `claudeos-core/plan/` (legacy upgrade case). v2.1.0: skips `plan-sync-status.json` emission when `plan/` is absent or empty — `stale-report.json` still records a passing no-op. |
|
|
650
646
|
| **sync-checker** | Detects unregistered files (on disk but not in plan) and orphaned entries — covers 7 directories (added `memory/` in v2.0.0). Exits cleanly when `sync-map.json` has no mappings (v2.1.0 default state). |
|
|
651
|
-
| **content-validator** | 10-check quality gate. Checks 1–9 cover empty files, missing ✅/❌ examples, required sections, and L4 memory scaffold integrity (decision-log heading dates, failure-pattern required fields, fence-aware parsing). **Check 10 (v2.3.0)** adds path-claim verification across all generated `.md` files and MANIFEST ↔ CLAUDE.md §6 cross-reference — catches `STALE_PATH` (fabricated paths
|
|
647
|
+
| **content-validator** | 10-check quality gate. Checks 1–9 cover empty files, missing ✅/❌ examples, required sections, and L4 memory scaffold integrity (decision-log heading dates, failure-pattern required fields, fence-aware parsing). **Check 10 (v2.3.0)** adds path-claim verification across all generated `.md` files and MANIFEST ↔ CLAUDE.md §6 cross-reference — catches `STALE_PATH` (LLM-fabricated paths from identifier-to-filename renormalization, framework-convention entry-point invention, or plausibly-named utility invention) and `MANIFEST_DRIFT` (registered skills not mentioned in CLAUDE.md or vice versa), with an orchestrator/sub-skill exception that recognizes the canonical "§6 entry point + MANIFEST registry" split. |
|
|
652
648
|
| **claude-md-validator (v2.3.0)** | Structural invariant check on `CLAUDE.md` using only language-invariant signals (markdown syntax, literal file names, section/sub-section/table-row counts). 25 checks, language-agnostic — identical verdicts across all 10 output languages. Invoked via `npx claudeos-core lint`. |
|
|
653
649
|
| **pass-json-validator** | Validates Pass 1–4 JSON structure plus the `pass3-complete.json` (split-mode shape, v2.1.0) and `pass4-memory.json` completion markers |
|
|
654
650
|
|
package/README.ru.md
CHANGED
|
@@ -83,7 +83,7 @@ ClaudeOS-Core создаёт документацию, которая знает
|
|
|
83
83
|
|
|
84
84
|
Читает каждую ссылку на путь в обратных кавычках (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) из всех сгенерированных `.md`-файлов и сверяет их с реальной файловой системой. Ловит два класса сбоев LLM, которые раньше не обнаруживал ни один инструмент:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — когда Pass 3 или Pass 4 выдумывает правдоподобный, но несуществующий путь.
|
|
86
|
+
- **`STALE_PATH`** — когда Pass 3 или Pass 4 выдумывает правдоподобный, но несуществующий путь. Три канонических класса: (1) **ренормализация идентификатора в имя файла** — вывод имени файла из TypeScript-константы в ALL_CAPS или Java-аннотации, хотя реальный файл следует другой конвенции именования; (2) **выдумывание точки входа по конвенции фреймворка** — предположение стандартного файла входа (main-модуль Vite, app-router providers Next.js и т.п.) в проекте, выбравшем иную раскладку; (3) **выдумывание правдоподобно названной утилиты** — указание конкретного имени файла для хелпера, который «естественно существовал бы» в видимой директории.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — когда `claudeos-core/skills/00.shared/MANIFEST.md` регистрирует skill, о котором `CLAUDE.md §6` не упоминает (или наоборот). Распознаёт общую схему orchestrator + sub-skills, где `CLAUDE.md §6` — точка входа, а `MANIFEST.md` — полный реестр; sub-skill'ы считаются покрытыми через их родительский orchestrator.
|
|
88
88
|
|
|
89
89
|
Валидатор парой работает с prompt-time-предотвращением в `pass3-footer.md` и `pass4.md`: блоки anti-pattern, документирующие конкретные классы галлюцинаций (префикс родительского каталога, конвенции библиотек Vite/MSW/Vitest/Jest/RTL), и явное positive guidance — ограничивать правила уровнем каталога, когда конкретного имени файла нет в `pass3a-facts.md`.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # все валидаторы — единый ве
|
|
|
95
95
|
npx claudeos-core lint # только структурные инварианты CLAUDE.md (любой язык)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Проверка в реальных условиях
|
|
99
|
-
|
|
100
|
-
v2.3.0 прошёл end-to-end-валидацию перед релизом на двух реальных корейских sibling-проектах: single-SPA Vite + React 19 frontend с 14 доменами и 8-sub-skill orchestrator `scaffold-page-feature`, и Spring Boot + MyBatis backend с 8 доменами и 8-sub-skill orchestrator `scaffold-crud-feature` в процессе миграции PostgreSQL → MariaDB. Оба остановились на **0 ошибках, 0 предупреждениях** в полной health-проверке — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 структурных инвариантов прошли — без единой ручной правки сгенерированного вывода.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Поддерживаемые стеки
|
package/README.vi.md
CHANGED
|
@@ -83,7 +83,7 @@ Mỗi `CLAUDE.md` được sinh ra đều được kiểm tra đối chiếu v
|
|
|
83
83
|
|
|
84
84
|
Đọc mọi tham chiếu path được bọc bởi backtick (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) từ tất cả các file `.md` được sinh ra và xác minh chúng với file system thực. Bắt hai lớp thất bại của LLM mà không có công cụ nào phát hiện trước đây:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** — khi Pass 3 hoặc Pass 4 bịa ra một đường dẫn nghe có vẻ hợp lý nhưng không tồn tại.
|
|
86
|
+
- **`STALE_PATH`** — khi Pass 3 hoặc Pass 4 bịa ra một đường dẫn nghe có vẻ hợp lý nhưng không tồn tại. Ba nhóm điển hình: (1) **chuẩn hóa định danh → tên file** — suy ra tên file từ một TypeScript constant ALL_CAPS hoặc Java annotation trong khi file thực tế tuân theo quy ước đặt tên khác; (2) **bịa ra entry-point theo quy ước framework** — giả định một file entry-point chuẩn (module main của Vite, providers app-router của Next.js, v.v.) trong một dự án đã chọn bố cục khác; (3) **bịa ra utility nghe có vẻ hợp lý** — trích dẫn tên file cụ thể cho một helper "có thể tồn tại tự nhiên" dưới một thư mục đã thấy.
|
|
87
87
|
- **`MANIFEST_DRIFT`** — khi `claudeos-core/skills/00.shared/MANIFEST.md` đăng ký một skill mà `CLAUDE.md §6` không đề cập (hoặc ngược lại). Nhận diện layout orchestrator + sub-skills phổ biến, trong đó `CLAUDE.md §6` là điểm vào và `MANIFEST.md` là registry đầy đủ — các sub-skill được coi là được bao phủ thông qua orchestrator cha của chúng.
|
|
88
88
|
|
|
89
89
|
Validator này được kết hợp với phòng ngừa ở giai đoạn prompt trong `pass3-footer.md` và `pass4.md`: các khối anti-pattern ghi lại các lớp hallucination cụ thể (tiền tố thư mục cha, các quy ước thư viện Vite/MSW/Vitest/Jest/RTL), và positive guidance rõ ràng về việc giới hạn phạm vi các rule theo thư mục khi một tên file cụ thể không có trong `pass3a-facts.md`.
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # tất cả validator — một phán quyết go/n
|
|
|
95
95
|
npx claudeos-core lint # chỉ bất biến cấu trúc CLAUDE.md (bất kỳ ngôn ngữ nào)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### Xác minh thực tế
|
|
99
|
-
|
|
100
|
-
v2.3.0 đã được xác minh end-to-end trên hai dự án tiếng Hàn sibling thực tế trước khi phát hành: một frontend single-SPA Vite + React 19 với 14 domain và orchestrator `scaffold-page-feature` 8 sub-skill, và một backend Spring Boot + MyBatis với 8 domain và orchestrator `scaffold-crud-feature` 8 sub-skill đang trong quá trình migration PostgreSQL → MariaDB. Cả hai đều dừng lại ở **0 lỗi, 0 cảnh báo** trong health check đầy đủ — `STALE_PATH` 0, `MANIFEST_DRIFT` 0, 25/25 bất biến cấu trúc đều pass — mà không có bất kỳ chỉnh sửa thủ công nào trên output được sinh ra.
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## Stack Được Hỗ Trợ
|
package/README.zh-CN.md
CHANGED
|
@@ -83,7 +83,7 @@ ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而
|
|
|
83
83
|
|
|
84
84
|
读取所有生成的 `.md` 文件中以反引号括起的路径引用 (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) 并对照真实文件系统进行验证。捕捉两类此前没有工具能检测的 LLM 失败:
|
|
85
85
|
|
|
86
|
-
- **`STALE_PATH`** —— 当 Pass 3 或 Pass 4
|
|
86
|
+
- **`STALE_PATH`** —— 当 Pass 3 或 Pass 4 捏造出看似合理但不存在的路径时。三种典型类别: (1) **标识符 → 文件名重标准化** —— 从 ALL_CAPS TypeScript 常量或 Java 注解推断出一个与实际文件不同命名规则的文件名; (2) **框架约定入口点捏造** —— 在采用不同布局的项目中假定存在框架标准入口文件(Vite 的 main 模块、Next.js app-router providers 等); (3) **听起来合理的工具类捏造** —— 为一个"可能自然存在"于可见目录下的帮助工具引用具体文件名。
|
|
87
87
|
- **`MANIFEST_DRIFT`** —— 当 `claudeos-core/skills/00.shared/MANIFEST.md` 注册了某个 skill 但 `CLAUDE.md §6` 没有提到 (或反之)。它识别出 orchestrator + sub-skills 布局 (其中 `CLAUDE.md §6` 是入口点,`MANIFEST.md` 是完整注册表),并将 sub-skills 判定为通过其父 orchestrator 间接覆盖。
|
|
88
88
|
|
|
89
89
|
验证器与 `pass3-footer.md` 和 `pass4.md` 中的 prompt 级别预防配对: 记录了具体幻觉类别 (父目录前缀、Vite/MSW/Vitest/Jest/RTL 库约定) 的 anti-pattern 块,以及在 `pass3a-facts.md` 没有具体文件名时把规则限定到目录级别的明确 positive guidance。
|
|
@@ -95,10 +95,6 @@ npx claudeos-core health # 所有验证器 —— 单一 go/no-go 判定
|
|
|
95
95
|
npx claudeos-core lint # 仅 CLAUDE.md 结构不变式 (任意语言)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
### 真实世界验证
|
|
99
|
-
|
|
100
|
-
v2.3.0 在发布前在两个真实世界的韩语姐妹项目上完成了 end-to-end 验证: 一个 14 domain 的 single-SPA Vite + React 19 前端,带有一个 8 子 skill 的 `scaffold-page-feature` orchestrator; 以及一个 8 domain 的 Spring Boot + MyBatis 后端,带有一个 8 子 skill 的 `scaffold-crud-feature` orchestrator,正在进行 PostgreSQL → MariaDB 迁移。两个项目在完整 health check 中都稳定在 **0 errors, 0 warnings** —— `STALE_PATH` 0、`MANIFEST_DRIFT` 0、25/25 结构不变式全部通过 —— 没有对生成输出进行任何手动编辑。
|
|
101
|
-
|
|
102
98
|
---
|
|
103
99
|
|
|
104
100
|
## 支持的技术栈
|