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.ru.md
CHANGED
|
@@ -7,44 +7,40 @@
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://www.npmjs.com/package/claudeos-core)
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
**CLI-инструмент, который читает реальный исходный код вашего проекта и на его основе сам собирает `CLAUDE.md` и `.claude/rules/`. Внутри: сканер на Node.js, четырёхпроходный пайплайн на базе Claude и пять валидаторов. Поддерживаются 12 стеков и 10 языков, а пути, которых нет в коде, инструмент не выдумывает.**
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npx claudeos-core init
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
Работает на [**12 стеках**](#supported-stacks), включая монорепозитории. Одна команда без конфигурации, безопасная при прерывании, идемпотентная при повторных запусках.
|
|
17
|
+
|
|
16
18
|
[🇺🇸 English](README.md) · [🇰🇷 한국어](README.ko.md) · [🇨🇳 中文](README.zh-CN.md) · [🇯🇵 日本語](README.ja.md) · [🇪🇸 Español](README.es.md) · [🇻🇳 Tiếng Việt](README.vi.md) · [🇮🇳 हिन्दी](README.hi.md) · [🇫🇷 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**, а Claude всё равно пишет JPA. В коде обёртка `ApiResponse.ok()`, а Claude подставляет `ResponseEntity.success()`. Пакеты разложены по слоям, а Claude собирает структуру по доменам. Можно, конечно, написать `.claude/rules/` руками для каждого репозитория — только код развивается, и правила почти сразу отстают от реальности.
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
**ClaudeOS-Core пересобирает их предсказуемо, прямо из исходного кода проекта.** Сначала сканер на Node.js разбирает проект и вытаскивает стек, ORM, раскладку пакетов, реальные пути к файлам. Затем четырёхпроходный пайплайн на Claude пишет полный комплект документации: `CLAUDE.md`, автоматически подгружаемые `.claude/rules/`, стандарты, навыки. Всё это происходит строго внутри явного allowlist путей — за его пределы LLM выйти не может. И прежде чем результат окажется у вас, его проверяют пять валидаторов.
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
В итоге одинаковый вход даёт побайтово одинаковый выход на любом из 10 языков, а пути, которых нет в коде, в документации не появляются. Подробности — ниже, в разделе [В чём отличие](#в-чём-отличие).
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
До: Вы → Claude Code → "в целом хороший" код → правка вручную
|
|
33
|
-
После: Вы → Claude Code → код, соответствующий вашему проекту → используйте как есть
|
|
34
|
-
```
|
|
30
|
+
Для долгоживущих проектов рядом разворачивается [Memory Layer](#memory-layer-опционально-для-долгосрочных-проектов).
|
|
35
31
|
|
|
36
32
|
---
|
|
37
33
|
|
|
38
|
-
##
|
|
34
|
+
## Посмотреть на реальном проекте
|
|
39
35
|
|
|
40
|
-
|
|
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 минуты**, все валидаторы зелёные ✅.
|
|
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 @@ npx claudeos-core init
|
|
|
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 @@ npx claudeos-core init
|
|
|
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
|
+
Каждое значение в этой таблице — точные координаты зависимостей, имя файла `dev.db`, название миграции `V1__create_tables.sql`, пометка «no JPA» — сканер вычитал из `build.gradle`, `application.properties` и дерева исходников ещё до того, как Claude взялся за файл. Ничего не угадано.
|
|
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
|
-
|
|
213
|
+
Глоб `paths: ["**/*"]` означает, что Claude Code будет автоматически подтягивать это правило при редактировании любого файла в проекте. Имена классов, пакеты и обработчики исключений в правиле взяты прямо из просканированных исходников, поэтому в нём фигурируют реальные `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
|
|
240
|
+
Pass 4 заранее засевает `decision-log.md` архитектурными решениями из `pass2-merged.json`. Так в следующих сессиях видно не только _как_ устроен код, но и _почему_ он устроен именно так. Альтернативы («JPA/Hibernate», «MyBatis-Plus») и их последствия — прямо из блока зависимостей `build.gradle`.
|
|
222
241
|
|
|
223
242
|
</details>
|
|
224
243
|
|
|
225
244
|
---
|
|
226
245
|
|
|
227
|
-
##
|
|
246
|
+
## Протестировано на
|
|
247
|
+
|
|
248
|
+
ClaudeOS-Core поставляется с эталонными бенчмарками на реальных open-source проектах. Если вы запускали инструмент на публичном репозитории, [откройте 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 валидаторов прошли |
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Быстрый старт
|
|
228
257
|
|
|
229
|
-
|
|
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. Готово.
|
|
267
|
+
# 3. Готово. Открывайте Claude Code и работайте — правила уже подгружены.
|
|
239
268
|
```
|
|
240
269
|
|
|
241
|
-
|
|
270
|
+
После того как `init` отработает, в проекте окажется примерно следующее:
|
|
242
271
|
|
|
243
272
|
```
|
|
244
273
|
your-project/
|
|
245
274
|
├── .claude/
|
|
246
|
-
│ └── rules/ ← Claude Code
|
|
247
|
-
│ ├── 00.core/ (общие
|
|
248
|
-
│ ├── 10.backend/ (
|
|
249
|
-
│ ├── 20.frontend/ (
|
|
250
|
-
│ ├── 30.security-db/ (
|
|
275
|
+
│ └── rules/ ← Подгружается Claude Code автоматически
|
|
276
|
+
│ ├── 00.core/ (общие правила — нейминг, архитектура)
|
|
277
|
+
│ ├── 10.backend/ (правила бэкенд-стека, если есть)
|
|
278
|
+
│ ├── 20.frontend/ (правила фронтенд-стека, если есть)
|
|
279
|
+
│ ├── 30.security-db/ (соглашения по безопасности и БД)
|
|
251
280
|
│ ├── 40.infra/ (env, логирование, CI/CD)
|
|
252
|
-
│ ├── 50.sync/ (напоминания о синхронизации документации — rules
|
|
253
|
-
│ ├── 60.memory/ (
|
|
254
|
-
│ ├── 70.domains/{type}/ (
|
|
255
|
-
│ └── 80.verification/ (стратегия тестирования + напоминания о
|
|
281
|
+
│ ├── 50.sync/ (напоминания о синхронизации документации — только rules)
|
|
282
|
+
│ ├── 60.memory/ (правила памяти — Pass 4, только rules)
|
|
283
|
+
│ ├── 70.domains/{type}/ (правила по доменам, type = backend|frontend)
|
|
284
|
+
│ └── 80.verification/ (стратегия тестирования + напоминания о проверке сборки)
|
|
256
285
|
├── claudeos-core/
|
|
257
|
-
│ ├── standard/ ← Справочные документы (
|
|
258
|
-
│ │ ├── 00.core/ (обзор проекта, архитектура,
|
|
259
|
-
│ │ ├── 10.backend/ (
|
|
260
|
-
│ │ ├── 20.frontend/ (
|
|
261
|
-
│ │ ├── 30.security-db/ (
|
|
262
|
-
│ │ ├── 40.infra/ (env /
|
|
263
|
-
│ │ ├── 70.domains/{type}/ (
|
|
264
|
-
│ │ ├── 80.verification/ (
|
|
265
|
-
│ │ └── 90.optional/ (
|
|
266
|
-
│ ├── skills/ (повторно используемые
|
|
267
|
-
│ ├── guide/ (how-to
|
|
286
|
+
│ ├── standard/ ← Справочные документы (структура категорий зеркалит rules)
|
|
287
|
+
│ │ ├── 00.core/ (обзор проекта, архитектура, нейминг)
|
|
288
|
+
│ │ ├── 10.backend/ (справка по бэкенду — если есть бэкенд-стек)
|
|
289
|
+
│ │ ├── 20.frontend/ (справка по фронтенду — если есть фронтенд-стек)
|
|
290
|
+
│ │ ├── 30.security-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
|
+
Категории с одним и тем же числовым префиксом в `rules/` и `standard/` относятся к одной теме (например, правила `10.backend` ↔ стандарты `10.backend`). Только в rules живут `50.sync` (напоминания о синхронизации документации) и `60.memory` (память Pass 4). Только в standard — `90.optional` (стек-специфичные материалы без принудительного применения). Остальные префиксы (`00`, `10`, `20`, `30`, `40`, `70`, `80`) есть и там, и там. С этого момента Claude Code знает проект.
|
|
275
304
|
|
|
276
305
|
---
|
|
277
306
|
|
|
278
|
-
## Кому это
|
|
307
|
+
## Кому это нужно?
|
|
279
308
|
|
|
280
|
-
|
|
|
309
|
+
| Вы... | Какую боль это снимает |
|
|
281
310
|
|---|---|
|
|
282
|
-
| **Соло-разработчик**, начинающий новый проект
|
|
283
|
-
| **Тимлид**,
|
|
284
|
-
| **Уже
|
|
311
|
+
| **Соло-разработчик**, начинающий новый проект на Claude Code | «Объяснять Claude свои соглашения каждую сессию» — больше не надо. `CLAUDE.md` и `.claude/rules/` из 8 категорий собираются за один проход. |
|
|
312
|
+
| **Тимлид**, отвечающий за общие стандарты в нескольких репозиториях | Правила в `.claude/rules/` устаревают, как только переименовываются пакеты, меняются ORM или обёртки ответов. ClaudeOS-Core пересобирает их детерминированно: на одном входе всегда побайтово одинаковый выход, поэтому в diff нет шума. |
|
|
313
|
+
| **Уже использует Claude Code**, но устал чинить сгенерированный код | Не та обёртка ответа, не та раскладка пакетов, JPA вместо MyBatis, `try/catch` россыпью при том, что в проекте есть централизованный middleware. Сканер достаёт ваши настоящие соглашения, а каждый проход Claude работает только в рамках явного allowlist путей. |
|
|
314
|
+
| **Подключается к новому репозиторию** (готовый проект, выход в команду) | Запустите `init` — и получите живую карту архитектуры: таблицу стека в CLAUDE.md, правила по слоям с примерами ✅/❌, decision log с ответом на вопрос «почему» по ключевым решениям (JPA vs MyBatis, REST vs GraphQL и т. д.). Прочитать пять файлов быстрее, чем пять тысяч исходников. |
|
|
315
|
+
| **Пишет на корейском, японском, китайском или ещё на 7 языках** | Большинство генераторов правил для 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) | За один запуск разбираются и бэкенд, и фронтенд, причём с отдельными промптами. Каталоги `apps/*/` и `packages/*/` обходятся автоматически, а правила по стекам складываются в `70.domains/{type}/`. |
|
|
317
|
+
| **Контрибьютит в OSS или экспериментирует** | Результат удобно класть под gitignore: `claudeos-core/` — это локальная рабочая директория, а в репозиторий нужно отправлять только `CLAUDE.md` и `.claude/`. После прерывания запуск можно продолжить, повторный запуск безопасен (ваши ручные правки в правилах сохраняются без `--force`). |
|
|
285
318
|
|
|
286
|
-
|
|
319
|
+
**Скорее не подойдёт, если:** хочется готовый универсальный набор агентов, навыков и правил, который работает с первого дня без шага сканирования (что для каких задач подходит — см. [docs/ru/comparison.md](docs/ru/comparison.md)); ваш проект пока не попадает ни в один из [поддерживаемых стеков](#supported-stacks); нужен только один файл `CLAUDE.md` (тогда хватает встроенного `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
|
+
Пайплайн состоит из **трёх стадий**: детерминированный код стоит и до LLM, и после неё.
|
|
333
|
+
|
|
334
|
+
**1. Step A — Scanner (детерминированно, без LLM).** Сканер на Node.js обходит корень проекта, читает `package.json`, `build.gradle`, `pom.xml`, `pyproject.toml`, разбирает файлы `.env*` (чувствительные переменные `PASSWORD/SECRET/TOKEN/JWT_SECRET/...` при этом редактируются), классифицирует архитектурный паттерн (5 паттернов Java A/B/C/D/E, Kotlin CQRS / multi-module, Next.js App vs Pages Router, FSD, components-pattern), находит домены и собирает явный allowlist путей всех существующих исходных файлов. На выходе — `project-analysis.json`, единый источник истины для всех последующих шагов.
|
|
335
|
+
|
|
336
|
+
**2. Step B — четырёхпроходный пайплайн на Claude (опирается на факты из Step A).**
|
|
337
|
+
- **Pass 1** читает по группе доменов представительные файлы и достаёт по 50–100 соглашений на домен: обёртки ответов, библиотеки логирования, обработку ошибок, нейминг, паттерны тестов. Запускается по разу на каждую группу доменов (`max 4 domains, 40 files per group`), поэтому контекст не переполняется.
|
|
338
|
+
- **Pass 2** сводит результаты по доменам в общую картину проекта и при расхождениях оставляет преобладающее соглашение.
|
|
339
|
+
- **Pass 3** пишет `CLAUDE.md`, `.claude/rules/`, `claudeos-core/standard/`, навыки и руководства. Работа разбита на этапы (`3a` facts → `3b-core/3b-N` rules+standards → `3c-core/3c-N` skills+guides → `3d-aux` database+mcp-guide), благодаря чему каждый промпт укладывается в окно контекста LLM, даже когда `pass2-merged.json` получился крупным. Если доменов 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`**: за этот файл отвечает Section 8 из Pass 3.
|
|
341
|
+
|
|
342
|
+
**3. Step C — Verification (детерминированно, без LLM).** Результат проверяют пять валидаторов:
|
|
343
|
+
- `claude-md-validator` — 25 структурных проверок `CLAUDE.md` (8 секций, количество H3/H4, уникальность memory-файлов, инвариант канонических заголовков T1). Не зависит от языка: вердикт одинаковый при любом `--lang`.
|
|
344
|
+
- `content-validator` — 10 контентных проверок, включая верификацию упоминаемых путей (`STALE_PATH` ловит выдуманные ссылки на `src/...`) и обнаружение дрейфа MANIFEST.
|
|
345
|
+
- `pass-json-validator` — корректность JSON выходов Pass 1/2/3/4 и количество секций с учётом стека.
|
|
346
|
+
- `plan-validator` — соответствие плана и состояния диска (легаси, начиная с v2.1.0 практически no-op).
|
|
347
|
+
- `sync-checker` — соответствие диска и регистраций в `sync-map.json` по 7 отслеживаемым каталогам.
|
|
348
|
+
|
|
349
|
+
Уровней важности три (`fail` / `warn` / `advisory`), поэтому предупреждения никогда не блокируют CI из-за галлюцинаций LLM, которые легко поправить руками.
|
|
300
350
|
|
|
301
|
-
|
|
351
|
+
Главный инвариант, на котором всё держится: **Claude может ссылаться только на пути, реально существующие в коде**, потому что на вход ему уходит конечный allowlist из Step A. Если LLM всё-таки попытается что-то выдумать (редко, но на отдельных запусках случается), Step C это перехватит ещё до того, как документация дойдёт до пользователя.
|
|
352
|
+
|
|
353
|
+
Подробности по каждому проходу, resume на маркерах, обходной механизм staged-rules для блокировки записи в `.claude/` со стороны Claude Code и внутренности детектора стеков — в [docs/ru/architecture.md](docs/ru/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
|
-
|
|
365
|
+
Многостековые проекты (например, Spring Boot на бэкенде и Next.js на фронтенде) поддерживаются из коробки.
|
|
314
366
|
|
|
315
|
-
Правила
|
|
367
|
+
Правила детекции и то, что вытаскивает каждый сканер, описаны в [docs/ru/stacks.md](docs/ru/stacks.md).
|
|
316
368
|
|
|
317
369
|
---
|
|
318
370
|
|
|
319
|
-
##
|
|
371
|
+
## Ежедневный рабочий процесс
|
|
320
372
|
|
|
321
|
-
|
|
373
|
+
Для примерно 95% случаев хватает трёх команд:
|
|
322
374
|
|
|
323
375
|
```bash
|
|
324
|
-
# Первый
|
|
376
|
+
# Первый запуск на проекте
|
|
325
377
|
npx claudeos-core init
|
|
326
378
|
|
|
327
|
-
# После
|
|
379
|
+
# После ручных правок в стандартах или правилах
|
|
328
380
|
npx claudeos-core lint
|
|
329
381
|
|
|
330
|
-
# Health-check (
|
|
382
|
+
# Health-check (перед коммитом или в CI)
|
|
331
383
|
npx claudeos-core health
|
|
332
384
|
```
|
|
333
385
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
# Компактация лога failure-patterns (запускайте периодически)
|
|
338
|
-
npx claudeos-core memory compact
|
|
339
|
-
|
|
340
|
-
# Продвижение частых failure pattern в предложенные rules
|
|
341
|
-
npx claudeos-core memory propose-rules
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
Полные опции каждой команды см. в [docs/ru/commands.md](docs/ru/commands.md).
|
|
386
|
+
Полный список опций для каждой команды смотрите в [docs/ru/commands.md](docs/ru/commands.md). Команды слоя памяти (`memory compact`, `memory propose-rules`) разобраны ниже, в разделе [Memory Layer](#memory-layer-опционально-для-долгосрочных-проектов).
|
|
345
387
|
|
|
346
388
|
---
|
|
347
389
|
|
|
348
|
-
##
|
|
390
|
+
## В чём отличие
|
|
349
391
|
|
|
350
|
-
Большинство инструментов документации Claude Code
|
|
392
|
+
Большинство инструментов документации для Claude Code исходят из вашего описания: вы рассказываете инструменту, инструмент пересказывает Claude. ClaudeOS-Core идёт от исходного кода: инструмент читает код, передаёт Claude уже подтверждённые факты, а Claude пишет только то, что подтверждено.
|
|
351
393
|
|
|
352
|
-
|
|
394
|
+
На практике это даёт три конкретных эффекта:
|
|
353
395
|
|
|
354
|
-
1.
|
|
355
|
-
2.
|
|
356
|
-
3.
|
|
396
|
+
1. **Детерминированная детекция стека.** Тот же проект и тот же код всегда дают тот же результат. Никаких «в этот раз Claude как-то иначе всё интерпретировал».
|
|
397
|
+
2. **Выдуманных путей не появляется.** В промпте Pass 3 явно перечислены все разрешённые пути в исходниках, поэтому Claude не может сослаться на то, чего нет.
|
|
398
|
+
3. **Учёт нескольких стеков сразу.** В рамках одного запуска бэкенд- и фронтенд-домены анализируются разными промптами.
|
|
357
399
|
|
|
358
|
-
|
|
400
|
+
Сравнение по охвату с другими инструментами есть в [docs/ru/comparison.md](docs/ru/comparison.md). Это сравнение про то, **что делает каждый инструмент**, а не про то, **какой из них лучше**: в большинстве случаев они дополняют друг друга.
|
|
359
401
|
|
|
360
402
|
---
|
|
361
403
|
|
|
362
|
-
##
|
|
404
|
+
## Проверка (после генерации)
|
|
363
405
|
|
|
364
|
-
|
|
406
|
+
Когда Claude закончил писать документацию, за дело снова берётся код и проверяет результат. Пять независимых валидаторов:
|
|
365
407
|
|
|
366
|
-
|
|
|
408
|
+
| Валидатор | Что проверяет | Кем запускается |
|
|
367
409
|
|---|---|---|
|
|
368
|
-
| `claude-md-validator` | Структурные инварианты CLAUDE.md (8
|
|
369
|
-
| `content-validator` | Реальное существование
|
|
370
|
-
| `pass-json-validator` |
|
|
371
|
-
| `plan-validator` |
|
|
372
|
-
| `sync-checker` |
|
|
410
|
+
| `claude-md-validator` | Структурные инварианты CLAUDE.md (8 секций, не зависит от языка) | `claudeos-core lint` |
|
|
411
|
+
| `content-validator` | Реальное существование упоминаемых путей и согласованность manifest | `health` (advisory) |
|
|
412
|
+
| `pass-json-validator` | Корректность JSON выходов Pass 1 / 2 / 3 / 4 | `health` (warn) |
|
|
413
|
+
| `plan-validator` | Соответствие сохранённого плана состоянию диска | `health` (fail-on-error) |
|
|
414
|
+
| `sync-checker` | Соответствие файлов на диске записям в `sync-map.json` (поиск orphaned/unregistered) | `health` (fail-on-error) |
|
|
373
415
|
|
|
374
|
-
`health-checker`
|
|
416
|
+
Четыре runtime-валидатора оркестрирует `health-checker` с тремя уровнями важности (fail / warn / advisory), а наружу отдаётся exit-код, удобный для CI. `claude-md-validator` вынесен в отдельную команду `lint`: структурный сдвиг — это сигнал к re-init, а не мягкое предупреждение. Запустить можно в любой момент:
|
|
375
417
|
|
|
376
418
|
```bash
|
|
377
419
|
npx claudeos-core health
|
|
378
420
|
```
|
|
379
421
|
|
|
380
|
-
|
|
422
|
+
Подробный список проверок каждого валидатора — в [docs/ru/verification.md](docs/ru/verification.md).
|
|
381
423
|
|
|
382
424
|
---
|
|
383
425
|
|
|
384
|
-
## Memory Layer (опционально, для
|
|
426
|
+
## Memory Layer (опционально, для долгосрочных проектов)
|
|
385
427
|
|
|
386
|
-
|
|
428
|
+
Кроме основного пайплайна, ClaudeOS-Core поднимает каталог `claudeos-core/memory/` — для проектов, где контекст должен жить дольше одной сессии. Слой опциональный: если хватает `CLAUDE.md` и правил, его можно спокойно игнорировать.
|
|
387
429
|
|
|
388
|
-
|
|
389
|
-
- `failure-patterns.md` — повторяющиеся ошибки с оценками frequency/importance
|
|
390
|
-
- `compaction.md` — как memory автоматически компактируется со временем
|
|
391
|
-
- `auto-rule-update.md` — паттерны, которые должны стать новыми rules
|
|
430
|
+
Внутри четыре файла, и все их пишет 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
|
+
Поддерживать слой со временем помогают две команды:
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# Уплотнить лог failure-patterns (запускайте периодически)
|
|
441
|
+
npx claudeos-core memory compact
|
|
442
|
+
|
|
443
|
+
# Превратить часто встречающиеся failure-паттерны в предложенные правила
|
|
444
|
+
npx claudeos-core memory propose-rules
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Модель памяти и её жизненный цикл подробно описаны в [docs/ru/memory-layer.md](docs/ru/memory-layer.md).
|
|
396
448
|
|
|
397
449
|
---
|
|
398
450
|
|
|
399
451
|
## FAQ
|
|
400
452
|
|
|
401
|
-
|
|
402
|
-
|
|
453
|
+
**Q: Нужен ли API-ключ Claude?**
|
|
454
|
+
A: Нет. ClaudeOS-Core использует уже установленный Claude Code и просто отправляет промпты в `claude -p` на вашей машине. Дополнительные аккаунты не нужны.
|
|
403
455
|
|
|
404
|
-
|
|
405
|
-
|
|
456
|
+
**Q: Перезапишет ли инструмент уже существующий CLAUDE.md или `.claude/rules/`?**
|
|
457
|
+
A: На чистом проекте создаст с нуля. При повторном запуске без `--force` правки сохраняются: инструмент находит маркеры предыдущих проходов и пропускает их. С `--force` всё стирается и собирается заново — правки исчезают, в этом и весь смысл флага. Подробнее — в [docs/ru/safety.md](docs/ru/safety.md).
|
|
406
458
|
|
|
407
|
-
|
|
408
|
-
|
|
459
|
+
**Q: Моего стека нет в списке. Можно добавить свой?**
|
|
460
|
+
A: Можно. На новый стек обычно нужны примерно три шаблона промптов и доменный сканер. Пошаговое руководство из 8 шагов есть в [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
409
461
|
|
|
410
|
-
|
|
411
|
-
|
|
462
|
+
**Q: Как сгенерировать документацию на русском (или другом языке)?**
|
|
463
|
+
A: `npx claudeos-core init --lang ru`. Поддерживается 10 языков: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
|
|
412
464
|
|
|
413
|
-
|
|
414
|
-
|
|
465
|
+
**Q: Работает ли это с монорепозиториями?**
|
|
466
|
+
A: Да. Stack-detector распознаёт Turborepo (`turbo.json`), pnpm workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) и npm/yarn workspaces (`package.json#workspaces`); каждое приложение получает собственный анализ. Другие раскладки монорепо (например, NX) отдельно не детектируются, но привычные `apps/*/` и `packages/*/` стек-сканеры подхватят и так.
|
|
467
|
+
|
|
468
|
+
**Q: Что делать, если Claude Code сгенерировал правила, с которыми я не согласен?**
|
|
469
|
+
A: Правьте прямо в файлах. Потом запустите `npx claudeos-core lint` — он проверит, что структура CLAUDE.md осталась валидной. Правки переживут последующие запуски `init` без `--force`: механизм resume пропускает проходы, у которых уже есть маркеры.
|
|
470
|
+
|
|
471
|
+
**Q: Где сообщать о багах?**
|
|
472
|
+
A: В [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). Вопросы безопасности — см. [SECURITY.md](SECURITY.md).
|
|
473
|
+
|
|
474
|
+
---
|
|
415
475
|
|
|
416
|
-
|
|
417
|
-
О: Редактируйте напрямую. Затем запустите `npx claudeos-core lint`, чтобы убедиться, что CLAUDE.md по-прежнему структурно валиден. Ваши правки сохраняются при последующих запусках `init` (без `--force`) — механизм resume пропускает pass-ы, у которых есть маркеры.
|
|
476
|
+
## Если это сэкономило вам время
|
|
418
477
|
|
|
419
|
-
|
|
420
|
-
О: [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). По вопросам безопасности — [SECURITY.md](SECURITY.md).
|
|
478
|
+
⭐ на GitHub помогает проекту оставаться заметным и облегчает другим разработчикам его поиск. Issues, PR и шаблоны под новые стеки — приветствуются, подробности в [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
421
479
|
|
|
422
480
|
---
|
|
423
481
|
|
|
424
482
|
## Документация
|
|
425
483
|
|
|
426
|
-
| Тема |
|
|
484
|
+
| Тема | Где почитать |
|
|
427
485
|
|---|---|
|
|
428
|
-
| Как
|
|
429
|
-
| Визуальные диаграммы (Mermaid)
|
|
430
|
-
|
|
|
431
|
-
|
|
|
432
|
-
| Все 5
|
|
433
|
-
| Все CLI-команды и опции | [docs/ru/commands.md](docs/ru/commands.md) |
|
|
486
|
+
| Как устроен 4-проходный пайплайн (глубже, чем диаграмма) | [docs/ru/architecture.md](docs/ru/architecture.md) |
|
|
487
|
+
| Визуальные диаграммы архитектуры (Mermaid) | [docs/ru/diagrams.md](docs/ru/diagrams.md) |
|
|
488
|
+
| Детекция стеков — на что смотрит каждый сканер | [docs/ru/stacks.md](docs/ru/stacks.md) |
|
|
489
|
+
| Слой памяти — decision log и failure patterns | [docs/ru/memory-layer.md](docs/ru/memory-layer.md) |
|
|
490
|
+
| Все 5 валидаторов в деталях | [docs/ru/verification.md](docs/ru/verification.md) |
|
|
491
|
+
| Все CLI-команды и их опции | [docs/ru/commands.md](docs/ru/commands.md) |
|
|
434
492
|
| Ручная установка (без `npx`) | [docs/ru/manual-installation.md](docs/ru/manual-installation.md) |
|
|
435
|
-
|
|
|
436
|
-
| Безопасность: что сохраняется при
|
|
437
|
-
| Сравнение со схожими инструментами (
|
|
493
|
+
| Переопределения сканера — `.claudeos-scan.json` | [docs/ru/advanced-config.md](docs/ru/advanced-config.md) |
|
|
494
|
+
| Безопасность: что сохраняется при повторном init | [docs/ru/safety.md](docs/ru/safety.md) |
|
|
495
|
+
| Сравнение со схожими инструментами (по охвату, не по качеству) | [docs/ru/comparison.md](docs/ru/comparison.md) |
|
|
438
496
|
| Ошибки и восстановление | [docs/ru/troubleshooting.md](docs/ru/troubleshooting.md) |
|
|
439
497
|
|
|
440
498
|
---
|
|
441
499
|
|
|
442
|
-
##
|
|
500
|
+
## Участие в проекте
|
|
443
501
|
|
|
444
|
-
|
|
502
|
+
Контрибьюции приветствуются: добавление новых стеков, улучшение промптов, фиксы багов. Подробности в [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
445
503
|
|
|
446
|
-
Кодекс поведения и
|
|
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). Issues и PR — на <https://github.com/claudeos-core/claudeos-core>.</sub>
|