claudeos-core 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/CONTRIBUTING.md +92 -59
  3. package/README.de.md +465 -240
  4. package/README.es.md +446 -223
  5. package/README.fr.md +461 -238
  6. package/README.hi.md +485 -261
  7. package/README.ja.md +440 -235
  8. package/README.ko.md +244 -56
  9. package/README.md +215 -47
  10. package/README.ru.md +462 -238
  11. package/README.vi.md +454 -230
  12. package/README.zh-CN.md +476 -252
  13. package/bin/cli.js +144 -140
  14. package/bin/commands/init.js +550 -46
  15. package/bin/commands/memory.js +426 -0
  16. package/bin/lib/cli-utils.js +206 -143
  17. package/bootstrap.sh +81 -390
  18. package/content-validator/index.js +436 -340
  19. package/lib/expected-guides.js +23 -0
  20. package/lib/expected-outputs.js +91 -0
  21. package/lib/language-config.js +35 -0
  22. package/lib/memory-scaffold.js +1014 -0
  23. package/lib/plan-parser.js +153 -149
  24. package/lib/staged-rules.js +118 -0
  25. package/manifest-generator/index.js +176 -171
  26. package/package.json +1 -1
  27. package/pass-json-validator/index.js +337 -299
  28. package/pass-prompts/templates/common/pass3-footer.md +16 -0
  29. package/pass-prompts/templates/common/pass4.md +317 -0
  30. package/pass-prompts/templates/common/staging-override.md +26 -0
  31. package/pass-prompts/templates/python-flask/pass1.md +119 -0
  32. package/pass-prompts/templates/python-flask/pass2.md +85 -0
  33. package/pass-prompts/templates/python-flask/pass3.md +103 -0
  34. package/plan-installer/domain-grouper.js +2 -1
  35. package/plan-installer/prompt-generator.js +120 -96
  36. package/plan-installer/scanners/scan-frontend.js +219 -10
  37. package/plan-installer/scanners/scan-java.js +226 -223
  38. package/plan-installer/scanners/scan-python.js +21 -0
  39. package/sync-checker/index.js +133 -132
package/README.ru.md CHANGED
@@ -6,7 +6,7 @@
6
6
  npx claudeos-core init
7
7
  ```
8
8
 
9
- ClaudeOS-Core читает вашу кодовую базу, извлекает все паттерны и генерирует полный набор Standards, Rules, Skills и Guides, адаптированных под _ваш_ проект. После этого, когда вы говорите Claude Code «Создай CRUD для заказов», он генерирует код, точно соответствующий вашим существующим паттернам.
9
+ ClaudeOS-Core читает вашу кодовую базу, извлекает каждый найденный паттерн и генерирует полный набор Standards, Rules, Skills и Guides, адаптированных под _ваш_ проект. После этого, когда вы говорите Claude Code «Создай CRUD для заказов», он производит код, точно соответствующий вашим существующим паттернам.
10
10
 
11
11
  [🇺🇸 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)
12
12
 
@@ -14,48 +14,58 @@ ClaudeOS-Core читает вашу кодовую базу, извлекает
14
14
 
15
15
  ## Почему ClaudeOS-Core?
16
16
 
17
- > Человек описывает проект LLM генерирует документацию
17
+ Любой другой инструмент для Claude Code работает так:
18
18
 
19
- ClaudeOS-Core:
19
+ > **Человек описывает проект → LLM генерирует документацию**
20
20
 
21
- > Код анализирует исходники → Код строит кастомный промпт → LLM генерирует документацию → Код верифицирует вывод
21
+ ClaudeOS-Core работает так:
22
22
 
23
- ### Ключевая проблема: LLM угадывает. Код подтверждает.
23
+ > **Код анализирует ваш исходник → Код строит адаптированный промпт → LLM генерирует документацию → Код верифицирует вывод**
24
24
 
25
- Когда вы просите Claude «проанализировать проект», он **угадывает** стек, ORM, структуру доменов.
25
+ Это не мелкая разница. Вот почему это важно:
26
26
 
27
- **ClaudeOS-Core не угадывает.** Claude Node.js:
27
+ ### Ключевая проблема: LLM угадывает. Код не угадывает.
28
28
 
29
- - `build.gradle` / `package.json` / `pyproject.toml` **confirmed**
30
- - directory scan **confirmed**
31
- - Java 5 patterns, Kotlin CQRS/BFF, Next.js App Router/FSD **classified**
32
- - domain groups → **split**
33
- - stack-specific prompt **assembled**
29
+ Когда вы просите Claude «проанализировать этот проект», он **угадывает** ваш стек, ORM, структуру доменов.
30
+ Он может увидеть `spring-boot` в вашем `build.gradle`, но упустить, что вы используете MyBatis (а не JPA).
31
+ Он может обнаружить директорию `user/`, но не понять, что ваш проект использует layer-first упаковку (Pattern A), а не domain-first (Pattern B).
32
+
33
+ **ClaudeOS-Core не угадывает.** Прежде чем Claude увидит ваш проект, код на Node.js уже:
34
+
35
+ - Распарсил `build.gradle` / `package.json` / `pyproject.toml` и **подтвердил** ваш стек, ORM, БД и пакетный менеджер
36
+ - Просканировал структуру директорий и **подтвердил** список доменов с количеством файлов
37
+ - Классифицировал структуру вашего проекта в один из 5 Java-паттернов, Kotlin CQRS/BFF или Next.js App Router/FSD
38
+ - Разбил домены на оптимально размерные группы, помещающиеся в context window Claude
39
+ - Собрал стек-специфический промпт со всеми подтверждёнными фактами
40
+
41
+ К моменту, когда Claude получает промпт, угадывать больше нечего. Стек подтверждён. Домены подтверждены. Паттерн структуры подтверждён. Единственная работа Claude — сгенерировать документацию, соответствующую этим **подтверждённым фактам**.
34
42
 
35
43
  ### Результат
36
44
 
37
45
  Другие инструменты создают «в целом хорошую» документацию.
38
- ClaudeOS-Core создаёт документацию, которая знает, что ваш проект использует `ApiResponse.ok()` (а не `ResponseEntity.success()`), что MyBatis XML маппер находится в `src/main/resources/mybatis/mappers/` — потому что он прочитал ваш реальный код.
46
+ ClaudeOS-Core создаёт документацию, которая знает, что ваш проект использует `ApiResponse.ok()` (а не `ResponseEntity.success()`), что ваши MyBatis XML-мапперы находятся в `src/main/resources/mybatis/mappers/`, и что ваша структура пакетов `com.company.module.{domain}.controller` — потому что он прочитал ваш реальный код.
39
47
 
40
- ### Before & After
48
+ ### До и после
41
49
 
42
- **Без ClaudeOS-Core**:
50
+ **Без ClaudeOS-Core** — вы просите Claude Code создать Order CRUD:
43
51
  ```
44
- ❌ JPA repository (MyBatis)
45
- ❌ ResponseEntity.success() (ApiResponse.ok())
46
- ❌ order/controller/ (controller/order/)
47
- 20 min fix per file
52
+ Использует JPA-style репозиторий (ваш проект использует MyBatis)
53
+ Создаёт ResponseEntity.success() (ваш враппер — ApiResponse.ok())
54
+ Размещает файлы в order/controller/ (ваш проект использует controller/order/)
55
+ Генерирует английские комментарии (ваша команда пишет русские комментарии)
56
+ → Вы тратите 20 минут на исправление каждого сгенерированного файла
48
57
  ```
49
58
 
50
- **С ClaudeOS-Core**:
59
+ **С ClaudeOS-Core** — `.claude/rules/` уже содержит ваши подтверждённые паттерны:
51
60
  ```
