claudeos-core 1.7.0 → 2.0.0
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 +138 -0
- package/CONTRIBUTING.md +92 -59
- package/README.de.md +465 -240
- package/README.es.md +446 -223
- package/README.fr.md +461 -238
- package/README.hi.md +485 -261
- package/README.ja.md +440 -235
- package/README.ko.md +244 -56
- package/README.md +215 -47
- package/README.ru.md +462 -238
- package/README.vi.md +454 -230
- package/README.zh-CN.md +476 -252
- package/bin/cli.js +144 -140
- package/bin/commands/init.js +550 -46
- package/bin/commands/memory.js +426 -0
- package/bin/lib/cli-utils.js +206 -143
- package/bootstrap.sh +81 -390
- package/content-validator/index.js +436 -340
- package/lib/expected-guides.js +23 -0
- package/lib/expected-outputs.js +91 -0
- package/lib/language-config.js +35 -0
- package/lib/memory-scaffold.js +1014 -0
- package/lib/plan-parser.js +153 -149
- package/lib/staged-rules.js +118 -0
- package/manifest-generator/index.js +176 -171
- package/package.json +1 -1
- package/pass-json-validator/index.js +337 -299
- package/pass-prompts/templates/common/pass3-footer.md +16 -0
- package/pass-prompts/templates/common/pass4.md +317 -0
- package/pass-prompts/templates/common/staging-override.md +26 -0
- package/pass-prompts/templates/python-flask/pass1.md +119 -0
- package/pass-prompts/templates/python-flask/pass2.md +85 -0
- package/pass-prompts/templates/python-flask/pass3.md +103 -0
- package/plan-installer/domain-grouper.js +2 -1
- package/plan-installer/prompt-generator.js +120 -96
- package/plan-installer/scanners/scan-frontend.js +219 -10
- package/plan-installer/scanners/scan-java.js +226 -223
- package/plan-installer/scanners/scan-python.js +21 -0
- package/sync-checker/index.js +133 -132
package/README.ja.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# ClaudeOS-Core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**ソースコードを先に読み、決定論的分析でスタックとパターンを確定してから、プロジェクトに正確に合った Claude Code ルールを生成する唯一のツール。**
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npx claudeos-core init
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
ClaudeOS-Core
|
|
9
|
+
ClaudeOS-Core はコードベースを読み取り、見つけたすべてのパターンを抽出して、_あなたの_ プロジェクトに合わせた Standards、Rules、Skills、Guides の完全なセットを生成します。その後、Claude Code に「注文の CRUD を作成して」と伝えると、既存のパターンに完全に一致するコードが生成されます。
|
|
10
10
|
|
|
11
11
|
[🇺🇸 English](./README.md) · [🇰🇷 한국어](./README.ko.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md) · [🇩🇪 Deutsch](./README.de.md)
|
|
12
12
|
|
|
@@ -22,41 +22,41 @@ ClaudeOS-Core はこう動作します:
|
|
|
22
22
|
|
|
23
23
|
> **コードがソースを分析 → コードがカスタムプロンプトを構築 → LLM がドキュメントを生成 → コードが出力を検証**
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
これは小さな違いではありません。なぜ重要なのか説明します:
|
|
26
26
|
|
|
27
|
-
### 核心的な問題:LLM
|
|
27
|
+
### 核心的な問題:LLM は推測する。コードは推測しない。
|
|
28
28
|
|
|
29
29
|
Claude に「このプロジェクトを分析して」と頼むと、スタック、ORM、ドメイン構造を**推測**します。
|
|
30
|
-
`build.gradle` で `spring-boot` を見ても、MyBatis
|
|
31
|
-
`user/`
|
|
30
|
+
`build.gradle` で `spring-boot` を見ても、MyBatis を使っていること(JPA ではない)を見逃すかもしれません。
|
|
31
|
+
`user/` ディレクトリを検出しても、プロジェクトが layer-first パッケージング(Pattern A)を使っていて domain-first(Pattern B)ではないことに気付かないかもしれません。
|
|
32
32
|
|
|
33
|
-
**ClaudeOS-Core は推測しません。** Claude がプロジェクトを見る前に、Node.js
|
|
33
|
+
**ClaudeOS-Core は推測しません。** Claude がプロジェクトを見る前に、Node.js コードがすでに以下を実行済みです:
|
|
34
34
|
|
|
35
|
-
- `build.gradle` / `package.json` / `pyproject.toml` をパースしてスタック、ORM、DB
|
|
36
|
-
-
|
|
37
|
-
- プロジェクト構造を Java 5パターン、Kotlin CQRS/BFF、Next.js App Router/FSD のいずれかに**分類**
|
|
38
|
-
- Claude
|
|
39
|
-
-
|
|
35
|
+
- `build.gradle` / `package.json` / `pyproject.toml` をパースしてスタック、ORM、DB、パッケージマネージャを**確定**
|
|
36
|
+
- ディレクトリ構造をスキャンしてファイル数付きのドメインリストを**確定**
|
|
37
|
+
- プロジェクト構造を Java 5 パターン、Kotlin CQRS/BFF、Next.js App Router/FSD のいずれかに**分類**
|
|
38
|
+
- Claude のコンテキストウィンドウに収まる最適サイズのグループにドメインを**分割**
|
|
39
|
+
- 確定された事実がすべて注入されたスタック固有のプロンプトを**組み立て**
|
|
40
40
|
|
|
41
|
-
Claude がプロンプトを受け取る時点で、推測の余地はありません。スタック確定。ドメイン確定。構造パターン確定。Claude
|
|
41
|
+
Claude がプロンプトを受け取る時点で、推測の余地はありません。スタック確定。ドメイン確定。構造パターン確定。Claude の仕事は、これらの**確定された事実**に合ったドキュメントを生成することだけです。
|
|
42
42
|
|
|
43
43
|
### 結果
|
|
44
44
|
|
|
45
45
|
他のツールは「一般的に良い」ドキュメントを生成します。
|
|
46
|
-
ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()`
|
|
46
|
+
ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()`(`ResponseEntity.success()` ではない)を使っていること、MyBatis XML マッパーが `src/main/resources/mybatis/mappers/` にあること、パッケージ構造が `com.company.module.{domain}.controller` であることを知っているドキュメントを生成します — 実際のコードを読んだからです。
|
|
47
47
|
|
|
48
48
|
### Before & After
|
|
49
49
|
|
|
50
50
|
**ClaudeOS-Core なし** — Claude Code に注文 CRUD の作成を依頼すると:
|
|
51
51
|
```
|
|
52
52
|
❌ JPA スタイルの repository を使用(プロジェクトは MyBatis)
|
|
53
|
-
❌ ResponseEntity.success()
|
|
54
|
-
❌ order/controller/ にファイルを配置(プロジェクトは controller/order
|
|
55
|
-
❌
|
|
56
|
-
→ 生成ファイルごとに20分の修正
|
|
53
|
+
❌ ResponseEntity.success() を生成(あなたのラッパーは ApiResponse.ok())
|
|
54
|
+
❌ order/controller/ にファイルを配置(プロジェクトは controller/order/ 構造)
|
|
55
|
+
❌ 英語コメントを生成(チームは日本語コメント)
|
|
56
|
+
→ 生成ファイルごとに 20 分の修正
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
**ClaudeOS-Core
|
|
59
|
+
**ClaudeOS-Core あり** — `.claude/rules/` に確定されたパターンがすでに存在:
|
|
60
60
|
```
|
|
61
61
|
✅ MyBatis マッパー + XML を生成(build.gradle から検出)
|
|
62
62
|
✅ ApiResponse.ok() を使用(実際のソースから抽出)
|
|
@@ -65,7 +65,7 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()` を使用してい
|
|
|
65
65
|
→ 生成コードがプロジェクト規約と即座に一致
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
この差は積み重なります。1 日 10 タスク × 20 分節約 = **1 日 3 時間以上**。
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
@@ -73,8 +73,8 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()` を使用してい
|
|
|
73
73
|
|
|
74
74
|
| スタック | 検出方法 | 分析深度 |
|
|
75
75
|
|---|---|---|
|
|
76
|
-
| **Java / Spring Boot** | `build.gradle`、`pom.xml`、5パッケージパターン | 10 大分類、59 小項目 |
|
|
77
|
-
| **Kotlin / Spring Boot** | `build.gradle.kts
|
|
76
|
+
| **Java / Spring Boot** | `build.gradle`、`pom.xml`、5 パッケージパターン | 10 大分類、59 小項目 |
|
|
77
|
+
| **Kotlin / Spring Boot** | `build.gradle.kts`、kotlin plugin、`settings.gradle.kts`、CQRS/BFF 自動検出 | 12 大分類、95 小項目 |
|
|
78
78
|
| **Node.js / Express** | `package.json` | 9 大分類、57 小項目 |
|
|
79
79
|
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 大分類、68 小項目 |
|
|
80
80
|
| **Next.js / React** | `package.json`、`next.config.*`、FSD サポート | 9 大分類、55 小項目 |
|
|
@@ -85,12 +85,11 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()` を使用してい
|
|
|
85
85
|
| **Vite / React SPA** | `package.json`、`vite.config.*` | 9 大分類、55 小項目 |
|
|
86
86
|
| **Angular** | `package.json`、`angular.json` | 12 大分類、78 小項目 |
|
|
87
87
|
|
|
88
|
-
自動検出対象:言語とバージョン、フレームワークとバージョン(
|
|
88
|
+
自動検出対象:言語とバージョン、フレームワークとバージョン(SPA フレームワークとしての Vite を含む)、ORM(MyBatis、JPA、Exposed、Prisma、TypeORM、SQLAlchemy など)、データベース(PostgreSQL、MySQL、Oracle、MongoDB、SQLite)、パッケージマネージャ(Gradle、Maven、npm、yarn、pnpm、pip、poetry)、アーキテクチャ(CQRS、BFF — モジュール名から)、マルチモジュール構造(settings.gradle から)、モノレポ(Turborepo、pnpm-workspace、Lerna、npm/yarn workspaces)。
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
**何も指定する必要はありません。すべて自動的に検出されます。**
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
### Java ドメイン検出(5パターン、フォールバック付き)
|
|
92
|
+
### Java ドメイン検出(5 パターン、フォールバック付き)
|
|
94
93
|
|
|
95
94
|
| 優先度 | パターン | 構造 | 例 |
|
|
96
95
|
|---|---|---|---|
|
|
@@ -100,8 +99,7 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()` を使用してい
|
|
|
100
99
|
| E | DDD/ヘキサゴナル | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
|
|
101
100
|
| C | フラット | `controller/*.java` | `controller/UserController.java` → クラス名から `user` を抽出 |
|
|
102
101
|
|
|
103
|
-
Controller
|
|
104
|
-
|
|
102
|
+
Controller を持たない Service 専用ドメインも、`service/`、`dao/`、`aggregator/`、`facade/`、`usecase/`、`orchestrator/`、`mapper/`、`repository/` ディレクトリを通じて検出されます。スキップ:`common`、`config`、`util`、`core`、`front`、`admin`、`v1`、`v2` など。
|
|
105
103
|
|
|
106
104
|
### Kotlin マルチモジュールドメイン検出
|
|
107
105
|
|
|
@@ -109,23 +107,49 @@ Gradle マルチモジュール構造の Kotlin プロジェクト(例:CQRS
|
|
|
109
107
|
|
|
110
108
|
| ステップ | 動作 | 例 |
|
|
111
109
|
|---|---|---|
|
|
112
|
-
| 1 | `settings.gradle.kts` から `include()` をスキャン | 14
|
|
110
|
+
| 1 | `settings.gradle.kts` から `include()` をスキャン | 14 モジュールを検出 |
|
|
113
111
|
| 2 | モジュール名からタイプを検出 | `reservation-command-server` → type: `command` |
|
|
114
112
|
| 3 | モジュール名からドメインを抽出 | `reservation-command-server` → domain: `reservation` |
|
|
115
|
-
| 4 |
|
|
116
|
-
| 5 |
|
|
113
|
+
| 4 | モジュール間で同じドメインをグループ化 | `reservation-command-server` + `common-query-server` → 1 ドメイン |
|
|
114
|
+
| 5 | アーキテクチャ検出 | `command` + `query` モジュール存在 → CQRS |
|
|
117
115
|
|
|
118
|
-
|
|
116
|
+
対応モジュールタイプ:`command`、`query`、`bff`、`integration`、`standalone`、`library`。共有ライブラリ(`shared-lib`、`integration-lib`)は特殊ドメインとして検出されます。
|
|
119
117
|
|
|
120
118
|
### フロントエンドドメイン検出
|
|
121
119
|
|
|
122
120
|
- **App Router**:`app/{domain}/page.tsx`(Next.js)
|
|
123
121
|
- **Pages Router**:`pages/{domain}/index.tsx`
|
|
124
|
-
- **FSD
|
|
125
|
-
- **RSC/Client分離**:`client.tsx`
|
|
126
|
-
- **非標準ネストパス**:`src
|
|
127
|
-
-
|
|
128
|
-
-
|
|
122
|
+
- **FSD (Feature-Sliced Design)**:`features/*/`、`widgets/*/`、`entities/*/`
|
|
123
|
+
- **RSC/Client 分離**:`client.tsx` パターンを検出、Server/Client コンポーネント分離を追跡
|
|
124
|
+
- **非標準ネストパス**:`src/*/` 配下のページ、コンポーネント、FSD レイヤーを検出(例:`src/admin/pages/dashboard/`、`src/admin/components/form/`、`src/admin/features/billing/`)
|
|
125
|
+
- **プラットフォーム/ティア分割検出 (v2.0.0)**:`src/{platform}/{subapp}/` レイアウトを認識 — `{platform}` はデバイス/ターゲットキーワード(`desktop`、`pc`、`web`、`mobile`、`mc`、`mo`、`sp`、`tablet`、`tab`、`pwa`、`tv`、`ctv`、`ott`、`watch`、`wear`)またはアクセスティアキーワード(`admin`、`cms`、`backoffice`、`back-office`、`portal`)を指定できます。`(platform, subapp)` ペアごとに `{platform}-{subapp}` という名前のドメインを 1 つ生成し、ドメインごとの routes/components/layouts/hooks のカウントを提供します。Angular、Next.js、React、Vue で同時に動作(マルチ拡張子 glob `{tsx,jsx,ts,js,vue}`)。subapp あたり 2 ファイル以上必要(1 ファイルのノイジーなドメインを回避)。
|
|
126
|
+
- **モノレポプラットフォーム分割 (v2.0.0)**:プラットフォームスキャンは `{apps,packages}/*/src/{platform}/{subapp}/`(`src/` を持つ Turborepo/pnpm workspace)および `{apps,packages}/{platform}/{subapp}/`(`src/` ラッパーなしの workspaces)にもマッチします。
|
|
127
|
+
- **Fallback E — routes ファイル (v2.0.0)**:主要スキャナ + Fallback A–D がすべて 0 を返した場合、`**/routes/*.{tsx,jsx,ts,js,vue}` を glob し、`routes` の親ディレクトリ名でグループ化。Next.js の `page.tsx` や FSD レイアウトにマッチしない React Router ファイルルーティングプロジェクト(CRA/Vite + `react-router`)を捕捉します。汎用的な親名(`src`、`app`、`pages`)はフィルタアウトされます。
|
|
128
|
+
- **Config フォールバック**:`package.json` になくても、設定ファイルから Next.js/Vite/Nuxt を検出(モノレポ対応)
|
|
129
|
+
- **Deep ディレクトリフォールバック**:React/CRA/Vite/Vue/RN プロジェクトで、`**/components/*/`、`**/views/*/`、`**/screens/*/`、`**/containers/*/`、`**/pages/*/`、`**/routes/*/`、`**/modules/*/`、`**/domains/*/` をどの深さでもスキャン
|
|
130
|
+
- **共有無視リスト (v2.0.0)**:すべてのスキャナが `BUILD_IGNORE_DIRS`(`node_modules`、`build`、`dist`、`out`、`.next`、`.nuxt`、`.svelte-kit`、`.angular`、`.turbo`、`.cache`、`.parcel-cache`、`coverage`、`storybook-static`、`.vercel`、`.netlify`)と `TEST_FILE_IGNORE`(spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`)を共有し、ビルド成果物とテストフィクスチャがドメインごとのファイル数を膨張させないようにします。
|
|
131
|
+
|
|
132
|
+
### スキャナオーバーライド (v2.0.0)
|
|
133
|
+
|
|
134
|
+
プロジェクトルートにオプションの `.claudeos-scan.json` を配置すると、ツールキットを編集せずにスキャナのデフォルトを拡張できます。すべてのフィールドは**加算的** — ユーザーエントリはデフォルトを置き換えず、拡張します:
|
|
135
|
+
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"frontendScan": {
|
|
139
|
+
"platformKeywords": ["kiosk"],
|
|
140
|
+
"skipSubappNames": ["legacy"],
|
|
141
|
+
"minSubappFiles": 3
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
| フィールド | デフォルト | 用途 |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| `platformKeywords` | 上記の組み込みリスト | プラットフォームスキャン用の追加 `{platform}` キーワード(例:`kiosk`、`vr`、`embedded`) |
|
|
149
|
+
| `skipSubappNames` | 構造的ディレクトリのみ | プラットフォームスキャンのドメイン生成から除外する追加 subapp 名 |
|
|
150
|
+
| `minSubappFiles` | `2` | subapp がドメインになるために必要な最小ファイル数の上書き |
|
|
151
|
+
|
|
152
|
+
ファイル欠損または JSON 不正 → 静かにデフォルトにフォールバック(クラッシュなし)。典型的な用途:組み込みリストが曖昧すぎるとして除外する短縮形(`adm`、`bo`)を opt-in する、またはノイジーなモノレポで `minSubappFiles` を引き上げる。
|
|
129
153
|
|
|
130
154
|
---
|
|
131
155
|
|
|
@@ -134,37 +158,37 @@ Gradle マルチモジュール構造の Kotlin プロジェクト(例:CQRS
|
|
|
134
158
|
### 前提条件
|
|
135
159
|
|
|
136
160
|
- **Node.js** v18+
|
|
137
|
-
- **Claude Code CLI
|
|
161
|
+
- **Claude Code CLI**(インストール & 認証済み)
|
|
138
162
|
|
|
139
163
|
### インストール
|
|
140
164
|
|
|
141
165
|
```bash
|
|
142
166
|
cd /your/project/root
|
|
143
167
|
|
|
144
|
-
#
|
|
168
|
+
# オプション A:npx(推奨 — インストール不要)
|
|
145
169
|
npx claudeos-core init
|
|
146
170
|
|
|
147
|
-
#
|
|
171
|
+
# オプション B:グローバルインストール
|
|
148
172
|
npm install -g claudeos-core
|
|
149
173
|
claudeos-core init
|
|
150
174
|
|
|
151
|
-
#
|
|
175
|
+
# オプション C:プロジェクト devDependency
|
|
152
176
|
npm install --save-dev claudeos-core
|
|
153
177
|
npx claudeos-core init
|
|
154
178
|
|
|
155
|
-
#
|
|
179
|
+
# オプション D:git clone(開発/貢献用)
|
|
156
180
|
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
157
181
|
|
|
158
|
-
# クロスプラットフォーム(PowerShell、CMD、Bash、Zsh —
|
|
182
|
+
# クロスプラットフォーム(PowerShell、CMD、Bash、Zsh — どのターミナルでも)
|
|
159
183
|
node claudeos-core-tools/bin/cli.js init
|
|
160
184
|
|
|
161
|
-
# Linux/macOS
|
|
185
|
+
# Linux/macOS(Bash のみ)
|
|
162
186
|
bash claudeos-core-tools/bootstrap.sh
|
|
163
187
|
```
|
|
164
188
|
|
|
165
189
|
### 出力言語(10 言語対応)
|
|
166
190
|
|
|
167
|
-
`--lang` なしで `init`
|
|
191
|
+
`--lang` なしで `init` を実行すると、インタラクティブセレクタが表示されます — 矢印キーまたは数字キーで選択:
|
|
168
192
|
|
|
169
193
|
```
|
|
170
194
|
╔══════════════════════════════════════════════════╗
|
|
@@ -172,32 +196,37 @@ bash claudeos-core-tools/bootstrap.sh
|
|
|
172
196
|
╚══════════════════════════════════════════════════╝
|
|
173
197
|
|
|
174
198
|
生成されるファイル(CLAUDE.md、Standards、Rules、
|
|
175
|
-
Skills、Guides
|
|
199
|
+
Skills、Guides)は日本語で記述されます。
|
|
176
200
|
|
|
177
201
|
1. en — English
|
|
178
202
|
2. ko — 한국어 (Korean)
|
|
179
203
|
3. zh-CN — 简体中文 (Chinese Simplified)
|
|
180
204
|
❯ 4. ja — 日本語 (Japanese)
|
|
181
|
-
|
|
205
|
+
5. es — Español (Spanish)
|
|
206
|
+
6. vi — Tiếng Việt (Vietnamese)
|
|
207
|
+
7. hi — हिन्दी (Hindi)
|
|
208
|
+
8. ru — Русский (Russian)
|
|
209
|
+
9. fr — Français (French)
|
|
210
|
+
10. de — Deutsch (German)
|
|
182
211
|
|
|
183
212
|
↑↓ Move 1-0 Jump Enter Select ESC Cancel
|
|
184
213
|
```
|
|
185
214
|
|
|
186
|
-
|
|
215
|
+
カーソル移動に応じて、説明が選択した言語に切り替わります。セレクタをスキップするには `--lang` を直接指定:
|
|
187
216
|
|
|
188
217
|
```bash
|
|
189
|
-
npx claudeos-core init --lang ja # 日本語
|
|
190
|
-
npx claudeos-core init --lang en # English
|
|
191
218
|
npx claudeos-core init --lang ko # 한국어
|
|
219
|
+
npx claudeos-core init --lang ja # 日本語
|
|
220
|
+
npx claudeos-core init --lang en # English(デフォルト)
|
|
192
221
|
```
|
|
193
222
|
|
|
194
|
-
> **注意:** この設定は生成されるドキュメントファイルの言語のみを変更します。コード分析(Pass 1–2)は常に英語で実行され、生成結果(Pass 3
|
|
223
|
+
> **注意:** この設定は生成されるドキュメントファイルの言語のみを変更します。コード分析(Pass 1–2)は常に英語で実行され、生成結果(Pass 3)のみが選択した言語で記述されます。生成ファイル内のコード例は元のプログラミング言語構文のまま維持されます。
|
|
195
224
|
|
|
196
|
-
|
|
225
|
+
以上です。5–20 分後(Pass 1×N + Pass 2 + Pass 3 + Pass 4 メモリスキャフォールディング)、すべてのドキュメントが生成され、すぐに使用できます。CLI は各 Pass のパーセンテージ、経過時間、ETA 付きのプログレスバーを表示します。
|
|
197
226
|
|
|
198
227
|
### 手動ステップバイステップインストール
|
|
199
228
|
|
|
200
|
-
|
|
229
|
+
各フェーズを完全に制御したい場合や、自動化パイプラインが任意のステップで失敗した場合、各ステージを手動で実行できます。ClaudeOS-Core の内部動作を理解するのにも役立ちます。
|
|
201
230
|
|
|
202
231
|
#### Step 1:クローンと依存関係のインストール
|
|
203
232
|
|
|
@@ -211,8 +240,8 @@ cd claudeos-core-tools && npm install && cd ..
|
|
|
211
240
|
#### Step 2:ディレクトリ構造の作成
|
|
212
241
|
|
|
213
242
|
```bash
|
|
214
|
-
# Rules
|
|
215
|
-
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
|
|
243
|
+
# Rules(v2.0.0:60.memory を追加)
|
|
244
|
+
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
|
|
216
245
|
|
|
217
246
|
# Standards
|
|
218
247
|
mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
|
|
@@ -220,140 +249,189 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
|
|
|
220
249
|
# Skills
|
|
221
250
|
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
222
251
|
|
|
223
|
-
# Guide
|
|
252
|
+
# Guide、Plan、Database、MCP、Generated、Memory(v2.0.0:memory を追加)
|
|
224
253
|
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
225
|
-
mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
|
|
254
|
+
mkdir -p claudeos-core/{plan,database,mcp-guide,generated,memory}
|
|
226
255
|
```
|
|
227
256
|
|
|
228
257
|
#### Step 3:plan-installer の実行(プロジェクト分析)
|
|
229
258
|
|
|
230
|
-
|
|
259
|
+
プロジェクトをスキャンし、スタックを検出し、ドメインを見つけ、グループに分割し、プロンプトを生成します。
|
|
231
260
|
|
|
232
261
|
```bash
|
|
233
262
|
node claudeos-core-tools/plan-installer/index.js
|
|
234
263
|
```
|
|
235
264
|
|
|
236
|
-
**出力(`claudeos-core/generated
|
|
265
|
+
**出力(`claudeos-core/generated/` 内):**
|
|
237
266
|
- `project-analysis.json` — 検出されたスタック、ドメイン、フロントエンド情報
|
|
238
267
|
- `domain-groups.json` — Pass 1 用ドメイングループ
|
|
239
268
|
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — 分析プロンプト
|
|
240
|
-
- `pass2-prompt.md` —
|
|
241
|
-
- `pass3-prompt.md` —
|
|
269
|
+
- `pass2-prompt.md` — マージプロンプト
|
|
270
|
+
- `pass3-prompt.md` — 生成プロンプト(`staging-override.md` ディレクティブでラップ — Step 6 の注意参照)
|
|
271
|
+
- `pass4-prompt.md` — L4 メモリスキャフォールディングプロンプト(v2.0.0;`60.memory/` ルール書き込みにも同じ `staging-override.md` を使用)
|
|
242
272
|
|
|
243
|
-
|
|
273
|
+
これらのファイルを検査して、進める前に検出精度を確認できます。
|
|
244
274
|
|
|
245
|
-
#### Step 4:Pass 1 —
|
|
275
|
+
#### Step 4:Pass 1 — 深層コード分析(ドメイングループごと)
|
|
246
276
|
|
|
247
|
-
各ドメイングループに対して Pass 1
|
|
277
|
+
各ドメイングループに対して Pass 1 を実行します。グループ数は `domain-groups.json` で確認してください。
|
|
248
278
|
|
|
249
279
|
```bash
|
|
250
|
-
#
|
|
280
|
+
# グループ数を確認
|
|
251
281
|
cat claudeos-core/generated/domain-groups.json | node -e "
|
|
252
282
|
const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
|
|
253
283
|
g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
|
|
254
284
|
"
|
|
255
285
|
|
|
256
|
-
#
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
286
|
+
# 各グループに対して Pass 1 を実行(ドメインとグループ番号を置き換え)
|
|
287
|
+
# 注:v1.6.1+ は perl の代わりに Node.js の String.replace() を使用 — perl は
|
|
288
|
+
# 不要になり、replacement-function セマンティクスにより、ドメイン名に現れる可能性のある
|
|
289
|
+
# $/&/$1 文字からの regex インジェクションを防止。
|
|
290
|
+
#
|
|
291
|
+
# Group 1:
|
|
292
|
+
DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
|
|
293
|
+
const fs = require('fs');
|
|
294
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
295
|
+
const out = tpl
|
|
296
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
297
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
298
|
+
process.stdout.write(out);
|
|
299
|
+
" | claude -p --dangerously-skip-permissions
|
|
300
|
+
|
|
301
|
+
# Group 2(存在する場合):
|
|
302
|
+
DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
|
|
303
|
+
const fs = require('fs');
|
|
304
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
305
|
+
const out = tpl
|
|
306
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
307
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
308
|
+
process.stdout.write(out);
|
|
309
|
+
" | claude -p --dangerously-skip-permissions
|
|
310
|
+
|
|
311
|
+
# フロントエンドグループの場合、pass1-backend-prompt.md → pass1-frontend-prompt.md に置き換え
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**確認:** `ls claudeos-core/generated/pass1-*.json` でグループごとに 1 つの JSON が表示されるはずです。
|
|
315
|
+
|
|
316
|
+
#### Step 5:Pass 2 — 分析結果のマージ
|
|
261
317
|
|
|
262
|
-
|
|
318
|
+
```bash
|
|
319
|
+
cat claudeos-core/generated/pass2-prompt.md \
|
|
320
|
+
| claude -p --dangerously-skip-permissions
|
|
263
321
|
```
|
|
264
322
|
|
|
265
|
-
**確認:** `
|
|
323
|
+
**確認:** `claudeos-core/generated/pass2-merged.json` が存在し、最上位キーが 9 個以上あるはずです。
|
|
266
324
|
|
|
267
|
-
#### Step
|
|
325
|
+
#### Step 6:Pass 3 — すべてのドキュメントを生成
|
|
268
326
|
|
|
269
327
|
```bash
|
|
270
|
-
cat claudeos-core/generated/
|
|
328
|
+
cat claudeos-core/generated/pass3-prompt.md \
|
|
271
329
|
| claude -p --dangerously-skip-permissions
|
|
272
330
|
```
|
|
273
331
|
|
|
274
|
-
**確認:** `claudeos-core/generated/
|
|
332
|
+
**確認:** プロジェクトルートに `CLAUDE.md` が存在し、`claudeos-core/generated/pass3-complete.json` マーカーが書き込まれているはずです。
|
|
275
333
|
|
|
276
|
-
|
|
334
|
+
> **注意(v2.0.0):** Claude Code の sensitive-path ポリシーが `.claude/` への直接書き込みをブロックするため、Pass 3 はルールファイルを最初に `claudeos-core/generated/.staged-rules/` に書き込みます。自動化パイプライン(`npx claudeos-core init`)は移動を自動的に処理します。このステップを手動で実行する場合、staged ツリーを自分で移動する必要があります:`mv claudeos-core/generated/.staged-rules/* .claude/rules/`(サブパスを保持)。
|
|
335
|
+
|
|
336
|
+
#### Step 7:Pass 4 — メモリスキャフォールディング
|
|
277
337
|
|
|
278
338
|
```bash
|
|
279
|
-
cat claudeos-core/generated/
|
|
339
|
+
cat claudeos-core/generated/pass4-prompt.md \
|
|
280
340
|
| claude -p --dangerously-skip-permissions
|
|
281
341
|
```
|
|
282
342
|
|
|
283
|
-
**確認:**
|
|
343
|
+
**確認:** `claudeos-core/memory/` に 4 ファイル(`decision-log.md`、`failure-patterns.md`、`compaction.md`、`auto-rule-update.md`)、`.claude/rules/60.memory/` に 4 ルールファイル、`claudeos-core/plan/50.memory-master.md` が存在し、`CLAUDE.md` に `## Memory (L4)` セクションが追加されているはずです。マーカー:`claudeos-core/generated/pass4-memory.json`。
|
|
344
|
+
|
|
345
|
+
> **注意:** `claude -p` が失敗したり `pass4-prompt.md` が欠損している場合、自動化パイプラインは `lib/memory-scaffold.js` を経由した静的スキャフォールドにフォールバックします(`--lang` が非英語の場合は Claude 主導の翻訳付き)。静的フォールバックは `npx claudeos-core init` 内でのみ実行されます — 手動モードでは Pass 4 が成功する必要があります。
|
|
284
346
|
|
|
285
|
-
#### Step
|
|
347
|
+
#### Step 8:検証ツールの実行
|
|
286
348
|
|
|
287
349
|
```bash
|
|
288
|
-
#
|
|
350
|
+
# メタデータを生成(他のチェック前に必須)
|
|
289
351
|
node claudeos-core-tools/manifest-generator/index.js
|
|
290
352
|
|
|
291
|
-
#
|
|
353
|
+
# すべてのチェックを実行
|
|
292
354
|
node claudeos-core-tools/health-checker/index.js
|
|
293
355
|
|
|
294
|
-
#
|
|
295
|
-
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
|
|
296
|
-
node claudeos-core-tools/sync-checker/index.js #
|
|
297
|
-
node claudeos-core-tools/content-validator/index.js #
|
|
298
|
-
node claudeos-core-tools/pass-json-validator/index.js # JSON
|
|
356
|
+
# または個別にチェックを実行:
|
|
357
|
+
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk 整合性
|
|
358
|
+
node claudeos-core-tools/sync-checker/index.js # 未登録/孤児ファイル
|
|
359
|
+
node claudeos-core-tools/content-validator/index.js # ファイル品質チェック(memory/ セクション [9/9] を含む)
|
|
360
|
+
node claudeos-core-tools/pass-json-validator/index.js # Pass 1–4 JSON + 完了マーカーチェック
|
|
299
361
|
```
|
|
300
362
|
|
|
301
|
-
#### Step
|
|
363
|
+
#### Step 9:結果の確認
|
|
302
364
|
|
|
303
365
|
```bash
|
|
366
|
+
# 生成されたファイル数をカウント
|
|
304
367
|
find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
|
|
368
|
+
|
|
369
|
+
# CLAUDE.md を確認
|
|
305
370
|
head -30 CLAUDE.md
|
|
371
|
+
|
|
372
|
+
# standard ファイルを確認
|
|
373
|
+
cat claudeos-core/standard/00.core/01.project-overview.md | head -20
|
|
374
|
+
|
|
375
|
+
# rules を確認
|
|
306
376
|
ls .claude/rules/*/
|
|
307
377
|
```
|
|
308
378
|
|
|
309
|
-
> **ヒント:**
|
|
379
|
+
> **ヒント:** 任意のステップが失敗した場合、問題を修正してそのステップだけを再実行できます。Pass 1/2 の結果はキャッシュされます — `pass1-N.json` または `pass2-merged.json` がすでに存在する場合、自動化パイプラインはそれらをスキップします。`npx claudeos-core init --force` で以前の結果を削除して最初から実行します。
|
|
310
380
|
|
|
311
381
|
### 使い始める
|
|
312
382
|
|
|
313
383
|
```
|
|
314
|
-
# Claude Code
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
384
|
+
# Claude Code で — 自然に依頼するだけ:
|
|
385
|
+
"order ドメインの CRUD を作成して"
|
|
386
|
+
"ユーザー認証 API を追加して"
|
|
387
|
+
"このコードをプロジェクトのパターンに合わせてリファクタリングして"
|
|
318
388
|
|
|
319
|
-
# Claude Code が生成された Standards、Rules、Skills
|
|
389
|
+
# Claude Code が生成された Standards、Rules、Skills を自動的に参照します。
|
|
320
390
|
```
|
|
321
391
|
|
|
322
392
|
---
|
|
323
393
|
|
|
324
|
-
## 仕組み —
|
|
394
|
+
## 仕組み — 4-Pass パイプライン
|
|
325
395
|
|
|
326
396
|
```
|
|
327
397
|
npx claudeos-core init
|
|
328
398
|
│
|
|
329
|
-
├── [1] npm install ←
|
|
330
|
-
├── [2]
|
|
331
|
-
├── [3] plan-installer (Node.js) ← プロジェクトスキャン(~5秒)
|
|
399
|
+
├── [1] npm install ← 依存関係(~10 秒)
|
|
400
|
+
├── [2] ディレクトリ構造 ← フォルダ作成(~1 秒)
|
|
401
|
+
├── [3] plan-installer (Node.js) ← プロジェクトスキャン(~5 秒)
|
|
332
402
|
│ ├── スタック自動検出(マルチスタック対応)
|
|
333
|
-
│ ├──
|
|
334
|
-
│ ├──
|
|
335
|
-
│ └──
|
|
403
|
+
│ ├── ドメインリスト抽出(タグ付け:backend/frontend)
|
|
404
|
+
│ ├── ドメイングループに分割(タイプ別)
|
|
405
|
+
│ └── スタック固有のプロンプトを選択(タイプ別)
|
|
406
|
+
│
|
|
407
|
+
├── [4] Pass 1 × N (claude -p) ← 深層コード分析(~2-8 分)
|
|
408
|
+
│ ├── ⚙️ バックエンドグループ → バックエンド固有プロンプト
|
|
409
|
+
│ └── 🎨 フロントエンドグループ → フロントエンド固有プロンプト
|
|
336
410
|
│
|
|
337
|
-
├── [
|
|
338
|
-
│
|
|
339
|
-
│ └── 🎨 フロントエンドグループ → フロントエンド専用分析プロンプト
|
|
411
|
+
├── [5] Pass 2 × 1 (claude -p) ← 分析マージ(~1 分)
|
|
412
|
+
│ └── すべての Pass 1 結果を統合(backend + frontend)
|
|
340
413
|
│
|
|
341
|
-
├── [
|
|
342
|
-
│ └──
|
|
414
|
+
├── [6] Pass 3 × 1 (claude -p) ← すべてを生成(~3-5 分)
|
|
415
|
+
│ └── 結合プロンプト(backend + frontend ターゲット)
|
|
343
416
|
│
|
|
344
|
-
├── [
|
|
345
|
-
│
|
|
417
|
+
├── [7] Pass 4 × 1 (claude -p) ← メモリスキャフォールディング(~30 秒)
|
|
418
|
+
│ ├── memory/ をシード(decision-log、failure-patterns、…)
|
|
419
|
+
│ ├── 60.memory/ ルールを生成
|
|
420
|
+
│ ├── CLAUDE.md に "Memory (L4)" セクションを追加
|
|
421
|
+
│ └── 50.memory-master.md プランを構築
|
|
346
422
|
│
|
|
347
|
-
└── [
|
|
423
|
+
└── [8] 検証 ← health checker を自動実行
|
|
348
424
|
```
|
|
349
425
|
|
|
350
|
-
### なぜ
|
|
426
|
+
### なぜ 4 Pass なのか?
|
|
351
427
|
|
|
352
|
-
**Pass 1**
|
|
428
|
+
**Pass 1** はソースコードを読む唯一の Pass です。ドメインごとに代表ファイルを選択し、55–95 分析カテゴリ(スタック別)全体でパターンを抽出します。大規模プロジェクトでは、Pass 1 はドメイングループごとに 1 回ずつ複数回実行されます。マルチスタックプロジェクト(例:Java backend + React frontend)では、backend と frontend のドメインは各スタックに合わせた**異なる分析プロンプト**を使用します。
|
|
353
429
|
|
|
354
|
-
**Pass 2** はすべての Pass 1
|
|
430
|
+
**Pass 2** はすべての Pass 1 結果を統一された分析にマージします:共通パターン(100% 共有)、多数派パターン(50%+ 共有)、ドメイン固有パターン、重大度別のアンチパターン、横断的関心事(命名、セキュリティ、DB、テスト、ロギング、パフォーマンス)。backend と frontend の結果は一緒にマージされます。
|
|
355
431
|
|
|
356
|
-
**Pass 3**
|
|
432
|
+
**Pass 3** は統合された分析を受け取り、ファイルエコシステム全体(CLAUDE.md、rules、standards、skills、guides)を生成します。ソースコードは決して読まず、分析 JSON のみを参照します。マルチスタックモードでは、生成プロンプトは backend と frontend のターゲットを結合するため、両方のスタンダードセットが 1 回のパスで生成されます。
|
|
433
|
+
|
|
434
|
+
**Pass 4** は L4 メモリレイヤをスキャフォールディングします:永続的なチーム知識ファイル(decision-log、failure-patterns、compaction ポリシー、auto-rule-update)に加えて、これらのファイルをいつどのように読み書きするかを将来のセッションに指示する `60.memory/` ルール。メモリレイヤこそが、Claude Code がセッションごとに学びを再発見するのではなく、セッション間で蓄積することを可能にします。`--lang` が非英語の場合、フォールバック静的コンテンツは書き込み前に Claude を経由して翻訳されます。
|
|
357
435
|
|
|
358
436
|
---
|
|
359
437
|
|
|
@@ -371,132 +449,217 @@ your-project/
|
|
|
371
449
|
│ ├── 20.frontend/
|
|
372
450
|
│ ├── 30.security-db/
|
|
373
451
|
│ ├── 40.infra/
|
|
374
|
-
│
|
|
452
|
+
│ ├── 50.sync/ ← 同期リマインダールール
|
|
453
|
+
│ └── 60.memory/ ← L4 メモリオンデマンドスコープルール(v2.0.0)
|
|
375
454
|
│
|
|
376
455
|
├── claudeos-core/ ← メイン出力ディレクトリ
|
|
377
|
-
│ ├── generated/ ← 分析 JSON + 動的プロンプト
|
|
378
|
-
│ ├──
|
|
456
|
+
│ ├── generated/ ← 分析 JSON + 動的プロンプト + Pass マーカー(gitignore 対象)
|
|
457
|
+
│ │ ├── project-analysis.json ← スタック情報(マルチスタック対応)
|
|
458
|
+
│ │ ├── domain-groups.json ← type: backend/frontend 付きグループ
|
|
459
|
+
│ │ ├── pass1-backend-prompt.md ← バックエンド分析プロンプト
|
|
460
|
+
│ │ ├── pass1-frontend-prompt.md ← フロントエンド分析プロンプト(検出時)
|
|
461
|
+
│ │ ├── pass2-prompt.md ← マージプロンプト
|
|
462
|
+
│ │ ├── pass3-prompt.md ← 生成プロンプト(結合)
|
|
463
|
+
│ │ ├── pass4-prompt.md ← メモリスキャフォールディングプロンプト(v2.0.0)
|
|
464
|
+
│ │ ├── pass3-complete.json ← Pass 3 完了マーカー(再実行時スキップ)
|
|
465
|
+
│ │ ├── pass4-memory.json ← Pass 4 完了マーカー(再実行時スキップ)
|
|
466
|
+
│ │ ├── .i18n-cache-<lang>.json ← 翻訳キャッシュ(非英語 `--lang`)
|
|
467
|
+
│ │ └── .staged-rules/ ← `.claude/rules/` 書き込み用一時ステージングディレクトリ(自動移動 + クリーン)
|
|
468
|
+
│ ├── standard/ ← コーディングスタンダード(15-19 ファイル)
|
|
469
|
+
│ │ ├── 00.core/ ← 概要、アーキテクチャ、命名
|
|
470
|
+
│ │ ├── 10.backend-api/ ← API パターン(スタック固有)
|
|
471
|
+
│ │ ├── 20.frontend-ui/ ← フロントエンドパターン(検出時)
|
|
472
|
+
│ │ ├── 30.security-db/ ← セキュリティ、DB スキーマ、ユーティリティ
|
|
473
|
+
│ │ ├── 40.infra/ ← 設定、ロギング、CI/CD
|
|
474
|
+
│ │ ├── 50.verification/ ← ビルド検証、テスト
|
|
475
|
+
│ │ └── 90.optional/ ← オプション規約(スタック固有エクストラ)
|
|
379
476
|
│ ├── skills/ ← CRUD スキャフォールディングスキル
|
|
380
477
|
│ ├── guide/ ← オンボーディング、FAQ、トラブルシューティング(9 ファイル)
|
|
381
|
-
│ ├── plan/ ←
|
|
478
|
+
│ ├── plan/ ← マスタープラン(バックアップ/リストア)
|
|
382
479
|
│ ├── database/ ← DB スキーマ、マイグレーションガイド
|
|
383
|
-
│
|
|
480
|
+
│ ├── mcp-guide/ ← MCP サーバ統合ガイド
|
|
481
|
+
│ └── memory/ ← L4:チーム知識(4 ファイル)— コミットする
|
|
482
|
+
│ ├── decision-log.md ← 設計決定の「なぜ」
|
|
483
|
+
│ ├── failure-patterns.md ← 再発エラー & 修正(自動スコアリング — `npx claudeos-core memory score`)
|
|
484
|
+
│ ├── compaction.md ← 4 ステージコンパクション戦略(`npx claudeos-core memory compact` で実行)
|
|
485
|
+
│ └── auto-rule-update.md ← ルール改善提案(`npx claudeos-core memory propose-rules`)
|
|
384
486
|
│
|
|
385
|
-
└── claudeos-core-tools/ ←
|
|
487
|
+
└── claudeos-core-tools/ ← このツールキット(変更しない)
|
|
386
488
|
```
|
|
387
489
|
|
|
388
|
-
|
|
490
|
+
すべての standard ファイルは ✅ 正しい例、❌ 間違った例、ルール要約テーブルを含みます — すべて汎用テンプレートではなく、実際のコードパターンから導出されます。
|
|
491
|
+
|
|
492
|
+
### Gitignore 推奨事項
|
|
493
|
+
|
|
494
|
+
**コミットする**(チーム知識 — 共有が目的):
|
|
495
|
+
- `CLAUDE.md` — Claude Code エントリーポイント
|
|
496
|
+
- `.claude/rules/**` — 自動ロードルール
|
|
497
|
+
- `claudeos-core/standard/**`、`skills/**`、`guide/**`、`database/**`、`mcp-guide/**`、`plan/**` — 生成されたドキュメント
|
|
498
|
+
- `claudeos-core/memory/**` — 決定履歴、失敗パターン、ルール提案
|
|
499
|
+
|
|
500
|
+
**コミットしない**(再生成可能なビルド成果物):
|
|
501
|
+
|
|
502
|
+
```gitignore
|
|
503
|
+
# ClaudeOS-Core — 生成された分析 & 翻訳キャッシュ
|
|
504
|
+
claudeos-core/generated/
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
`generated/` ディレクトリには分析 JSON(`pass1-*.json`、`pass2-merged.json`)、プロンプト(`pass1/2/3/4-prompt.md`)、Pass 完了マーカー(`pass3-complete.json`、`pass4-memory.json`)、翻訳キャッシュ(`.i18n-cache-<lang>.json`)、一時ステージングディレクトリ(`.staged-rules/`)が含まれます — すべて `npx claudeos-core init` を再実行することで再構築可能です。
|
|
389
508
|
|
|
390
509
|
---
|
|
391
510
|
|
|
392
|
-
##
|
|
511
|
+
## プロジェクトサイズによる自動スケーリング
|
|
393
512
|
|
|
394
|
-
|
|
|
513
|
+
| サイズ | ドメイン | Pass 1 実行回数 | 合計 `claude -p` | 推定時間 |
|
|
395
514
|
|---|---|---|---|---|
|
|
396
|
-
| 小規模 | 1–4 | 1 | 3 | ~5分 |
|
|
397
|
-
| 中規模 | 5–8 | 2 |
|
|
398
|
-
| 大規模 | 9–16 | 3–4 |
|
|
399
|
-
| 超大規模 | 17+ | 5+ |
|
|
515
|
+
| 小規模 | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6 分 |
|
|
516
|
+
| 中規模 | 5–8 | 2 | 5 | ~8–9 分 |
|
|
517
|
+
| 大規模 | 9–16 | 3–4 | 6–7 | ~12–13 分 |
|
|
518
|
+
| 超大規模 | 17+ | 5+ | 8+ | ~18 分+ |
|
|
400
519
|
|
|
401
|
-
|
|
520
|
+
Pass 4(メモリスキャフォールディング)は分析 Pass の上に ~30 秒を追加します。マルチスタックプロジェクト(例:Java + React)では、backend と frontend のドメインが合算されます。backend 6 + frontend 4 ドメイン = 合計 10 で「大規模」としてスケーリングされます。
|
|
402
521
|
|
|
403
522
|
---
|
|
404
523
|
|
|
405
524
|
## 検証ツール
|
|
406
525
|
|
|
407
|
-
ClaudeOS-Core
|
|
526
|
+
ClaudeOS-Core には生成後に自動的に実行される 5 つの組み込み検証ツールが含まれています:
|
|
408
527
|
|
|
409
528
|
```bash
|
|
410
|
-
#
|
|
529
|
+
# すべてのチェックを一度に実行(推奨)
|
|
411
530
|
npx claudeos-core health
|
|
412
531
|
|
|
413
532
|
# 個別コマンド
|
|
414
|
-
npx claudeos-core validate # Plan ↔
|
|
415
|
-
npx claudeos-core refresh #
|
|
416
|
-
npx claudeos-core restore # Plan →
|
|
533
|
+
npx claudeos-core validate # Plan ↔ disk 比較
|
|
534
|
+
npx claudeos-core refresh # Disk → Plan 同期
|
|
535
|
+
npx claudeos-core restore # Plan → Disk リストア
|
|
536
|
+
|
|
537
|
+
# または node を直接使用(git clone ユーザー)
|
|
538
|
+
node claudeos-core-tools/health-checker/index.js
|
|
539
|
+
node claudeos-core-tools/manifest-generator/index.js
|
|
540
|
+
node claudeos-core-tools/plan-validator/index.js --check
|
|
541
|
+
node claudeos-core-tools/sync-checker/index.js
|
|
417
542
|
```
|
|
418
543
|
|
|
419
|
-
| ツール |
|
|
544
|
+
| ツール | 役割 |
|
|
420
545
|
|---|---|
|
|
421
|
-
| **manifest-generator** | メタデータ JSON を構築(rule-manifest、sync-map、plan-manifest
|
|
422
|
-
| **plan-validator** | Master Plan の `<file>`
|
|
423
|
-
| **sync-checker** |
|
|
424
|
-
| **content-validator** |
|
|
425
|
-
| **pass-json-validator** | Pass 1–
|
|
546
|
+
| **manifest-generator** | メタデータ JSON を構築(rule-manifest、sync-map、plan-manifest);`memory/` を含む 7 ディレクトリをインデックス化(要約の `totalMemory`) |
|
|
547
|
+
| **plan-validator** | Master Plan の `<file>` ブロックを disk と比較 — 3 モード:check、refresh、restore |
|
|
548
|
+
| **sync-checker** | 未登録ファイル(disk 上にあるが plan にない)と孤児エントリを検出 — 7 ディレクトリをカバー(v2.0.0 で `memory/` を追加) |
|
|
549
|
+
| **content-validator** | 9 セクションの品質チェック — 空ファイル、✅/❌ 例の欠損、必須セクション、加えて L4 メモリスキャフォールドの整合性(decision-log 見出し日付、failure-pattern 必須フィールド、フェンス認識パース) |
|
|
550
|
+
| **pass-json-validator** | Pass 1–4 JSON 構造に加えて `pass3-complete.json` と `pass4-memory.json` 完了マーカーを検証 |
|
|
426
551
|
|
|
427
552
|
---
|
|
428
553
|
|
|
429
|
-
## Claude Code
|
|
554
|
+
## Claude Code がドキュメントを使う仕組み
|
|
430
555
|
|
|
431
|
-
ClaudeOS-Core
|
|
556
|
+
ClaudeOS-Core が生成するドキュメントは、Claude Code が実際に読み取るドキュメントです — その方法は以下のとおりです:
|
|
432
557
|
|
|
433
|
-
###
|
|
558
|
+
### Claude Code が自動的に読むファイル
|
|
434
559
|
|
|
435
560
|
| ファイル | タイミング | 保証 |
|
|
436
561
|
|---|---|---|
|
|
437
|
-
| `CLAUDE.md` |
|
|
438
|
-
| `.claude/rules/00.core/*` |
|
|
439
|
-
| `.claude/rules/10.backend/*` |
|
|
440
|
-
| `.claude/rules/
|
|
441
|
-
| `.claude/rules/
|
|
442
|
-
| `.claude/rules/
|
|
562
|
+
| `CLAUDE.md` | すべての会話開始時 | 常時 |
|
|
563
|
+
| `.claude/rules/00.core/*` | 任意のファイル編集時(`paths: ["**/*"]`) | 常時 |
|
|
564
|
+
| `.claude/rules/10.backend/*` | 任意のファイル編集時(`paths: ["**/*"]`) | 常時 |
|
|
565
|
+
| `.claude/rules/20.frontend/*` | フロントエンドファイル編集時(component/page/style パスにスコープ) | 条件付き |
|
|
566
|
+
| `.claude/rules/30.security-db/*` | 任意のファイル編集時(`paths: ["**/*"]`) | 常時 |
|
|
567
|
+
| `.claude/rules/40.infra/*` | config/infra ファイル編集時のみ(スコープ付き paths) | 条件付き |
|
|
568
|
+
| `.claude/rules/50.sync/*` | claudeos-core ファイル編集時のみ(スコープ付き paths) | 条件付き |
|
|
569
|
+
| `.claude/rules/60.memory/*` | `claudeos-core/memory/*` 編集時(memory パスにスコープ) — オンデマンドメモリレイヤを**どのように**読み書きするかを指示 | 条件付き(v2.0.0) |
|
|
443
570
|
|
|
444
|
-
###
|
|
571
|
+
### Claude Code がルール参照経由でオンデマンドで読むもの
|
|
445
572
|
|
|
446
|
-
|
|
573
|
+
各ルールファイルは `## Reference` セクションを通じて対応する standard にリンクします。Claude は現在のタスクに関連する standard のみを読みます:
|
|
447
574
|
|
|
448
|
-
- `claudeos-core/standard/**` — コーディングパターン、✅/❌
|
|
575
|
+
- `claudeos-core/standard/**` — コーディングパターン、✅/❌ 例、命名規約
|
|
449
576
|
- `claudeos-core/database/**` — DB スキーマ(クエリ、マッパー、マイグレーション用)
|
|
577
|
+
- `claudeos-core/memory/**`(v2.0.0)— L4 チーム知識レイヤ;**自動ロードされない**(すべての会話でノイジーになりすぎる)。代わりに、`60.memory/*` ルールが Claude にこれらのファイルを*いつ* Read するかを指示:セッション開始時(最近の `decision-log.md` + 重要度の高い `failure-patterns.md` をスキム)、決定を下すか再発エラーに遭遇したときにオンデマンドで追記。
|
|
450
578
|
|
|
451
|
-
`00.standard-reference.md`
|
|
579
|
+
`00.standard-reference.md` は、対応するルールがない standard を発見するためのすべての standard ファイルのディレクトリとして機能します。
|
|
452
580
|
|
|
453
|
-
###
|
|
581
|
+
### Claude Code が読まないもの(コンテキスト節約)
|
|
454
582
|
|
|
455
|
-
standard-reference ルールの `DO NOT Read`
|
|
583
|
+
これらのフォルダは standard-reference ルールの `DO NOT Read` セクションを通じて明示的に除外されます:
|
|
456
584
|
|
|
457
585
|
| フォルダ | 除外理由 |
|
|
458
586
|
|---|---|
|
|
459
587
|
| `claudeos-core/plan/` | Master Plan バックアップ(~340KB)。`npx claudeos-core refresh` で同期。 |
|
|
460
|
-
| `claudeos-core/generated/` | ビルドメタデータ JSON
|
|
588
|
+
| `claudeos-core/generated/` | ビルドメタデータ JSON、プロンプト、Pass マーカー、翻訳キャッシュ、`.staged-rules/`。コーディング用ではありません。 |
|
|
461
589
|
| `claudeos-core/guide/` | 人間向けオンボーディングガイド。 |
|
|
462
|
-
| `claudeos-core/mcp-guide/` | MCP
|
|
590
|
+
| `claudeos-core/mcp-guide/` | MCP サーバドキュメント。コーディング用ではありません。 |
|
|
591
|
+
| `claudeos-core/memory/`(自動ロード) | **自動ロード無効化**設計 — すべての会話でコンテキストが肥大化。代わりに `60.memory/*` ルール経由でオンデマンド読み込み(例:セッション開始時の `failure-patterns.md` スキャン)。常にコミットする。 |
|
|
463
592
|
|
|
464
593
|
---
|
|
465
594
|
|
|
466
|
-
##
|
|
595
|
+
## 日常のワークフロー
|
|
467
596
|
|
|
468
597
|
### インストール後
|
|
469
598
|
|
|
470
599
|
```
|
|
471
|
-
#
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
600
|
+
# Claude Code を通常通り使用するだけ — スタンダードを自動的に参照します:
|
|
601
|
+
"order ドメインの CRUD を作成して"
|
|
602
|
+
"ユーザープロファイル更新 API を追加して"
|
|
603
|
+
"このコードをプロジェクトのパターンに合わせてリファクタリングして"
|
|
475
604
|
```
|
|
476
605
|
|
|
477
|
-
###
|
|
606
|
+
### スタンダードを手動編集した後
|
|
478
607
|
|
|
479
608
|
```bash
|
|
480
609
|
# standard や rules ファイルを編集した後:
|
|
481
610
|
npx claudeos-core refresh
|
|
482
611
|
|
|
483
|
-
#
|
|
612
|
+
# すべての整合性を確認
|
|
484
613
|
npx claudeos-core health
|
|
485
614
|
```
|
|
486
615
|
|
|
487
|
-
###
|
|
616
|
+
### ドキュメントが壊れたとき
|
|
488
617
|
|
|
489
618
|
```bash
|
|
490
|
-
# Master Plan
|
|
619
|
+
# Master Plan からすべてをリストア
|
|
491
620
|
npx claudeos-core restore
|
|
492
621
|
```
|
|
493
622
|
|
|
623
|
+
### メモリレイヤメンテナンス(v2.0.0)
|
|
624
|
+
|
|
625
|
+
L4 メモリレイヤ(`claudeos-core/memory/`)はセッション間でチーム知識を蓄積します。3 つの CLI サブコマンドが健全性を維持します:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
# Compact:4 ステージコンパクションポリシーを適用(定期的 — 例:月次)
|
|
629
|
+
npx claudeos-core memory compact
|
|
630
|
+
# Stage 1:古いエントリを要約(>30 日、本文 → 一行)
|
|
631
|
+
# Stage 2:重複見出しをマージ(frequency 合算、最新の fix を保持)
|
|
632
|
+
# Stage 3:低重要度 + 古いものをドロップ(importance <3 AND lastSeen >60 日)
|
|
633
|
+
# Stage 4:ファイルあたり 400 行の上限を強制(最も古い低重要度から先にドロップ)
|
|
634
|
+
|
|
635
|
+
# Score:failure-patterns.md エントリを重要度で再ランク付け
|
|
636
|
+
npx claudeos-core memory score
|
|
637
|
+
# importance = round(frequency × 1.5 + recency × 5)、最大 10
|
|
638
|
+
# 複数の新しい失敗パターンを追加後に実行
|
|
639
|
+
|
|
640
|
+
# Propose-rules:再発する失敗から候補ルール追加を提示
|
|
641
|
+
npx claudeos-core memory propose-rules
|
|
642
|
+
# frequency ≥ 3 の failure-patterns.md エントリを読み込み
|
|
643
|
+
# confidence を計算(重み付けエビデンスに sigmoid × アンカー倍率)
|
|
644
|
+
# memory/auto-rule-update.md に提案を書き込み(自動適用されない)
|
|
645
|
+
# Confidence ≥ 0.70 は真剣な検討に値する;受諾 → ルール編集 + 決定を記録
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
メモリに書くタイミング(Claude がオンデマンドで行いますが、手動編集も可能):
|
|
649
|
+
- **`decision-log.md`** — 競合するパターン間で選択するとき、ライブラリを選ぶとき、チーム規約を定義するとき、または何かを*やらない*と決めるときに新しいエントリを追記。追記のみ;履歴エントリは決して編集しない。
|
|
650
|
+
- **`failure-patterns.md`** — 再発エラーまたは自明でない根本原因の**2 回目の発生時**に追記。初回エラーはエントリ不要。
|
|
651
|
+
- `compaction.md` と `auto-rule-update.md` — 上記の CLI サブコマンドが生成/管理;手動編集しない。
|
|
652
|
+
|
|
494
653
|
### CI/CD 統合
|
|
495
654
|
|
|
496
655
|
```yaml
|
|
497
656
|
# GitHub Actions の例
|
|
498
657
|
- run: npx claudeos-core validate
|
|
499
|
-
#
|
|
658
|
+
# Exit code 1 で PR がブロックされる
|
|
659
|
+
|
|
660
|
+
# オプション:月次メモリハウスキーピング(別 cron ワークフロー)
|
|
661
|
+
- run: npx claudeos-core memory compact
|
|
662
|
+
- run: npx claudeos-core memory score
|
|
500
663
|
```
|
|
501
664
|
|
|
502
665
|
---
|
|
@@ -507,69 +670,86 @@ npx claudeos-core restore
|
|
|
507
670
|
|
|
508
671
|
| | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
|
|
509
672
|
|---|---|---|---|---|---|
|
|
510
|
-
| **アプローチ** |
|
|
511
|
-
|
|
|
512
|
-
| **スタック検出** |
|
|
513
|
-
| **ドメイン検出** |
|
|
514
|
-
| **同じプロジェクト → 同じ結果** | ✅
|
|
515
|
-
|
|
|
516
|
-
| **出力** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans
|
|
517
|
-
| **出力場所** | `.claude/rules
|
|
518
|
-
| **生成後検証** | ✅ 5
|
|
673
|
+
| **アプローチ** | コードが先に分析、次に LLM が生成 | 事前構築された設定プリセット | LLM がエージェントチームを設計 | LLM がスペックドキュメントを生成 | LLM が CLAUDE.md を書く |
|
|
674
|
+
| **ソースコードを読む** | ✅ 決定論的静的解析 | ❌ | ❌ | ❌ (LLM が読む) | ❌ (LLM が読む) |
|
|
675
|
+
| **スタック検出** | コードが確定(ORM、DB、ビルドツール、pkg manager) | N/A(スタック非依存) | LLM が推測 | LLM が推測 | LLM が推測 |
|
|
676
|
+
| **ドメイン検出** | コードが確定(Java 5 patterns、Kotlin CQRS、Next.js FSD) | N/A | LLM が推測 | N/A | N/A |
|
|
677
|
+
| **同じプロジェクト → 同じ結果** | ✅ 決定論的分析 | ✅(静的ファイル) | ❌(LLM は揺れる) | ❌(LLM は揺れる) | ❌(LLM は揺れる) |
|
|
678
|
+
| **大規模プロジェクトへの対応** | ドメイングループ分割(4 ドメイン / 40 ファイル / グループ) | N/A | 分割なし | 分割なし | コンテキストウィンドウ制限 |
|
|
679
|
+
| **出力** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans(40-50+ ファイル) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 スペックドキュメント | CLAUDE.md(1 ファイル) |
|
|
680
|
+
| **出力場所** | `.claude/rules/`(Claude Code が自動ロード) | `.claude/` 各種 | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
|
|
681
|
+
| **生成後検証** | ✅ 5 つの自動バリデータ | ❌ | ❌ | ❌ | ❌ |
|
|
519
682
|
| **多言語出力** | ✅ 10 言語 | ❌ | ❌ | ❌ | ❌ |
|
|
520
|
-
| **マルチスタック** | ✅
|
|
521
|
-
|
|
|
683
|
+
| **マルチスタック** | ✅ Backend + Frontend 同時 | ❌ スタック非依存 | ❌ | ❌ | 部分的 |
|
|
684
|
+
| **永続メモリレイヤ** | ✅ L4 — 決定ログ + 失敗パターン + 自動スコア付きルール提案(v2.0.0) | ❌ | ❌ | ❌ | ❌ |
|
|
685
|
+
| **エージェントオーケストレーション** | ❌ | ✅ 28 agents | ✅ 6 patterns | ❌ | ❌ |
|
|
522
686
|
|
|
523
|
-
###
|
|
687
|
+
### 一文にまとめた重要な違い
|
|
524
688
|
|
|
525
|
-
**他のツールは Claude に「一般的に良い指示」を与えます。ClaudeOS-Core は Claude
|
|
689
|
+
**他のツールは Claude に「一般的に良い指示」を与えます。ClaudeOS-Core は Claude に「あなたの実際のコードから抽出された指示」を与えます。**
|
|
526
690
|
|
|
527
|
-
だから Claude Code
|
|
528
|
-
`
|
|
529
|
-
`controller/user/`
|
|
691
|
+
だから Claude Code は MyBatis プロジェクトで JPA コードを生成しなくなり、
|
|
692
|
+
コードベースが `ok()` を使っているときに `success()` を使わなくなり、
|
|
693
|
+
プロジェクトが `controller/user/` を使うときに `user/controller/` ディレクトリを作成しなくなるのです。
|
|
530
694
|
|
|
531
695
|
### 競合ではなく補完
|
|
532
696
|
|
|
533
|
-
ClaudeOS-Core
|
|
534
|
-
|
|
697
|
+
ClaudeOS-Core は**プロジェクト固有のルールとスタンダード**にフォーカスします。
|
|
698
|
+
他のツールは**エージェントオーケストレーションとワークフロー**にフォーカスします。
|
|
535
699
|
|
|
536
|
-
ClaudeOS-Core
|
|
700
|
+
ClaudeOS-Core を使ってプロジェクトのルールを生成し、その上に ECC や Harness を乗せてエージェントチームとワークフロー自動化を構築できます。異なる問題を解決しています。
|
|
537
701
|
|
|
538
702
|
---
|
|
703
|
+
|
|
539
704
|
## FAQ
|
|
540
705
|
|
|
541
|
-
**Q
|
|
542
|
-
いいえ。`CLAUDE.md`、`.claude/rules/`、`claudeos-core/`
|
|
706
|
+
**Q:ソースコードを変更しますか?**
|
|
707
|
+
いいえ。`CLAUDE.md`、`.claude/rules/`、`claudeos-core/` を作成するだけです。既存のコードは決して変更されません。
|
|
543
708
|
|
|
544
709
|
**Q:コストはどのくらいですか?**
|
|
545
|
-
`claude -p` を
|
|
710
|
+
`claude -p` を 4–8 回呼び出します(Pass 1 × N + Pass 2 + Pass 3 + Pass 4)。これは通常の Claude Code 使用量の範囲内です。`--lang` が非英語の場合、静的フォールバックパスは翻訳のために追加の `claude -p` 呼び出しを数回行うことがあります;結果は `claudeos-core/generated/.i18n-cache-<lang>.json` にキャッシュされ、その後の実行で再利用されます。
|
|
546
711
|
|
|
547
712
|
**Q:生成されたファイルを Git にコミットすべきですか?**
|
|
548
|
-
|
|
713
|
+
はい、推奨します。チームが同じ Claude Code スタンダードを共有できます。`claudeos-core/generated/` を `.gitignore` に追加することを検討してください(分析 JSON は再生成可能)。
|
|
549
714
|
|
|
550
|
-
**Q:混合スタックプロジェクト(例:Java
|
|
551
|
-
|
|
715
|
+
**Q:混合スタックプロジェクト(例:Java backend + React frontend)はどうですか?**
|
|
716
|
+
完全にサポートされています。ClaudeOS-Core は両方のスタックを自動検出し、ドメインを `backend` または `frontend` としてタグ付けし、それぞれにスタック固有の分析プロンプトを使用します。Pass 2 がすべてをマージし、Pass 3 が 1 回のパスで backend と frontend の両方のスタンダードを生成します。
|
|
552
717
|
|
|
553
|
-
**Q
|
|
554
|
-
|
|
718
|
+
**Q:Turborepo / pnpm workspaces / Lerna モノレポで動作しますか?**
|
|
719
|
+
はい。ClaudeOS-Core は `turbo.json`、`pnpm-workspace.yaml`、`lerna.json`、または `package.json#workspaces` を検出し、サブパッケージの `package.json` ファイルをスキャンして framework/ORM/DB 依存関係を自動検索します。ドメインスキャンは `apps/*/src/` と `packages/*/src/` パターンをカバーします。モノレポのルートから実行してください。
|
|
555
720
|
|
|
556
|
-
**Q
|
|
557
|
-
|
|
721
|
+
**Q:再実行すると何が起きますか?**
|
|
722
|
+
以前の Pass 1/2 結果が存在する場合、インタラクティブプロンプトが選択を提示します:**Continue**(停止した場所から再開)または **Fresh**(すべて削除して最初からやり直し)。`--force` でプロンプトをスキップして常に Fresh で開始します。Pass 3 は常に再実行されます。以前のバージョンは Master Plans から復元可能です。
|
|
558
723
|
|
|
559
|
-
**Q:
|
|
560
|
-
|
|
724
|
+
**Q:NestJS は独自のテンプレートを使用するか、それとも Express のものを使用しますか?**
|
|
725
|
+
NestJS は NestJS 固有の分析カテゴリを備えた専用の `node-nestjs` テンプレートを使用します:`@Module`、`@Injectable`、`@Controller` デコレータ、Guards、Pipes、Interceptors、DI コンテナ、CQRS パターン、`Test.createTestingModule`。Express プロジェクトは別の `node-express` テンプレートを使用します。
|
|
561
726
|
|
|
562
|
-
**Q:
|
|
563
|
-
|
|
727
|
+
**Q:Vue / Nuxt プロジェクトは?**
|
|
728
|
+
Vue/Nuxt は Composition API、`<script setup>`、defineProps/defineEmits、Pinia ストア、`useFetch`/`useAsyncData`、Nitro サーバルート、`@nuxt/test-utils` をカバーする専用の `vue-nuxt` テンプレートを使用します。Next.js/React プロジェクトは `node-nextjs` テンプレートを使用します。
|
|
564
729
|
|
|
565
|
-
**Q:Kotlin
|
|
566
|
-
はい。ClaudeOS-Core
|
|
730
|
+
**Q:Kotlin をサポートしていますか?**
|
|
731
|
+
はい。ClaudeOS-Core は `build.gradle.kts` または `build.gradle` の kotlin plugin から Kotlin を自動検出します。Kotlin 固有の分析(data classes、sealed classes、coroutines、拡張関数、MockK など)を備えた専用の `kotlin-spring` テンプレートを使用します。
|
|
567
732
|
|
|
568
|
-
**Q:CQRS / BFFアーキテクチャは?**
|
|
569
|
-
Kotlin
|
|
733
|
+
**Q:CQRS / BFF アーキテクチャは?**
|
|
734
|
+
Kotlin マルチモジュールプロジェクトで完全にサポートされています。ClaudeOS-Core は `settings.gradle.kts` を読み取り、モジュール名からモジュールタイプ(command、query、bff、integration)を検出し、Command/Query モジュール間で同じドメインをグループ化します。生成されるスタンダードには、command controllers と query controllers の別々のルール、BFF/Feign パターン、モジュール間通信規約が含まれます。
|
|
570
735
|
|
|
571
|
-
**Q:Gradle
|
|
572
|
-
ClaudeOS-Core
|
|
736
|
+
**Q:Gradle マルチモジュールモノレポは?**
|
|
737
|
+
ClaudeOS-Core はネスト深度に関係なくすべてのサブモジュール(`**/src/main/kotlin/**/*.kt`)をスキャンします。モジュールタイプは命名規約から推論されます(例:`reservation-command-server` → domain: `reservation`、type: `command`)。共有ライブラリ(`shared-lib`、`integration-lib`)も検出されます。
|
|
738
|
+
|
|
739
|
+
**Q:L4 メモリレイヤ(v2.0.0)とは?`claudeos-core/memory/` をコミットすべきですか?**
|
|
740
|
+
はい — `claudeos-core/memory/` を**常にコミット**してください。これは永続的なチーム知識です:`decision-log.md` はアーキテクチャ選択の*理由*を記録(追記のみ)、`failure-patterns.md` は再発エラーを重要度スコアとともに登録して将来のセッションで回避できるようにし、`compaction.md` は 4 ステージコンパクションポリシーを定義し、`auto-rule-update.md` は機械生成されたルール改善提案を収集します。ルール(パスごとに自動ロード)とは異なり、メモリファイルは**オンデマンド** — `60.memory/*` ルールがそう指示したときにのみ Claude が読みます(例:セッション開始時の重要度の高い失敗のスキャン)。これによりコンテキストコストを低く保ちながら、長期的な知識を保持します。
|
|
741
|
+
|
|
742
|
+
**Q:Pass 4 が失敗したらどうなりますか?**
|
|
743
|
+
自動化パイプライン(`npx claudeos-core init`)には静的フォールバックがあります:`claude -p` が失敗するか `pass4-prompt.md` が欠損している場合、`lib/memory-scaffold.js` を通じてメモリレイヤを直接スキャフォールディングします。`--lang` が非英語の場合、静的フォールバックは `claude` CLI 経由で**必ず**翻訳する必要があります — それも失敗すれば、実行は `InitError` で中止されます(静かな英語フォールバックはなし)。`claude` が認証されているときに再実行するか、`--lang en` を使用して翻訳をスキップしてください。翻訳結果は `claudeos-core/generated/.i18n-cache-<lang>.json` にキャッシュされ、その後の実行で再利用されます。
|
|
744
|
+
|
|
745
|
+
**Q:`memory compact` / `memory score` / `memory propose-rules` は何をしますか?**
|
|
746
|
+
上記の [メモリレイヤメンテナンス](#メモリレイヤメンテナンスv200) セクションを参照してください。要約:`compact` は 4 ステージポリシー(古いものを要約、重複をマージ、低重要度の古いものをドロップ、400 行上限を強制)を実行;`score` は `failure-patterns.md` を重要度(frequency × recency)で再ランク付け;`propose-rules` は再発する失敗から `auto-rule-update.md` への候補ルール追加を提示(自動適用されない — 手動で検討して受諾/拒否)。
|
|
747
|
+
|
|
748
|
+
**Q:なぜ `--force`(または "fresh" 再開モード)は `.claude/rules/` を削除するのですか?**
|
|
749
|
+
v2.0.0 で Pass 3 の silent-failure ガードが 3 つ追加されました(Guard 3 は 2 つの不完全出力のバリアントをカバー:`guide/` 向けの H2 と `standard/skills/plan` 向けの H1)。Guard 1(「部分 staged-rules 移動」)と Guard 3(「不完全出力 — guide ファイル欠損/空または standard センチネル欠損 / skills 空 / plan 空」)は既存ルールに依存しませんが、Guard 2(「ゼロルール検出」)は依存します — Claude が `staging-override.md` ディレクティブを無視して `.claude/` に直接書き込もうとしたときに発動します(Claude Code の sensitive-path ポリシーがブロックする場所)。以前の実行からの古いルールが Guard 2 を false-negative にする可能性があるため — `--force`/`fresh` は `.claude/rules/` を消去してクリーンな検出を保証します。**ルールファイルへの手動編集は `--force`/`fresh` では失われます**;必要ならば事前にバックアップしてください。
|
|
750
|
+
|
|
751
|
+
**Q:`claudeos-core/generated/.staged-rules/` とは何ですか、そしてなぜ存在するのですか?**
|
|
752
|
+
Claude Code の sensitive-path ポリシーは `claude -p` サブプロセスから `.claude/` への直接書き込みを拒否します(`--dangerously-skip-permissions` を使用してもです)。v2.0.0 は Pass 3/4 プロンプトにすべての `.claude/rules/` 書き込みをステージングディレクトリにリダイレクトさせることでこれを回避します;その後 Node.js オーケストレータ(このポリシーの対象外)が各パス後に staged ツリーを `.claude/rules/` に移動します。これはユーザーに透過的です — ディレクトリは自動作成、自動クリーン、自動移動されます。以前の実行が移動途中でクラッシュした場合、次の実行はリトライ前にステージングディレクトリを消去します。
|
|
573
753
|
|
|
574
754
|
---
|
|
575
755
|
|
|
@@ -577,50 +757,52 @@ ClaudeOS-Coreはネストの深さに関係なく、すべてのサブモジュ
|
|
|
577
757
|
|
|
578
758
|
```
|
|
579
759
|
pass-prompts/templates/
|
|
580
|
-
├── common/ #
|
|
760
|
+
├── common/ # 共有 header/footer + pass4 + staging-override
|
|
581
761
|
├── java-spring/ # Java / Spring Boot
|
|
582
762
|
├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
|
|
583
763
|
├── node-express/ # Node.js / Express
|
|
584
764
|
├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
|
|
585
|
-
├── node-nextjs/ # Next.js / React
|
|
586
|
-
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
587
|
-
├── python-django/ # Python / Django (DRF)
|
|
588
765
|
├── node-fastify/ # Node.js / Fastify
|
|
766
|
+
├── node-nextjs/ # Next.js / React (App Router, RSC)
|
|
767
|
+
├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
|
|
768
|
+
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
589
769
|
├── angular/ # Angular
|
|
590
|
-
|
|
770
|
+
├── python-django/ # Python / Django (DRF)
|
|
771
|
+
├── python-fastapi/ # Python / FastAPI
|
|
772
|
+
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
591
773
|
```
|
|
592
774
|
|
|
593
|
-
`plan-installer` がスタックを自動検出し、タイプ固有のプロンプトを組み立てます。NestJS
|
|
775
|
+
`plan-installer` がスタックを自動検出し、タイプ固有のプロンプトを組み立てます。NestJS、Vue/Nuxt、Vite SPA、Flask はそれぞれフレームワーク固有の分析カテゴリを備えた専用テンプレートを使用します(例:NestJS の `@Module`/`@Injectable`/Guards;Vue の `<script setup>`/Pinia/useFetch;Vite の client-side routing/`VITE_` env;Flask の Blueprint/`app.factory`/Flask-SQLAlchemy)。マルチスタックプロジェクトでは、`pass1-backend-prompt.md` と `pass1-frontend-prompt.md` が別々に生成され、`pass3-prompt.md` は両方のスタックの生成ターゲットを結合します。Pass 4 はスタックに関係なく共有の `common/pass4.md` テンプレート(メモリスキャフォールディング)を使用します。
|
|
594
776
|
|
|
595
777
|
---
|
|
596
778
|
|
|
597
|
-
##
|
|
779
|
+
## モノレポサポート
|
|
598
780
|
|
|
599
|
-
ClaudeOS-Core はJS/TSモノレポ構成を自動検出し、サブパッケージの依存関係をスキャンします。
|
|
781
|
+
ClaudeOS-Core は JS/TS モノレポ構成を自動検出し、サブパッケージの依存関係をスキャンします。
|
|
600
782
|
|
|
601
|
-
|
|
783
|
+
**サポートされているモノレポマーカー**(自動検出):
|
|
602
784
|
- `turbo.json`(Turborepo)
|
|
603
785
|
- `pnpm-workspace.yaml`(pnpm workspaces)
|
|
604
786
|
- `lerna.json`(Lerna)
|
|
605
787
|
- `package.json#workspaces`(npm/yarn workspaces)
|
|
606
788
|
|
|
607
|
-
|
|
789
|
+
**モノレポのルートから実行してください** — ClaudeOS-Core は `apps/*/package.json` と `packages/*/package.json` を読み取って、サブパッケージ全体の framework/ORM/DB 依存関係を発見します:
|
|
608
790
|
|
|
609
791
|
```bash
|
|
610
792
|
cd my-monorepo
|
|
611
793
|
npx claudeos-core init
|
|
612
794
|
```
|
|
613
795
|
|
|
614
|
-
|
|
615
|
-
- `apps/web/package.json`
|
|
616
|
-
- `apps/api/package.json`
|
|
617
|
-
- `packages/db/package.json`
|
|
618
|
-
- `pnpm-workspace.yaml`
|
|
796
|
+
**検出されるもの:**
|
|
797
|
+
- `apps/web/package.json` からの依存関係(例:`next`、`react`)→ frontend スタック
|
|
798
|
+
- `apps/api/package.json` からの依存関係(例:`express`、`prisma`)→ backend スタック
|
|
799
|
+
- `packages/db/package.json` からの依存関係(例:`drizzle-orm`)→ ORM/DB
|
|
800
|
+
- `pnpm-workspace.yaml` からのカスタムワークスペースパス(例:`services/*`)
|
|
619
801
|
|
|
620
|
-
|
|
621
|
-
- `apps/api/src/modules/*/` と `apps/api/src/*/`
|
|
622
|
-
- `apps/web/app/*/`、`apps/web/src/app/*/`、`apps/web/pages/*/`
|
|
623
|
-
- `packages/*/src/*/`
|
|
802
|
+
**ドメインスキャンもモノレポレイアウトをカバーします:**
|
|
803
|
+
- backend ドメイン向け `apps/api/src/modules/*/` と `apps/api/src/*/`
|
|
804
|
+
- frontend ドメイン向け `apps/web/app/*/`、`apps/web/src/app/*/`、`apps/web/pages/*/`
|
|
805
|
+
- 共有パッケージドメイン向け `packages/*/src/*/`
|
|
624
806
|
|
|
625
807
|
```
|
|
626
808
|
my-monorepo/ ← ここで実行:npx claudeos-core init
|
|
@@ -638,37 +820,60 @@ my-monorepo/ ← ここで実行:npx claudeos-core init
|
|
|
638
820
|
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
639
821
|
```
|
|
640
822
|
|
|
641
|
-
> **注意:** Kotlin/Java
|
|
823
|
+
> **注意:** Kotlin/Java モノレポでは、マルチモジュール検出は `settings.gradle.kts` を使用します(上記の [Kotlin マルチモジュールドメイン検出](#kotlin-マルチモジュールドメイン検出) を参照)。JS モノレポマーカーは不要です。
|
|
642
824
|
|
|
643
825
|
## トラブルシューティング
|
|
644
826
|
|
|
645
|
-
**"claude: command not found"** — Claude Code CLI がインストールされていないか、PATH
|
|
827
|
+
**"claude: command not found"** — Claude Code CLI がインストールされていないか、PATH にありません。[Claude Code ドキュメント](https://code.claude.com/docs/en/overview)を参照してください。
|
|
828
|
+
|
|
829
|
+
**"npm install failed"** — Node.js バージョンが低すぎる可能性があります。v18+ が必要です。
|
|
830
|
+
|
|
831
|
+
**"0 domains detected"** — プロジェクト構造が非標準かもしれません。スタック別の検出パターンは上記を参照してください。
|
|
832
|
+
|
|
833
|
+
**Kotlin プロジェクトで "0 domains detected"** — プロジェクトのルートに `build.gradle.kts`(または kotlin plugin を含む `build.gradle`)があり、ソースファイルが `**/src/main/kotlin/` 配下にあることを確認してください。マルチモジュールプロジェクトでは、`settings.gradle.kts` に `include()` ステートメントが含まれていることを確認してください。単一モジュールの Kotlin プロジェクト(`settings.gradle` なし)もサポートされています — ドメインは `src/main/kotlin/` 配下のパッケージ/クラス構造から抽出されます。
|
|
834
|
+
|
|
835
|
+
**"Language detected as java instead of kotlin"** — ClaudeOS-Core は最初にルートの `build.gradle(.kts)` をチェックし、次にサブモジュールビルドファイルをチェックします。ルートビルドファイルが `kotlin` なしで `java` plugin を使用していても、サブモジュールが Kotlin を使用する場合、ツールはフォールバックとして最大 5 つのサブモジュールビルドファイルをチェックします。それでも検出されない場合、少なくとも 1 つの `build.gradle.kts` に `kotlin("jvm")` または `org.jetbrains.kotlin` が含まれていることを確認してください。
|
|
836
|
+
|
|
837
|
+
**"CQRS not detected"** — アーキテクチャ検出はモジュール名に `command` と `query` キーワードが含まれていることに依存します。モジュールが異なる命名(例:`write-server`、`read-server`)を使用している場合、CQRS アーキテクチャは自動検出されません。plan-installer 実行後、生成されたプロンプトを手動で調整できます。
|
|
646
838
|
|
|
647
|
-
**"
|
|
839
|
+
**"Pass 3 produced 0 rule files under .claude/rules/"(v2.0.0)** — Guard 2 が発動しました:Claude は `staging-override.md` ディレクティブを無視して `.claude/` に直接書き込もうとしましたが、そこは Claude Code の sensitive-path ポリシーが書き込みをブロックする場所です。`npx claudeos-core init --force` で再実行してください。エラーが続く場合、`claudeos-core/generated/pass3-prompt.md` を調べて `staging-override.md` ブロックが最上部にあることを確認してください。
|
|
648
840
|
|
|
649
|
-
**"
|
|
841
|
+
**"Pass 3 finished but N rule file(s) could not be moved from staging"(v2.0.0)** — Guard 1 が発動しました:ステージング移動が一時的なファイルロック(通常 Windows のアンチウィルスまたはファイルウォッチャ)にヒットしました。マーカーは書き込まれないので、次の `init` 実行は Pass 3 を自動的にリトライします。`npx claudeos-core init` を再実行するだけです。
|
|
650
842
|
|
|
651
|
-
**
|
|
843
|
+
**"Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty"(v2.0.0)** — Guard 3 (H2) が発動しました:Claude は CLAUDE.md + rules を書き込んだ後、`claudeos-core/guide/` セクション(9 ファイル期待)の完了前(または開始前)に応答途中で切り詰められました。BOM のみまたは空白のみのファイルでも発動します(見出しは書かれたが本文が切り詰められた)。このガードがなければ完了マーカーが書き込まれ、その後の実行で `guide/` は永続的に空のままになります。マーカーはここでは書き込まれないので、次の `init` 実行は同じ Pass 2 結果から Pass 3 をリトライします。繰り返し発生する場合、`npx claudeos-core init --force` を使用して最初から再生成してください。
|
|
652
844
|
|
|
653
|
-
|
|
845
|
+
**"Pass 3 finished but the following required output(s) are missing or empty"(v2.0.0)** — Guard 3 (H1) が発動しました:Claude は `claudeos-core/guide/` の後、しかし `claudeos-core/standard/`、`claudeos-core/skills/`、または `claudeos-core/plan/` の前(または途中)で切り詰められました。要件:(a) `standard/00.core/01.project-overview.md` が存在し空でない(すべてのスタックの Pass 3 プロンプトが書き込むセンチネル)、(b) `skills/` に空でない `.md` が 1 つ以上、(c) `plan/` に空でない `.md` が 1 つ以上。`database/` と `mcp-guide/` は意図的に除外されています(一部のスタックは正当にゼロファイルを生成します)。Guard 3 (H2) と同じ復旧パス:`init` を再実行、または持続する場合は `--force`。
|
|
654
846
|
|
|
655
|
-
|
|
847
|
+
**"pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running"(v2.0.0)** — エラーではなく情報ログです。再開時、`init` は `pass2-merged.json` をパースして検証するようになりました(最上位キー 5 個以上必要、`pass-json-validator` の `INSUFFICIENT_KEYS` しきい値をミラー)。以前のクラッシュした実行からのスケルトン `{}` または不正な JSON は自動的に削除され、Pass 2 が再実行されます。手動操作は不要 — パイプラインは自己修復します。繰り返し発生する場合、`claudeos-core/generated/pass2-prompt.md` を検査して `--force` でリトライしてください。
|
|
848
|
+
|
|
849
|
+
**"Static fallback failed while translating to lang='ko'"(v2.0.0)** — `--lang` が非英語の場合、Pass 4 / 静的フォールバック / gap-fill はすべて `claude` CLI で翻訳する必要があります。翻訳が失敗した場合(CLI が未認証、ネットワークタイムアウト、または strict validation が出力を拒否:<40% 長さ、壊れたコードフェンス、失われた frontmatter など)、実行は静かに英語を書き込むのではなく中止されます。修正:`claude` が認証されていることを確認するか、`--lang en` で再実行して翻訳をスキップ。
|
|
850
|
+
|
|
851
|
+
**"pass4-memory.json exists but memory/ is empty"(v2.0.0)** — 以前の実行がマーカーを書き込みましたが、ユーザー(またはクリーンアップスクリプト)が `claudeos-core/memory/` を削除しました。CLI はこの古いマーカーを自動検出し、次の `init` で Pass 4 を再実行します。手動操作は不要です。
|
|
852
|
+
|
|
853
|
+
**"pass4-memory.json exists but is malformed (missing passNum/memoryFiles) — re-running Pass 4"(v2.0.0)** — エラーではなく情報ログです。Pass 4 マーカーコンテンツは検証されるようになりました(`passNum === 4` + 空でない `memoryFiles` 配列、存在だけでなく)。`{"error":"timeout"}` のようなマーカー本文として出力した Claude の部分的失敗は、以前は永続的に成功として受理されましたが、現在はマーカーが削除され、Pass 4 が自動的に再実行されます。
|
|
854
|
+
|
|
855
|
+
**"Could not delete stale pass3-complete.json / pass4-memory.json" InitError(v2.0.0)** — `init` は古いマーカーを検出し(Pass 3:CLAUDE.md が外部で削除された;Pass 4:memory/ が空またはマーカー本文が不正)、それを削除しようとしましたが、`unlinkSync` 呼び出しが失敗しました — 通常 Windows のアンチウィルスまたはファイルウォッチャ(エディタ、IDE インデクサ)がファイルハンドルを保持しているためです。以前はこれが静かに無視され、パイプラインがパスをスキップして古いマーカーを再利用していました。現在は明確に失敗します。修正:ファイルを開いている可能性のあるエディタ/AV スキャナを閉じて、`npx claudeos-core init` を再実行してください。
|
|
856
|
+
|
|
857
|
+
**"CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation" InitError(v2.0.0)** — シェルでテスト専用の環境変数 `CLAUDEOS_SKIP_TRANSLATION=1` が設定されており(おそらく CI/テスト設定の残り物)、かつ非英語 `--lang` を選択しました。この環境変数は、Pass 4 の静的フォールバックと gap-fill が非英語出力のために依存する翻訳パスをショートサーキットします。`init` は言語選択時に競合を検出し、即座に中止します(Pass 4 の途中で紛らわしいネストされたエラーでクラッシュするのではなく)。修正:実行前に `unset CLAUDEOS_SKIP_TRANSLATION` するか、`npx claudeos-core init --lang en` を使用してください。
|
|
656
858
|
|
|
657
859
|
---
|
|
658
860
|
|
|
659
|
-
##
|
|
861
|
+
## 貢献
|
|
862
|
+
|
|
863
|
+
貢献は歓迎します!最も必要とされている領域:
|
|
660
864
|
|
|
661
|
-
|
|
865
|
+
- **新しいスタックテンプレート** — Ruby/Rails、Go (Gin/Fiber/Echo)、PHP (Laravel/Symfony)、Rust (Axum/Actix)、Svelte/SvelteKit、Remix
|
|
866
|
+
- **IDE 統合** — VS Code 拡張機能、IntelliJ プラグイン
|
|
867
|
+
- **CI/CD テンプレート** — GitLab CI、CircleCI、Jenkins の例(GitHub Actions はすでに付属 — `.github/workflows/test.yml` 参照)
|
|
868
|
+
- **テストカバレッジ** — テストスイートの拡張(現在 24 のテストファイルで 489 テスト、スキャナ、スタック検出、ドメイングループ化、プランパーシング、プロンプト生成、CLI セレクタ、モノレポ検出、Vite SPA 検出、検証ツール、L4 メモリスキャフォールド、Pass 2 再開検証、Pass 3 Guards 1/2/3(H1 センチネル + H2 BOM-aware 空ファイル + strict stale-marker unlink)、Pass 4 マーカーコンテンツ検証 + stale-marker unlink strictness、翻訳 env-skip ガード + early fail-fast + CI ワークフロー、staged-rules 移動、言語対応翻訳フォールバック、AI Work Rules テンプレート構造をカバー)
|
|
662
869
|
|
|
663
|
-
|
|
664
|
-
- **Monorepo の深いサポート** — 独立したサブプロジェクトルート、ワークスペース検出
|
|
665
|
-
- **テストカバレッジ** — テストスイート拡大中(現在 269 テスト、全スキャナー、スタック検出、ドメイングルーピング、プラン解析、プロンプト生成、CLIセレクター、モノレポ検出、検証ツール、Vite SPA 検出をカバー)
|
|
870
|
+
領域の完全なリスト、コードスタイル、コミット規約、新しいスタックテンプレートを追加するためのステップバイステップガイドについては、[`CONTRIBUTING.md`](./CONTRIBUTING.md) を参照してください。
|
|
666
871
|
|
|
667
872
|
---
|
|
668
873
|
|
|
669
874
|
## 作者
|
|
670
875
|
|
|
671
|
-
**claudeos-core**
|
|
876
|
+
**claudeos-core** によって作成 — [GitHub](https://github.com/claudeos-core) · [Email](mailto:claudeoscore@gmail.com)
|
|
672
877
|
|
|
673
878
|
## ライセンス
|
|
674
879
|
|