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.ru.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 из вашего реального исходного кода.** CLI-инструмент, который статически анализирует ваш проект, а затем запускает 4-pass конвейер Claude для создания `.claude/rules/`, standards, skills и guides так что Claude Code следует конвенциям **именно вашего** проекта, а не общим.
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
- Вы используете Claude Code. Он умный, но **не знает конвенций вашего проекта**:
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
- **ClaudeOS-Core решает эту проблему.** Он сканирует ваш реальный исходный код, выясняет ваши конвенции и записывает полный набор правил в `.claude/rules/` каталог, который Claude Code читает автоматически. В следующий раз, когда вы скажете *"Создай CRUD для заказов"*, Claude последует вашим конвенциям с первой попытки.
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
- Запуск на [`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 минуты**, все validators ✅.
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>📺 Вывод терминала (текстовая версия, для поиска и копирования)</strong></summary>
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
- 🚀 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 @@ npx claudeos-core init
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 начал писать файл.
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>🛡️ Реальное автоматически загружаемое правило (<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
- Glob `paths: ["**/*"]` означает, что Claude Code автоматически загружает это правило при редактировании любого файла в проекте. Примеры ✅/❌ берутся прямо из реальных конвенций этой кодовой базы и существующих паттернов багов.
213
+ Глоб `paths: ["**/*"]` означает, что Claude Code будет автоматически подтягивать это правило при редактировании любого файла в проекте. Имена классов, пакеты и обработчики исключений в правиле взяты прямо из просканированных исходников, поэтому в нём фигурируют реальные `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 заполняет `decision-log.md` архитектурными решениями, извлечёнными из `pass2-merged.json`, чтобы будущие сессии помнили *почему* кодовая база выглядит так, а не только *как* она выглядит.
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
- ## Quick Start
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
- **Предварительные требования:** 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 написать rules)
264
+ # 2. Запустите init (разбирает код и поручает Claude написать правила)
236
265
  npx claudeos-core init
237
266
 