52
- ✅ MyBatis mapper + XML (build.gradle)
53
- ✅ ApiResponse.ok() (source code)
54
- ✅ controller/order/ (Pattern A)
55
- immediate match
61
+ Генерирует MyBatis mapper + XML (обнаружено из build.gradle)
62
+ Использует ApiResponse.ok() (извлечено из вашего реального исходника)
63
+ Размещает файлы в controller/order/ (Pattern A подтверждён сканированием структуры)
64
+ Русские комментарии (применён --lang ru)
65
+ → Сгенерированный код сразу соответствует конвенциям вашего проекта
56
66
  ```
57
67
 
58
- Эта разница накапливается. 10 задач/день × 20 минут экономии = **более 3 часов в день**.
68
+ Эта разница накапливается. 10 задач/день × 20 минут экономии = **более 3 часов/день**.
59
69
 
60
70
  ---
61
71
 
@@ -64,7 +74,7 @@ ClaudeOS-Core создаёт документацию, которая знает
64
74
  | Стек | Обнаружение | Глубина анализа |
65
75
  |---|---|---|
66
76
  | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 паттернов пакетов | 10 категорий, 59 подпунктов |
67
- | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 категорий, 95 подпунктов |
77
+ | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, автоопределение CQRS/BFF | 12 категорий, 95 подпунктов |
68
78
  | **Node.js / Express** | `package.json` | 9 категорий, 57 подпунктов |
69
79
  | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 категорий, 68 подпунктов |
70
80
  | **Next.js / React** | `package.json`, `next.config.*`, поддержка FSD | 9 категорий, 55 подпунктов |
@@ -75,56 +85,80 @@ ClaudeOS-Core создаёт документацию, которая знает
75
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 категорий, 55 подпунктов |
76
86
  | **Angular** | `package.json`, `angular.json` | 12 категорий, 78 подпунктов |
77
87
 
78
- Автоматическое определение: язык и версия, фреймворк и версия (включая Vite как SPA-фреймворк), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy и др.), база данных (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), пакетный менеджер (Gradle, Maven, npm, yarn, pnpm, pip, poetry), архитектура (CQRS, BFF — определяется из имён модулей), мультимодульная структура (из settings.gradle), монорепозиторий (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
88
+ Автоматически определяется: язык и версия, фреймворк и версия (включая Vite как SPA-фреймворк), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy и др.), база данных (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), пакетный менеджер (Gradle, Maven, npm, yarn, pnpm, pip, poetry), архитектура (CQRS, BFF — из имён модулей), мультимодульная структура (из settings.gradle), монорепозиторий (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
79
89
 
80
90
  **Вам не нужно ничего указывать. Всё определяется автоматически.**
81
91
 
82
-
83
92
  ### Обнаружение Java-доменов (5 паттернов с фолбэком)
84
93
 
85
94
  | Приоритет | Паттерн | Структура | Пример |
86
95
  |---|---|---|---|
87
- | A | Слой-первый | `controller/{domain}/` | `controller/user/UserController.java` |
88
- | B | Домен-первый | `{domain}/controller/` | `user/controller/UserController.java` |
89
- | D | Модуль-префикс | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
96
+ | A | Layer-first | `controller/{domain}/` | `controller/user/UserController.java` |
97
+ | B | Domain-first | `{domain}/controller/` | `user/controller/UserController.java` |
98
+ | D | Префикс модуля | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
90
99
  | E | DDD/Гексагональный | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
91
100
  | C | Плоский | `controller/*.java` | `controller/UserController.java` → извлекает `user` из имени класса |
92
101
 
93
- Домены только с сервисами (без контроллеров) тоже обнаруживаются через директории `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Пропускаются: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` и т.д.
94
-
102
+ Домены только с сервисами (без контроллеров) также обнаруживаются через директории `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Пропускаются: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` и т.д.
95
103
 
96
104
  ### Обнаружение доменов Kotlin мультимодульных проектов
97
105
 
98
- Для проектов Kotlin с Gradle мультимодульной структурой (например: CQRS монорепо):
106
+ Для проектов Kotlin с Gradle-мультимодульной структурой (например, CQRS-монорепо):
99
107
 
100
108
  | Шаг | Действие | Пример |
101
109
  |---|---|---|
102
- | 1 | Сканирование `settings.gradle.kts` на наличие `include()` | Найдено 14 модулей |
103
- | 2 | Определение типа модуля по имени | `reservation-command-server` → тип: `command` |
110
+ | 1 | Сканирование `settings.gradle.kts` на `include()` | Находит 14 модулей |
111
+ | 2 | Определение типа модуля из имени | `reservation-command-server` → тип: `command` |
104
112
  | 3 | Извлечение домена из имени модуля | `reservation-command-server` → домен: `reservation` |
105
113
  | 4 | Группировка одного домена по модулям | `reservation-command-server` + `common-query-server` → 1 домен |
106
114
  | 5 | Определение архитектуры | Есть модули `command` + `query` → CQRS |
107
115
 
108
- Поддерживаемые типы модулей: `command`, `query`, `bff`, `integration`, `standalone`, `library`. Общие библиотеки (`shared-lib`, `integration-lib`) обнаруживаются как специальные домены.
116
+ Поддерживаемые типы модулей: `command`, `query`, `bff`, `integration`, `standalone`, `library`. Общие библиотеки (`shared-lib`, `integration-lib`) определяются как специальные домены.
109
117
 
110
118
  ### Обнаружение фронтенд-доменов
111
119
 
112
120
  - **App Router**: `app/{domain}/page.tsx` (Next.js)
113
121
  - **Pages Router**: `pages/{domain}/index.tsx`
114
122
  - **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
115
- - **RSC/Client разделение**: Обнаружение паттерна `client.tsx`, отслеживание разделения Server/Client
116
- - **Нестандартные вложенные пути**: обнаружение страниц, компонентов и FSD-слоёв в `src/*/pages/`, `src/*/components/`, `src/*/features/` (например, `src/admin/pages/dashboard/`)
117
- - **Фолбэк конфигурации**: Обнаружение Next.js/Vite/Nuxt из конфиг-файлов (поддержка monorepo)
118
- - **Фолбэк глубоких директорий**: Для React/CRA/Vite/Vue/RN проектов сканирует `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` на любой глубине
123
+ - **Разделение RSC/Client**: Обнаруживает паттерн `client.tsx`, отслеживает разделение Server/Client-компонентов
124
+ - **Нестандартные вложенные пути**: Обнаруживает pages, components и FSD-слои под путями `src/*/` (например, `src/admin/pages/dashboard/`, `src/admin/components/form/`, `src/admin/features/billing/`)
125
+ - **Обнаружение platform-/tier-split (v2.0.0)**: Распознаёт раскладки `src/{platform}/{subapp}/` — `{platform}` может быть device-/target-ключевым словом (`desktop`, `pc`, `web`, `mobile`, `mc`, `mo`, `sp`, `tablet`, `tab`, `pwa`, `tv`, `ctv`, `ott`, `watch`, `wear`) или ключевым словом уровня доступа (`admin`, `cms`, `backoffice`, `back-office`, `portal`). Выдаёт один домен на пару `(platform, subapp)` с именем `{platform}-{subapp}` и отдельными счётчиками routes/components/layouts/hooks на каждый домен. Работает одновременно для Angular, Next.js, React и Vue (мульти-расширение glob `{tsx,jsx,ts,js,vue}`). Требует ≥2 исходных файла на subapp, чтобы избежать шумных доменов из 1 файла.
126
+ - **Platform-split для монорепо (v2.0.0)**: Platform-сканирование также сопоставляет `{apps,packages}/*/src/{platform}/{subapp}/` (Turborepo/pnpm-workspace с `src/`) и `{apps,packages}/{platform}/{subapp}/` (workspaces без обёртки `src/`).
127
+ - **Fallback E — файл routes (v2.0.0)**: Когда основные сканеры + Fallback A–D все возвращают 0, делается glob `**/routes/*.{tsx,jsx,ts,js,vue}` с группировкой по имени родительской директории `routes`. Улавливает проекты React Router с файловым роутингом (CRA/Vite + `react-router`), не соответствующие Next.js `page.tsx` или FSD-раскладкам. Общие имена родителей (`src`, `app`, `pages`) отфильтровываются.
128
+ - **Config-фолбэк**: Определяет Next.js/Vite/Nuxt из файлов конфигурации, когда их нет в `package.json` (поддержка монорепо)
129
+ - **Глубокий фолбэк по директориям**: Для проектов React/CRA/Vite/Vue/RN сканирует `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` на любой глубине
130
+ - **Общие ignore-списки (v2.0.0)**: Все сканеры используют общие `BUILD_IGNORE_DIRS` (`node_modules`, `build`, `dist`, `out`, `.next`, `.nuxt`, `.svelte-kit`, `.angular`, `.turbo`, `.cache`, `.parcel-cache`, `coverage`, `storybook-static`, `.vercel`, `.netlify`) и `TEST_FILE_IGNORE` (spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`), чтобы сборочные выводы и тестовые фикстуры не раздували счётчики файлов по доменам.
131
+
132
+ ### Переопределения сканеров (v2.0.0)
133
+
134
+ Положите опциональный `.claudeos-scan.json` в корне проекта, чтобы расширить дефолты сканеров без редактирования тулкита. Все поля **аддитивные** — записи пользователя расширяют дефолты, никогда не заменяют их:
135
+
136
+ ```json
137
+ {
138
+ "frontendScan": {
139
+ "platformKeywords": ["kiosk"],
140
+ "skipSubappNames": ["legacy"],
141
+ "minSubappFiles": 3
142
+ }
143
+ }
144
+ ```
145
+
146
+ | Поле | Дефолт | Назначение |
147
+ |---|---|---|
148
+ | `platformKeywords` | встроенный список выше | Дополнительные ключевые слова `{platform}` для platform-сканирования (например, `kiosk`, `vr`, `embedded`) |
149
+ | `skipSubappNames` | только структурные директории | Дополнительные имена subapp, исключаемые из выдачи доменов platform-сканером |
150
+ | `minSubappFiles` | `2` | Переопределение минимального количества файлов, после которого subapp становится доменом |
151
+
152
+ Отсутствующий файл или некорректный JSON → тихо откатывается на дефолты (без краша). Типичное использование: opt-in короткого сокращения (`adm`, `bo`), которое встроенный список исключает как слишком неоднозначное, или повышение `minSubappFiles` для шумных монорепо.
119
153
 
120
154
  ---
121
155
 
122
156
  ## Быстрый старт
123
157
 
124
- ### Предварительные требования
158
+ ### Требования
125
159
 
126
160
  - **Node.js** v18+
127
- - **Claude Code CLI** (установлен и авторизован)
161
+ - **Claude Code CLI** (установлен и аутентифицирован)
128
162
 
129
163
  ### Установка
130
164
 
@@ -138,57 +172,63 @@ npx claudeos-core init
138
172
  npm install -g claudeos-core
139
173
  claudeos-core init
140
174
 
141
- # Вариант C: devDependency проекта
175
+ # Вариант C: проектная devDependency
142
176
  npm install --save-dev claudeos-core
143
177
  npx claudeos-core init
144
178
 
145
- # Вариант D: git clone (для разработки/контрибуции)
179
+ # Вариант D: git clone (для разработки/контрибьюций)
146
180
  git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
147
181
 
148
- # Кроссплатформенный (PowerShell, CMD, Bash, Zsh — любой терминал)
182
+ # Кросс-платформенно (PowerShell, CMD, Bash, Zsh — любой терминал)
149
183
  node claudeos-core-tools/bin/cli.js init
150
184
 
151
- # Только Linux/macOS (только Bash)
185
+ # Linux/macOS (только Bash)
152
186
  bash claudeos-core-tools/bootstrap.sh
153
187
  ```
154
188
 
155
189
  ### Язык вывода (10 языков)
156
190
 
157
- При запуске `init` без `--lang` появляется интерактивный селектор (стрелки или цифровые клавиши):
191
+ Когда вы запускаете `init` без `--lang`, появляется интерактивный селектор — используйте стрелки или цифровые клавиши для выбора:
158
192
 
159
193
  ```
160
194
  ╔══════════════════════════════════════════════════╗
161
- Select generated document language (required)
195
+ Выберите язык сгенерированных документов
162
196
  ╚══════════════════════════════════════════════════╝
163
197
 
164
198
  Сгенерированные файлы (CLAUDE.md, Standards, Rules,
165
199
  Skills, Guides) будут написаны на русском языке.
166
200
 
167
201
  1. en — English
168
- ...
202
+ 2. ko — 한국어 (Korean)
203
+ 3. zh-CN — 简体中文 (Chinese Simplified)
204
+ 4. ja — 日本語 (Japanese)
205
+ 5. es — Español (Spanish)
206
+ 6. vi — Tiếng Việt (Vietnamese)
207
+ 7. hi — हिन्दी (Hindi)
169
208
  ❯ 8. ru — Русский (Russian)
170
- ...
209
+ 9. fr — Français (French)
210
+ 10. de — Deutsch (German)
171
211
 
172
- ↑↓ Move 1-0 Jump Enter Select ESC Cancel
212
+ ↑↓ Движение 1-0 Переход Enter Выбрать ESC Отмена
173
213
  ```
174
214
 
175
- При навигации описание переключается на соответствующий язык. Чтобы пропустить селектор:
215
+ Описание меняется на выбранный язык при навигации. Чтобы пропустить селектор, передайте `--lang` напрямую:
176
216
 
177
217
  ```bash
178
- npx claudeos-core init --lang ru # Русский
179
- npx claudeos-core init --lang en # English
180
- npx claudeos-core init --lang ko # 한국어
218
+ npx claudeos-core init --lang ko # Корейский
219
+ npx claudeos-core init --lang ja # Японский
220
+ npx claudeos-core init --lang en # Английский (по умолчанию)
181
221
  ```
182
222
 
183
- > **Примечание:** Эта настройка изменяет только язык генерируемых файлов документации. Анализ кода (Pass 1–2) всегда выполняется на английском; только результат генерации (Pass 3) пишется на выбранном языке.
223
+ > **Примечание:** Это задаёт язык только для сгенерированных файлов документации. Анализ кода (Pass 1–2) всегда выполняется на английском; сгенерированный вывод (Pass 3) пишется на выбранном вами языке. Примеры кода внутри сгенерированных файлов сохраняют оригинальный синтаксис языка программирования.
184
224
 
185
- Это всё. Через 5–18 минут вся документация сгенерирована и готова к использованию. CLI показывает прогресс-бар с процентом, прошедшим временем и расчётным оставшимся временем для каждого Pass.
225
+ Готово. Через 5–20 минут (Pass 1×N + Pass 2 + Pass 3 + Pass 4 memory scaffolding) вся документация будет сгенерирована и готова к использованию. CLI показывает прогресс-бар с процентом, прошедшим временем и ETA для каждого прохода.
186
226
 
187
227
  ### Ручная пошаговая установка
188
228
 
189
- Если вы хотите полностью контролировать каждый этап — или если автоматический пайплайн сбоит на каком-то шаге — можно запустить каждый этап вручную. Это также полезно для понимания внутренней работы ClaudeOS-Core.
229
+ Если вам нужен полный контроль над каждой фазой — или если автоматический пайплайн падает на каком-то шаге — вы можете запустить каждую стадию вручную. Это также полезно для понимания того, как ClaudeOS-Core работает внутри.
190
230
 
191
- #### Step 1: Клонирование и установка зависимостей
231
+ #### Шаг 1: Клонирование и установка зависимостей
192
232
 
193
233
  ```bash
194
234
  cd /your/project/root
@@ -197,11 +237,11 @@ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
197
237
  cd claudeos-core-tools && npm install && cd ..
198
238
  ```
199
239
 
200
- #### Step 2: Создание структуры каталогов
240
+ #### Шаг 2: Создание структуры директорий
201
241
 
202
242
  ```bash
203
- # Rules
204
- mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
243
+ # Rules (v2.0.0: добавлена 60.memory)
244
+ mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
205
245
 
206
246
  # Standards
207
247
  mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
@@ -209,51 +249,71 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
209
249
  # Skills
210
250
  mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
211
251
 
212
- # Guide, Plan, Database, MCP, Generated
252
+ # Guide, Plan, Database, MCP, Generated, Memory (v2.0.0: добавлена memory)
213
253
  mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
214
- mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
254
+ mkdir -p claudeos-core/{plan,database,mcp-guide,generated,memory}
215
255
  ```
216
256
 
217
- #### Step 3: Запуск plan-installer (анализ проекта)
257
+ #### Шаг 3: Запуск plan-installer (анализ проекта)
218
258
 
219
- Сканирует ваш проект, определяет стек, находит домены, разделяет на группы и генерирует промпты.
259
+ Сканирует ваш проект, определяет стек, находит домены, разбивает их на группы и генерирует промпты.
220
260
 
221
261
  ```bash
222
262
  node claudeos-core-tools/plan-installer/index.js
223
263
  ```
224
264
 
225
- **Вывод (`claudeos-core/generated/`):**
265
+ **Вывод (в `claudeos-core/generated/`):**
226
266
  - `project-analysis.json` — обнаруженный стек, домены, информация о фронтенде
227
267
  - `domain-groups.json` — группы доменов для Pass 1
228
268
  - `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — промпты анализа
229
- - `pass2-prompt.md` — промпт объединения
230
- - `pass3-prompt.md` — промпт генерации
269
+ - `pass2-prompt.md` — промпт слияния
270
+ - `pass3-prompt.md` — промпт генерации (обёрнут директивой `staging-override.md` — см. примечание к Шагу 6)
271
+ - `pass4-prompt.md` — промпт L4 memory scaffolding (v2.0.0; использует тот же `staging-override.md` для записей правил `60.memory/`)
231
272
 
232
- Вы можете проверить эти файлы для верификации точности определения перед продолжением.
273
+ Вы можете изучить эти файлы, чтобы проверить точность обнаружения перед продолжением.
233
274
 
234
- #### Step 4: Pass 1 — Глубокий анализ кода по группам доменов
275
+ #### Шаг 4: Pass 1 — Глубокий анализ кода (по группам доменов)
235
276
 
236
- Запустите Pass 1 для каждой группы доменов. Проверьте `domain-groups.json` для количества групп.
277
+ Запустите Pass 1 для каждой группы доменов. Проверьте `domain-groups.json` на количество групп.
237
278
 
238
279
  ```bash
239
- # Check groups
280
+ # Проверить количество групп
240
281
  cat claudeos-core/generated/domain-groups.json | node -e "
241
282
  const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
242
283
  g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
243
284
  "
244
285
 
245
- # Run Pass 1 for group 1:
246
- cp claudeos-core/generated/pass1-backend-prompt.md /tmp/_pass1.md
247
- DOMAIN_LIST="user, order, product" PASS_NUM=1 \
248
- perl -pi -e 's/\{\{DOMAIN_GROUP\}\}/$ENV{DOMAIN_LIST}/g; s/\{\{PASS_NUM\}\}/$ENV{PASS_NUM}/g' /tmp/_pass1.md
249
- cat /tmp/_pass1.md | claude -p --dangerously-skip-permissions
250
-
251
- # Для фронтенд-групп используйте pass1-frontend-prompt.md
286
+ # Запустить Pass 1 для каждой группы (замените домены и номер группы)
287
+ # Примечание: v1.6.1+ использует Node.js String.replace() вместо perl — perl
288
+ # больше не требуется, а семантика replacement-функции предотвращает regex-инъекции
289
+ # из символов $/&/$1, которые могут появиться в именах доменов.
290
+ #
291
+ # Для группы 1:
292
+ DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
293
+ const fs = require('fs');
294
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
295
+ const out = tpl
296
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
297
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
298
+ process.stdout.write(out);
299
+ " | claude -p --dangerously-skip-permissions
300
+
301
+ # Для группы 2 (если есть):
302
+ DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
303
+ const fs = require('fs');
304
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
305
+ const out = tpl
306
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
307
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
308
+ process.stdout.write(out);
309
+ " | claude -p --dangerously-skip-permissions
310
+
311
+ # Для фронтенд-групп замените pass1-backend-prompt.md → pass1-frontend-prompt.md
252
312
  ```
253
313
 
254
314
  **Проверка:** `ls claudeos-core/generated/pass1-*.json` должен показать по одному JSON на группу.
255
315
 
256
- #### Step 5: Pass 2 — Объединение результатов анализа
316
+ #### Шаг 5: Pass 2 — Слияние результатов анализа
257
317
 
258
318
  ```bash
259
319
  cat claudeos-core/generated/pass2-prompt.md \
@@ -262,55 +322,76 @@ cat claudeos-core/generated/pass2-prompt.md \
262
322
 
263
323
  **Проверка:** `claudeos-core/generated/pass2-merged.json` должен существовать с 9+ ключами верхнего уровня.
264
324
 
265
- #### Step 6: Pass 3 — Генерация всей документации
325
+ #### Шаг 6: Pass 3 — Генерация всей документации
266
326
 
267
327
  ```bash
268
328
  cat claudeos-core/generated/pass3-prompt.md \
269
329
  | claude -p --dangerously-skip-permissions
270
330
  ```
271
331
 
272
- **Проверка:** `CLAUDE.md` должен существовать в корне проекта.
332
+ **Проверка:** `CLAUDE.md` должен существовать в корне проекта, маркер `claudeos-core/generated/pass3-complete.json` должен быть записан.
333
+
334
+ > **Примечание (v2.0.0):** Pass 3 сначала пишет файлы правил в `claudeos-core/generated/.staged-rules/`, потому что политика чувствительных путей Claude Code блокирует прямую запись в `.claude/`. Автоматический пайплайн (`npx claudeos-core init`) выполняет перемещение автоматически. Если вы запускаете этот шаг вручную, вам нужно переместить staged-дерево самостоятельно: `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (сохраняя подпути).
335
+
336
+ #### Шаг 7: Pass 4 — Memory scaffolding
337
+
338
+ ```bash
339
+ cat claudeos-core/generated/pass4-prompt.md \
340
+ | claude -p --dangerously-skip-permissions
341
+ ```
342
+
343
+ **Проверка:** `claudeos-core/memory/` должна содержать 4 файла (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` должна содержать 4 файла правил, `claudeos-core/plan/50.memory-master.md` должен существовать, и к `CLAUDE.md` должна быть добавлена секция `## Memory (L4)`. Маркер: `claudeos-core/generated/pass4-memory.json`.
344
+
345
+ > **Примечание:** Если `claude -p` падает или `pass4-prompt.md` отсутствует, автоматический пайплайн использует статический фолбэк через `lib/memory-scaffold.js` (с переводом через Claude, когда `--lang` не английский). Статический фолбэк запускается только внутри `npx claudeos-core init` — ручной режим требует успеха Pass 4.
273
346
 
274
- #### Step 7: Запуск инструментов проверки
347
+ #### Шаг 8: Запуск инструментов верификации
275
348
 
276
349
  ```bash
277
- # Генерация метаданных (обязательно перед другими проверками)
350
+ # Генерация метаданных (требуется перед другими проверками)
278
351
  node claudeos-core-tools/manifest-generator/index.js
279
352
 
280
- # Запуск всех проверок
353
+ # Запустить все проверки
281
354
  node claudeos-core-tools/health-checker/index.js
282
355
 
283
- # Или запуск отдельных проверок:
284
- node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
285
- node claudeos-core-tools/sync-checker/index.js # Sync status
286
- node claudeos-core-tools/content-validator/index.js # Content quality
287
- node claudeos-core-tools/pass-json-validator/index.js # JSON format
356
+ # Или запустить отдельные проверки:
357
+ node claudeos-core-tools/plan-validator/index.js --check # Согласованность Plan ↔ disk
358
+ node claudeos-core-tools/sync-checker/index.js # Незарегистрированные/осиротевшие файлы
359
+ node claudeos-core-tools/content-validator/index.js # Проверки качества файлов (вкл. секцию memory/ [9/9])
360
+ node claudeos-core-tools/pass-json-validator/index.js # Проверки JSON Pass 1–4 + completion-маркеров
288
361
  ```
289
362
 
290
- #### Step 8: Проверка результатов
363
+ #### Шаг 9: Проверка результатов
291
364
 
292
365
  ```bash
366
+ # Подсчёт сгенерированных файлов
293
367
  find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
368
+
369
+ # Проверить CLAUDE.md
294
370
  head -30 CLAUDE.md
371
+
372
+ # Проверить один стандартный файл
373
+ cat claudeos-core/standard/00.core/01.project-overview.md | head -20
374
+
375
+ # Проверить правила
295
376
  ls .claude/rules/*/
