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.
- package/CHANGELOG.md +138 -0
- package/CONTRIBUTING.md +92 -59
- package/README.de.md +465 -240
- package/README.es.md +446 -223
- package/README.fr.md +461 -238
- package/README.hi.md +485 -261
- package/README.ja.md +440 -235
- package/README.ko.md +244 -56
- package/README.md +215 -47
- package/README.ru.md +462 -238
- package/README.vi.md +454 -230
- package/README.zh-CN.md +476 -252
- package/bin/cli.js +144 -140
- package/bin/commands/init.js +550 -46
- package/bin/commands/memory.js +426 -0
- package/bin/lib/cli-utils.js +206 -143
- package/bootstrap.sh +81 -390
- package/content-validator/index.js +436 -340
- package/lib/expected-guides.js +23 -0
- package/lib/expected-outputs.js +91 -0
- package/lib/language-config.js +35 -0
- package/lib/memory-scaffold.js +1014 -0
- package/lib/plan-parser.js +153 -149
- package/lib/staged-rules.js +118 -0
- package/manifest-generator/index.js +176 -171
- package/package.json +1 -1
- package/pass-json-validator/index.js +337 -299
- package/pass-prompts/templates/common/pass3-footer.md +16 -0
- package/pass-prompts/templates/common/pass4.md +317 -0
- package/pass-prompts/templates/common/staging-override.md +26 -0
- package/pass-prompts/templates/python-flask/pass1.md +119 -0
- package/pass-prompts/templates/python-flask/pass2.md +85 -0
- package/pass-prompts/templates/python-flask/pass3.md +103 -0
- package/plan-installer/domain-grouper.js +2 -1
- package/plan-installer/prompt-generator.js +120 -96
- package/plan-installer/scanners/scan-frontend.js +219 -10
- package/plan-installer/scanners/scan-java.js +226 -223
- package/plan-installer/scanners/scan-python.js +21 -0
- 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 читает вашу кодовую базу, извлекает
|
|
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
|
-
|
|
17
|
+
Любой другой инструмент для Claude Code работает так:
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
> **Человек описывает проект → LLM генерирует документацию**
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
ClaudeOS-Core работает так:
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
> **Код анализирует ваш исходник → Код строит адаптированный промпт → LLM генерирует документацию → Код верифицирует вывод**
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Это не мелкая разница. Вот почему это важно:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
### Ключевая проблема: LLM угадывает. Код не угадывает.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
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
|
|
46
|
+
ClaudeOS-Core создаёт документацию, которая знает, что ваш проект использует `ApiResponse.ok()` (а не `ResponseEntity.success()`), что ваши MyBatis XML-мапперы находятся в `src/main/resources/mybatis/mappers/`, и что ваша структура пакетов — `com.company.module.{domain}.controller` — потому что он прочитал ваш реальный код.
|
|
39
47
|
|
|
40
|
-
###
|
|
48
|
+
### До и после
|
|
41
49
|
|
|
42
|
-
**Без ClaudeOS-Core
|
|
50
|
+
**Без ClaudeOS-Core** — вы просите Claude Code создать Order CRUD:
|
|
43
51
|
```
|
|
44
|
-
❌ JPA
|
|
45
|
-
❌ ResponseEntity.success() (ApiResponse.ok())
|
|
46
|
-
❌ order/controller/ (controller/order/)
|
|
47
|
-
|
|
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() (
|
|
54
|
-
✅ controller/order/ (Pattern A)
|
|
55
|
-
|
|
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
|
|
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
|
-
|
|
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 |
|
|
88
|
-
| B |
|
|
89
|
-
| D |
|
|
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
|
-
Домены только с сервисами (без контроллеров)
|
|
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
|
|
106
|
+
Для проектов Kotlin с Gradle-мультимодульной структурой (например, CQRS-монорепо):
|
|
99
107
|
|
|
100
108
|
| Шаг | Действие | Пример |
|
|
101
109
|
|---|---|---|
|
|
102
|
-
| 1 | Сканирование `settings.gradle.kts` на
|
|
103
|
-
| 2 | Определение типа модуля
|
|
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
|
-
-
|
|
116
|
-
- **Нестандартные вложенные пути**:
|
|
117
|
-
-
|
|
118
|
-
-
|
|
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
|
-
#
|
|
182
|
+
# Кросс-платформенно (PowerShell, CMD, Bash, Zsh — любой терминал)
|
|
149
183
|
node claudeos-core-tools/bin/cli.js init
|
|
150
184
|
|
|
151
|
-
#
|
|
185
|
+
# Linux/macOS (только Bash)
|
|
152
186
|
bash claudeos-core-tools/bootstrap.sh
|
|
153
187
|
```
|
|
154
188
|
|
|
155
189
|
### Язык вывода (10 языков)
|
|
156
190
|
|
|
157
|
-
|
|
191
|
+
Когда вы запускаете `init` без `--lang`, появляется интерактивный селектор — используйте стрелки или цифровые клавиши для выбора:
|
|
158
192
|
|
|
159
193
|
```
|
|
160
194
|
╔══════════════════════════════════════════════════╗
|
|
161
|
-
║
|
|
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
|
-
↑↓
|
|
212
|
+
↑↓ Движение 1-0 Переход Enter Выбрать ESC Отмена
|
|
173
213
|
```
|
|
174
214
|
|
|
175
|
-
|
|
215
|
+
Описание меняется на выбранный язык при навигации. Чтобы пропустить селектор, передайте `--lang` напрямую:
|
|
176
216
|
|
|
177
217
|
```bash
|
|
178
|
-
npx claudeos-core init --lang
|
|
179
|
-
npx claudeos-core init --lang
|
|
180
|
-
npx claudeos-core init --lang
|
|
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
|
-
> **Примечание:**
|
|
223
|
+
> **Примечание:** Это задаёт язык только для сгенерированных файлов документации. Анализ кода (Pass 1–2) всегда выполняется на английском; сгенерированный вывод (Pass 3) пишется на выбранном вами языке. Примеры кода внутри сгенерированных файлов сохраняют оригинальный синтаксис языка программирования.
|
|
184
224
|
|
|
185
|
-
|
|
225
|
+
Готово. Через 5–20 минут (Pass 1×N + Pass 2 + Pass 3 + Pass 4 memory scaffolding) вся документация будет сгенерирована и готова к использованию. CLI показывает прогресс-бар с процентом, прошедшим временем и ETA для каждого прохода.
|
|
186
226
|
|
|
187
227
|
### Ручная пошаговая установка
|
|
188
228
|
|
|
189
|
-
Если
|
|
229
|
+
Если вам нужен полный контроль над каждой фазой — или если автоматический пайплайн падает на каком-то шаге — вы можете запустить каждую стадию вручную. Это также полезно для понимания того, как ClaudeOS-Core работает внутри.
|
|
190
230
|
|
|
191
|
-
####
|
|
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
|
-
####
|
|
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
|
-
####
|
|
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
|
-
####
|
|
275
|
+
#### Шаг 4: Pass 1 — Глубокий анализ кода (по группам доменов)
|
|
235
276
|
|
|
236
|
-
Запустите Pass 1 для каждой группы доменов. Проверьте `domain-groups.json`
|
|
277
|
+
Запустите Pass 1 для каждой группы доменов. Проверьте `domain-groups.json` на количество групп.
|
|
237
278
|
|
|
238
279
|
```bash
|
|
239
|
-
#
|
|
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
|
-
#
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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
|
-
####
|
|
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
|
-
####
|
|
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
|
-
####
|
|
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 #
|
|
286
|
-
node claudeos-core-tools/content-validator/index.js #
|
|
287
|
-
node claudeos-core-tools/pass-json-validator/index.js # JSON
|
|
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
|
-
####
|
|
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
|
-
> **Совет:** Если какой-то шаг
|
|
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
|
-
## Как это работает —
|
|
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
|
-
│ ├── Извлечение списка доменов (
|
|
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
|
-
|
|
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
|
-
### Почему
|
|
426
|
+
### Почему 4 прохода?
|
|
427
|
+
|
|
428
|
+
**Pass 1** — единственный проход, читающий ваш исходный код. Он выбирает репрезентативные файлы по домену и извлекает паттерны по 55–95 категориям анализа (зависит от стека). Для больших проектов Pass 1 запускается несколько раз — по одному на группу доменов. В мульти-стек проектах (например, Java backend + React frontend) backend- и frontend-домены используют **разные промпты анализа**, адаптированные к каждому стеку.
|
|
340
429
|
|
|
341
|
-
**Pass
|
|
430
|
+
**Pass 2** объединяет все результаты Pass 1 в единый анализ: общие паттерны (100% общие), паттерны большинства (50%+ общие), доменно-специфические паттерны, анти-паттерны по степени серьёзности и сквозные аспекты (именование, безопасность, БД, тестирование, логирование, производительность). Результаты backend и frontend сливаются воедино.
|
|
342
431
|
|
|
343
|
-
**Pass
|
|
432
|
+
**Pass 3** берёт объединённый анализ и генерирует всю файловую экосистему (CLAUDE.md, rules, standards, skills, guides). Он никогда не читает исходный код — только JSON анализа. В мульти-стек режиме промпт генерации комбинирует backend- и frontend-цели, так что оба набора стандартов генерируются за один проход.
|
|
344
433
|
|
|
345
|
-
**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/ ←
|
|
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
|
-
│
|
|
452
|
+
│ ├── 50.sync/ ← Правила напоминания о синхронизации
|
|
453
|
+
│ └── 60.memory/ ← Правила on-demand-scope для L4 memory (v2.0.0)
|
|
364
454
|
│
|
|
365
|
-
├── claudeos-core/ ← Основная директория
|
|
366
|
-
│ ├── generated/ ← JSON анализа + динамические промпты
|
|
367
|
-
│ ├──
|
|
368
|
-
│ ├──
|
|
369
|
-
│ ├──
|
|
370
|
-
│ ├──
|
|
371
|
-
│ ├──
|
|
372
|
-
│
|
|
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
|
-
| Размер | Домены |
|
|
513
|
+
| Размер | Домены | Запусков Pass 1 | Всего `claude -p` | Расч. время |
|
|
384
514
|
|---|---|---|---|---|
|
|
385
|
-
| Малый | 1–4 | 1 | 3 | ~5
|
|
386
|
-
| Средний | 5–8 | 2 |
|
|
387
|
-
|
|
|
388
|
-
|
|
|
515
|
+
| Малый | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6мин |
|
|
516
|
+
| Средний | 5–8 | 2 | 5 | ~8–9мин |
|
|
517
|
+
| Крупный | 9–16 | 3–4 | 6–7 | ~12–13мин |
|
|
518
|
+
| X-Крупный | 17+ | 5+ | 8+ | ~18мин+ |
|
|
389
519
|
|
|
390
|
-
Для мульти-стек проектов (
|
|
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 # Синхронизация
|
|
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** |
|
|
411
|
-
| **plan-validator** | Сравнивает блоки `<file>` Master Plan с диском — 3 режима: check, refresh, restore |
|
|
412
|
-
| **sync-checker** | Обнаруживает незарегистрированные файлы (на диске, но не в плане) и осиротевшие записи |
|
|
413
|
-
| **content-validator** |
|
|
414
|
-
| **pass-json-validator** |
|
|
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
|
-
|
|
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/*` | При редактировании
|
|
428
|
-
| `.claude/rules/10.backend/*` | При редактировании
|
|
429
|
-
| `.claude/rules/
|
|
430
|
-
| `.claude/rules/
|
|
431
|
-
| `.claude/rules/
|
|
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
|
-
Каждый файл
|
|
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` служит каталогом для обнаружения
|
|
579
|
+
`00.standard-reference.md` служит каталогом всех standard-файлов для обнаружения стандартов, у которых нет соответствующего правила.
|
|
441
580
|
|
|
442
|
-
###
|
|
581
|
+
### Что Claude Code НЕ читает (экономит контекст)
|
|
443
582
|
|
|
444
|
-
|
|
583
|
+
Эти папки явно исключены через секцию `DO NOT Read` в правиле standard-reference:
|
|
445
584
|
|
|
446
|
-
| Папка |
|
|
585
|
+
| Папка | Почему исключена |
|
|
447
586
|
|---|---|
|
|
448
|
-
| `claudeos-core/plan/` |
|
|
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
|
-
# Просто
|
|
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
|
-
# После редактирования файлов
|
|
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
|
-
#
|
|
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
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
|
|
|
502
|
-
|
|
|
503
|
-
|
|
|
504
|
-
|
|
|
505
|
-
|
|
|
506
|
-
|
|
|
507
|
-
|
|
|
508
|
-
|
|
|
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
|
-
|
|
689
|
+
**Другие инструменты дают Claude «в целом хорошие инструкции». ClaudeOS-Core даёт Claude «инструкции, извлечённые из вашего реального кода».**
|
|
511
690
|
|
|
512
|
-
|
|
691
|
+
Именно поэтому Claude Code перестаёт генерировать JPA-код в вашем MyBatis-проекте,
|
|
692
|
+
перестаёт использовать `success()`, когда ваша кодовая база использует `ok()`,
|
|
693
|
+
и перестаёт создавать директории `user/controller/`, когда ваш проект использует `controller/user/`.
|
|
513
694
|
|
|
514
|
-
###
|
|
695
|
+
### Взаимодополняющее, не конкурирующее
|
|
515
696
|
|
|
516
|
-
ClaudeOS-Core
|
|
517
|
-
|
|
697
|
+
ClaudeOS-Core фокусируется на **проектно-специфичных правилах и стандартах**.
|
|
698
|
+
Другие инструменты фокусируются на **оркестрации агентов и workflow**.
|
|
699
|
+
|
|
700
|
+
Вы можете использовать ClaudeOS-Core для генерации правил вашего проекта, а затем ECC или Harness поверх для агент-команд и автоматизации workflow. Они решают разные задачи.
|
|
518
701
|
|
|
519
702
|
---
|
|
703
|
+
|
|
520
704
|
## FAQ
|
|
521
705
|
|
|
522
|
-
**В:
|
|
523
|
-
Нет.
|
|
706
|
+
**В: Модифицирует ли он мой исходный код?**
|
|
707
|
+
Нет. Создаёт только `CLAUDE.md`, `.claude/rules/` и `claudeos-core/`. Ваш существующий код никогда не модифицируется.
|
|
524
708
|
|
|
525
709
|
**В: Сколько это стоит?**
|
|
526
|
-
|
|
710
|
+
Он вызывает `claude -p` 4–8 раз (Pass 1 × N + Pass 2 + Pass 3 + Pass 4). Это в пределах нормального использования Claude Code. Когда `--lang` не английский, путь статического фолбэка может вызвать несколько дополнительных `claude -p` для перевода; результаты кэшируются в `claudeos-core/generated/.i18n-cache-<lang>.json`, так что последующие запуски их переиспользуют.
|
|
527
711
|
|
|
528
|
-
**В:
|
|
529
|
-
|
|
712
|
+
**В: Стоит ли коммитить сгенерированные файлы в Git?**
|
|
713
|
+
Да, рекомендуется. Ваша команда может использовать одинаковые стандарты Claude Code. Подумайте о добавлении `claudeos-core/generated/` в `.gitignore` (JSON анализа регенерируется).
|
|
530
714
|
|
|
531
|
-
**В: Что
|
|
532
|
-
|
|
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
|
|
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
|
-
**В:
|
|
538
|
-
Да. ClaudeOS-Core
|
|
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
|
-
**В:
|
|
541
|
-
|
|
733
|
+
**В: Что насчёт CQRS / BFF архитектуры?**
|
|
734
|
+
Полностью поддерживается для Kotlin мультимодульных проектов. ClaudeOS-Core читает `settings.gradle.kts`, определяет типы модулей (command, query, bff, integration) из имён модулей и группирует один домен между Command/Query модулями. Сгенерированные стандарты включают отдельные правила для command-контроллеров vs query-контроллеров, BFF/Feign паттерны и конвенции межмодульной коммуникации.
|
|
542
735
|
|
|
543
|
-
**В:
|
|
544
|
-
|
|
736
|
+
**В: Что насчёт Gradle мультимодульных монорепо?**
|
|
737
|
+
ClaudeOS-Core сканирует все подмодули (`**/src/main/kotlin/**/*.kt`) независимо от глубины вложенности. Типы модулей выводятся из конвенций именования (например, `reservation-command-server` → домен: `reservation`, тип: `command`). Общие библиотеки (`shared-lib`, `integration-lib`) также обнаруживаются.
|
|
545
738
|
|
|
546
|
-
**В:
|
|
547
|
-
|
|
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
|
-
**В:
|
|
550
|
-
|
|
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
|
-
**В:
|
|
553
|
-
|
|
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
|
-
|
|
771
|
+
├── python-fastapi/ # Python / FastAPI
|
|
772
|
+
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
572
773
|
```
|
|
573
774
|
|
|
574
|
-
`plan-installer` автоматически определяет ваш
|
|
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
|
-
## Поддержка
|
|
779
|
+
## Поддержка монорепо
|
|
579
780
|
|
|
580
|
-
ClaudeOS-Core автоматически
|
|
781
|
+
ClaudeOS-Core автоматически обнаруживает JS/TS монорепо-настройки и сканирует под-пакеты на зависимости.
|
|
581
782
|
|
|
582
|
-
**Поддерживаемые маркеры
|
|
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
|
-
|
|
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`)
|
|
597
|
-
- Зависимости из `apps/api/package.json` (например, `express`, `prisma`)
|
|
598
|
-
- Зависимости из `packages/db/package.json` (например, `drizzle-orm`)
|
|
599
|
-
- Пользовательские пути
|
|
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
|
-
**Сканирование доменов также
|
|
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 ←
|
|
809
|
+
├── turbo.json ← Автообнаружение как Turborepo
|
|
609
810
|
├── apps/
|
|
610
|
-
│ ├── web/ ← Next.js
|
|
811
|
+
│ ├── web/ ← Next.js обнаружен из apps/web/package.json
|
|
611
812
|
│ │ ├── app/dashboard/ ← Frontend-домен обнаружен
|
|
612
813
|
│ │ └── package.json ← { "dependencies": { "next": "^14" } }
|
|
613
|
-
│ └── api/ ← Express
|
|
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
|
|
818
|
+
│ ├── db/ ← Drizzle обнаружен из packages/db/package.json
|
|
618
819
|
│ └── ui/
|
|
619
820
|
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
620
821
|
```
|
|
621
822
|
|
|
622
|
-
> **Примечание:** Для Kotlin/Java
|
|
823
|
+
> **Примечание:** Для Kotlin/Java монорепо обнаружение мультимодулей использует `settings.gradle.kts` (см. [Обнаружение доменов Kotlin мультимодульных проектов](#обнаружение-доменов-kotlin-мультимодульных-проектов) выше) и не требует маркеров JS-монорепо.
|
|
623
824
|
|
|
624
825
|
## Устранение неполадок
|
|
625
826
|
|
|
626
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
**«
|
|
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
|
-
|
|
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
|
-
**«
|
|
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
|
-
|
|
645
|
-
- **Глубокая поддержка монорепо** — Отдельные корни подпроектов, обнаружение воркспейсов
|
|
646
|
-
- **Покрытие тестами** — Расширение набора тестов (сейчас 269 тестов, покрывающих все сканеры, обнаружение стека, группировку доменов, парсинг планов, генерацию промптов, селекторы CLI, обнаружение monorepo, инструменты проверки и обнаружение Vite SPA)
|
|
870
|
+
См. [`CONTRIBUTING.md`](./CONTRIBUTING.md) для полного списка областей, стиля кода, конвенции коммитов и пошагового руководства по добавлению нового шаблона стека.
|
|
647
871
|
|
|
648
872
|
---
|
|
649
873
|
|