238
- # 3. Готово. Откройте Claude Code и начните кодить rules уже загружены.
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 загружает автоматически
247
- │ ├── 00.core/ (общие rulesименование, архитектура)
248
- │ ├── 10.backend/ (backend stack rules, если есть)
249
- │ ├── 20.frontend/ (frontend stack rules, если есть)
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 only)
253
- │ ├── 60.memory/ (memory rules — Pass 4, rules only)
254
- │ ├── 70.domains/{type}/ (rules по доменам, type = backend|frontend)
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/ (backend reference — если backend stack)
260
- │ │ ├── 20.frontend/ (frontend reference — если frontend stack)
261
- │ │ ├── 30.security-db/ (security & DB reference)
262
- │ │ ├── 40.infra/ (env / логирование / CI-CD reference)
263
- │ │ ├── 70.domains/{type}/ (reference по доменам)
264
- │ │ ├── 80.verification/ (build / startup / testing reference — standard only)
265
- │ │ └── 90.optional/ (специфика стека — standard only)
266
- │ ├── skills/ (повторно используемые паттерны, которые Claude может применить)
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
- Категории, разделяющие одинаковый числовой prefix между `rules/` и `standard/`, представляют одну и ту же концептуальную область (например, `10.backend` rules ↔ `10.backend` standards). Категории только-для-rules: `50.sync` (напоминания о синхронизации документации) и `60.memory` (Pass 4 memory). Категория только-для-standard: `90.optional` (специфика стека без принуждения). Все остальные prefix (`00`, `10`, `20`, `30`, `40`, `70`, `80`) присутствуют И в `rules/`, И в `standard/`. Теперь Claude Code знает ваш проект.
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
- | **Соло-разработчик**, начинающий новый проект с Claude Code | Полностью пропустить фазу "учим Claude нашим конвенциям" |
283
- | **Тимлид**, поддерживающий общие стандарты | Автоматизировать рутину поддержания `.claude/rules/` в актуальном состоянии |
284
- | **Уже использующий Claude Code**, но устал править генерируемый код | Заставить Claude следовать ВАШИМ паттернам, а не "в целом хорошим" |
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
- **Не подходит, если:** вы хотите универсальный preset bundle из agents/skills/rules, который работает с первого дня без шага сканирования (см. [docs/ru/comparison.md](docs/ru/comparison.md) — что под какие задачи подходит), либо ваш проект пока не вписывается в один из [поддерживаемых стеков](#supported-stacks).
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 инвертирует обычный workflow 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 сначала читает ваш исходный код** (детерминированно, без AI), а затем 4-pass конвейер Claude пишет документацию, ограниченную тем, что обнаружил сканер. Claude не может выдумать пути или фреймворки, которых на самом деле нет в вашем коде.
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
- Полное описание архитектуры см. в [docs/ru/architecture.md](docs/ru/architecture.md).
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
- Multi-stack проекты (например, Spring Boot backend + Next.js frontend) работают «из коробки».
365
+ Многостековые проекты (например, Spring Boot на бэкенде и Next.js на фронтенде) поддерживаются из коробки.
314
366
 
315
- Правила обнаружения и то, что извлекает каждый сканер, см. в [docs/ru/stacks.md](docs/ru/stacks.md).
367
+ Правила детекции и то, что вытаскивает каждый сканер, описаны в [docs/ru/stacks.md](docs/ru/stacks.md).
316
368
 
317
369
  ---
318
370
 
319
- ## Повседневный workflow
371
+ ## Ежедневный рабочий процесс
320
372
 
321
- Три команды покрывают ~95% использования:
373
+ Для примерно 95% случаев хватает трёх команд:
322
374
 
323
375
  ```bash
324
- # Первый раз на проекте
376
+ # Первый запуск на проекте
325
377
  npx claudeos-core init
326
378
 
327
- # После того как вы вручную отредактировали standards или rules
379
+ # После ручных правок в стандартах или правилах
328
380
  npx claudeos-core lint
329
381
 
330
- # Health-check (запускайте перед коммитом или в CI)
382
+ # Health-check (перед коммитом или в CI)
331
383
  npx claudeos-core health
332
384
  ```
333
385
 
334
- Ещё две для обслуживания memory layer:
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 генерируют по описанию (вы рассказываете инструменту, инструмент рассказывает Claude). ClaudeOS-Core генерирует из вашего реального исходного кода (инструмент читает, инструмент сообщает Claude, что подтверждено, Claude пишет только подтверждённое).
392
+ Большинство инструментов документации для Claude Code исходят из вашего описания: вы рассказываете инструменту, инструмент пересказывает Claude. ClaudeOS-Core идёт от исходного кода: инструмент читает код, передаёт Claude уже подтверждённые факты, а Claude пишет только то, что подтверждено.
351
393
 
352
- Три конкретных следствия:
394
+ На практике это даёт три конкретных эффекта:
353
395
 
354
- 1. **Детерминированное обнаружение стека.** Тот же проект + тот же код = тот же вывод. Никакого «Claude в этот раз бросил кубик иначе».
355
- 2. **Никаких выдуманных путей.** Промпт Pass 3 явно перечисляет каждый разрешённый путь к исходникам; Claude не может процитировать несуществующий путь.
356
- 3. **Multi-stack-aware.** Backend и frontend домены используют разные analysis prompts в одном запуске.
396
+ 1. **Детерминированная детекция стека.** Тот же проект и тот же код всегда дают тот же результат. Никаких «в этот раз Claude как-то иначе всё интерпретировал».
397
+ 2. **Выдуманных путей не появляется.** В промпте Pass 3 явно перечислены все разрешённые пути в исходниках, поэтому Claude не может сослаться на то, чего нет.
398
+ 3. **Учёт нескольких стеков сразу.** В рамках одного запуска бэкенд- и фронтенд-домены анализируются разными промптами.
357
399
 
358
- Бок о бок сравнение scope с другими инструментами см. в [docs/ru/comparison.md](docs/ru/comparison.md). Сравнение про **что делает каждый инструмент**, а не **что лучше** большинство дополняют друг друга.
400
+ Сравнение по охвату с другими инструментами есть в [docs/ru/comparison.md](docs/ru/comparison.md). Это сравнение про то, **что делает каждый инструмент**, а не про то, **какой из них лучше**: в большинстве случаев они дополняют друг друга.
359
401
 
360
402
  ---
361
403
 
362
- ## Верификация (post-generation)
404
+ ## Проверка (после генерации)
363
405
 
364
- После того как Claude напишет docs, код их проверяет. Пять отдельных validator:
406
+ Когда Claude закончил писать документацию, за дело снова берётся код и проверяет результат. Пять независимых валидаторов:
365
407
 
366
- | Validator | Что проверяет | Запускается через |
408
+ | Валидатор | Что проверяет | Кем запускается |
367
409
  |---|---|---|
368
- | `claude-md-validator` | Структурные инварианты CLAUDE.md (8 sections, language-invariant) | `claudeos-core lint` |
369
- | `content-validator` | Реальное существование заявленных путей; согласованность manifest | `health` (advisory) |
370
- | `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) |
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` оркестрирует четыре runtime-validator с трёхуровневой severity (fail / warn / advisory) и завершается с подходящим кодом для CI. `claude-md-validator` запускается отдельно через команду `lint`, поскольку структурный drift — это сигнал переинициализации, а не мягкое предупреждение. Запускайте в любой момент:
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
- Подробное описание проверок каждого validator см. в [docs/ru/verification.md](docs/ru/verification.md).
422
+ Подробный список проверок каждого валидатора в [docs/ru/verification.md](docs/ru/verification.md).
381
423
 
382
424
  ---
383
425
 
384
- ## Memory Layer (опционально, для долгоживущих проектов)
426
+ ## Memory Layer (опционально, для долгосрочных проектов)
385
427
 
386
- Начиная с v2.0, ClaudeOS-Core пишет папку `claudeos-core/memory/` с четырьмя файлами:
428
+ Кроме основного пайплайна, ClaudeOS-Core поднимает каталог `claudeos-core/memory/` для проектов, где контекст должен жить дольше одной сессии. Слой опциональный: если хватает `CLAUDE.md` и правил, его можно спокойно игнорировать.
387
429
 
388
- - `decision-log.md` append-only «почему мы выбрали X вместо Y»
389
- - `failure-patterns.md` — повторяющиеся ошибки с оценками frequency/importance
390
- - `compaction.md` — как memory автоматически компактируется со временем
391
- - `auto-rule-update.md` — паттерны, которые должны стать новыми rules
430
+ Внутри четыре файла, и все их пишет Pass 4:
392
431
 
393
- Можно запустить `npx claudeos-core memory propose-rules`, чтобы попросить Claude изучить недавние failure patterns и предложить новые rules.
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/ru/memory-layer.md](docs/ru/memory-layer.md).
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
- **В: Нужен ли мне Claude API ключ?**
402
- О: Нет. ClaudeOS-Core использует ваш существующий Claude Code он отправляет промпты в `claude -p` на вашей машине. Никаких дополнительных аккаунтов.
453
+ **Q: Нужен ли API-ключ Claude?**
454
+ A: Нет. ClaudeOS-Core использует уже установленный Claude Code и просто отправляет промпты в `claude -p` на вашей машине. Дополнительные аккаунты не нужны.
403
455
 