296
377
  ```
297
378
 
298
- > **Совет:** Если какой-то шаг не удался, можно перезапустить только этот шаг. Результаты Pass 1/2 кешируются — если `pass1-N.json` или `pass2-merged.json` уже существует, автоматический пайплайн их пропускает. Используйте `npx claudeos-core init --force`, чтобы удалить предыдущие результаты и начать заново.
379
+ > **Совет:** Если какой-то шаг падает, вы можете исправить проблему и перезапустить только этот шаг. Результаты Pass 1/2 кэшируются — если `pass1-N.json` или `pass2-merged.json` уже существует, автоматический пайплайн их пропускает. Используйте `npx claudeos-core init --force`, чтобы удалить предыдущие результаты и начать с чистого листа.
299
380
 
300
- ### Начинайте использовать
381
+ ### Начало использования
301
382
 
302
383
  ```
303
- # В Claude Code — просто говорите естественным языком:
304
- "Создай CRUD для домена заказов"
305
- "Добавь API аутентификации пользователей"
306
- "Рефакторинг этого кода по паттернам проекта"
384
+ # В Claude Code — просто спрашивайте естественно:
385
+ "Создай CRUD для домена order"
386
+ "Добавь API аутентификации пользователя"
387
+ "Отрефактори этот код под паттерны проекта"
307
388
 
308
- # Claude Code автоматически ссылается на сгенерированные Standards, Rules и Skills.
389
+ # Claude Code автоматически ссылается на ваши сгенерированные Standards, Rules и Skills.
309
390
  ```
310
391
 
311
392
  ---
312
393
 
313
- ## Как это работает — 3-Pass конвейер
394
+ ## Как это работает — 4-Pass пайплайн
314
395
 
315
396
  ```
316
397
  npx claudeos-core init
@@ -318,31 +399,39 @@ npx claudeos-core init
318
399
  ├── [1] npm install ← Зависимости (~10с)
319
400
  ├── [2] Структура директорий ← Создание папок (~1с)
320
401
  ├── [3] plan-installer (Node.js) ← Сканирование проекта (~5с)
321
- │ ├── Автоопределение стека (мульти-стек)
322
- │ ├── Извлечение списка доменов (теги: backend/frontend)
323
- │ ├── Разделение на группы доменов (по типу)
324
- │ └── Выбор промптов под стек (по типу)
402
+ │ ├── Автоопределение стека (multi-stack)
403
+ │ ├── Извлечение списка доменов (тегирование: backend/frontend)
404
+ │ ├── Разбиение на группы доменов (по типу)
405
+ │ └── Выбор стек-специфических промптов (по типу)
325
406
 
326
- ├── [4] Pass 1 × N (claude -p) ← Глубокий анализ кода (~2-8 мин)
407
+ ├── [4] Pass 1 × N (claude -p) ← Глубокий анализ кода (~2-8мин)
327
408
  │ ├── ⚙️ Backend-группы → backend-промпт
