claudeos-core 2.4.0 → 2.4.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/README.ja.md CHANGED
@@ -7,44 +7,40 @@
7
7
  [![license](https://img.shields.io/npm/l/claudeos-core.svg?color=blue)](LICENSE)
8
8
  [![downloads](https://img.shields.io/npm/dm/claudeos-core.svg?logo=npm&color=blue&label=downloads)](https://www.npmjs.com/package/claudeos-core)
9
9
 
10
- **実際のソースコードから Claude Code 用ドキュメントを自動生成します。** プロジェクトを静的に解析したうえで 4-pass の Claude パイプラインを実行し、`.claude/rules/`、standards、skills、guides を生成する CLI ツールです。その結果、Claude Code は一般的なコンベンションではなく **あなたのプロジェクト固有のコンベンション** に従います。
10
+ **プロジェクトのソースコードを直接読み取り、`CLAUDE.md` `.claude/rules/` を自動生成する CLI ツールです。Node.js のスキャナ、4-pass の Claude パイプライン、5 つの validator が連動して動きます。12 スタックと 10 言語に対応し、コードに存在しないパスを作り出すことはありません。**
11
11
 
12
12
  ```bash
13
13
  npx claudeos-core init
14
14
  ```
15
15
 
16
+ [**12 スタック**](#supported-stacks)に対応しており、モノレポでもそのまま動きます。コマンド 1 行で完結し、設定ファイルは不要、途中で止まっても再開でき、何度実行しても安全です。
17
+
16
18
  [🇺🇸 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)
17
19
 
18
20
  ---
19
21
 
20
- ## このツールは何ですか?
22
+ ## これは何?
21
23
 
22
- あなたは Claude Code を使っています。賢いツールですが、**あなたのプロジェクトのコンベンション** までは知りません:
23
- - チームでは MyBatis を使っているのに、Claude は JPA のコードを生成する。
24
- - ラッパーは `ApiResponse.ok()` なのに、Claude は `ResponseEntity.success()` と書く。
25
- - パッケージは `controller/order/` なのに、Claude は `order/controller/` を作る。
24
+ Claude Code は新しいセッションを始めるたびに、フレームワークの一般的なデフォルト値に戻ります。チームでは **MyBatis** を使っているのに JPA のコードを書いてしまったり、レスポンスラッパーが `ApiResponse.ok()` なのに `ResponseEntity.success()` で書いたりします。パッケージを layer-first で組んでいるのに、生成されるのは domain-first というケースも珍しくありません。リポジトリごとに `.claude/rules/` を手書きすれば解決はしますが、コードが育つにつれてルールのほうが追いつかなくなります。
26
25
 
27
- そのため、生成されたファイルを修正することにかなりの時間を費やすことになります。
26
+ **ClaudeOS-Core は、実際のソースコードから一貫した結果でこれを再生成します。** まず Node.js のスキャナがプロジェクトを読み、スタック・ORM・パッケージ構成・ファイルパスを把握します。次に 4-pass の Claude パイプラインがドキュメント一式を書き上げます。`CLAUDE.md`、自動ロードされる `.claude/rules/`、standards、skills のすべてが、明示的なパス allowlist の範囲内に収まります。LLM はこの範囲を超えられません。最後に 5 つの validator が、出力する前に結果を検証します。
28
27
 
29
- **ClaudeOS-Core はこの問題を解決します。** 実際のソースコードをスキャンしてコンベンションを把握し、Claude Code が自動で読み込むディレクトリ `.claude/rules/` に完全なルールセットを書き込みます。次に *「order の CRUD を作って」* と頼めば、Claude は最初の試行であなたのコンベンションに従います。
28
+ そのため、同じ入力からは常に同じ出力が返ります。10 言語のどれを選んでも byte 単位で完全に一致し、コードに存在しないパスが紛れ込むこともありません。(詳しくは下の[何が違うのか](#何が違うのか)を参照。)
30
29
 
31
- ```
32
- Before: あなた → Claude Code → 「概ね良い」コード → 手作業で修正
33
- After: あなた → Claude Code → プロジェクトに一致するコード → そのまま使える
34
- ```
30
+ 長く運用するプロジェクトには、[Memory Layer](#memory-layer-任意長期プロジェクト向け) も合わせて生成されます。
35
31
 
36
32
  ---
37
33
 
38
- ## 実際のプロジェクトでのデモ
34
+ ## 実プロジェクトで動かしてみる
39
35
 
40
- [`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. 結果: **75 generated files**、合計時間 **53 分**、すべての validator ✅。
36
+ [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) で実行してみました。Java 11 · Spring Boot 2.6 · MyBatis · SQLite · 187 個のソースファイル。結果は **75 ファイル生成**、所要時間 **53 分**、すべての validator が ✅ でした。
41
37
 
42
38
  <p align="center">
43
39
  <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">
44
40
  </p>
45
41
 
46
42
  <details>
47
- <summary><strong>📺 ターミナル出力 (テキスト版、検索・コピー用)</strong></summary>
43
+ <summary><strong>ターミナル出力 (テキスト版、検索とコピー用)</strong></summary>
48
44
 
49
45
  ```text
50
46
  ╔════════════════════════════════════════════════════╗
@@ -79,18 +75,18 @@ After: あなた → Claude Code → プロジェクトに一致するコー
79
75
  [██████████░░░░░░░░░░] 50% (2/4)
80
76
 
81
77
  [6] Pass 3 — Generating all files...
82
- 🚀 Pass 3 split mode (3a → 3b → 3c → 3d-aux)
78
+ Pass 3 split mode (3a → 3b → 3c → 3d-aux)
83
79
  ✅ 3a complete (2m 57s) — pass3a-facts.md (187-path allowlist)
84
80
  ✅ 3b complete (18m 49s) — CLAUDE.md + 19 standards + 20 rules
85
81
  ✅ 3c complete (12m 35s) — 13 skills + 9 guides
86
82
  ✅ 3d-aux complete (3m 18s) — database/ + mcp-guide/
87
- 🎉 Pass 3 split complete: 4/4 stages successful
83
+ Pass 3 split complete: 4/4 stages successful
88
84
  [███████████████░░░░░] 75% (3/4)
89
85
 
90
86
  [7] Pass 4 — Memory scaffolding...
91
- 📦 Pass 4 staged-rules: 6 rule files moved to .claude/rules/
87
+ Pass 4 staged-rules: 6 rule files moved to .claude/rules/
92
88
  ✅ Pass 4 complete (5m)
93
- 📋 Gap-fill: all 12 expected files already present
89
+ Gap-fill: all 12 expected files already present
94
90
  [████████████████████] 100% (4/4)
95
91
 
96
92
  ╔═══════════════════════════════════════╗
@@ -119,37 +115,45 @@ After: あなた → Claude Code → プロジェクトに一致するコー
119
115
  </details>
120
116
 
121
117
  <details>
122
- <summary><strong>📄 生成された <code>CLAUDE.md</code> の抜粋 (実際の出力)</strong></summary>
118
+ <summary><strong>実際の <code>CLAUDE.md</code> に入る内容 (実例の抜粋 — Section 1 + 2)</strong></summary>
123
119
 
124
120
  ```markdown
125
- ## 4. Core Architecture
126
-
127
- ### Core Patterns
128
-
129
- - **Hexagonal ports & adapters**: domain ports live in `io.spring.core.{aggregate}`
130
- and are implemented by `io.spring.infrastructure.repository.MyBatis{Aggregate}Repository`.
131
- The domain layer has zero MyBatis imports.
132
- - **CQRS-lite read/write split (same DB)**: write side goes through repository ports
133
- + entities; read side is a separate `readservice` package whose `@Mapper`
134
- interfaces return `*Data` DTOs directly (no entity hydration).
135
- - **No aggregator/orchestrator layer**: multi-source orchestration happens inside
136
- application services (e.g., `ArticleQueryService`); there is no `*Aggregator`
137
- class in the codebase.
138
- - **Application-supplied UUIDs**: entity constructors assign their own UUID; PK is
139
- passed via `#{user.id}` on INSERT. The global
140
- `mybatis.configuration.use-generated-keys=true` flag is dead config
141
- (auto-increment is unused).
142
- - **JWT HS512 authentication**: `io.spring.infrastructure.service.DefaultJwtService`
143
- is the sole token subject in/out; `io.spring.api.security.JwtTokenFilter`
144
- extracts the token at the servlet layer.
121
+ # CLAUDE.md spring-boot-realworld-example-app
122
+
123
+ > Reference implementation of the RealWorld backend specification on
124
+ > Java 11 + Spring Boot 2.6, exposing both REST and GraphQL endpoints
125
+ > over a hexagonal MyBatis persistence layer.
126
+
127
+ #### 1. Role Definition
128
+
129
+ As the senior developer for this repository, you are responsible for
130
+ writing, modifying, and reviewing code. Responses must be written in English.
131
+ A Java Spring Boot REST + GraphQL API server organized around a hexagonal
132
+ (ports & adapters) architecture, with a CQRS-lite read/write split inside
133
+ an XML-driven MyBatis persistence layer and JWT-based authentication.
134
+
135
+ #### 2. Project Overview
136
+
137
+ | Item | Value |
138
+ |---|---|
139
+ | Language | Java 11 |
140
+ | Framework | Spring Boot 2.6.3 |
141
+ | Build Tool | Gradle (Groovy DSL) |
142
+ | Persistence | MyBatis 3 via `mybatis-spring-boot-starter:2.2.2` (no JPA) |
143
+ | Database | SQLite (`org.xerial:sqlite-jdbc:3.36.0.3`) — `dev.db` (default), `:memory:` (test) |
144
+ | Migration | Flyway — single baseline `V1__create_tables.sql` |
145
+ | API Style | REST (`io.spring.api.*`) + GraphQL via Netflix DGS `:4.9.21` |
146
+ | Authentication | JWT HS512 (`jjwt-api:0.11.2`) + Spring Security `PasswordEncoder` |
147
+ | Server Port | 8080 (default) |
148
+ | Test Stack | JUnit Jupiter 5, Mockito, AssertJ, rest-assured, spring-mock-mvc |
145
149
  ```
146
150
 
147
- 注: 上記の主張はすべて実際のソースに基づいています クラス名、パッケージパス、設定キー、dead-config フラグまで、すべて Claude がファイルを書く前に scanner が抽出したものです。
151
+ 上の表の値はすべて、正確な dependency の座標も、`dev.db` というファイル名も、`V1__create_tables.sql` というマイグレーション名も、「no JPA」という事実も、Claude がファイルを書く前にスキャナが `build.gradle`、`application.properties`、ソースツリーから直接読み取った内容です。推測した値は 1 つも入っていません。
148
152
 
149
153
  </details>
150
154
 
151
155
  <details>
152
- <summary><strong>🛡️ 自動ロードされる実際のルール (<code>.claude/rules/10.backend/03.data-access-rules.md</code>)</strong></summary>
156
+ <summary><strong>実際に自動ロードされるルール (<code>.claude/rules/10.backend/01.controller-rules.md</code>)</strong></summary>
153
157
 
154
158
  ````markdown
155
159
  ---
@@ -157,298 +161,352 @@ paths:
157
161
  - "**/*"
158
162
  ---
159
163
 
160
- # Data Access Rules
164
+ #### Controller Rules
165
+
166
+ ##### REST (`io.spring.api.*`)
161
167
 
162
- ## XML-only SQL
163
- - Every SQL statement lives in `src/main/resources/mapper/*.xml`.
164
- NO `@Select` / `@Insert` / `@Update` / `@Delete` annotations on `@Mapper` methods.
165
- - Each `@Mapper` interface has exactly one XML file at
166
- `src/main/resources/mapper/{InterfaceName}.xml`.
167
- - `<mapper namespace="...">` MUST be the fully qualified Java interface name.
168
- The single existing exception is `TransferData.xml` (free-form `transfer.data`).
168
+ - Controllers are the SOLE response wrapper for HTTP — no aggregator/facade above them.
169
+ Return `ResponseEntity<?>` or a body Spring serializes via `JacksonCustomizations`.
170
+ - Each controller method calls exactly ONE application service method. Multi-source
171
+ composition lives in the application service.
172
+ - Controllers MUST NOT import `io.spring.infrastructure.*`. No direct `@Mapper` access.
173
+ - Validate command-param arguments with `@Valid`. Custom JSR-303 constraints live under
174
+ `io.spring.application.{aggregate}.*`.
175
+ - Resolve the current user via `@AuthenticationPrincipal User`.
176
+ - Let exceptions propagate to `io.spring.api.exception.CustomizeExceptionHandler`
177
+ (`@ControllerAdvice`). Do NOT `try/catch` business exceptions inside the controller.
169
178
 
170
- ## Dynamic SQL
171
- - `<if>` predicates MUST guard both null and empty:
172
- `<if test="X != null and X != ''">`. Empty-only is the existing HIGH-severity bug pattern.
173
- - Prefer `LIMIT n OFFSET m` over MySQL-style `LIMIT m, n`.
179
+ ##### GraphQL (`io.spring.graphql.*`)
174
180
 
175
- ## Examples
181
+ - DGS components (`@DgsComponent`) are the sole GraphQL response wrappers.
182
+ Use `@DgsQuery` / `@DgsData` / `@DgsMutation`.
183
+ - Resolve the current user via `io.spring.graphql.SecurityUtil.getCurrentUser()`.
184
+
185
+ ##### Examples
176
186
 
177
187
  ✅ Correct:
178
- ```xml
179
- <update id="update">
180
- UPDATE articles
181
- <set>
182
- <if test="article.title != null and article.title != ''">title = #{article.title},</if>
183
- updated_at = #{article.updatedAt}
184
- </set>
185
- WHERE id = #{article.id}
186
- </update>
188
+ ```java
189
+ @PostMapping
190
+ public ResponseEntity<?> createArticle(@AuthenticationPrincipal User user,
191
+ @Valid @RequestBody NewArticleParam param) {
192
+ Article article = articleCommandService.createArticle(param, user);
193
+ ArticleData data = articleQueryService.findById(article.getId(), user)
194
+ .orElseThrow(ResourceNotFoundException::new);
195
+ return ResponseEntity.ok(Map.of("article", data));
196
+ }
187
197
  ```
188
198
 
189
199
  ❌ Incorrect:
190
- ```xml
191
- <mapper namespace="article.mapper"> <!-- NO — namespace MUST be FQCN -->
200
+ ```java
201
+ @PostMapping
202
+ public ResponseEntity<?> create(@RequestBody NewArticleParam p) {
203
+ try {
204
+ articleCommandService.createArticle(p, currentUser);
205
+ } catch (Exception e) { // NO — let CustomizeExceptionHandler handle it
206
+ return ResponseEntity.status(500).body(e.getMessage()); // NO — leaks raw message
207
+ }
208
+ return ResponseEntity.ok().build();
209
+ }
192
210
  ```
193
211
  ````
194
212
 
195
- `paths: ["**/*"]` の glob は、プロジェクト内のいずれかのファイルを編集すると Claude Code がこのルールを自動ロードすることを意味します。✅/❌ の例は、このコードベースの実際のコンベンションと既存のバグパターンから直接抽出されています。
213
+ `paths: ["**/*"]` の glob は、プロジェクト内のどのファイルを編集しても Claude Code がこのルールを自動でロードする、という意味です。ルール内のクラス名、パッケージパス、exception handler はすべてスキャン済みのソースから直接持ってきたもので、プロジェクトの実際の `CustomizeExceptionHandler` や `JacksonCustomizations` がそのまま反映されています。
196
214
 
197
215
  </details>
198
216
 
199
217
  <details>
200
- <summary><strong>🧠 自動生成された <code>decision-log.md</code> シード (実際の出力)</strong></summary>
218
+ <summary><strong>自動生成された <code>decision-log.md</code> のシード (実例の抜粋)</strong></summary>
201
219
 
202
220
  ```markdown
203
- ## 2026-04-26 — CQRS-lite read/write split inside the persistence layer
204
-
205
- - **Context:** Writes go through `core.*Repository` port → `MyBatis*Repository`
206
- adapter → `io.spring.infrastructure.mybatis.mapper.{Aggregate}Mapper`.
207
- Reads bypass the domain port: application service →
208
- `io.spring.infrastructure.mybatis.readservice.{Concept}ReadService` directly,
209
- returning flat `*Data` DTOs from `io.spring.application.data.*`.
210
- - **Options considered:** Single repository surface returning hydrated entities
211
- for both reads and writes.
212
- - **Decision:** Same database, two `@Mapper` packages — `mapper/` (write side,
213
- operates on core entities) and `readservice/` (read side, returns `*Data` DTOs).
214
- Read DTOs avoid entity hydration overhead.
215
- - **Consequences:** Reads are NOT routed through the domain port this is
216
- intentional, not a bug. Application services may inject both a `*Repository`
217
- (writes) and one or more `*ReadService` interfaces (reads) at the same time.
218
- Do NOT add hydrate-then-map glue in the read path.
221
+ #### 2026-04-26 — Hexagonal ports & adapters with MyBatis-only persistence
222
+
223
+ - **Context:** `io.spring.core.*` exposes `*Repository` ports (e.g.,
224
+ `io.spring.core.article.ArticleRepository`) implemented by
225
+ `io.spring.infrastructure.repository.MyBatis*Repository` adapters.
226
+ The domain layer has zero `org.springframework.*` /
227
+ `org.apache.ibatis.*` / `io.spring.infrastructure.*` imports.
228
+ - **Options considered:** JPA/Hibernate, Spring Data, MyBatis-Plus
229
+ `BaseMapper`. None adopted.
230
+ - **Decision:** MyBatis 3 (`mybatis-spring-boot-starter:2.2.2`) with
231
+ hand-written XML statements under `src/main/resources/mapper/*.xml`.
232
+ Hexagonal port/adapter wiring keeps the domain framework-free.
233
+ - **Consequences:** Every SQL lives in XML`@Select`/`@Insert`/`@Update`/`@Delete`
234
+ annotations are forbidden. New aggregates require both a
235
+ `core.{aggregate}.{Aggregate}Repository` port AND a
236
+ `MyBatis{Aggregate}Repository` adapter; introducing a JPA repository would
237
+ split the persistence model.
219
238
  ```
220
239
 
221
- Pass 4 は `pass2-merged.json` から抽出したアーキテクチャ上の決定事項で `decision-log.md` seed します そのため、その後のセッションでもコードベースが _このように見える_ という事実だけでなく、_なぜ_ そう見えるのかも記憶できます。
240
+ Pass 4 は `pass2-merged.json` から取り出したアーキテクチャ上の決定事項を `decision-log.md` にあらかじめ書き込んでおきます。次のセッションが始まったときに、コードベースが _なぜ今の形になっているのか_ まで思い出せるようにするためです。並んでいる選択肢 ("JPA/Hibernate"、"MyBatis-Plus") もその帰結も、すべて実際の `build.gradle` dependency ブロックから拾ってきた内容です。
222
241
 
223
242
  </details>
224
243
 
225
244
  ---
226
245
 
227
- ## Quick Start
246
+ ## テスト済みプロジェクト
247
+
248
+ ClaudeOS-Core は実際の OSS プロジェクトで測定したリファレンスベンチマークを同梱しています。公開リポジトリで使ってみた方は、ぜひ [issue を開いてください](https://github.com/claudeos-core/claudeos-core/issues)。表に追加します。
249
+
250
+ | プロジェクト | スタック | Scanned → Generated | ステータス |
251
+ |---|---|---|---|
252
+ | [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) | Java 11 · Spring Boot 2.6 · MyBatis · SQLite | 187 → 75 files | ✅ 5 つの validator すべて通過 |
253
+
254
+ ---
255
+
256
+ ## クイックスタート
228
257
 
229
- **前提条件:** Node.js 18+、[Claude Code](https://docs.anthropic.com/en/docs/claude-code) がインストール済みかつ認証済み。
258
+ **前提条件:** Node.js 18+、[Claude Code](https://docs.anthropic.com/en/docs/claude-code) がインストール済みで認証済みであること。
230
259
 
231
260
  ```bash
232
261
  # 1. プロジェクトのルートに移動
233
262
  cd my-spring-boot-project
234
263
 
235
- # 2. init を実行 (コードを解析し、Claude にルール作成を依頼します)
264
+ # 2. init を実行 (コードを解析し、ルール作成を Claude に依頼します)
236
265
  npx claudeos-core init
237
266
 
238
- # 3. 完了。Claude Code を開いてコーディングを開始 — ルールは既にロード済みです。
267
+ # 3. 完了。Claude Code を開いて作業を始めれば、ルールはすでにロードされています。
239
268
  ```
240
269
 
241
- `init` 完了後に **得られるもの**:
270
+ `init` が終わると、次のようなファイル群ができあがります。
242
271
 
243
272
  ```
244
273
  your-project/
245
274
  ├── .claude/
246
- │ └── rules/ ← Claude Code が自動ロード
275
+ │ └── rules/ ← Claude Code が自動でロード
247
276
  │ ├── 00.core/ (共通ルール — 命名、アーキテクチャ)
248
- │ ├── 10.backend/ (バックエンドスタックのルール、該当する場合)
249
- │ ├── 20.frontend/ (フロントエンドスタックのルール、該当する場合)
250
- │ ├── 30.security-db/ (セキュリティ & DB のコンベンション)
277
+ │ ├── 10.backend/ (バックエンドのスタックルール、該当する場合)
278
+ │ ├── 20.frontend/ (フロントエンドのスタックルール、該当する場合)
279
+ │ ├── 30.security-db/ (セキュリティと DB のコンベンション)
251
280
  │ ├── 40.infra/ (env、ロギング、CI/CD)
252
- │ ├── 50.sync/ (ドキュメント同期のリマインダ — rules only)
253
- │ ├── 60.memory/ (memory rules — Pass 4、rules only)
281
+ │ ├── 50.sync/ (ドキュメント同期のリマインダー — rules のみ)
282
+ │ ├── 60.memory/ (メモリのルール — Pass 4、rules のみ)
254
283
  │ ├── 70.domains/{type}/ (ドメイン別ルール、type = backend|frontend)
255
- │ └── 80.verification/ (テスト戦略 + ビルド検証のリマインダ)
284
+ │ └── 80.verification/ (テスト戦略 + ビルド検証のリマインダー)
256
285
  ├── claudeos-core/
257
- │ ├── standard/ ← 参照ドキュメント (カテゴリ構造をミラー)
286
+ │ ├── standard/ ← リファレンスドキュメント (カテゴリ構成をミラー)
258
287
  │ │ ├── 00.core/ (プロジェクト概要、アーキテクチャ、命名)
259
- │ │ ├── 10.backend/ (バックエンド reference — バックエンドスタック時)
260
- │ │ ├── 20.frontend/ (フロントエンド reference — フロントエンドスタック時)
261
- │ │ ├── 30.security-db/ (セキュリティ & DB の reference)
262
- │ │ ├── 40.infra/ (env / ロギング / CI-CD の reference)
263
- │ │ ├── 70.domains/{type}/ (ドメイン別 reference)
264
- │ │ ├── 80.verification/ (ビルド / 起動 / テスト reference — standard only)
265
- │ │ └── 90.optional/ (スタック固有の追加 — standard only)
266
- │ ├── skills/ (Claude が適用可能な再利用パターン)
267
- │ ├── guide/ (一般的なタスク用 how-to ガイド)
288
+ │ │ ├── 10.backend/ (バックエンドのリファレンス — バックエンドスタック時)
289
+ │ │ ├── 20.frontend/ (フロントエンドのリファレンス — フロントエンドスタック時)
290
+ │ │ ├── 30.security-db/ (セキュリティ & DB のリファレンス)
291
+ │ │ ├── 40.infra/ (env / ロギング / CI-CD のリファレンス)
292
+ │ │ ├── 70.domains/{type}/ (ドメイン別リファレンス)
293
+ │ │ ├── 80.verification/ (ビルド / 起動 / テストのリファレンス — standard のみ)
294
+ │ │ └── 90.optional/ (スタック別の追加資料 — standard のみ)
295
+ │ ├── skills/ (Claude が適用できる再利用可能パターン)
296
+ │ ├── guide/ (よくあるタスクの how-to ガイド)
268
297
  │ ├── database/ (スキーマ概要、マイグレーションガイド)
269
- │ ├── mcp-guide/ (MCP 統合のメモ)
298
+ │ ├── mcp-guide/ (MCP 連携メモ)
270
299
  │ └── memory/ (decision log、failure patterns、compaction)
271
300
  └── CLAUDE.md (Claude が最初に読むインデックス)
272
301
  ```
273
302
 
274
- `rules/` と `standard/` で同じ番号 prefix を共有するカテゴリは、同一の概念領域を表します (例: `10.backend` rules ↔ `10.backend` standards)。Rules-only カテゴリ: `50.sync` (ドキュメント同期リマインダ)、`60.memory` (Pass 4 memory)。Standard-only カテゴリ: `90.optional` (強制力のないスタック固有の追加)。それ以外の prefix (`00`、`10`、`20`、`30`、`40`、`70`、`80`) は `rules/` と `standard/` の **両方** に存在します。これで Claude Code はあなたのプロジェクトを把握できます。
303
+ 同じ番号 prefix を持つカテゴリは、`rules/` と `standard/` の両方で同じ概念領域を指します (例: `10.backend` ルール ↔ `10.backend` standard)。rules にしかないカテゴリは `50.sync` (ドキュメント同期のリマインダー) と `60.memory` (Pass 4 メモリ)、standard にしかないカテゴリは `90.optional` (強制力のないスタック別の追加資料) です。それ以外の prefix (`00`、`10`、`20`、`30`、`40`、`70`、`80`) は両方に存在します。ここまで終われば、Claude Code はもうプロジェクトを把握した状態です。
275
304
 
276
305
  ---
277
306
 
278
- ## 誰のためのツールですか?
307
+ ## 誰のためのツール?
279
308
 
280
- | あなたが... | このツールが助けるのは... |
309
+ | こんな方に | このツールが解消する痛み |
281
310
  |---|---|
282
- | **Claude Code で新規プロジェクトを始めるソロ開発者** | Claude にコンベンションを教える」フェーズを丸ごとスキップ |
283
- | **共有標準を維持するチームリード** | `.claude/rules/` を最新に保つ手間を自動化 |
284
- | **既に Claude Code を使っているが生成コードの修正に疲れた人** | Claude が「概ね良い」パターンではなく、_あなたの_ パターンに従うようにする |
311
+ | **Claude Code で新規プロジェクトを始める個人開発者** | セッションのたびに Claude へコンベンションを教え直す手間がなくなります。`CLAUDE.md` と 8 カテゴリの `.claude/rules/` を一発で生成します。 |
312
+ | **複数リポジトリで共有標準を維持するチームリード** | パッケージ名の変更や ORM の差し替え、レスポンスラッパーの変更があるたびに `.claude/rules/` がついていけずズレていく問題。ClaudeOS-Core ならいつ走らせても同じ手順で再同期できます。同じ入力からは byte 単位で同じ出力が出るので、diff にノイズが乗りません。 |
313
+ | **Claude Code を使っているが生成コードの修正に疲れた方** | 違うレスポンスラッパー、違うパッケージ構成、MyBatis のプロジェクトなのに JPA、共通 middleware があるのに `try/catch` が散らばっている、といった出力。スキャナが実際のコンベンションを抽出し、Claude のすべての pass は明示的なパス allowlist の中だけで動きます。 |
314
+ | **新しいリポジトリにジョインしたばかりの方** (既存プロジェクト、新しいチーム) | リポジトリで `init` を一度走らせれば、生きたアーキテクチャマップが手に入ります。CLAUDE.md のスタック表、レイヤーごとのルールと ✅/❌ の例、主要な決定の「なぜ」が書き込まれた decision log (JPA vs MyBatis、REST vs GraphQL など)。5,000 個のソースファイルを読むより、5 つのドキュメントを読むほうが速いです。 |
315
+ | **韓国語、日本語、中国語など英語以外の言語で作業する方** | Claude Code 向けのルール生成ツールはほとんどが英語のみです。ClaudeOS-Core は **10 言語** (`en/ko/ja/zh-CN/es/vi/hi/ru/fr/de`) でドキュメント一式を生成し、出力言語が何であっても同じ構造検証を適用します。`claude-md-validator` の判定はどの言語でも同じです。 |
316
+ | **モノレポで作業する方** (Turborepo、pnpm/yarn workspaces、Lerna) | 1 回の実行でバックエンドとフロントエンドのドメインを別々の prompt で解析します。`apps/*/` と `packages/*/` も自動で巡回し、スタック別ルールは `70.domains/{type}/` の下に書き出します。 |
317
+ | **OSS への貢献や検証用途で使う方** | 出力は gitignore に優しい構成です。`claudeos-core/` はローカルの作業ディレクトリで、リポジトリに含めるのは `CLAUDE.md` と `.claude/` だけで足ります。途中で止まっても再開でき、再実行しても安全です (手で編集したルールは `--force` を付けない限りそのまま残ります)。 |
285
318
 
286
- **適していないケース:** スキャン手順なしで初日から動く agents/skills/rules の one-size-fits-all なプリセットバンドルが欲しい場合 (どのツールがどこに合うかは [docs/comparison.md](docs/ja/comparison.md) を参照)、もしくはプロジェクトが [サポート対象スタック](#supported-stacks) に該当しない場合。
319
+ **向かないケース:** スキャンを挟まずに初日からそのまま使える万能なプリセット詰め合わせが欲しい場合 (どの道具がどこに合うかは [docs/ja/comparison.md](docs/ja/comparison.md) を参照)、プロジェクトが[サポート対象スタック](#supported-stacks)のいずれにもまだ当てはまらない場合、もしくは `CLAUDE.md` が 1 つあれば足りる場合。最後のケースなら標準搭載の `claude /init` で十分で、別のツールを入れる必要はありません。
287
320
 
288
321
  ---
289
322
 
290
- ## どのように動作しますか?
323
+ ## 仕組み
291
324
 
292
- ClaudeOS-Core は通常の Claude Code ワークフローを反転させます:
325
+ ClaudeOS-Core は、よくある Claude Code のワークフローの順序をひっくり返します。
293
326
 
294
327
  ```
295
- 通常: 人がプロジェクトを説明 → Claude がスタックを推測 → Claude が docs を作成
296
- このツール: コードがスタックを読む コードが確定した事実を Claude に渡す → Claude が事実から docs を作成
328
+ 通常: ユーザがプロジェクトを説明 → Claude がスタックを推測 → Claude が文書を作成
329
+ 本ツール: コードがスタックを解析 確定した事実を Claude に渡す → Claude は事実だけで文書を作成
297
330
  ```
298
331
 
299
- ポイント: **Node.js scanner が先にソースコードを読み** (deterministic、AI なし)、その後 4-pass の Claude パイプラインが scanner で見つけた事実に制約された形でドキュメントを書きます。Claude はコードに実在しないパスやフレームワークをでっち上げることができません。
332
+ パイプラインは **3 段階**で動きます。LLM を呼ぶ前にも後にも、コードが間に挟まる構成です。
333
+
334
+ **1. Step A — スキャナ (LLM なしの決定論的処理)。** Node.js のスキャナがプロジェクトルートを巡回し、`package.json` / `build.gradle` / `pom.xml` / `pyproject.toml` を読み、`.env*` ファイルをパースします (`PASSWORD/SECRET/TOKEN/JWT_SECRET/...` などの機密変数は自動でマスクします)。続いてアーキテクチャパターンを分類し (Java の 5 パターン A/B/C/D/E、Kotlin の CQRS / マルチモジュール、Next.js の App Router と Pages Router、FSD、components パターン)、ドメインを抽出し、存在するすべてのソースファイルパスを明示的な allowlist にまとめます。結果は `project-analysis.json` 1 ファイルに集約され、以降の工程はこれを single source of truth として扱います。
335
+
336
+ **2. Step B — 4-pass の Claude パイプライン (Step A の事実を制約として動作)。**
337
+ - **Pass 1** はドメイングループごとに代表ファイルを読み、ドメインあたり 50 〜 100 個のコンベンション (レスポンスラッパー、ロギングライブラリ、エラー処理、命名規則、テストパターンなど) を抽出します。ドメイングループごとに 1 回ずつ実行する設計 (`max 4 domains, 40 files per group`) なので、context があふれることはありません。
338
+ - **Pass 2** はドメインごとの解析結果をプロジェクト全体の像にまとめます。ドメイン間で食い違いがあれば、最も多く使われているコンベンションを採用します。
339
+ - **Pass 3** は `CLAUDE.md`、`.claude/rules/`、`claudeos-core/standard/`、skills、guides を書き上げます。段階を分けて (`3a` facts → `3b-core/3b-N` rules+standards → `3c-core/3c-N` skills+guides → `3d-aux` database+mcp-guide) 進めるので、`pass2-merged.json` が大きくなっても各段階の prompt が LLM の context window に収まります。ドメインが 16 個以上ある場合は、3b/3c をさらに 15 ドメイン以下のバッチへ分割します。
340
+ - **Pass 4** は L4 メモリレイヤー (`decision-log.md`、`failure-patterns.md`、`compaction.md`、`auto-rule-update.md`) をシードし、共通の scaffold ルールを追加します。Pass 4 は **`CLAUDE.md` を絶対に変更しません**。Pass 3 の Section 8 が唯一の権限を持ちます。
341
+
342
+ **3. Step C — 検証 (LLM なしの決定論的処理)。** 5 つの validator が結果を検査します。
343
+ - `claude-md-validator` — `CLAUDE.md` に対する 25 種類の構造チェック (8 sections、H3/H4 の個数、メモリファイルの一意性、T1 canonical heading の不変条件)。language-invariant なので、`--lang` が何であっても判定は同じです。
344
+ - `content-validator` — 10 種類のコンテンツチェック。パス参照の存在確認 (`STALE_PATH` が捏造の `src/...` 参照を捕捉) や MANIFEST drift の検知も含まれます。
345
+ - `pass-json-validator` — Pass 1/2/3/4 の JSON well-formedness と stack-aware なセクション数チェック。
346
+ - `plan-validator` — plan ↔ disk の整合性 (legacy。v2.1.0 以降はほぼ no-op)。
347
+ - `sync-checker` — 追跡対象 7 ディレクトリにおける disk ↔ `sync-map.json` の登録整合性。
348
+
349
+ severity は 3 段階 (`fail` / `warn` / `advisory`) に分かれており、ユーザが手で直せる程度の LLM hallucination で warning が CI を止めてしまうことはありません。
300
350
 
301
- アーキテクチャ全体は [docs/ja/architecture.md](docs/ja/architecture.md) を参照。
351
+ これらすべてを束ねる根本原則は、**Claude が引用できるのはコードに実在するパスだけ**ということです。Step A が有限の allowlist を渡すので、そもそも逸脱できない設計になっています。それでも LLM が何かを作り出そうとすることはありますが (特定の seed でごくたまに発生)、Step C が出力前にしっかり捕捉します。
352
+
353
+ 各 pass の詳細、marker ベースの再開、Claude Code の `.claude/` 機密パス制限を回避する staged-rules の挙動、スタック検出の内部ロジックは [docs/ja/architecture.md](docs/ja/architecture.md) を参照してください。
302
354
 
303
355
  ---
304
356
 
305
357
  ## Supported Stacks
306
358
 
307
- 12 種のスタック、プロジェクトファイルから自動検出:
359
+ 12 スタックを、プロジェクトのファイルから自動で検出します。
308
360
 
309
361
  **Backend:** Java/Spring Boot · Kotlin/Spring Boot · Node/Express · Node/Fastify · Node/NestJS · Python/Django · Python/FastAPI · Python/Flask
310
362
 
311
363
  **Frontend:** Node/Next.js · Node/Vite · Angular · Vue/Nuxt
312
364
 
313
- マルチスタックのプロジェクト (例: Spring Boot バックエンド + Next.js フロントエンド) もそのまま動作します。
365
+ マルチスタックのプロジェクト (例: Spring Boot バックエンド + Next.js フロントエンド) もそのまま動きます。
314
366
 
315
- 検出ルールと各 scanner が抽出する内容は [docs/ja/stacks.md](docs/ja/stacks.md) を参照。
367
+ 検出ルールと各スキャナが取り出す情報については [docs/ja/stacks.md](docs/ja/stacks.md) を参照してください。
316
368
 
317
369
  ---
318
370
 
319
371
  ## 日常のワークフロー
320
372
 
321
- 3 つのコマンドで使用量の約 95% をカバーします:
373
+ 普段の使い方は、ほぼこの 3 つのコマンドで済みます。
322
374
 
323
375
  ```bash
324
- # プロジェクトでの初回実行
376
+ # プロジェクトで初めて実行するとき
325
377
  npx claudeos-core init
326
378
 
327
- # standards や rules を手動編集した後
379
+ # standards やルールを手で編集した後
328
380
  npx claudeos-core lint
329
381
 
330
- # ヘルスチェック (コミット前または CI で実行)
382
+ # ヘルスチェック (コミット前や CI で実行)
331
383
  npx claudeos-core health
332
384
  ```
333
385
 
334
- memory layer のメンテナンス用にもう 2 つ:
335
-
336
- ```bash
337
- # failure-patterns ログのコンパクション (定期的に実行)
338
- npx claudeos-core memory compact
339
-
340
- # 頻発する failure pattern を提案ルールへ昇格
341
- npx claudeos-core memory propose-rules
342
- ```
343
-
344
- 各コマンドの全オプションは [docs/ja/commands.md](docs/ja/commands.md) を参照。
386
+ 各コマンドのオプション全体は [docs/ja/commands.md](docs/ja/commands.md) を参照してください。メモリレイヤーのコマンド (`memory compact`、`memory propose-rules`) は下の [Memory Layer](#memory-layer-任意長期プロジェクト向け) セクションで扱います。
345
387
 
346
388
  ---
347
389
 
348
390
  ## 何が違うのか
349
391
 
350
- ほとんどの Claude Code ドキュメント生成ツールは「説明」から始まります (人がツールに伝え、ツールが Claude に伝える)。ClaudeOS-Core は「実際のソースコード」から始まります (ツールが読み、確定した事実を Claude に伝え、Claude は確定した内容だけを書く)。
392
+ Claude Code 向けのドキュメント生成ツールはほとんど、ユーザの説明から出発します。ユーザがツールに伝え、ツールがそれを Claude に伝える流れです。ClaudeOS-Core は実際のソースコードから出発します。ツールが直接コードを読み、確定した事実を Claude に渡し、Claude はその事実だけでドキュメントを書きます。
351
393
 
352
- 具体的な 3 つの帰結:
394
+ 具体的な違いは 3 つあります。
353
395
 
354
- 1. **Deterministic stack detection.** 同じプロジェクト + 同じコード = 同じ出力。「今回は Claude のサイコロが違った」現象がない。
355
- 2. **No invented paths.** Pass 3 のプロンプトは許可されたソースパスをすべて明示的に列挙 Claude は存在しないパスを引用できない。
356
- 3. **Multi-stack aware.** バックエンドとフロントエンドのドメインが同一実行内でそれぞれ異なる解析プロンプトを使用。
396
+ 1. **決定論的なスタック検出。** 同じプロジェクト + 同じコード = 同じ出力。「今回の Claude はちょっと違う出力を出してきた」がありません。
397
+ 2. **存在しないパスを作らない。** Pass 3 prompt に許可済みのソースパスがすべて明示されているため、Claude はそこに無いパスを引用できません。
398
+ 3. **マルチスタックを意識した解析。** 同じ実行の中で、バックエンドとフロントエンドのドメインがそれぞれ別の解析 prompt を使います。
357
399
 
358
- 他ツールとの scope 比較は [docs/ja/comparison.md](docs/ja/comparison.md) を参照。比較は **各ツールが何をするか** に関するもので、**どれが優れているか** ではありません — ほとんどは相補的です。
400
+ 他のツールとのスコープ比較は [docs/ja/comparison.md](docs/ja/comparison.md) を参照してください。この比較は **各ツールが何をするか** を整理した内容で、**どれが優れているか** を評価したものではありません。多くは互いに補完関係にあります。
359
401
 
360
402
  ---
361
403
 
362
- ## 検証 (post-generation)
404
+ ## 検証 (生成後)
363
405
 
364
- Claude docs を書いた後、コードがそれを検証します。5 つの独立した validator:
406
+ Claude がドキュメントを書き終えたら、今度はコードがそれを検証します。独立した validator 5 つあります。
365
407
 
366
- | Validator | 検査内容 | 実行元 |
408
+ | Validator | チェック内容 | 実行元 |
367
409
  |---|---|---|
368
- | `claude-md-validator` | CLAUDE.md の構造的不変条件 (8 sections、language-invariant) | `claudeos-core lint` |
369
- | `content-validator` | パスクレームが実在するか、manifest の整合性 | `health` (advisory) |
410
+ | `claude-md-validator` | CLAUDE.md の構造的な不変条件 (8 sections、language-invariant) | `claudeos-core lint` |
411
+ | `content-validator` | パス参照が実際に存在するか、manifest が整合しているか | `health` (advisory) |
370
412
  | `pass-json-validator` | Pass 1 / 2 / 3 / 4 の出力が well-formed JSON か | `health` (warn) |
371
- | `plan-validator` | 保存された plan がディスクと一致するか | `health` (fail-on-error) |
372
- | `sync-checker` | ディスク上のファイルが `sync-map.json` の登録と一致するか (orphaned/unregistered の検出) | `health` (fail-on-error) |
413
+ | `plan-validator` | 保存された plan がディスクの内容と一致するか | `health` (fail-on-error) |
414
+ | `sync-checker` | `sync-map.json` の登録項目とディスク上のファイルが一致するか (orphaned/unregistered の検出) | `health` (fail-on-error) |
373
415
 
374
- `health-checker` 4 つのランタイム validator を 3 段階の severity (fail / warn / advisory) でオーケストレーションし、CI に適した exit code で終了します。`claude-md-validator` は構造的な drift soft warning ではなく re-init のシグナルなので、`lint` コマンドで個別に実行されます。いつでも実行可能:
416
+ `health-checker` がランタイム validator 4 つを 3 段階の severity (fail / warn / advisory) でまとめて実行し、CI に適した終了コードで締めくくります。`claude-md-validator` だけは `lint` コマンドで個別に走らせる構成にしてあります。構造のズレは「軽い警告」ではなく「再 init すべきシグナル」だからです。いつでも実行できます。
375
417
 
376
418
  ```bash
377
419
  npx claudeos-core health
378
420
  ```
379
421
 
380
- 各 validator の検査項目は [docs/ja/verification.md](docs/ja/verification.md) を参照。
422
+ 各 validator のチェック項目の詳細は [docs/ja/verification.md](docs/ja/verification.md) を参照してください。
381
423
 
382
424
  ---
383
425
 
384
426
  ## Memory Layer (任意、長期プロジェクト向け)
385
427
 
386
- v2.0 以降、ClaudeOS-Core 4 つのファイルが入った `claudeos-core/memory/` フォルダを書き込みます:
428
+ 上の scaffolding パイプラインに加えて、単一セッションを超えて context を引き継ぎたいプロジェクト向けに、`claudeos-core/memory/` フォルダも併せて用意します。任意機能なので、`CLAUDE.md` とルールだけで足りる場合は無視してかまいません。
387
429
 
388
- - `decision-log.md` append-only な「なぜ Y ではなく X を選んだのか」
389
- - `failure-patterns.md` — frequency/importance スコア付きの繰り返し発生するエラー
390
- - `compaction.md` — 時間とともに memory がどのように自動コンパクションされるか
391
- - `auto-rule-update.md` — 新ルールに昇格すべきパターン
430
+ ファイルは 4 つで、すべて Pass 4 が書き出します。
392
431
 
393
- `npx claudeos-core memory propose-rules` を実行すると、Claude に最近の failure pattern を見せて新しいルールを提案させることができます。
432
+ - `decision-log.md` append-only 形式の「なぜ X ではなく Y を選んだか」の記録。`pass2-merged.json` からシード。
433
+ - `failure-patterns.md` — frequency / importance のスコアが付いた、繰り返し起きるエラーの一覧。
434
+ - `compaction.md` — 時間の経過とともにメモリが自動圧縮される仕組み。
435
+ - `auto-rule-update.md` — 新しいルールに昇格させるべきパターン。
394
436
 
395
- memory モデルとライフサイクルは [docs/ja/memory-layer.md](docs/ja/memory-layer.md) を参照。
437
+ このレイヤーを長く運用するためのコマンドが 2 つあります。
438
+
439
+ ```bash
440
+ # failure-patterns ログを圧縮 (定期的に実行)
441
+ npx claudeos-core memory compact
442
+
443
+ # よく出る failure pattern を提案ルールに昇格
444
+ npx claudeos-core memory propose-rules
445
+ ```
446
+
447
+ メモリモデルとライフサイクルについては [docs/ja/memory-layer.md](docs/ja/memory-layer.md) を参照してください。
396
448
 
397
449
  ---
398
450
 
399
451
  ## FAQ
400
452
 
401
- **Q: Claude API キーが必要ですか?**
402
- A: 不要です。ClaudeOS-Core は既存の Claude Code インストールを利用します — マシン上の `claude -p` にプロンプトを流すだけです。追加のアカウントは不要です。
453
+ **Q: Claude API キーは必要ですか?**
454
+ A: 不要です。ClaudeOS-Core は手元にインストール済みの Claude Code をそのまま利用します。ローカルの `claude -p` に prompt を流す方式なので、追加のアカウントは要りません。
403
455
 
404
456
  **Q: 既存の CLAUDE.md や `.claude/rules/` を上書きしますか?**
405
- A: 新しいプロジェクトでの初回実行: 新規作成します。`--force` なしの再実行: 編集内容を保持 — 前回実行の pass marker が検出されると該当 pass はスキップされます。`--force` での再実行: すべてを wipe して再生成 (編集内容は失われます — それが `--force` の意味です)。詳しくは [docs/ja/safety.md](docs/ja/safety.md) を参照。
457
+ A: 新規プロジェクトで初めて実行したときは新しく作ります。`--force` を付けずに再実行した場合は編集内容が残ります。前回実行の pass marker を検知して、その pass をスキップする仕組みです。`--force` を付けて再実行すると全部消して作り直します (編集内容も一緒に消える、というのが `--force` の意味です)。詳しくは [docs/ja/safety.md](docs/ja/safety.md) を参照してください。
406
458
 
407
- **Q: 自分のスタックがサポート対象外です。追加できますか?**
408
- A: できます。新しいスタックには ~3 個のプロンプトテンプレートとドメイン scanner が必要です。8 ステップガイドは [CONTRIBUTING.md](CONTRIBUTING.md) を参照。
459
+ **Q: 自分のスタックがサポートされていません。追加できますか?**
460
+ A: できます。新しいスタックには prompt テンプレート 3 種類とドメインスキャナ 1 つがあれば足ります。8 ステップのガイドは [CONTRIBUTING.md](CONTRIBUTING.md) にあります。
409
461
 
410
- **Q: 日本語 (または別言語) で docs を生成するには?**
411
- A: `npx claudeos-core init --lang ja`. 10 言語をサポート: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
462
+ **Q: 日本語 (またはその他の言語) でドキュメントを生成するには?**
463
+ A: `npx claudeos-core init --lang ja` を実行してください。対応言語は 10 種類です: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de
412
464
 
413
- **Q: monorepo でも動作しますか?**
414
- A: 動作します — Turborepo (`turbo.json`)、pnpm workspaces (`pnpm-workspace.yaml`)、Lerna (`lerna.json`)、npm/yarn workspaces (`package.json#workspaces`) は stack-detector が検出します。各 app が独自の解析を受けます。それ以外の monorepo レイアウト (例: NX) は明示的には検出されませんが、汎用的な `apps/*/` `packages/*/` のパターンはスタック別 scanner が拾います。
465
+ **Q: モノレポでも動きますか?**
466
+ A: 動きます。Turborepo (`turbo.json`)、pnpm workspaces (`pnpm-workspace.yaml`)、Lerna (`lerna.json`)、npm/yarn workspaces (`package.json#workspaces`) は stack-detector が検出します。app ごとに個別に解析します。それ以外のモノレポレイアウト (例: NX) は明示的に検出はしませんが、一般的な `apps/*/` `packages/*/` のパターンならスタック別スキャナがそのまま拾います。
415
467
 
416
- **Q: Claude Code が同意できないルールを生成したら?**
417
- A: 直接編集してください。その後 `npx claudeos-core lint` を実行して CLAUDE.md が構造的に有効なままか確認します。以後の `init` 実行 (`--force` なし) では編集内容が保持されます — resume メカニズムが marker のある pass をスキップするためです。
468
+ **Q: Claude Code が同意しがたいルールを作ってきたら?**
469
+ A: 直接編集してください。そのあと `npx claudeos-core lint` を走らせて、CLAUDE.md の構造がまだ有効かを確認します。`--force` を付けずに以降の `init` を実行する限り、編集内容はそのまま残ります。再開ロジックが marker のある pass を飛ばすからです。
418
470
 
419
471
  **Q: バグはどこに報告すれば?**
420
- A: [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). セキュリティ問題は [SECURITY.md](SECURITY.md) を参照。
472
+ A: [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues) へ。セキュリティ関連は [SECURITY.md](SECURITY.md) を参照してください。
473
+
474
+ ---
475
+
476
+ ## 時間が節約できたなら
477
+
478
+ GitHub の ⭐ 1 つで、プロジェクトの可視性が上がり、他の人にも見つけてもらいやすくなります。issue、PR、スタックテンプレートの貢献はすべて歓迎します。詳細は [CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。
421
479
 
422
480
  ---
423
481
 
424
- ## Documentation
482
+ ## ドキュメント
425
483
 
426
- | トピック | 読むもの |
484
+ | トピック | 読むファイル |
427
485
  |---|---|
428
- | 4-pass パイプラインの仕組み (図解より深く) | [docs/ja/architecture.md](docs/ja/architecture.md) |
429
- | アーキテクチャの視覚的ダイアグラム (Mermaid) | [docs/ja/diagrams.md](docs/ja/diagrams.md) |
430
- | Stack 検出 scanner が見るもの | [docs/ja/stacks.md](docs/ja/stacks.md) |
431
- | Memory layer — decision log と failure pattern | [docs/ja/memory-layer.md](docs/ja/memory-layer.md) |
486
+ | 4-pass パイプラインの動き (図より深い説明) | [docs/ja/architecture.md](docs/ja/architecture.md) |
487
+ | アーキテクチャの図解 (Mermaid) | [docs/ja/diagrams.md](docs/ja/diagrams.md) |
488
+ | スタック検出各スキャナが何を見ているか | [docs/ja/stacks.md](docs/ja/stacks.md) |
489
+ | メモリレイヤー — decision log と failure pattern | [docs/ja/memory-layer.md](docs/ja/memory-layer.md) |
432
490
  | 5 つの validator の詳細 | [docs/ja/verification.md](docs/ja/verification.md) |
433
491
  | すべての CLI コマンドとオプション | [docs/ja/commands.md](docs/ja/commands.md) |
434
- | 手動インストール (`npx` なし) | [docs/ja/manual-installation.md](docs/ja/manual-installation.md) |
435
- | Scanner override — `.claudeos-scan.json` | [docs/ja/advanced-config.md](docs/ja/advanced-config.md) |
436
- | 安全性: re-init で保持されるもの | [docs/ja/safety.md](docs/ja/safety.md) |
437
- | 類似ツールとの比較 (scope であり品質ではない) | [docs/ja/comparison.md](docs/ja/comparison.md) |
492
+ | 手動インストール (`npx` を使わない方法) | [docs/ja/manual-installation.md](docs/ja/manual-installation.md) |
493
+ | スキャナの override — `.claudeos-scan.json` | [docs/ja/advanced-config.md](docs/ja/advanced-config.md) |
494
+ | 安全性: 再実行時に保持されるもの | [docs/ja/safety.md](docs/ja/safety.md) |
495
+ | 似たツールとの比較 (品質ではなくスコープの観点) | [docs/ja/comparison.md](docs/ja/comparison.md) |
438
496
  | エラーと復旧 | [docs/ja/troubleshooting.md](docs/ja/troubleshooting.md) |
439
497
 
440
498
  ---
441
499
 
442
- ## Contributing
500
+ ## 貢献
443
501
 
444
- コントリビューション歓迎です スタック対応の追加、プロンプトの改善、バグ修正など。詳しくは [CONTRIBUTING.md](CONTRIBUTING.md) を参照。
502
+ 貢献は歓迎します。スタック対応の追加、prompt の改善、バグ修正、どれも大歓迎です。詳細は [CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。
445
503
 
446
- 行動規範とセキュリティポリシーは [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)[SECURITY.md](SECURITY.md) を参照。
504
+ 行動規範とセキュリティポリシーは [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)[SECURITY.md](SECURITY.md) を参照してください。
447
505
 
448
- ## License
506
+ ## ライセンス
449
507
 
450
- [ISC](LICENSE) 商用を含めあらゆる用途で自由に利用可能。
508
+ [ISC License](LICENSE)。商用利用を含めて、あらゆる用途に自由に利用できます。© 2025–2026 ClaudeOS-Core contributors.
451
509
 
452
510
  ---
453
511
 
454
- <sub>[@claudeos-core](https://github.com/claudeos-core) が手をかけて作成しました。時間を節約できたなら、GitHub がプロジェクトの可視性を保ちます。</sub>
512
+ <sub>[claudeos-core](https://github.com/claudeos-core) チームがメンテナンスしています。issue PR は <https://github.com/claudeos-core/claudeos-core> までお寄せください。</sub>