404
- **В: Перезапишет ли это мой существующий CLAUDE.md или `.claude/rules/`?**
405
- О: Первый запуск на свежем проекте: создаёт. Перезапуск без `--force` сохраняет ваши правки pass-маркеры предыдущего запуска обнаруживаются, и pass-ы пропускаются. Перезапуск с `--force` стирает и регенерирует всё (ваши правки теряются в этом и смысл `--force`). См. [docs/ru/safety.md](docs/ru/safety.md).
456
+ **Q: Перезапишет ли инструмент уже существующий CLAUDE.md или `.claude/rules/`?**
457
+ A: На чистом проекте создаст с нуля. При повторном запуске без `--force` правки сохраняются: инструмент находит маркеры предыдущих проходов и пропускает их. С `--force` всё стирается и собирается заново правки исчезают, в этом и весь смысл флага. Подробнее — в [docs/ru/safety.md](docs/ru/safety.md).
406
458
 
407
- **В: Мой стек не поддерживается. Можно добавить?**
408
- О: Да. Новый стек требует ~3 prompt-шаблона + domain scanner. См. [CONTRIBUTING.md](CONTRIBUTING.md) — гайд из 8 шагов.
459
+ **Q: Моего стека нет в списке. Можно добавить свой?**
460
+ A: Можно. На новый стек обычно нужны примерно три шаблона промптов и доменный сканер. Пошаговое руководство из 8 шагов есть в [CONTRIBUTING.md](CONTRIBUTING.md).
409
461
 
410
- **В: Как сгенерировать docs на корейском (или другом языке)?**
411
- О: `npx claudeos-core init --lang ko`. Поддерживается 10 языков: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
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
- **В: Работает ли это с monorepo?**
414
- О: Да Turborepo (`turbo.json`), pnpm workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) и npm/yarn workspaces (`package.json#workspaces`) определяются stack-detector. Каждое приложение получает собственный анализ. Другие layout monorepo (например, NX) специально не определяются, но универсальные паттерны `apps/*/` и `packages/*/` всё равно подбираются per-stack сканерами.
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
- **В: Что, если Claude Code сгенерирует rules, с которыми я не согласен?**
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
- | Как работает 4-pass конвейер (глубже, чем диаграмма) | [docs/ru/architecture.md](docs/ru/architecture.md) |
429
- | Визуальные диаграммы (Mermaid) архитектуры | [docs/ru/diagrams.md](docs/ru/diagrams.md) |
430
- | Обнаружение стека — что ищет каждый сканер | [docs/ru/stacks.md](docs/ru/stacks.md) |
431
- | Memory layer — decision logs и failure patterns | [docs/ru/memory-layer.md](docs/ru/memory-layer.md) |
432
- | Все 5 validator подробно | [docs/ru/verification.md](docs/ru/verification.md) |
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
- | Override-ы сканера — `.claudeos-scan.json` | [docs/ru/advanced-config.md](docs/ru/advanced-config.md) |
436
- | Безопасность: что сохраняется при re-init | [docs/ru/safety.md](docs/ru/safety.md) |
437
- | Сравнение со схожими инструментами (scope, не качество) | [docs/ru/comparison.md](docs/ru/comparison.md) |
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
- Вклад приветствуется добавление поддержки стека, улучшение промптов, исправление багов. См. [CONTRIBUTING.md](CONTRIBUTING.md).
502
+ Контрибьюции приветствуются: добавление новых стеков, улучшение промптов, фиксы багов. Подробности в [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
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). Issues и PR на <https://github.com/claudeos-core/claudeos-core>.</sub>