328
409
  │ └── 🎨 Frontend-группы → frontend-промпт
329
410
 
330
- ├── [5] Pass 2 × 1 (claude -p) ← Слияние анализа (~1 мин)
411
+ ├── [5] Pass 2 × 1 (claude -p) ← Слияние анализа (~1мин)
331
412
  │ └── Консолидация ВСЕХ результатов Pass 1 (backend + frontend)
332
413
 
333
- ├── [6] Pass 3 × 1 (claude -p) ← Генерация всего (~3-5 мин)
414
+ ├── [6] Pass 3 × 1 (claude -p) ← Генерация всего (~3-5мин)
334
415
  │ └── Объединённый промпт (цели backend + frontend)
335
416
 
336
- └── [7] Валидация Автозапуск health checker
417
+ ├── [7] Pass 4 × 1 (claude -p) Memory scaffolding (~30с)
418
+ │ ├── Сидинг memory/ (decision-log, failure-patterns, …)
419
+ │ ├── Генерация правил 60.memory/
420
+ │ ├── Добавление секции "Memory (L4)" в CLAUDE.md
421
+ │ └── Сборка плана 50.memory-master.md
422
+
423
+ └── [8] Верификация ← Автозапуск health-checker
337
424
  ```
338
425
 
339
- ### Почему 3 Pass?
426
+ ### Почему 4 прохода?
427
+
428
+ **Pass 1** — единственный проход, читающий ваш исходный код. Он выбирает репрезентативные файлы по домену и извлекает паттерны по 55–95 категориям анализа (зависит от стека). Для больших проектов Pass 1 запускается несколько раз — по одному на группу доменов. В мульти-стек проектах (например, Java backend + React frontend) backend- и frontend-домены используют **разные промпты анализа**, адаптированные к каждому стеку.
340
429
 
341
- **Pass 1** единственный pass, который читает исходный код. Он выбирает репрезентативные файлы по доменам и извлекает паттерны по 55–95 категориям анализа (по стеку). Для крупных проектов Pass 1 запускается несколько раз — по одному на группу доменов. В мульти-стек проектах (например: Java backend + React frontend) backend и frontend используют **разные промпты анализа**, адаптированные под каждый стек.
430
+ **Pass 2** объединяет все результаты Pass 1 в единый анализ: общие паттерны (100% общие), паттерны большинства (50%+ общие), доменно-специфические паттерны, анти-паттерны по степени серьёзности и сквозные аспекты (именование, безопасность, БД, тестирование, логирование, производительность). Результаты backend и frontend сливаются воедино.
342
431
 
343
- **Pass 2** объединяет все результаты Pass 1 в единый анализ: общие паттерны (100% совпадение), мажоритарные паттерны (50%+), доменно-специфичные паттерны, анти-паттерны по степени серьёзности и сквозные аспекты (именование, безопасность, БД, тестирование, логирование, производительность).
432
+ **Pass 3** берёт объединённый анализ и генерирует всю файловую экосистему (CLAUDE.md, rules, standards, skills, guides). Он никогда не читает исходный код — только JSON анализа. В мульти-стек режиме промпт генерации комбинирует backend- и frontend-цели, так что оба набора стандартов генерируются за один проход.
344
433
 
345
- **Pass 3** берёт объединённый анализ и генерирует всю файловую экосистему. Он никогда не читает исходный кодтолько JSON анализа. В мульти-стек режиме промпт генерации объединяет цели backend и frontend, чтобы оба набора стандартов были сгенерированы за один pass.
434
+ **Pass 4** создаёт каркас слоя L4 Memory: файлы персистентного командного знания (decision-log, failure-patterns, политика компакции, auto-rule-update) плюс правила `60.memory/`, которые указывают будущим сессиям, когда и как читать/записывать эти файлы. Слой памяти это то, что позволяет Claude Code накапливать уроки между сессиями, а не открывать их заново каждый раз. Когда `--lang` не английский, статический контент фолбэка переводится через Claude перед записью.
346
435
 
347
436
  ---
348
437
 
@@ -354,122 +443,173 @@ your-project/
354
443
  ├── CLAUDE.md ← Точка входа Claude Code
355
444
 
356
445
  ├── .claude/
357
- │ └── rules/ ← Glob-триггерные правила
446
+ │ └── rules/ ← Правила, срабатывающие по glob
358
447
  │ ├── 00.core/
359
448
  │ ├── 10.backend/
360
449
  │ ├── 20.frontend/
361
450
  │ ├── 30.security-db/
362
451
  │ ├── 40.infra/
363
- └── 50.sync/ ← Правила напоминания о синхронизации
452
+ ├── 50.sync/ ← Правила напоминания о синхронизации
453
+ │ └── 60.memory/ ← Правила on-demand-scope для L4 memory (v2.0.0)
364
454
 
365
- ├── claudeos-core/ ← Основная директория вывода
366
- │ ├── generated/ ← JSON анализа + динамические промпты
367
- │ ├── standard/ Стандарты кода (15-19 файлов)
368
- │ ├── skills/ Skills скаффолдинга CRUD
369
- │ ├── guide/ Онбординг, FAQ, устранение неполадок (9 файлов)
370
- │ ├── plan/ Master Plans (бэкап/восстановление)
371
- │ ├── database/ Схема БД, руководство миграции
372
- └── mcp-guide/ Руководство интеграции MCP-сервера
455
+ ├── claudeos-core/ ← Основная выходная директория
456
+ │ ├── generated/ ← JSON анализа + динамические промпты + Pass-маркеры (gitignore)
457
+ ├── project-analysis.json Информация о стеке (multi-stack)
458
+ ├── domain-groups.json Группы с type: backend/frontend
459
+ ├── pass1-backend-prompt.md Backend-промпт анализа
460
+ ├── pass1-frontend-prompt.md Frontend-промпт анализа (если обнаружен)
461
+ ├── pass2-prompt.md Промпт слияния
462
+ │ ├── pass3-prompt.md Промпт генерации (объединённый)
463
+ │ │ ├── pass4-prompt.md ← Промпт memory scaffolding (v2.0.0)
464
+ │ │ ├── pass3-complete.json ← Маркер завершения Pass 3 (пропуск при resume)
465
+ │ │ ├── pass4-memory.json ← Маркер завершения Pass 4 (пропуск при resume)
466
+ │ │ ├── .i18n-cache-<lang>.json ← Кэш переводов (неанглийский `--lang`)
467
+ │ │ └── .staged-rules/ ← Временная staging-директория для записей `.claude/rules/` (авто-перемещение + очистка)
468
+ │ ├── standard/ ← Стандарты кодирования (15-19 файлов)
469
+ │ │ ├── 00.core/ ← Обзор, архитектура, именование
470
+ │ │ ├── 10.backend-api/ ← API-паттерны (стек-специфические)
471
+ │ │ ├── 20.frontend-ui/ ← Frontend-паттерны (если обнаружены)
472
+ │ │ ├── 30.security-db/ ← Безопасность, схема БД, утилиты
473
+ │ │ ├── 40.infra/ ← Конфиг, логирование, CI/CD
474
+ │ │ ├── 50.verification/ ← Верификация сборки, тестирование
475
+ │ │ └── 90.optional/ ← Опциональные конвенции (стек-специфические дополнения)
476
+ │ ├── skills/ ← Skills для CRUD scaffolding
477
+ │ ├── guide/ ← Онбординг, FAQ, troubleshooting (9 файлов)
478
+ │ ├── plan/ ← Мастер-планы (backup/restore)
479
+ │ ├── database/ ← Схема БД, гайд миграций
480
+ │ ├── mcp-guide/ ← Гайд интеграции MCP-сервера
481
+ │ └── memory/ ← L4: знания команды (4 файла) — коммитить
482
+ │ ├── decision-log.md ← "Почему" за дизайн-решениями
483
+ │ ├── failure-patterns.md ← Повторяющиеся ошибки и фиксы (auto-score — `npx claudeos-core memory score`)
484
+ │ ├── compaction.md ← Стратегия 4-stage компакции (запустить `npx claudeos-core memory compact`)
485
+ │ └── auto-rule-update.md ← Предложения по улучшению правил (`npx claudeos-core memory propose-rules`)
373
486
 
374
- └── claudeos-core-tools/ ← Этот тулкит (не изменять)
487
+ └── claudeos-core-tools/ ← Этот тулкит (не модифицировать)
375
488
  ```
376
489
 
