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/CHANGELOG.md +74 -3
- package/README.de.md +253 -195
- package/README.es.md +242 -184
- package/README.fr.md +240 -182
- package/README.hi.md +248 -190
- package/README.ja.md +247 -189
- package/README.ko.md +220 -162
- package/README.md +163 -105
- package/README.ru.md +254 -196
- package/README.vi.md +250 -192
- package/README.zh-CN.md +252 -194
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -7,44 +7,40 @@
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://www.npmjs.com/package/claudeos-core)
|
|
9
9
|
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
83
|
+
Pass 3 split complete: 4/4 stages successful
|
|
88
84
|
[███████████████░░░░░] 75% (3/4)
|
|
89
85
|
|
|
90
86
|
[7] Pass 4 — Memory scaffolding...
|
|
91
|
-
|
|
87
|
+
Pass 4 staged-rules: 6 rule files moved to .claude/rules/
|
|
92
88
|
✅ Pass 4 complete (5m)
|
|
93
|
-
|
|
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
|
|
118
|
+
<summary><strong>実際の <code>CLAUDE.md</code> に入る内容 (実例の抜粋 — Section 1 + 2)</strong></summary>
|
|
123
119
|
|
|
124
120
|
```markdown
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
164
|
+
#### Controller Rules
|
|
165
|
+
|
|
166
|
+
##### REST (`io.spring.api.*`)
|
|
161
167
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
```
|
|
191
|
-
|
|
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
|
|
213
|
+
`paths: ["**/*"]` の glob は、プロジェクト内のどのファイルを編集しても Claude Code がこのルールを自動でロードする、という意味です。ルール内のクラス名、パッケージパス、exception handler はすべてスキャン済みのソースから直接持ってきたもので、プロジェクトの実際の `CustomizeExceptionHandler` や `JacksonCustomizations` がそのまま反映されています。
|
|
196
214
|
|
|
197
215
|
</details>
|
|
198
216
|
|
|
199
217
|
<details>
|
|
200
|
-
<summary><strong
|
|
218
|
+
<summary><strong>自動生成された <code>decision-log.md</code> のシード (実例の抜粋)</strong></summary>
|
|
201
219
|
|
|
202
220
|
```markdown
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
- **Context:**
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
`
|
|
209
|
-
|
|
210
|
-
- **Options considered:**
|
|
211
|
-
|
|
212
|
-
- **Decision:**
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
- **Consequences:**
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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`
|
|
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
|
-
##
|
|
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 を実行 (
|
|
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/ (
|
|
277
|
+
│ ├── 10.backend/ (バックエンドのスタックルール、該当する場合)
|
|
278
|
+
│ ├── 20.frontend/ (フロントエンドのスタックルール、該当する場合)
|
|
279
|
+
│ ├── 30.security-db/ (セキュリティと DB のコンベンション)
|
|
251
280
|
│ ├── 40.infra/ (env、ロギング、CI/CD)
|
|
252
|
-
│ ├── 50.sync/ (
|
|
253
|
-
│ ├── 60.memory/ (
|
|
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/ (
|
|
260
|
-
│ │ ├── 20.frontend/ (
|
|
261
|
-
│ │ ├── 30.security-db/ (セキュリティ & DB
|
|
262
|
-
│ │ ├── 40.infra/ (env / ロギング / CI-CD
|
|
263
|
-
│ │ ├── 70.domains/{type}/ (
|
|
264
|
-
│ │ ├── 80.verification/ (ビルド / 起動 /
|
|
265
|
-
│ │ └── 90.optional/ (
|
|
266
|
-
│ ├── skills/ (Claude
|
|
267
|
-
│ ├── guide/ (
|
|
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
|
-
|
|
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
|
|
283
|
-
|
|
|
284
|
-
|
|
|
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
|
-
|
|
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
|
|
325
|
+
ClaudeOS-Core は、よくある Claude Code のワークフローの順序をひっくり返します。
|
|
293
326
|
|
|
294
327
|
```
|
|
295
|
-
通常:
|
|
296
|
-
|
|
328
|
+
通常: ユーザがプロジェクトを説明 → Claude がスタックを推測 → Claude が文書を作成
|
|
329
|
+
本ツール: コードがスタックを解析 → 確定した事実を Claude に渡す → Claude は事実だけで文書を作成
|
|
297
330
|
```
|
|
298
331
|
|
|
299
|
-
|
|
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
|
-
|
|
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
|
-
|
|
367
|
+
検出ルールと各スキャナが取り出す情報については [docs/ja/stacks.md](docs/ja/stacks.md) を参照してください。
|
|
316
368
|
|
|
317
369
|
---
|
|
318
370
|
|
|
319
371
|
## 日常のワークフロー
|
|
320
372
|
|
|
321
|
-
3
|
|
373
|
+
普段の使い方は、ほぼこの 3 つのコマンドで済みます。
|
|
322
374
|
|
|
323
375
|
```bash
|
|
324
|
-
#
|
|
376
|
+
# プロジェクトで初めて実行するとき
|
|
325
377
|
npx claudeos-core init
|
|
326
378
|
|
|
327
|
-
# standards
|
|
379
|
+
# standards やルールを手で編集した後
|
|
328
380
|
npx claudeos-core lint
|
|
329
381
|
|
|
330
|
-
# ヘルスチェック (
|
|
382
|
+
# ヘルスチェック (コミット前や CI で実行)
|
|
331
383
|
npx claudeos-core health
|
|
332
384
|
```
|
|
333
385
|
|
|
334
|
-
memory
|
|
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
|
-
|
|
392
|
+
Claude Code 向けのドキュメント生成ツールはほとんど、ユーザの説明から出発します。ユーザがツールに伝え、ツールがそれを Claude に伝える流れです。ClaudeOS-Core は実際のソースコードから出発します。ツールが直接コードを読み、確定した事実を Claude に渡し、Claude はその事実だけでドキュメントを書きます。
|
|
351
393
|
|
|
352
|
-
|
|
394
|
+
具体的な違いは 3 つあります。
|
|
353
395
|
|
|
354
|
-
1.
|
|
355
|
-
2.
|
|
356
|
-
3.
|
|
396
|
+
1. **決定論的なスタック検出。** 同じプロジェクト + 同じコード = 同じ出力。「今回の Claude はちょっと違う出力を出してきた」がありません。
|
|
397
|
+
2. **存在しないパスを作らない。** Pass 3 の prompt に許可済みのソースパスがすべて明示されているため、Claude はそこに無いパスを引用できません。
|
|
398
|
+
3. **マルチスタックを意識した解析。** 同じ実行の中で、バックエンドとフロントエンドのドメインがそれぞれ別の解析 prompt を使います。
|
|
357
399
|
|
|
358
|
-
|
|
400
|
+
他のツールとのスコープ比較は [docs/ja/comparison.md](docs/ja/comparison.md) を参照してください。この比較は **各ツールが何をするか** を整理した内容で、**どれが優れているか** を評価したものではありません。多くは互いに補完関係にあります。
|
|
359
401
|
|
|
360
402
|
---
|
|
361
403
|
|
|
362
|
-
## 検証 (
|
|
404
|
+
## 検証 (生成後)
|
|
363
405
|
|
|
364
|
-
Claude
|
|
406
|
+
Claude がドキュメントを書き終えたら、今度はコードがそれを検証します。独立した validator は 5 つあります。
|
|
365
407
|
|
|
366
|
-
| Validator |
|
|
408
|
+
| Validator | チェック内容 | 実行元 |
|
|
367
409
|
|---|---|---|
|
|
368
|
-
| `claude-md-validator` | CLAUDE.md
|
|
369
|
-
| `content-validator` |
|
|
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
|
|
372
|
-
| `sync-checker` |
|
|
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`
|
|
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
|
|
422
|
+
各 validator のチェック項目の詳細は [docs/ja/verification.md](docs/ja/verification.md) を参照してください。
|
|
381
423
|
|
|
382
424
|
---
|
|
383
425
|
|
|
384
426
|
## Memory Layer (任意、長期プロジェクト向け)
|
|
385
427
|
|
|
386
|
-
|
|
428
|
+
上の scaffolding パイプラインに加えて、単一セッションを超えて context を引き継ぎたいプロジェクト向けに、`claudeos-core/memory/` フォルダも併せて用意します。任意機能なので、`CLAUDE.md` とルールだけで足りる場合は無視してかまいません。
|
|
387
429
|
|
|
388
|
-
|
|
389
|
-
- `failure-patterns.md` — frequency/importance スコア付きの繰り返し発生するエラー
|
|
390
|
-
- `compaction.md` — 時間とともに memory がどのように自動コンパクションされるか
|
|
391
|
-
- `auto-rule-update.md` — 新ルールに昇格すべきパターン
|
|
430
|
+
ファイルは 4 つで、すべて Pass 4 が書き出します。
|
|
392
431
|
|
|
393
|
-
`
|
|
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
|
-
|
|
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
|
|
453
|
+
**Q: Claude API キーは必要ですか?**
|
|
454
|
+
A: 不要です。ClaudeOS-Core は手元にインストール済みの Claude Code をそのまま利用します。ローカルの `claude -p` に prompt を流す方式なので、追加のアカウントは要りません。
|
|
403
455
|
|
|
404
456
|
**Q: 既存の CLAUDE.md や `.claude/rules/` を上書きしますか?**
|
|
405
|
-
A:
|
|
457
|
+
A: 新規プロジェクトで初めて実行したときは新しく作ります。`--force` を付けずに再実行した場合は編集内容が残ります。前回実行の pass marker を検知して、その pass をスキップする仕組みです。`--force` を付けて再実行すると全部消して作り直します (編集内容も一緒に消える、というのが `--force` の意味です)。詳しくは [docs/ja/safety.md](docs/ja/safety.md) を参照してください。
|
|
406
458
|
|
|
407
|
-
**Q:
|
|
408
|
-
A: できます。新しいスタックには
|
|
459
|
+
**Q: 自分のスタックがサポートされていません。追加できますか?**
|
|
460
|
+
A: できます。新しいスタックには prompt テンプレート 3 種類とドメインスキャナ 1 つがあれば足ります。8 ステップのガイドは [CONTRIBUTING.md](CONTRIBUTING.md) にあります。
|
|
409
461
|
|
|
410
|
-
**Q: 日本語 (
|
|
411
|
-
A: `npx claudeos-core init --lang ja
|
|
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:
|
|
414
|
-
A:
|
|
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:
|
|
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)
|
|
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
|
-
##
|
|
482
|
+
## ドキュメント
|
|
425
483
|
|
|
426
|
-
| トピック |
|
|
484
|
+
| トピック | 読むファイル |
|
|
427
485
|
|---|---|
|
|
428
|
-
| 4-pass
|
|
429
|
-
|
|
|
430
|
-
|
|
|
431
|
-
|
|
|
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`
|
|
435
|
-
|
|
|
436
|
-
| 安全性:
|
|
437
|
-
|
|
|
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
|
-
##
|
|
500
|
+
## 貢献
|
|
443
501
|
|
|
444
|
-
|
|
502
|
+
貢献は歓迎します。スタック対応の追加、prompt の改善、バグ修正、どれも大歓迎です。詳細は [CONTRIBUTING.md](CONTRIBUTING.md) を参照してください。
|
|
445
503
|
|
|
446
|
-
行動規範とセキュリティポリシーは [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
|
|
504
|
+
行動規範とセキュリティポリシーは [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)、[SECURITY.md](SECURITY.md) を参照してください。
|
|
447
505
|
|
|
448
|
-
##
|
|
506
|
+
## ライセンス
|
|
449
507
|
|
|
450
|
-
[ISC](LICENSE)
|
|
508
|
+
[ISC License](LICENSE)。商用利用を含めて、あらゆる用途に自由に利用できます。© 2025–2026 ClaudeOS-Core contributors.
|
|
451
509
|
|
|
452
510
|
---
|
|
453
511
|
|
|
454
|
-
<sub>[
|
|
512
|
+
<sub>[claudeos-core](https://github.com/claudeos-core) チームがメンテナンスしています。issue や PR は <https://github.com/claudeos-core/claudeos-core> までお寄せください。</sub>
|