377
- Каждый файл стандарта включает ✅ правильные примеры, ❌ неправильные примеры и таблицу сводки правил — всё выведено из ваших реальных паттернов кода, а не из шаблонов.
490
+ Каждый standard-файл включает ✅ правильные примеры, ❌ неправильные примеры и сводную таблицу правил — всё извлечено из ваших реальных паттернов кода, а не из общих шаблонов.
491
+
492
+ ### Рекомендации по gitignore
493
+
494
+ **Коммитить** (командное знание — предназначено для обмена):
495
+ - `CLAUDE.md` — точка входа Claude Code
496
+ - `.claude/rules/**` — автозагружаемые правила
497
+ - `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — сгенерированная документация
498
+ - `claudeos-core/memory/**` — история решений, паттерны ошибок, предложения правил
499
+
500
+ **НЕ коммитить** (регенерируемые артефакты сборки):
501
+
502
+ ```gitignore
503
+ # ClaudeOS-Core — сгенерированный анализ и кэш переводов
504
+ claudeos-core/generated/
505
+ ```
506
+
507
+ Директория `generated/` содержит JSON анализа (`pass1-*.json`, `pass2-merged.json`), промпты (`pass1/2/3/4-prompt.md`), Pass-маркеры завершения (`pass3-complete.json`, `pass4-memory.json`), кэш переводов (`.i18n-cache-<lang>.json`) и временную staging-директорию (`.staged-rules/`) — всё пересобирается повторным запуском `npx claudeos-core init`.
378
508
 
379
509
  ---
380
510
 
381
511
  ## Автомасштабирование по размеру проекта
382
512
 
383
- | Размер | Домены | Запуски Pass 1 | Всего `claude -p` | Ожидаемое время |
513
+ | Размер | Домены | Запусков Pass 1 | Всего `claude -p` | Расч. время |
384
514
  |---|---|---|---|---|
385
- | Малый | 1–4 | 1 | 3 | ~5 мин |
386
- | Средний | 5–8 | 2 | 4 | ~8 мин |
387
- | Большой | 9–16 | 3–4 | 56 | ~12 мин |
388
- | Очень большой | 17+ | 5+ | 7+ | ~18 мин+ |
515
+ | Малый | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6мин |
516
+ | Средний | 5–8 | 2 | 5 | ~8–9мин |
517
+ | Крупный | 9–16 | 3–4 | 67 | ~12–13мин |
518
+ | X-Крупный | 17+ | 5+ | 8+ | ~18мин+ |
389
519
 
390
- Для мульти-стек проектов (например: Java + React) домены backend и frontend считаются вместе. 6 backend + 4 frontend = 10 доменов, масштабируется как «Большой».
520
+ Pass 4 (memory scaffolding) добавляет ~30с сверх проходов анализа. Для мульти-стек проектов (например, Java + React) backend- и frontend-домены считаются вместе. Проект с 6 backend + 4 frontend доменами = 10 суммарно, масштабируется как «Крупный».
391
521
 
392
522
  ---
393
523
 
394
- ## Инструменты валидации
524
+ ## Инструменты верификации
395
525
 
396
- ClaudeOS-Core включает 5 встроенных инструментов проверки, автоматически запускаемых после генерации:
526
+ ClaudeOS-Core включает 5 встроенных инструментов верификации, автоматически запускаемых после генерации:
397
527
 
398
528
  ```bash
399
529
  # Запустить все проверки сразу (рекомендуется)
400
530
  npx claudeos-core health
401
531
 
402
532
  # Отдельные команды
403
- npx claudeos-core validate # Сравнение Plan ↔ диск
404
- npx claudeos-core refresh # Синхронизация Диск → Plan
405
- npx claudeos-core restore # Восстановление Plan → Диск
533
+ npx claudeos-core validate # Сравнение Plan ↔ disk
534
+ npx claudeos-core refresh # Синхронизация Disk → Plan
535
+ npx claudeos-core restore # Восстановление Plan → Disk
536
+
537
+ # Или использовать node напрямую (пользователи git clone)
538
+ node claudeos-core-tools/health-checker/index.js
539
+ node claudeos-core-tools/manifest-generator/index.js
540
+ node claudeos-core-tools/plan-validator/index.js --check
541
+ node claudeos-core-tools/sync-checker/index.js
406
542
  ```
407
543
 
408
- | Инструмент | Что делает |
544
+ | Инструмент | Функция |
409
545
  |---|---|
410
- | **manifest-generator** | Создаёт JSON метаданных (rule-manifest, sync-map, plan-manifest) |
411
- | **plan-validator** | Сравнивает блоки `<file>` Master Plan с диском — 3 режима: check, refresh, restore |
412
- | **sync-checker** | Обнаруживает незарегистрированные файлы (на диске, но не в плане) и осиротевшие записи |
413
- | **content-validator** | Проверяет качество файлов — пустые файлы, отсутствующие примеры ✅/❌, обязательные секции |
414
- | **pass-json-validator** | Проверяет структуру JSON Pass 1–3, обязательные ключи и полноту секций |
546
+ | **manifest-generator** | Строит JSON метаданных (rule-manifest, sync-map, plan-manifest); индексирует 7 директорий включая `memory/` (`totalMemory` в summary) |
547
+ | **plan-validator** | Сравнивает блоки `<file>` из Master Plan с диском — 3 режима: check, refresh, restore |
548
+ | **sync-checker** | Обнаруживает незарегистрированные файлы (на диске, но не в плане) и осиротевшие записи — покрывает 7 директорий (`memory/` добавлена в v2.0.0) |
549
+ | **content-validator** | 9-секционная проверка качества — пустые файлы, отсутствующие ✅/❌ примеры, обязательные секции плюс целостность каркаса L4 memory (даты заголовков decision-log, обязательные поля failure-pattern, fence-aware парсинг) |
550
+ | **pass-json-validator** | Валидирует структуру JSON Pass 1–4 плюс completion-маркеры `pass3-complete.json` и `pass4-memory.json` |
415
551
 
416
552
  ---
417
553
 
418
554
  ## Как Claude Code использует вашу документацию
419
555
 
420
- Вот как Claude Code фактически читает документацию, сгенерированную ClaudeOS-Core:
556
+ ClaudeOS-Core генерирует документацию, которую Claude Code действительно читает вот как:
421
557
 
422
- ### Автоматически читаемые файлы
558
+ ### Что Claude Code читает автоматически
423
559
 
424
- | Файл | Когда | Гарантия |
560
+ | Файл | Когда | Гарантировано |
425
561
  |---|---|---|
426
- | `CLAUDE.md` | При начале каждого разговора | Всегда |
427
- | `.claude/rules/00.core/*` | При редактировании файлов (`paths: ["**/*"]`) | Всегда |
428
- | `.claude/rules/10.backend/*` | При редактировании файлов (`paths: ["**/*"]`) | Всегда |
429
- | `.claude/rules/30.security-db/*` | При редактировании файлов (`paths: ["**/*"]`) | Всегда |
430
- | `.claude/rules/40.infra/*` | Только при редактировании config/infra файлов (ограниченные paths) | Условно |
431
- | `.claude/rules/50.sync/*` | Только при редактировании claudeos-core файлов (ограниченные paths) | Условно |
562
+ | `CLAUDE.md` | В начале каждого диалога | Всегда |
563
+ | `.claude/rules/00.core/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
564
+ | `.claude/rules/10.backend/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
565
+ | `.claude/rules/20.frontend/*` | При редактировании любого фронтенд-файла (ограничено путями компонентов/страниц/стилей) | Условно |
566
+ | `.claude/rules/30.security-db/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
567
+ | `.claude/rules/40.infra/*` | Только при редактировании config/infra-файлов (ограниченные пути) | Условно |
568
+ | `.claude/rules/50.sync/*` | Только при редактировании claudeos-core-файлов (ограниченные пути) | Условно |
569
+ | `.claude/rules/60.memory/*` | При редактировании `claudeos-core/memory/*` (ограничено путями memory) — инструктирует **как** читать/записывать on-demand memory-слой | Условно (v2.0.0) |
432
570
 
433
- ### Файлы, читаемые по запросу через ссылки в правилах
571
+ ### Что Claude Code читает по запросу через ссылки в правилах
434
572
 
435
- Каждый файл правил ссылается на соответствующий standard в секции `## Reference`. Claude читает только standard, релевантный текущей задаче:
573
+ Каждый файл правила ссылается на соответствующий standard через секцию `## Reference`. Claude читает только релевантный для текущей задачи standard:
436
574
 
437
- - `claudeos-core/standard/**` — Паттерны кодирования, примеры ✅/❌, соглашения об именах
438
- - `claudeos-core/database/**` — Схема БД (для запросов, мапперов, миграций)
575
+ - `claudeos-core/standard/**` — паттерны кода, ✅/❌ примеры, конвенции именования
576
+ - `claudeos-core/database/**` — схема БД (для запросов, мапперов, миграций)
577
+ - `claudeos-core/memory/**` (v2.0.0) — слой командного знания L4; **не** автозагружается (был бы слишком шумным для каждого диалога). Вместо этого правила `60.memory/*` указывают Claude, *когда* читать эти файлы: в начале сессии (обзор свежего `decision-log.md` + high-importance `failure-patterns.md`), и append-on-demand при принятии решений или столкновении с повторяющимися ошибками.
439
578
 
440
- `00.standard-reference.md` служит каталогом для обнаружения standards без соответствующего правила.
579
+ `00.standard-reference.md` служит каталогом всех standard-файлов для обнаружения стандартов, у которых нет соответствующего правила.
441
580
 
442
- ### Файлы, которые НЕ читаются (экономия контекста)
581
+ ### Что Claude Code НЕ читает (экономит контекст)
443
582
 
444
- Явно исключены через секцию `DO NOT Read` правила standard-reference:
583
+ Эти папки явно исключены через секцию `DO NOT Read` в правиле standard-reference:
445
584
 
446
- | Папка | Причина исключения |
585
+ | Папка | Почему исключена |
447
586
  |---|---|
448
- | `claudeos-core/plan/` | Резервные копии Master Plan (~340КБ). Используйте `npx claudeos-core refresh` для синхронизации. |
449
- | `claudeos-core/generated/` | JSON метаданных сборки. Не для кодирования. |
450
- | `claudeos-core/guide/` | Руководства для людей. |
451
- | `claudeos-core/mcp-guide/` | Документация MCP сервера. Не для кодирования. |
587
+ | `claudeos-core/plan/` | Бэкапы Master Plan (~340KB). Используйте `npx claudeos-core refresh` для синхронизации. |
588
+ | `claudeos-core/generated/` | JSON метаданных сборки, промпты, Pass-маркеры, кэш переводов, `.staged-rules/`. Не для кодинга. |
589
+ | `claudeos-core/guide/` | Онбординг-гайды для людей. |
590
+ | `claudeos-core/mcp-guide/` | Документация MCP-сервера. Не для кодинга. |
591
+ | `claudeos-core/memory/` (автозагрузка) | **Автозагрузка отключена** by design — раздула бы контекст на каждом диалоге. Вместо этого читается on-demand через правила `60.memory/*` (например, скан `failure-patterns.md` в начале сессии). Всегда коммитьте эти файлы. |
452
592
 
453
593
  ---
454
594
 
455
- ## Повседневный рабочий процесс
595
+ ## Ежедневный рабочий процесс
456
596
 
457
597
  ### После установки
458
598
 
459
599
  ```
460
- # Просто используйте Claude Code как обычно — он автоматически ссылается на ваши стандарты:
461
- "Создай CRUD для домена заказов"
600
+ # Просто пользуйтесь Claude Code как обычно — он автоматически ссылается на ваши стандарты:
601
+ "Создай CRUD для домена order"
462
602
  "Добавь API обновления профиля пользователя"
463
- "Рефакторинг этого кода по паттернам проекта"
603
+ "Отрефактори этот код под паттерны проекта"
464
604
  ```
465
605
 
466
606
  ### После ручного редактирования стандартов
467
607
 
468
608
  ```bash
469
- # После редактирования файлов standard или rules:
609
+ # После редактирования файлов стандартов или правил:
470
610
  npx claudeos-core refresh
471
611
 
472
- # Проверить консистентность
612
+ # Проверить согласованность всего
473
613
  npx claudeos-core health
474
614
  ```
475
615
 
@@ -480,77 +620,136 @@ npx claudeos-core health
480
620
  npx claudeos-core restore
481
621
  ```
482
622
 
623
+ ### Обслуживание Memory-слоя (v2.0.0)
624
+
625
+ Слой L4 Memory (`claudeos-core/memory/`) накапливает командное знание между сессиями. Три CLI-подкоманды поддерживают его в здоровом состоянии:
626
+
627
+ ```bash
628
+ # Compact: применить политику 4-stage компакции (периодически — например, ежемесячно)
629
+ npx claudeos-core memory compact
630
+ # Stage 1: резюмировать устаревшие записи (>30 дней, тело → одна строка)
631
+ # Stage 2: слить дубликаты заголовков (частоты суммируются, последний фикс сохраняется)
632
+ # Stage 3: удалить low-importance + устаревшее (importance <3 И lastSeen >60 дней)
633
+ # Stage 4: применить лимит 400 строк на файл (старейшие low-importance удаляются первыми)
634
+
635
+ # Score: пересчитать ранги записей failure-patterns.md по importance
636
+ npx claudeos-core memory score
637
+ # importance = round(frequency × 1.5 + recency × 5), ограничено 10
638
+ # Запускать после добавления нескольких новых failure-паттернов
639
+
640
+ # Propose-rules: выявить кандидатов на добавление правил из повторяющихся ошибок
641
+ npx claudeos-core memory propose-rules
642
+ # Читает записи failure-patterns.md с frequency ≥ 3
643
+ # Вычисляет confidence (сигмоида на взвешенных доказательствах × anchor-множитель)
644
+ # Пишет предложения в memory/auto-rule-update.md (НЕ автоприменяются)
645
+ # Confidence ≥ 0.70 заслуживает серьёзного рассмотрения; принять → редактировать правило + логировать решение
646
+ ```
647
+
648
+ Когда писать в memory (Claude делает это по запросу, но можно редактировать и вручную):
649
+ - **`decision-log.md`** — добавить новую запись при выборе между конкурирующими паттернами, выборе библиотеки, определении командной конвенции или решении НЕ делать что-то. Только append; никогда не редактировать исторические записи.
650
+ - **`failure-patterns.md`** — добавлять при **втором появлении** повторяющейся ошибки или неочевидной root cause. Первичные ошибки не требуют записи.
651
+ - `compaction.md` и `auto-rule-update.md` — генерируются/управляются указанными выше CLI-подкомандами; не редактировать вручную.
652
+
483
653
  ### Интеграция CI/CD
484
654
 
485
655
  ```yaml
486
656
  # Пример GitHub Actions
487
657
  - run: npx claudeos-core validate
488
- # Код выхода 1 блокирует PR
658
+ # Exit code 1 блокирует PR
659
+
660
+ # Опционально: ежемесячное обслуживание memory (отдельный cron-workflow)
661
+ - run: npx claudeos-core memory compact
662
+ - run: npx claudeos-core memory score
489
663
  ```
490
664
 
491
665
  ---
492
666
 
493
- ## Чем отличается?
667
+ ## Чем это отличается?
668
+
669
+ ### vs. другие инструменты Claude Code
494
670
 
495
671
  | | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
496
672
  |---|---|---|---|---|---|
497
- | **Approach** | Code analyzes first, then LLM generates | Pre-built config presets | LLM designs agent teams | LLM generates spec docs | LLM writes CLAUDE.md |
498
- | **Reads your source code** | ✅ Deterministic static analysis | ❌ | ❌ | ❌ (LLM reads) | ❌ (LLM reads) |
499
- | **Stack detection** | Code confirms (ORM, DB, build tool, pkg manager) | N/A (stack-agnostic) | LLM guesses | LLM guesses | LLM guesses |
500
- | **Domain detection** | Code confirms (Java 5 patterns, Kotlin CQRS, Next.js FSD) | N/A | LLM guesses | N/A | N/A |
501
- | **Same projectSame result** | ✅ Deterministic analysis | ✅ (static files) | ❌ (LLM varies) | ❌ (LLM varies) | ❌ (LLM varies) |
502
- | **Large project handling** | Domain group splitting (4 domains / 40 files per group) | N/A | No splitting | No splitting | Context window limit |
503
- | **Output** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ files) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 spec documents | CLAUDE.md (1 file) |
504
- | **Output location** | `.claude/rules/` (auto-loaded by Claude Code) | `.claude/` various | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
505
- | **Post-generation verification** | ✅ 5 automated validators | ❌ | ❌ | ❌ | ❌ |
506
- | **Multi-language output** | ✅ 10 languages | ❌ | ❌ | ❌ | ❌ |
507
- | **Multi-stack** | ✅ Backend + Frontend simultaneous | ❌ Stack-agnostic | ❌ | ❌ | Partial |
508
- | **Agent orchestration** | | 28 agents | 6 patterns | ❌ | ❌ |
673
+ | **Подход** | Код анализирует первым, затем LLM генерирует | Предсобранные Config-пресеты | LLM проектирует Agent-команды | LLM генерирует Spec-документы | LLM пишет CLAUDE.md |
674
+ | **Читает ваш исходный код** | ✅ Детерминированный статический анализ | ❌ | ❌ | ❌ (LLM читает) | ❌ (LLM читает) |
675
+ | **Определение стека** | Код подтверждает (ORM, БД, build-tool, pkg-manager) | Н/Д (стек-агностично) | LLM угадывает | LLM угадывает | LLM угадывает |
676
+ | **Определение доменов** | Код подтверждает (Java 5 паттернов, Kotlin CQRS, Next.js FSD) | Н/Д | LLM угадывает | Н/Д | Н/Д |
677
+ | **Одинаковый проектодинаковый результат** | ✅ Детерминированный анализ | ✅ (статические файлы) | ❌ (LLM варьируется) | ❌ (LLM варьируется) | ❌ (LLM варьируется) |
678
+ | **Обработка крупных проектов** | Разбиение на группы доменов (4 домена / 40 файлов на группу) | Н/Д | Без разбиения | Без разбиения | Лимит context window |
679
+ | **Вывод** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ файлов) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 spec-документов | CLAUDE.md (1 файл) |
680
+ | **Место вывода** | `.claude/rules/` (автозагружается Claude Code) | `.claude/` разное | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
681
+ | **Верификация после генерации** | ✅ 5 автоматических валидаторов | ❌ | ❌ | ❌ | ❌ |
682
+ | **Мультиязычный вывод** | ✅ 10 языков | ❌ | ❌ | ❌ | ❌ |
683
+ | **Мульти-стек** | ✅ Backend + Frontend одновременно | ❌ Стек-агностично | ❌ | ❌ | Частично |
684
+ | **Персистентный memory-слой** | L4 decision log + failure patterns + auto-scored предложения правил (v2.0.0) | | | ❌ | ❌ |
685
+ | **Оркестрация агентов** | ❌ | ✅ 28 агентов | ✅ 6 паттернов | ❌ | ❌ |
686
+
687
+ ### Ключевое различие одним предложением
509
688
 
510
- ### Key difference
689
+ **Другие инструменты дают Claude «в целом хорошие инструкции». ClaudeOS-Core даёт Claude «инструкции, извлечённые из вашего реального кода».**
511
690
 
512
- **Other tools give Claude "generally good instructions." ClaudeOS-Core gives Claude "instructions extracted from your actual code."**
691
+ Именно поэтому Claude Code перестаёт генерировать JPA-код в вашем MyBatis-проекте,
692
+ перестаёт использовать `success()`, когда ваша кодовая база использует `ok()`,
693
+ и перестаёт создавать директории `user/controller/`, когда ваш проект использует `controller/user/`.
513
694
 
514
- ### Complementary, not competing
695
+ ### Взаимодополняющее, не конкурирующее
515
696
 
516
- ClaudeOS-Core: **project-specific rules**. Other tools: **agent orchestration**.
517
- Use both together.
697
+ ClaudeOS-Core фокусируется на **проектно-специфичных правилах и стандартах**.
698
+ Другие инструменты фокусируются на **оркестрации агентов и workflow**.
699
+
700
+ Вы можете использовать ClaudeOS-Core для генерации правил вашего проекта, а затем ECC или Harness поверх для агент-команд и автоматизации workflow. Они решают разные задачи.
518
701
 
519
702
  ---
703
+
520
704
  ## FAQ
521
705
 
522
- **В: Изменяет ли он мой исходный код?**
523
- Нет. Создаются только `CLAUDE.md`, `.claude/rules/` и `claudeos-core/`. Ваш существующий код никогда не изменяется.
706
+ **В: Модифицирует ли он мой исходный код?**
707
+ Нет. Создаёт только `CLAUDE.md`, `.claude/rules/` и `claudeos-core/`. Ваш существующий код никогда не модифицируется.
524
708
 
525
709
  **В: Сколько это стоит?**
526
- Вызывает `claude -p` 37 раз. Это в рамках обычного использования Claude Code.
710
+ Он вызывает `claude -p` 48 раз (Pass 1 × N + Pass 2 + Pass 3 + Pass 4). Это в пределах нормального использования Claude Code. Когда `--lang` не английский, путь статического фолбэка может вызвать несколько дополнительных `claude -p` для перевода; результаты кэшируются в `claudeos-core/generated/.i18n-cache-<lang>.json`, так что последующие запуски их переиспользуют.
527
711
 
528
- **В: Нужно ли коммитить сгенерированные файлы в Git?**
529
- Рекомендуется. Ваша команда может использовать одни и те же стандарты Claude Code. Рассмотрите добавление `claudeos-core/generated/` в `.gitignore` (JSON анализа можно перегенерировать).
712
+ **В: Стоит ли коммитить сгенерированные файлы в Git?**
713
+ Да, рекомендуется. Ваша команда может использовать одинаковые стандарты Claude Code. Подумайте о добавлении `claudeos-core/generated/` в `.gitignore` (JSON анализа регенерируется).
530
714
 
531
- **В: Что с проектами смешанного стека (например: Java backend + React frontend)?**
532
- Полная поддержка. ClaudeOS-Core автоматически определяет оба стека, помечает домены как `backend` или `frontend` и использует специфические промпты анализа для каждого. Pass 2 объединяет всё, а Pass 3 генерирует стандарты backend и frontend за один проход.
715
+ **В: Что насчёт проектов со смешанным стеком (например, Java backend + React frontend)?**
716
+ Полностью поддерживается. ClaudeOS-Core автоматически определяет оба стека, тегирует домены как `backend` или `frontend` и использует стек-специфические промпты анализа для каждого. Pass 2 сливает всё, а Pass 3 генерирует стандарты и backend, и frontend за один проход.
717
+
718
+ **В: Работает ли он с Turborepo / pnpm workspaces / Lerna-монорепо?**
719
+ Да. ClaudeOS-Core обнаруживает `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` или `package.json#workspaces` и автоматически сканирует файлы `package.json` в под-пакетах на фреймворк/ORM/БД-зависимости. Сканирование доменов покрывает паттерны `apps/*/src/` и `packages/*/src/`. Запускать из корня монорепо.
533
720
 
534
721
  **В: Что происходит при повторном запуске?**
535
- Если предыдущие результаты Pass 1/2 существуют, интерактивный промпт позволяет выбрать: **Continue** (продолжить с места остановки) или **Fresh** (удалить всё и начать заново). Используйте `--force`, чтобы пропустить промпт и всегда начинать заново. Pass 3 всегда перезапускается. Предыдущие версии можно восстановить из Master Plans.
722
+ Если существуют предыдущие результаты Pass 1/2, интерактивный промпт позволяет выбрать: **Continue** (продолжить с места остановки) или **Fresh** (удалить всё и начать заново). Используйте `--force`, чтобы пропустить промпт и всегда начинать заново. Pass 3 всегда перезапускается. Предыдущие версии можно восстановить из Master Plans.
723
+
724
+ **В: Получает ли NestJS свой собственный шаблон или использует Express?**
725
+ NestJS использует выделенный шаблон `node-nestjs` с NestJS-специфичными категориями анализа: декораторы `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, DI-контейнер, CQRS-паттерны и `Test.createTestingModule`. Express-проекты используют отдельный шаблон `node-express`.
726
+
727
+ **В: Что насчёт проектов Vue / Nuxt?**
728
+ Vue/Nuxt использует выделенный шаблон `vue-nuxt`, покрывающий Composition API, `<script setup>`, defineProps/defineEmits, Pinia-store, `useFetch`/`useAsyncData`, Nitro server routes и `@nuxt/test-utils`. Проекты Next.js/React используют шаблон `node-nextjs`.
536
729
 
537
- **В: Работает ли с Turborepo / pnpm workspaces / Lerna monorepo?**
538
- Да. ClaudeOS-Core определяет `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` или `package.json#workspaces` и автоматически сканирует `package.json` подпакетов для обнаружения зависимостей фреймворков/ORM/БД. Сканирование доменов охватывает паттерны `apps/*/src/` и `packages/*/src/`. Запускайте из корня monorepo.
730
+ **В: Поддерживает ли он Kotlin?**
731
+ Да. ClaudeOS-Core автоматически обнаруживает Kotlin из `build.gradle.kts` или kotlin-плагина в `build.gradle`. Он использует выделенный шаблон `kotlin-spring` с Kotlin-специфичным анализом (data class, sealed class, coroutines, extension functions, MockK и др.).
539
732
 
540
- **В: Использует ли NestJS собственный шаблон или шаблон Express?**
541
- NestJS использует выделенный шаблон `node-nestjs` с NestJS-специфичными категориями анализа: декораторы `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, DI-контейнер, паттерны CQRS и `Test.createTestingModule`. Проекты Express используют отдельный шаблон `node-express`.
733
+ **В: Что насчёт CQRS / BFF архитектуры?**
734
+ Полностью поддерживается для Kotlin мультимодульных проектов. ClaudeOS-Core читает `settings.gradle.kts`, определяет типы модулей (command, query, bff, integration) из имён модулей и группирует один домен между Command/Query модулями. Сгенерированные стандарты включают отдельные правила для command-контроллеров vs query-контроллеров, BFF/Feign паттерны и конвенции межмодульной коммуникации.
542
735
 
543
- **В: Как насчёт проектов Vue / Nuxt?**
544
- Vue/Nuxt использует выделенный шаблон `vue-nuxt`, охватывающий Composition API, `<script setup>`, defineProps/defineEmits, хранилища Pinia, `useFetch`/`useAsyncData`, серверные маршруты Nitro и `@nuxt/test-utils`. Проекты Next.js/React используют шаблон `node-nextjs`.
736
+ **В: Что насчёт Gradle мультимодульных монорепо?**
737
+ ClaudeOS-Core сканирует все подмодули (`**/src/main/kotlin/**/*.kt`) независимо от глубины вложенности. Типы модулей выводятся из конвенций именования (например, `reservation-command-server` домен: `reservation`, тип: `command`). Общие библиотеки (`shared-lib`, `integration-lib`) также обнаруживаются.
545
738
 
546
- **В: Поддерживается ли Kotlin?**
547
- Да. ClaudeOS-Core автоматически определяет Kotlin из `build.gradle.kts` или плагина kotlin в `build.gradle`. Используется специальный шаблон `kotlin-spring` с Kotlin-специфичным анализом (data class, sealed class, корутины, функции-расширения, MockK и т.д.).
739
+ **В: Что такое слой L4 Memory (v2.0.0)? Стоит ли коммитить `claudeos-core/memory/`?**
740
+ Да — **всегда коммитьте** `claudeos-core/memory/`. Это персистентное командное знание: `decision-log.md` записывает *почему* за архитектурными решениями (только append), `failure-patterns.md` регистрирует повторяющиеся ошибки с оценками importance, чтобы будущие сессии их избегали, `compaction.md` определяет политику 4-stage компакции, а `auto-rule-update.md` собирает машинно-сгенерированные предложения по улучшению правил. В отличие от правил (автозагружаемых по пути), memory-файлы **on-demand** Claude читает их, только когда правила `60.memory/*` его направляют (например, скан высокоимпортных failures в начале сессии). Это держит стоимость контекста низкой, сохраняя долгосрочное знание.
548
741
 
549
- **В: Как насчёт архитектуры CQRS / BFF?**
550
- Полностью поддерживается для Kotlin мультимодульных проектов. ClaudeOS-Core читает `settings.gradle.kts`, определяет типы модулей (command, query, bff, integration) из их имён и группирует одинаковые домены по модулям Command/Query. Сгенерированные стандарты включают отдельные правила для command-контроллеров и query-контроллеров, паттерны BFF/Feign и соглашения о межмодульном взаимодействии.
742
+ **В: Что если Pass 4 падает?**
743
+ Автоматический пайплайн (`npx claudeos-core init`) имеет статический фолбэк: если `claude -p` падает или `pass4-prompt.md` отсутствует, он создаёт каркас memory-слоя напрямую через `lib/memory-scaffold.js`. Когда `--lang` не английский, статический фолбэк **обязан** переводить через `claude` CLI — если и это падает, запуск прерывается с `InitError` (без тихого английского фолбэка). Перезапустите, когда `claude` аутентифицирован, или используйте `--lang en`, чтобы пропустить перевод. Результаты перевода кэшируются в `claudeos-core/generated/.i18n-cache-<lang>.json`, так что последующие запуски их переиспользуют.
551
744
 
552
- **В: Как насчёт Gradle мультимодульных monorepo?**
553
- ClaudeOS-Core сканирует все подмодули (`**/src/main/kotlin/**/*.kt`) независимо от глубины вложенности. Типы модулей определяются из соглашений об именовании (например, `reservation-command-server` домен: `reservation`, тип: `command`). Общие библиотеки (`shared-lib`, `integration-lib`) также обнаруживаются.
745
+ **В: Что делают `memory compact` / `memory score` / `memory propose-rules`?**
746
+ См. секцию [Обслуживание Memory-слоя](#обслуживание-memory-слоя-v200) выше. Кратко: `compact` запускает 4-stage политику (резюмирование устаревшего, слияние дубликатов, удаление устаревшего low-importance, применение лимита 400 строк); `score` пересчитывает ранги `failure-patterns.md` по importance (frequency × recency); `propose-rules` выводит кандидатов на добавление правил из повторяющихся ошибок в `auto-rule-update.md` (не автоприменяется — просмотреть и принять/отклонить вручную).
747
+
748
+ **В: Почему `--force` (или режим resume «fresh») удаляет `.claude/rules/`?**
749
+ v2.0.0 добавил три Guard'а Pass 3 против silent-failure (Guard 3 покрывает два варианта incomplete-output: H2 для `guide/` и H1 для `standard/skills/plan`). Guard 1 («частичное перемещение staged-rules») и Guard 3 («неполный вывод — отсутствующие/пустые guide-файлы или отсутствующий standard-sentinel / пустые skills / пустой plan») не зависят от существующих правил, но Guard 2 («обнаружено ноль правил») зависит — он срабатывает, когда Claude игнорирует директиву `staging-override.md` и пытается писать напрямую в `.claude/` (где политика чувствительных путей Claude Code это блокирует). Устаревшие правила от предыдущего запуска дали бы Guard 2 false-negative — поэтому `--force`/`fresh` очищает `.claude/rules/`, чтобы обеспечить чистое обнаружение. **Ручные правки файлов правил будут потеряны** при `--force`/`fresh`; сделайте бэкап при необходимости.
750
+
751
+ **В: Что такое `claudeos-core/generated/.staged-rules/` и зачем она существует?**
752
+ Политика чувствительных путей Claude Code отказывает в прямой записи в `.claude/` из подпроцесса `claude -p` (даже с `--dangerously-skip-permissions`). v2.0.0 обходит это, заставляя промпты Pass 3/4 перенаправлять все записи `.claude/rules/` в staging-директорию; оркестратор на Node.js (не подпадающий под эту политику) затем перемещает staged-дерево в `.claude/rules/` после каждого прохода. Это прозрачно для пользователя — директория автосоздаётся, автоочищается и автоперемещается. Если предыдущий запуск упал в середине перемещения, следующий запуск очищает staging-директорию перед повтором.
554
753
 
555
754
  ---
556
755
 
@@ -558,34 +757,36 @@ ClaudeOS-Core сканирует все подмодули (`**/src/main/kotlin/
558
757
 
559
758
  ```
560
759
  pass-prompts/templates/
561
- ├── common/ # Общий заголовок/футер
760
+ ├── common/ # Общий header/footer + pass4 + staging-override
562
761
  ├── java-spring/ # Java / Spring Boot
563
762
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
564
763
  ├── node-express/ # Node.js / Express
565
764
  ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
566
765
  ├── node-fastify/ # Node.js / Fastify
567
- ├── node-nextjs/ # Next.js / React
766
+ ├── node-nextjs/ # Next.js / React (App Router, RSC)
767
+ ├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
568
768
  ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
569
769
  ├── angular/ # Angular
570
770
  ├── python-django/ # Python / Django (DRF)
571
- └── python-fastapi/ # Python / FastAPI
771
+ ├── python-fastapi/ # Python / FastAPI
772
+ └── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
572
773
  ```
573
774
 
574
- `plan-installer` автоматически определяет ваш стек(и) и собирает типо-специфичные промпты. NestJS и Vue/Nuxt используют выделенные шаблоны с фреймворк-специфичными категориями анализа (например, `@Module`/`@Injectable`/Guards для NestJS, `<script setup>`/Pinia/useFetch для Vue). Для мульти-стек проектов генерируются отдельные `pass1-backend-prompt.md` и `pass1-frontend-prompt.md`, а `pass3-prompt.md` объединяет цели генерации обоих стеков.
775
+ `plan-installer` автоматически определяет ваш стек/стеки, затем собирает специфичные по типу промпты. NestJS, Vue/Nuxt, Vite SPA и Flask каждый используют выделенные шаблоны с категориями анализа, специфичными для фреймворка (например, `@Module`/`@Injectable`/Guards для NestJS; `<script setup>`/Pinia/useFetch для Vue; client-side routing/`VITE_` env для Vite; Blueprint/`app.factory`/Flask-SQLAlchemy для Flask). Для мульти-стек проектов генерируются отдельные `pass1-backend-prompt.md` и `pass1-frontend-prompt.md`, а `pass3-prompt.md` комбинирует цели генерации обоих стеков. Pass 4 использует общий шаблон `common/pass4.md` (memory scaffolding) независимо от стека.
575
776
 
576
777
  ---
577
778
 
578
- ## Поддержка Monorepo
779
+ ## Поддержка монорепо
579
780
 
580
- ClaudeOS-Core автоматически определяет JS/TS monorepo-структуры и сканирует подпакеты для обнаружения зависимостей.
781
+ ClaudeOS-Core автоматически обнаруживает JS/TS монорепо-настройки и сканирует под-пакеты на зависимости.
581
782
 
582
- **Поддерживаемые маркеры monorepo** (определяются автоматически):
783
+ **Поддерживаемые маркеры монорепо** (автообнаружение):
583
784
  - `turbo.json` (Turborepo)
584
785
  - `pnpm-workspace.yaml` (pnpm workspaces)
585
786
  - `lerna.json` (Lerna)
586
787
  - `package.json#workspaces` (npm/yarn workspaces)
587
788
 
588
- **Запускайте из корня monorepo** — ClaudeOS-Core читает `apps/*/package.json` и `packages/*/package.json` для обнаружения зависимостей фреймворков/ORM/БД по всем подпакетам:
789
+ **Запуск из корня монорепо** — ClaudeOS-Core читает `apps/*/package.json` и `packages/*/package.json` для обнаружения фреймворк/ORM/БД-зависимостей в под-пакетах:
589
790
 
590
791
  ```bash
591
792
  cd my-monorepo
@@ -593,57 +794,80 @@ npx claudeos-core init
593
794
  ```
594
795
 
595
796
  **Что обнаруживается:**
596
- - Зависимости из `apps/web/package.json` (например, `next`, `react`) frontend-стек
597
- - Зависимости из `apps/api/package.json` (например, `express`, `prisma`) backend-стек
598
- - Зависимости из `packages/db/package.json` (например, `drizzle-orm`) ORM/БД
599
- - Пользовательские пути воркспейсов из `pnpm-workspace.yaml` (например, `services/*`)
797
+ - Зависимости из `apps/web/package.json` (например, `next`, `react`) frontend-стек
798
+ - Зависимости из `apps/api/package.json` (например, `express`, `prisma`) backend-стек
799
+ - Зависимости из `packages/db/package.json` (например, `drizzle-orm`) ORM/БД
800
+ - Пользовательские пути workspace из `pnpm-workspace.yaml` (например, `services/*`)
600
801
 
601
- **Сканирование доменов также охватывает monorepo-структуры:**
802
+ **Сканирование доменов также покрывает раскладки монорепо:**
602
803
  - `apps/api/src/modules/*/` и `apps/api/src/*/` для backend-доменов
603
804
  - `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` для frontend-доменов
604
- - `packages/*/src/*/` для доменов общих пакетов
805
+ - `packages/*/src/*/` для доменов shared-пакетов
605
806
 
606
807
  ```
607
808
  my-monorepo/ ← Запускайте здесь: npx claudeos-core init
608
- ├── turbo.json ← Автоопределение как Turborepo
809
+ ├── turbo.json ← Автообнаружение как Turborepo
609
810
  ├── apps/
610
- │ ├── web/ ← Next.js определён из apps/web/package.json
811
+ │ ├── web/ ← Next.js обнаружен из apps/web/package.json
611
812
  │ │ ├── app/dashboard/ ← Frontend-домен обнаружен
612
813
  │ │ └── package.json ← { "dependencies": { "next": "^14" } }
613
- │ └── api/ ← Express определён из apps/api/package.json
814
+ │ └── api/ ← Express обнаружен из apps/api/package.json
614
815
  │ ├── src/modules/users/ ← Backend-домен обнаружен
615
816
  │ └── package.json ← { "dependencies": { "express": "^4" } }
616
817
  ├── packages/
617
- │ ├── db/ ← Drizzle определён из packages/db/package.json
818
+ │ ├── db/ ← Drizzle обнаружен из packages/db/package.json
618
819
  │ └── ui/
619
820
  └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
620
821
  ```
621
822
 
622
- > **Примечание:** Для Kotlin/Java monorepo мультимодульное определение использует `settings.gradle.kts` (см. [Обнаружение доменов Kotlin мультимодульных проектов](#обнаружение-доменов-kotlin-мультимодульных-проектов) выше) и не требует JS monorepo-маркеров.
823
+ > **Примечание:** Для Kotlin/Java монорепо обнаружение мультимодулей использует `settings.gradle.kts` (см. [Обнаружение доменов Kotlin мультимодульных проектов](#обнаружение-доменов-kotlin-мультимодульных-проектов) выше) и не требует маркеров JS-монорепо.
623
824
 
624
825
  ## Устранение неполадок
625
826
 
626
- **"claude: command not found"** — Claude Code CLI не установлен или не в PATH. Смотрите [документацию Claude Code](https://code.claude.com/docs/en/overview).
827
+ **«claude: command not found»** — Claude Code CLI не установлен или не в PATH. См. [документацию Claude Code](https://code.claude.com/docs/en/overview).
828
+
829
+ **«npm install failed»** — Версия Node.js может быть слишком старой. Требуется v18+.
830
+
831
+ **«0 domains detected»** — Структура вашего проекта может быть нестандартной. См. паттерны обнаружения выше для вашего стека.
832
+
833
+ **«0 domains detected» в Kotlin-проекте** — Убедитесь, что ваш проект имеет `build.gradle.kts` (или `build.gradle` с kotlin-плагином) в корне, а исходные файлы находятся под `**/src/main/kotlin/`. Для мультимодульных проектов убедитесь, что `settings.gradle.kts` содержит `include()`-выражения. Одномодульные Kotlin-проекты (без `settings.gradle`) также поддерживаются — домены извлекаются из структуры package/class под `src/main/kotlin/`.
834
+
835
+ **«Language detected as java instead of kotlin»** — ClaudeOS-Core проверяет сначала корневой `build.gradle(.kts)`, затем build-файлы подмодулей. Если корневой build-файл использует плагин `java` без `kotlin`, но подмодули используют Kotlin, инструмент проверяет до 5 build-файлов подмодулей как фолбэк. Если всё равно не обнаружено, убедитесь, что хотя бы один `build.gradle.kts` содержит `kotlin("jvm")` или `org.jetbrains.kotlin`.
836
+
837
+ **«CQRS not detected»** — Обнаружение архитектуры полагается на имена модулей, содержащие ключевые слова `command` и `query`. Если ваши модули используют другое именование (например, `write-server`, `read-server`), архитектура CQRS не будет автоматически обнаружена. Вы можете вручную скорректировать сгенерированные промпты после запуска plan-installer.
627
838
 
628
- **"npm install failed"** — Версия Node.js может быть слишком старой. Требуется v18+.
839
+ **«Pass 3 produced 0 rule files under .claude/rules/» (v2.0.0)** — Сработал Guard 2: Claude проигнорировал директиву `staging-override.md` и попытался писать напрямую в `.claude/`, где политика чувствительных путей Claude Code блокирует запись. Перезапустите с `npx claudeos-core init --force`. Если ошибка повторяется, проверьте `claudeos-core/generated/pass3-prompt.md`, чтобы убедиться, что блок `staging-override.md` находится в начале.
629
840
 
630
- **"0 domains detected"** — Структура вашего проекта может быть нестандартной. Смотрите паттерны обнаружения в [корейской документации](./README.ko.md#트러블슈팅) для вашего стека.
841
+ **«Pass 3 finished but N rule file(s) could not be moved from staging» (v2.0.0)** — Сработал Guard 1: перемещение staging попало на временную блокировку файла (обычно Windows-антивирус или file-watcher). Маркер НЕ записан, так что следующий запуск `init` автоматически повторит Pass 3. Просто перезапустите `npx claudeos-core init`.
631
842
 
632
- **«0 доменов обнаружено» в Kotlin-проекте** Убедитесь, что в корне проекта есть `build.gradle.kts` (или `build.gradle` с плагином kotlin), а исходные файлы находятся в `**/src/main/kotlin/`. Для мультимодульных проектов `settings.gradle.kts` должен содержать операторы `include()`. Одномодульные Kotlin-проекты (без `settings.gradle`) также поддерживаются домены извлекаются из структуры пакетов/классов в `src/main/kotlin/`.
843
+ **«Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty» (v2.0.0)** — Сработал Guard 3 (H2): Claude обрезал ответ на середине после записи CLAUDE.md + rules, но до завершения (или начала) секции `claudeos-core/guide/` (ожидается 9 файлов). Также срабатывает на файле только с BOM или только с пробелами (заголовок был записан, но тело было обрезано). Без этого guard маркер завершения всё равно был бы записан, оставив `guide/` перманентно пустым на последующих запусках. Маркер здесь НЕ записывается, так что следующий запуск `init` повторит Pass 3 с теми же результатами Pass 2. Если повторяется, перезапустите с `npx claudeos-core init --force`, чтобы регенерировать с нуля.
633
844
 
634
- **«Язык определён как java вместо kotlin»**ClaudeOS-Core сначала проверяет корневой `build.gradle(.kts)`, затем файлы сборки подмодулей. Убедитесь, что хотя бы один содержит `kotlin("jvm")` или `org.jetbrains.kotlin`.
845
+ **«Pass 3 finished but the following required output(s) are missing or empty» (v2.0.0)** Сработал Guard 3 (H1): Claude обрезал ПОСЛЕ `claudeos-core/guide/`, но до (или во время) `claudeos-core/standard/`, `claudeos-core/skills/` или `claudeos-core/plan/`. Требования: (a) `standard/00.core/01.project-overview.md` существует и не пуст (sentinel, записываемый промптом Pass 3 каждого стека), (b) `skills/` имеет ≥1 непустой `.md`, (c) `plan/` имеет ≥1 непустой `.md`. `database/` и `mcp-guide/` намеренно исключены (некоторые стеки законно производят ноль файлов). Тот же путь восстановления, что у Guard 3 (H2): перезапустить `init`, или `--force`, если повторяется.
635
846
 
636
- **«CQRS не обнаружен»** Определение архитектуры зависит от наличия ключевых слов `command` и `query` в именах модулей. Если ваши модули используют другие имена, можно вручную скорректировать сгенерированные промпты.
847
+ **«pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running» (v2.0.0)** — Info-лог, не ошибка. При resume `init` теперь парсит и валидирует `pass2-merged.json` (требуется ≥5 ключей верхнего уровня, зеркалируя порог `INSUFFICIENT_KEYS` из `pass-json-validator`). Скелет `{}` или некорректный JSON от предыдущего упавшего запуска автоматически удаляется, и Pass 2 перезапускается. Ручные действия не нужны — пайплайн самовосстанавливается. Если повторяется, проверьте `claudeos-core/generated/pass2-prompt.md` и попробуйте с `--force`.
848
+
849
+ **«Static fallback failed while translating to lang='ko'» (v2.0.0)** — Когда `--lang` не английский, Pass 4 / статический фолбэк / gap-fill все требуют `claude` CLI для перевода. Если перевод падает (CLI не аутентифицирован, тайм-аут сети или строгая валидация отклонила вывод: <40% длины, сломанные code-fence, потерянный frontmatter и т.д.), запуск прерывается вместо тихой записи на английском. Фикс: убедитесь, что `claude` аутентифицирован, или перезапустите с `--lang en`, чтобы пропустить перевод.
850
+
851
+ **«pass4-memory.json exists but memory/ is empty» (v2.0.0)** — Предыдущий запуск записал маркер, но пользователь (или cleanup-скрипт) удалил `claudeos-core/memory/`. CLI автоматически обнаруживает этот устаревший маркер и перезапускает Pass 4 на следующем `init`. Ручные действия не нужны.
852
+
853
+ **«pass4-memory.json exists but is malformed (missing passNum/memoryFiles) — re-running Pass 4» (v2.0.0)** — Info-лог, не ошибка. Содержимое маркера Pass 4 теперь валидируется (`passNum === 4` + непустой массив `memoryFiles`), а не просто его наличие. Частичный сбой Claude, выдавший что-то вроде `{"error":"timeout"}` в теле маркера, раньше навсегда принимался бы как успех; теперь маркер удаляется, и Pass 4 автоматически перезапускается.
854
+
855
+ **«Could not delete stale pass3-complete.json / pass4-memory.json» InitError (v2.0.0)** — `init` обнаружил устаревший маркер (Pass 3: CLAUDE.md был удалён извне; Pass 4: memory/ пуста или тело маркера некорректно) и попытался его удалить, но вызов `unlinkSync` упал — обычно потому что Windows-антивирус или file-watcher (редактор, IDE-индексатор) держит файловый handle. Раньше это молча игнорировалось, из-за чего пайплайн пропускал проход и переиспользовал устаревший маркер. Теперь падает громко. Фикс: закройте редактор/AV-сканер, который мог держать файл открытым, затем перезапустите `npx claudeos-core init`.
856
+
857
+ **«CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation» InitError (v2.0.0)** — У вас установлена test-only env-переменная `CLAUDEOS_SKIP_TRANSLATION=1` в shell (вероятно, остаток от CI/test-настройки) И выбран неанглийский `--lang`. Эта env-переменная блокирует путь перевода, от которого зависят статический фолбэк Pass 4 и gap-fill для неанглийского вывода. `init` обнаруживает конфликт на этапе выбора языка и немедленно прерывается (вместо краша в середине Pass 4 с запутанной вложенной ошибкой). Фикс: либо `unset CLAUDEOS_SKIP_TRANSLATION` перед запуском, либо используйте `npx claudeos-core init --lang en`.
637
858
 
638
859
  ---
639
860
 
640
- ## Участие в разработке
861
+ ## Контрибьюции
862
+
863
+ Контрибьюции приветствуются! Области, где помощь нужна больше всего:
641
864
 
642
- Контрибуции приветствуются! Области, где больше всего нужна помощь:
865
+ - **Новые шаблоны стеков** Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
866
+ - **Интеграция с IDE** — расширение VS Code, плагин IntelliJ
867
+ - **CI/CD-шаблоны** — GitLab CI, CircleCI, примеры Jenkins (GitHub Actions уже поставлен — см. `.github/workflows/test.yml`)
868
+ - **Покрытие тестами** — расширение тестового пакета (в настоящее время 489 тестов в 24 тестовых файлах, покрывающих сканеры, определение стека, группировку доменов, парсинг планов, генерацию промптов, CLI-селекторы, определение монорепо, определение Vite SPA, инструменты верификации, L4 memory scaffold, валидацию resume Pass 2, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + строгий stale-marker unlink), валидацию содержимого маркера Pass 4 + строгость stale-marker unlink, translation env-skip guard + early fail-fast + CI workflow, перемещение staged-rules, lang-aware translation fallback и структуру шаблона AI Work Rules)
643
869
 
644
- - **Новые шаблоны стеков** Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
645
- - **Глубокая поддержка монорепо** — Отдельные корни подпроектов, обнаружение воркспейсов
646
- - **Покрытие тестами** — Расширение набора тестов (сейчас 269 тестов, покрывающих все сканеры, обнаружение стека, группировку доменов, парсинг планов, генерацию промптов, селекторы CLI, обнаружение monorepo, инструменты проверки и обнаружение Vite SPA)
870
+ См. [`CONTRIBUTING.md`](./CONTRIBUTING.md) для полного списка областей, стиля кода, конвенции коммитов и пошагового руководства по добавлению нового шаблона стека.
647
871
 
648
872
  ---
649
873