claudeos-core 2.0.2 → 2.1.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 +178 -0
- package/README.de.md +994 -880
- package/README.es.md +993 -880
- package/README.fr.md +993 -880
- package/README.hi.md +993 -880
- package/README.ja.md +993 -880
- package/README.ko.md +159 -47
- package/README.md +159 -46
- package/README.ru.md +993 -880
- package/README.vi.md +161 -48
- package/README.zh-CN.md +992 -880
- package/bin/cli.js +7 -2
- package/bin/commands/init.js +733 -143
- package/bin/commands/memory.js +17 -5
- package/bootstrap.sh +81 -81
- package/lib/expected-outputs.js +6 -7
- package/lib/memory-scaffold.js +84 -46
- package/lib/plan-parser.js +12 -0
- package/manifest-generator/index.js +16 -18
- package/package.json +1 -1
- package/pass-prompts/templates/angular/pass3.md +2 -10
- package/pass-prompts/templates/common/pass3-phase1.md +131 -0
- package/pass-prompts/templates/common/pass3a-facts.md +143 -0
- package/pass-prompts/templates/common/pass3b-core-header.md +58 -0
- package/pass-prompts/templates/common/pass3c-skills-guide-header.md +53 -0
- package/pass-prompts/templates/common/pass3d-plan-aux-header.md +57 -0
- package/pass-prompts/templates/common/pass4.md +4 -19
- package/pass-prompts/templates/java-spring/pass3.md +5 -15
- package/pass-prompts/templates/kotlin-spring/pass3.md +5 -15
- package/pass-prompts/templates/node-express/pass3.md +5 -14
- package/pass-prompts/templates/node-fastify/pass3.md +2 -10
- package/pass-prompts/templates/node-nestjs/pass3.md +5 -13
- package/pass-prompts/templates/node-nextjs/pass3.md +5 -14
- package/pass-prompts/templates/node-vite/pass3.md +95 -103
- package/pass-prompts/templates/python-django/pass3.md +5 -14
- package/pass-prompts/templates/python-fastapi/pass3.md +5 -14
- package/pass-prompts/templates/python-flask/pass3.md +95 -103
- package/pass-prompts/templates/vue-nuxt/pass3.md +2 -10
- package/plan-installer/pass3-context-builder.js +258 -0
- package/plan-installer/prompt-generator.js +9 -1
- package/plan-validator/index.js +23 -8
- package/sync-checker/index.js +44 -0
package/README.ru.md
CHANGED
|
@@ -1,880 +1,993 @@
|
|
|
1
|
-
# ClaudeOS-Core
|
|
2
|
-
|
|
3
|
-
**Единственный инструмент, который сначала читает ваш исходный код, подтверждает стек и паттерны детерминированным анализом, а затем генерирует правила Claude Code, точно адаптированные к вашему проекту.**
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
npx claudeos-core init
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
ClaudeOS-Core читает вашу кодовую базу, извлекает каждый найденный паттерн и генерирует полный набор Standards, Rules, Skills и Guides, адаптированных под _ваш_ проект. После этого, когда вы говорите Claude Code «Создай CRUD для заказов», он производит код, точно соответствующий вашим существующим паттернам.
|
|
10
|
-
|
|
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
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
|
95
|
-
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
|
109
|
-
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Обнаружение
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
###
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
#
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
#
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
"
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
│
|
|
443
|
-
├──
|
|
444
|
-
│
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
│ ├──
|
|
448
|
-
│
|
|
449
|
-
│
|
|
450
|
-
|
|
451
|
-
│
|
|
452
|
-
│
|
|
453
|
-
|
|
454
|
-
│
|
|
455
|
-
├──
|
|
456
|
-
│
|
|
457
|
-
│
|
|
458
|
-
│
|
|
459
|
-
│
|
|
460
|
-
│
|
|
461
|
-
│
|
|
462
|
-
│
|
|
463
|
-
│
|
|
464
|
-
│
|
|
465
|
-
│
|
|
466
|
-
|
|
467
|
-
│
|
|
468
|
-
│
|
|
469
|
-
│
|
|
470
|
-
│
|
|
471
|
-
│
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
###
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
|
586
|
-
|
|
587
|
-
|
|
|
588
|
-
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
#
|
|
620
|
-
npx claudeos-core
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
|
676
|
-
|
|
677
|
-
|
|
|
678
|
-
|
|
|
679
|
-
|
|
|
680
|
-
|
|
|
681
|
-
|
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
###
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
1
|
+
# ClaudeOS-Core
|
|
2
|
+
|
|
3
|
+
**Единственный инструмент, который сначала читает ваш исходный код, подтверждает стек и паттерны детерминированным анализом, а затем генерирует правила Claude Code, точно адаптированные к вашему проекту.**
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx claudeos-core init
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
ClaudeOS-Core читает вашу кодовую базу, извлекает каждый найденный паттерн и генерирует полный набор Standards, Rules, Skills и Guides, адаптированных под _ваш_ проект. После этого, когда вы говорите Claude Code «Создай CRUD для заказов», он производит код, точно соответствующий вашим существующим паттернам.
|
|
10
|
+
|
|
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
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Что нового в v2.1.0
|
|
16
|
+
|
|
17
|
+
v2.1.0 переархитектурирует Pass 3, чтобы устранить отказы `Prompt is too long` на средних и крупных проектах. Раньше единственный вызов Pass 3 должен был выдать всё дерево документации за раз — десятки файлов в `CLAUDE.md`, rules, standards, skills и guides — и накопленный вывод стабильно превышал context window после ~5 доменов. Исправление — структурное, а не настройка промпта:
|
|
18
|
+
|
|
19
|
+
- **Pass 3 split-режим** (всегда включён) — Pass 3 разбивается на последовательные вызовы `claude -p` (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`). Каждая стадия стартует с **свежим context window**, поэтому переполнение из-за накопления вывода структурно невозможно независимо от размера проекта.
|
|
20
|
+
- **Фактологический лист между стадиями** — Стадия `3a` один раз читает анализ Pass 2 и дистиллирует его в `pass3a-facts.md` размером 5–10 KB. Все последующие стадии ссылаются на этот fact sheet вместо повторного чтения 100–500 KB `pass2-merged.json`, что сохраняет межфайловую согласованность даже при свежих контекстах.
|
|
21
|
+
- **Разбиение на батчи** (автоматически при ≥16 доменов) — Стадии 3b/3c дополнительно делятся на батчи по 15 доменов, удерживая вывод каждой стадии под ~50 файлами. 18-доменный admin-фронтенд на React 19 + Vite 6 завершается за **102 минуты со 101 сгенерированным файлом по 8 стадиям и нулевыми отказами переполнения** (реальный production-прогон, 2026-04-20).
|
|
22
|
+
- **Генерация master plan удалена** — Файлы `claudeos-core/plan/*-master.md` больше не генерируются. Master plans были внутренним бэкапом, который Claude Code не читал в рантайме, и их агрегация в Pass 3d была основным триггером переполнения. Используйте `git` для бэкапа/восстановления.
|
|
23
|
+
- **Pass 4 gap-fill: `skills/00.shared/MANIFEST.md`** — Если Pass 3c пропускает skill-реестр (проекты с малым количеством skills), Pass 4 теперь автоматически создаёт заглушку, чтобы `.claude/rules/50.sync/03.skills-sync.md` никогда не ссылался на несуществующий файл.
|
|
24
|
+
|
|
25
|
+
Несколько более мелких фиксов: `memory --help` теперь показывает справку подкоманды memory (раньше показывался top-level); `memory score` больше не оставляет дублирующие строки `importance`; маркеры summary в `memory compact` теперь корректные markdown-элементы списка. Полные детали: [CHANGELOG.md](./CHANGELOG.md).
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Почему ClaudeOS-Core?
|
|
30
|
+
|
|
31
|
+
Любой другой инструмент для Claude Code работает так:
|
|
32
|
+
|
|
33
|
+
> **Человек описывает проект → LLM генерирует документацию**
|
|
34
|
+
|
|
35
|
+
ClaudeOS-Core работает так:
|
|
36
|
+
|
|
37
|
+
> **Код анализирует ваш исходник → Код строит адаптированный промпт → LLM генерирует документацию → Код верифицирует вывод**
|
|
38
|
+
|
|
39
|
+
Это не мелкая разница. Вот почему это важно:
|
|
40
|
+
|
|
41
|
+
### Ключевая проблема: LLM угадывает. Код не угадывает.
|
|
42
|
+
|
|
43
|
+
Когда вы просите Claude «проанализировать этот проект», он **угадывает** ваш стек, ORM, структуру доменов.
|
|
44
|
+
Он может увидеть `spring-boot` в вашем `build.gradle`, но упустить, что вы используете MyBatis (а не JPA).
|
|
45
|
+
Он может обнаружить директорию `user/`, но не понять, что ваш проект использует layer-first упаковку (Pattern A), а не domain-first (Pattern B).
|
|
46
|
+
|
|
47
|
+
**ClaudeOS-Core не угадывает.** Прежде чем Claude увидит ваш проект, код на Node.js уже:
|
|
48
|
+
|
|
49
|
+
- Распарсил `build.gradle` / `package.json` / `pyproject.toml` и **подтвердил** ваш стек, ORM, БД и пакетный менеджер
|
|
50
|
+
- Просканировал структуру директорий и **подтвердил** список доменов с количеством файлов
|
|
51
|
+
- Классифицировал структуру вашего проекта в один из 5 Java-паттернов, Kotlin CQRS/BFF или Next.js App Router/FSD
|
|
52
|
+
- Разбил домены на оптимально размерные группы, помещающиеся в context window Claude
|
|
53
|
+
- Собрал стек-специфический промпт со всеми подтверждёнными фактами
|
|
54
|
+
|
|
55
|
+
К моменту, когда Claude получает промпт, угадывать больше нечего. Стек подтверждён. Домены подтверждены. Паттерн структуры подтверждён. Единственная работа Claude — сгенерировать документацию, соответствующую этим **подтверждённым фактам**.
|
|
56
|
+
|
|
57
|
+
### Результат
|
|
58
|
+
|
|
59
|
+
Другие инструменты создают «в целом хорошую» документацию.
|
|
60
|
+
ClaudeOS-Core создаёт документацию, которая знает, что ваш проект использует `ApiResponse.ok()` (а не `ResponseEntity.success()`), что ваши MyBatis XML-мапперы находятся в `src/main/resources/mybatis/mappers/`, и что ваша структура пакетов — `com.company.module.{domain}.controller` — потому что он прочитал ваш реальный код.
|
|
61
|
+
|
|
62
|
+
### До и после
|
|
63
|
+
|
|
64
|
+
**Без ClaudeOS-Core** — вы просите Claude Code создать Order CRUD:
|
|
65
|
+
```
|
|
66
|
+
❌ Использует JPA-style репозиторий (ваш проект использует MyBatis)
|
|
67
|
+
❌ Создаёт ResponseEntity.success() (ваш враппер — ApiResponse.ok())
|
|
68
|
+
❌ Размещает файлы в order/controller/ (ваш проект использует controller/order/)
|
|
69
|
+
❌ Генерирует английские комментарии (ваша команда пишет русские комментарии)
|
|
70
|
+
→ Вы тратите 20 минут на исправление каждого сгенерированного файла
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**С ClaudeOS-Core** — `.claude/rules/` уже содержит ваши подтверждённые паттерны:
|
|
74
|
+
```
|
|
75
|
+
✅ Генерирует MyBatis mapper + XML (обнаружено из build.gradle)
|
|
76
|
+
✅ Использует ApiResponse.ok() (извлечено из вашего реального исходника)
|
|
77
|
+
✅ Размещает файлы в controller/order/ (Pattern A подтверждён сканированием структуры)
|
|
78
|
+
✅ Русские комментарии (применён --lang ru)
|
|
79
|
+
→ Сгенерированный код сразу соответствует конвенциям вашего проекта
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Эта разница накапливается. 10 задач/день × 20 минут экономии = **более 3 часов/день**.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Поддерживаемые стеки
|
|
87
|
+
|
|
88
|
+
| Стек | Обнаружение | Глубина анализа |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 паттернов пакетов | 10 категорий, 59 подпунктов |
|
|
91
|
+
| **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, автоопределение CQRS/BFF | 12 категорий, 95 подпунктов |
|
|
92
|
+
| **Node.js / Express** | `package.json` | 9 категорий, 57 подпунктов |
|
|
93
|
+
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 категорий, 68 подпунктов |
|
|
94
|
+
| **Next.js / React** | `package.json`, `next.config.*`, поддержка FSD | 9 категорий, 55 подпунктов |
|
|
95
|
+
| **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 категорий, 58 подпунктов |
|
|
96
|
+
| **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 категорий, 55 подпунктов |
|
|
97
|
+
| **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 категорий, 58 подпунктов |
|
|
98
|
+
| **Node.js / Fastify** | `package.json` | 10 категорий, 62 подпункта |
|
|
99
|
+
| **Vite / React SPA** | `package.json`, `vite.config.*` | 9 категорий, 55 подпунктов |
|
|
100
|
+
| **Angular** | `package.json`, `angular.json` | 12 категорий, 78 подпунктов |
|
|
101
|
+
|
|
102
|
+
Автоматически определяется: язык и версия, фреймворк и версия (включая 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).
|
|
103
|
+
|
|
104
|
+
**Вам не нужно ничего указывать. Всё определяется автоматически.**
|
|
105
|
+
|
|
106
|
+
### Обнаружение Java-доменов (5 паттернов с фолбэком)
|
|
107
|
+
|
|
108
|
+
| Приоритет | Паттерн | Структура | Пример |
|
|
109
|
+
|---|---|---|---|
|
|
110
|
+
| A | Layer-first | `controller/{domain}/` | `controller/user/UserController.java` |
|
|
111
|
+
| B | Domain-first | `{domain}/controller/` | `user/controller/UserController.java` |
|
|
112
|
+
| D | Префикс модуля | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
|
|
113
|
+
| E | DDD/Гексагональный | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
|
|
114
|
+
| C | Плоский | `controller/*.java` | `controller/UserController.java` → извлекает `user` из имени класса |
|
|
115
|
+
|
|
116
|
+
Домены только с сервисами (без контроллеров) также обнаруживаются через директории `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Пропускаются: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` и т.д.
|
|
117
|
+
|
|
118
|
+
### Обнаружение доменов Kotlin мультимодульных проектов
|
|
119
|
+
|
|
120
|
+
Для проектов Kotlin с Gradle-мультимодульной структурой (например, CQRS-монорепо):
|
|
121
|
+
|
|
122
|
+
| Шаг | Действие | Пример |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| 1 | Сканирование `settings.gradle.kts` на `include()` | Находит 14 модулей |
|
|
125
|
+
| 2 | Определение типа модуля из имени | `reservation-command-server` → тип: `command` |
|
|
126
|
+
| 3 | Извлечение домена из имени модуля | `reservation-command-server` → домен: `reservation` |
|
|
127
|
+
| 4 | Группировка одного домена по модулям | `reservation-command-server` + `common-query-server` → 1 домен |
|
|
128
|
+
| 5 | Определение архитектуры | Есть модули `command` + `query` → CQRS |
|
|
129
|
+
|
|
130
|
+
Поддерживаемые типы модулей: `command`, `query`, `bff`, `integration`, `standalone`, `library`. Общие библиотеки (`shared-lib`, `integration-lib`) определяются как специальные домены.
|
|
131
|
+
|
|
132
|
+
### Обнаружение фронтенд-доменов
|
|
133
|
+
|
|
134
|
+
- **App Router**: `app/{domain}/page.tsx` (Next.js)
|
|
135
|
+
- **Pages Router**: `pages/{domain}/index.tsx`
|
|
136
|
+
- **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
|
|
137
|
+
- **Разделение RSC/Client**: Обнаруживает паттерн `client.tsx`, отслеживает разделение Server/Client-компонентов
|
|
138
|
+
- **Нестандартные вложенные пути**: Обнаруживает pages, components и FSD-слои под путями `src/*/` (например, `src/admin/pages/dashboard/`, `src/admin/components/form/`, `src/admin/features/billing/`)
|
|
139
|
+
- **Обнаружение 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 файла.
|
|
140
|
+
- **Platform-split для монорепо (v2.0.0)**: Platform-сканирование также сопоставляет `{apps,packages}/*/src/{platform}/{subapp}/` (Turborepo/pnpm-workspace с `src/`) и `{apps,packages}/{platform}/{subapp}/` (workspaces без обёртки `src/`).
|
|
141
|
+
- **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`) отфильтровываются.
|
|
142
|
+
- **Config-фолбэк**: Определяет Next.js/Vite/Nuxt из файлов конфигурации, когда их нет в `package.json` (поддержка монорепо)
|
|
143
|
+
- **Глубокий фолбэк по директориям**: Для проектов React/CRA/Vite/Vue/RN сканирует `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` на любой глубине
|
|
144
|
+
- **Общие 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__`), чтобы сборочные выводы и тестовые фикстуры не раздували счётчики файлов по доменам.
|
|
145
|
+
|
|
146
|
+
### Переопределения сканеров (v2.0.0)
|
|
147
|
+
|
|
148
|
+
Положите опциональный `.claudeos-scan.json` в корне проекта, чтобы расширить дефолты сканеров без редактирования тулкита. Все поля **аддитивные** — записи пользователя расширяют дефолты, никогда не заменяют их:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"frontendScan": {
|
|
153
|
+
"platformKeywords": ["kiosk"],
|
|
154
|
+
"skipSubappNames": ["legacy"],
|
|
155
|
+
"minSubappFiles": 3
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
| Поле | Дефолт | Назначение |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| `platformKeywords` | встроенный список выше | Дополнительные ключевые слова `{platform}` для platform-сканирования (например, `kiosk`, `vr`, `embedded`) |
|
|
163
|
+
| `skipSubappNames` | только структурные директории | Дополнительные имена subapp, исключаемые из выдачи доменов platform-сканером |
|
|
164
|
+
| `minSubappFiles` | `2` | Переопределение минимального количества файлов, после которого subapp становится доменом |
|
|
165
|
+
|
|
166
|
+
Отсутствующий файл или некорректный JSON → тихо откатывается на дефолты (без краша). Типичное использование: opt-in короткого сокращения (`adm`, `bo`), которое встроенный список исключает как слишком неоднозначное, или повышение `minSubappFiles` для шумных монорепо.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Быстрый старт
|
|
171
|
+
|
|
172
|
+
### Требования
|
|
173
|
+
|
|
174
|
+
- **Node.js** v18+
|
|
175
|
+
- **Claude Code CLI** (установлен и аутентифицирован)
|
|
176
|
+
|
|
177
|
+
### Установка
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
cd /your/project/root
|
|
181
|
+
|
|
182
|
+
# Вариант A: npx (рекомендуется — установка не нужна)
|
|
183
|
+
npx claudeos-core init
|
|
184
|
+
|
|
185
|
+
# Вариант B: глобальная установка
|
|
186
|
+
npm install -g claudeos-core
|
|
187
|
+
claudeos-core init
|
|
188
|
+
|
|
189
|
+
# Вариант C: проектная devDependency
|
|
190
|
+
npm install --save-dev claudeos-core
|
|
191
|
+
npx claudeos-core init
|
|
192
|
+
|
|
193
|
+
# Вариант D: git clone (для разработки/контрибьюций)
|
|
194
|
+
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
195
|
+
|
|
196
|
+
# Кросс-платформенно (PowerShell, CMD, Bash, Zsh — любой терминал)
|
|
197
|
+
node claudeos-core-tools/bin/cli.js init
|
|
198
|
+
|
|
199
|
+
# Linux/macOS (только Bash)
|
|
200
|
+
bash claudeos-core-tools/bootstrap.sh
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Язык вывода (10 языков)
|
|
204
|
+
|
|
205
|
+
Когда вы запускаете `init` без `--lang`, появляется интерактивный селектор — используйте стрелки или цифровые клавиши для выбора:
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
╔══════════════════════════════════════════════════╗
|
|
209
|
+
║ Выберите язык сгенерированных документов ║
|
|
210
|
+
╚══════════════════════════════════════════════════╝
|
|
211
|
+
|
|
212
|
+
Сгенерированные файлы (CLAUDE.md, Standards, Rules,
|
|
213
|
+
Skills, Guides) будут написаны на русском языке.
|
|
214
|
+
|
|
215
|
+
1. en — English
|
|
216
|
+
2. ko — 한국어 (Korean)
|
|
217
|
+
3. zh-CN — 简体中文 (Chinese Simplified)
|
|
218
|
+
4. ja — 日本語 (Japanese)
|
|
219
|
+
5. es — Español (Spanish)
|
|
220
|
+
6. vi — Tiếng Việt (Vietnamese)
|
|
221
|
+
7. hi — हिन्दी (Hindi)
|
|
222
|
+
❯ 8. ru — Русский (Russian)
|
|
223
|
+
9. fr — Français (French)
|
|
224
|
+
10. de — Deutsch (German)
|
|
225
|
+
|
|
226
|
+
↑↓ Движение 1-0 Переход Enter Выбрать ESC Отмена
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Описание меняется на выбранный язык при навигации. Чтобы пропустить селектор, передайте `--lang` напрямую:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
npx claudeos-core init --lang ko # Корейский
|
|
233
|
+
npx claudeos-core init --lang ja # Японский
|
|
234
|
+
npx claudeos-core init --lang en # Английский (по умолчанию)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
> **Примечание:** Это задаёт язык только для сгенерированных файлов документации. Анализ кода (Pass 1–2) всегда выполняется на английском; сгенерированный вывод (Pass 3) пишется на выбранном вами языке. Примеры кода внутри сгенерированных файлов сохраняют оригинальный синтаксис языка программирования.
|
|
238
|
+
|
|
239
|
+
Готово. Через 10 минут (малый проект) — 2 часа (монорепо из 60+ доменов) вся документация будет сгенерирована и готова к использованию. CLI показывает прогресс-бар с процентом, прошедшим временем и ETA для каждого прохода. См. [Автомасштабирование по размеру проекта](#автомасштабирование-по-размеру-проекта) для детального времени по размерам проекта.
|
|
240
|
+
|
|
241
|
+
### Ручная пошаговая установка
|
|
242
|
+
|
|
243
|
+
Если вам нужен полный контроль над каждой фазой — или если автоматический пайплайн падает на каком-то шаге — вы можете запустить каждую стадию вручную. Это также полезно для понимания того, как ClaudeOS-Core работает внутри.
|
|
244
|
+
|
|
245
|
+
#### Шаг 1: Клонирование и установка зависимостей
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
cd /your/project/root
|
|
249
|
+
|
|
250
|
+
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
251
|
+
cd claudeos-core-tools && npm install && cd ..
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### Шаг 2: Создание структуры директорий
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# Rules (v2.0.0: добавлена 60.memory)
|
|
258
|
+
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
|
|
259
|
+
|
|
260
|
+
# Standards
|
|
261
|
+
mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
|
|
262
|
+
|
|
263
|
+
# Skills
|
|
264
|
+
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
265
|
+
|
|
266
|
+
# Guide, Database, MCP, Generated, Memory (v2.0.0: добавлена memory; v2.1.0: удалена plan)
|
|
267
|
+
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
268
|
+
mkdir -p claudeos-core/{database,mcp-guide,generated,memory}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> **Примечание v2.1.0:** Директория `claudeos-core/plan/` больше не создаётся. Генерация master plan удалена, потому что master plans были внутренним бэкапом, который Claude Code никогда не читал в рантайме, а их агрегация вызывала отказы `Prompt is too long`. Используйте `git` для бэкапа/восстановления.
|
|
272
|
+
|
|
273
|
+
#### Шаг 3: Запуск plan-installer (анализ проекта)
|
|
274
|
+
|
|
275
|
+
Сканирует ваш проект, определяет стек, находит домены, разбивает их на группы и генерирует промпты.
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
node claudeos-core-tools/plan-installer/index.js
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Вывод (в `claudeos-core/generated/`):**
|
|
282
|
+
- `project-analysis.json` — обнаруженный стек, домены, информация о фронтенде
|
|
283
|
+
- `domain-groups.json` — группы доменов для Pass 1
|
|
284
|
+
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — промпты анализа
|
|
285
|
+
- `pass2-prompt.md` — промпт слияния
|
|
286
|
+
- `pass3-prompt.md` — шаблон промпта Pass 3 с предвставленным блоком Phase 1 «Read Once, Extract Facts» (Rules A–E). Автоматический пайплайн разбивает Pass 3 на несколько стадий в рантайме; этот шаблон подаётся каждой стадии.
|
|
287
|
+
- `pass3-context.json` — облегчённая сводка проекта (< 5 KB, собирается после Pass 2), которую промпты Pass 3 предпочитают вместо полного `pass2-merged.json` (v2.1.0)
|
|
288
|
+
- `pass4-prompt.md` — промпт L4 memory scaffolding (v2.0.0; использует тот же `staging-override.md` для записей правил `60.memory/`)
|
|
289
|
+
|
|
290
|
+
Вы можете изучить эти файлы, чтобы проверить точность обнаружения перед продолжением.
|
|
291
|
+
|
|
292
|
+
#### Шаг 4: Pass 1 — Глубокий анализ кода (по группам доменов)
|
|
293
|
+
|
|
294
|
+
Запустите Pass 1 для каждой группы доменов. Проверьте `domain-groups.json` на количество групп.
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# Проверить количество групп
|
|
298
|
+
cat claudeos-core/generated/domain-groups.json | node -e "
|
|
299
|
+
const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
|
|
300
|
+
g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
|
|
301
|
+
"
|
|
302
|
+
|
|
303
|
+
# Запустить Pass 1 для каждой группы (замените домены и номер группы)
|
|
304
|
+
# Примечание: v1.6.1+ использует Node.js String.replace() вместо perl — perl
|
|
305
|
+
# больше не требуется, а семантика replacement-функции предотвращает regex-инъекции
|
|
306
|
+
# из символов $/&/$1, которые могут появиться в именах доменов.
|
|
307
|
+
#
|
|
308
|
+
# Для группы 1:
|
|
309
|
+
DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
|
|
310
|
+
const fs = require('fs');
|
|
311
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
312
|
+
const out = tpl
|
|
313
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
314
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
315
|
+
process.stdout.write(out);
|
|
316
|
+
" | claude -p --dangerously-skip-permissions
|
|
317
|
+
|
|
318
|
+
# Для группы 2 (если есть):
|
|
319
|
+
DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
|
|
320
|
+
const fs = require('fs');
|
|
321
|
+
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
322
|
+
const out = tpl
|
|
323
|
+
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
324
|
+
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
325
|
+
process.stdout.write(out);
|
|
326
|
+
" | claude -p --dangerously-skip-permissions
|
|
327
|
+
|
|
328
|
+
# Для фронтенд-групп замените pass1-backend-prompt.md → pass1-frontend-prompt.md
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Проверка:** `ls claudeos-core/generated/pass1-*.json` должен показать по одному JSON на группу.
|
|
332
|
+
|
|
333
|
+
#### Шаг 5: Pass 2 — Слияние результатов анализа
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
cat claudeos-core/generated/pass2-prompt.md \
|
|
337
|
+
| claude -p --dangerously-skip-permissions
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Проверка:** `claudeos-core/generated/pass2-merged.json` должен существовать с 9+ ключами верхнего уровня.
|
|
341
|
+
|
|
342
|
+
#### Шаг 6: Pass 3 — Генерация всей документации (разбита на несколько стадий)
|
|
343
|
+
|
|
344
|
+
**Примечание v2.1.0:** Pass 3 **всегда запускается в split-режиме** автоматическим пайплайном. Каждая стадия — это отдельный вызов `claude -p` со свежим context window, поэтому переполнение из-за накопления вывода структурно невозможно независимо от размера проекта. Шаблон `pass3-prompt.md` собирается для каждой стадии с директивой `STAGE:`, которая говорит Claude, какой подмножество файлов выдать. Для ручного режима самый простой путь всё ещё — подать полный шаблон и позволить Claude сгенерировать всё за один вызов, но это надёжно только на малых проектах (≤5 доменов). Для всего крупнее используйте `npx claudeos-core init`, чтобы split-раннер управлял оркестрацией стадий.
|
|
345
|
+
|
|
346
|
+
**Single-call режим (только малые проекты, ≤5 доменов):**
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
cat claudeos-core/generated/pass3-prompt.md \
|
|
350
|
+
| claude -p --dangerously-skip-permissions
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Постадийный режим (рекомендуется для всех размеров проекта):**
|
|
354
|
+
|
|
355
|
+
Автоматический пайплайн запускает эти стадии. Список стадий:
|
|
356
|
+
|
|
357
|
+
| Стадия | Записывает | Примечания |
|
|
358
|
+
|---|---|---|
|
|
359
|
+
| `3a` | `pass3a-facts.md` (дистиллированный fact sheet 5–10 KB) | Читает `pass2-merged.json` один раз; последующие стадии ссылаются на этот файл |
|
|
360
|
+
| `3b-core` | `CLAUDE.md`, общие `standard/`, общие `.claude/rules/` | Кросс-проектные файлы; без доменно-специфичного вывода |
|
|
361
|
+
| `3b-1..N` | Доменно-специфичные `standard/60.domains/*.md` + правила доменов | Батч ≤15 доменов на стадию (авто-деление при ≥16 доменов) |
|
|
362
|
+
| `3c-core` | `guide/` (9 файлов), `skills/00.shared/MANIFEST.md`, оркестраторы `skills/*/` | Общие skills и все user-facing гайды |
|
|
363
|
+
| `3c-1..N` | Доменные sub-skills под `skills/20.frontend-page/scaffold-page-feature/` | Батч ≤15 доменов на стадию |
|
|
364
|
+
| `3d-aux` | `database/`, `mcp-guide/` | Фиксированного размера, независимо от количества доменов |
|
|
365
|
+
|
|
366
|
+
Для проекта с 1–15 доменами это разворачивается в 4 стадии (`3a`, `3b-core`, `3c-core`, `3d-aux` — без разбиения на батчи). Для 16–30 доменов разворачивается в 8 стадий (`3b` и `3c` каждая делится на 2 батча). См. [Автомасштабирование по размеру проекта](#автомасштабирование-по-размеру-проекта) для полной таблицы.
|
|
367
|
+
|
|
368
|
+
**Проверка:** `CLAUDE.md` должен существовать в корне проекта, а маркер `claudeos-core/generated/pass3-complete.json` должен быть записан. В split-режиме маркер содержит `mode: "split"` и массив `groupsCompleted`, перечисляющий каждую завершённую стадию — логика частичного маркера использует это, чтобы возобновить с нужной стадии после краша, а не перезапускать с `3a` (что удвоило бы расход токенов).
|
|
369
|
+
|
|
370
|
+
> **Примечание о staging:** Pass 3 сначала пишет файлы правил в `claudeos-core/generated/.staged-rules/`, потому что политика чувствительных путей Claude Code блокирует прямую запись в `.claude/`. Автоматический пайплайн выполняет перемещение автоматически после каждой стадии. Если вы запускаете стадию вручную, вам нужно переместить staged-дерево самостоятельно: `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (сохраняя подпути).
|
|
371
|
+
|
|
372
|
+
#### Шаг 7: Pass 4 — Memory scaffolding
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
cat claudeos-core/generated/pass4-prompt.md \
|
|
376
|
+
| claude -p --dangerously-skip-permissions
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Проверка:** `claudeos-core/memory/` должна содержать 4 файла (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` должна содержать 4 файла правил, и к `CLAUDE.md` должна быть добавлена секция `## Memory (L4)`. Маркер: `claudeos-core/generated/pass4-memory.json`.
|
|
380
|
+
|
|
381
|
+
> **Gap-fill в v2.1.0:** Pass 4 также гарантирует существование `claudeos-core/skills/00.shared/MANIFEST.md`. Если Pass 3c его пропустил (возможно на проектах с малым количеством skills, потому что шаблоны `pass3.md` стеков перечисляют `MANIFEST.md` среди целей генерации без отметки REQUIRED), gap-fill создаёт минимальную заглушку, чтобы `.claude/rules/50.sync/03.skills-sync.md` всегда имел валидную целевую ссылку. Идемпотентно: пропускается, если файл уже имеет реальное содержимое (>20 символов).
|
|
382
|
+
|
|
383
|
+
> **Примечание:** Если `claude -p` падает или `pass4-prompt.md` отсутствует, автоматический пайплайн использует статический фолбэк через `lib/memory-scaffold.js` (с переводом через Claude, когда `--lang` не английский). Статический фолбэк запускается только внутри `npx claudeos-core init` — ручной режим требует успеха Pass 4.
|
|
384
|
+
|
|
385
|
+
#### Шаг 8: Запуск инструментов верификации
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# Генерация метаданных (требуется перед другими проверками)
|
|
389
|
+
node claudeos-core-tools/manifest-generator/index.js
|
|
390
|
+
|
|
391
|
+
# Запустить все проверки
|
|
392
|
+
node claudeos-core-tools/health-checker/index.js
|
|
393
|
+
|
|
394
|
+
# Или запустить отдельные проверки:
|
|
395
|
+
node claudeos-core-tools/plan-validator/index.js --check # Согласованность Plan ↔ disk
|
|
396
|
+
node claudeos-core-tools/sync-checker/index.js # Незарегистрированные/осиротевшие файлы
|
|
397
|
+
node claudeos-core-tools/content-validator/index.js # Проверки качества файлов (вкл. секцию memory/ [9/9])
|
|
398
|
+
node claudeos-core-tools/pass-json-validator/index.js # Проверки JSON Pass 1–4 + completion-маркеров
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
#### Шаг 9: Проверка результатов
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
# Подсчёт сгенерированных файлов
|
|
405
|
+
find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
|
|
406
|
+
|
|
407
|
+
# Проверить CLAUDE.md
|
|
408
|
+
head -30 CLAUDE.md
|
|
409
|
+
|
|
410
|
+
# Проверить один стандартный файл
|
|
411
|
+
cat claudeos-core/standard/00.core/01.project-overview.md | head -20
|
|
412
|
+
|
|
413
|
+
# Проверить правила
|
|
414
|
+
ls .claude/rules/*/
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
> **Совет:** Если какой-то шаг падает, вы можете исправить проблему и перезапустить только этот шаг. Результаты Pass 1/2 кэшируются — если `pass1-N.json` или `pass2-merged.json` уже существует, автоматический пайплайн их пропускает. Используйте `npx claudeos-core init --force`, чтобы удалить предыдущие результаты и начать с чистого листа.
|
|
418
|
+
|
|
419
|
+
### Начало использования
|
|
420
|
+
|
|
421
|
+
```
|
|
422
|
+
# В Claude Code — просто спрашивайте естественно:
|
|
423
|
+
"Создай CRUD для домена order"
|
|
424
|
+
"Добавь API аутентификации пользователя"
|
|
425
|
+
"Отрефактори этот код под паттерны проекта"
|
|
426
|
+
|
|
427
|
+
# Claude Code автоматически ссылается на ваши сгенерированные Standards, Rules и Skills.
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## Как это работает — 4-Pass пайплайн
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
npx claudeos-core init
|
|
436
|
+
│
|
|
437
|
+
├── [1] npm install ← Зависимости (~10с)
|
|
438
|
+
├── [2] Структура директорий ← Создание папок (~1с)
|
|
439
|
+
├── [3] plan-installer (Node.js) ← Сканирование проекта (~5с)
|
|
440
|
+
│ ├── Автоопределение стека (multi-stack)
|
|
441
|
+
│ ├── Извлечение списка доменов (тегирование: backend/frontend)
|
|
442
|
+
│ ├── Разбиение на группы доменов (по типу)
|
|
443
|
+
│ ├── Сборка pass3-context.json (облегчённая сводка, v2.1.0)
|
|
444
|
+
│ └── Выбор стек-специфических промптов (по типу)
|
|
445
|
+
│
|
|
446
|
+
├── [4] Pass 1 × N (claude -p) ← Глубокий анализ кода (~2-8мин)
|
|
447
|
+
│ ├── ⚙️ Backend-группы → backend-промпт
|
|
448
|
+
│ └── 🎨 Frontend-группы → frontend-промпт
|
|
449
|
+
│
|
|
450
|
+
├── [5] Pass 2 × 1 (claude -p) ← Слияние анализа (~1мин)
|
|
451
|
+
│ └── Консолидация ВСЕХ результатов Pass 1 в pass2-merged.json
|
|
452
|
+
│
|
|
453
|
+
├── [6] Pass 3 (split-режим, v2.1.0) ← Генерация всего
|
|
454
|
+
│ │
|
|
455
|
+
│ ├── 3a × 1 (claude -p) ← Извлечение фактов (~5-10мин)
|
|
456
|
+
│ │ └── Читает pass2-merged.json один раз → pass3a-facts.md
|
|
457
|
+
│ │
|
|
458
|
+
│ ├── 3b-core × 1 (claude -p) ← CLAUDE.md + общие standard/rules
|
|
459
|
+
│ ├── 3b-1..N × N (claude -p) ← Доменные standards/rules (≤15 доменов/батч)
|
|
460
|
+
│ │
|
|
461
|
+
│ ├── 3c-core × 1 (claude -p) ← Гайды + общие skills + MANIFEST.md
|
|
462
|
+
│ ├── 3c-1..N × N (claude -p) ← Доменные sub-skills (≤15 доменов/батч)
|
|
463
|
+
│ │
|
|
464
|
+
│ └── 3d-aux × 1 (claude -p) ← Заглушки database/ + mcp-guide/
|
|
465
|
+
│
|
|
466
|
+
├── [7] Pass 4 × 1 (claude -p) ← Memory scaffolding (~30с-5мин)
|
|
467
|
+
│ ├── Сидинг memory/ (decision-log, failure-patterns, …)
|
|
468
|
+
│ ├── Генерация правил 60.memory/
|
|
469
|
+
│ ├── Добавление секции "Memory (L4)" в CLAUDE.md
|
|
470
|
+
│ └── Gap-fill: гарантировать skills/00.shared/MANIFEST.md (v2.1.0)
|
|
471
|
+
│
|
|
472
|
+
└── [8] Верификация ← Автозапуск health-checker
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### Почему 4 прохода?
|
|
476
|
+
|
|
477
|
+
**Pass 1** — единственный проход, читающий ваш исходный код. Он выбирает репрезентативные файлы по домену и извлекает паттерны по 55–95 категориям анализа (зависит от стека). Для больших проектов Pass 1 запускается несколько раз — по одному на группу доменов. В мульти-стек проектах (например, Java backend + React frontend) backend- и frontend-домены используют **разные промпты анализа**, адаптированные к каждому стеку.
|
|
478
|
+
|
|
479
|
+
**Pass 2** объединяет все результаты Pass 1 в единый анализ: общие паттерны (100% общие), паттерны большинства (50%+ общие), доменно-специфические паттерны, анти-паттерны по степени серьёзности и сквозные аспекты (именование, безопасность, БД, тестирование, логирование, производительность). Результаты backend и frontend сливаются воедино.
|
|
480
|
+
|
|
481
|
+
**Pass 3** (split-режим, v2.1.0) берёт объединённый анализ и генерирует всю файловую экосистему (CLAUDE.md, rules, standards, skills, guides) через несколько последовательных вызовов `claude -p`. Ключевое наблюдение: переполнение из-за накопления вывода непредсказуемо по размеру входа — single-call Pass 3 нормально работал на проектах в 2 домена и стабильно падал около 5 доменов, а граница сбоев смещалась в зависимости от того, насколько многословным оказался каждый файл. Split-режим полностью обходит это — каждая стадия стартует со свежим context window и пишет ограниченный подмножество файлов. Кросс-стейджевая согласованность (главное преимущество single-call подхода) сохраняется через `pass3a-facts.md` — дистиллированный fact sheet размером 5–10 KB, на который ссылается каждая последующая стадия.
|
|
482
|
+
|
|
483
|
+
Шаблон промпта Pass 3 также включает блок **Phase 1 «Read Once, Extract Facts»** с пятью правилами, ещё больше ограничивающими объём вывода:
|
|
484
|
+
|
|
485
|
+
- **Rule A** — Ссылайтесь на fact table; не перечитывайте `pass2-merged.json`.
|
|
486
|
+
- **Rule B** — Идемпотентная запись файлов (пропуск, если цель существует с реальным содержимым), что делает Pass 3 безопасно перезапускаемым после прерывания.
|
|
487
|
+
- **Rule C** — Межфайловая согласованность обеспечивается через fact table как единственный источник истины.
|
|
488
|
+
- **Rule D** — Сжатость вывода: одна строка (`[WRITE]`/`[SKIP]`) между записями файлов, без повторения fact table, без эха содержимого файлов.
|
|
489
|
+
- **Rule E** — Батчевая идемпотентная проверка: один `Glob` в начале PHASE 2 вместо per-target `Read` вызовов.
|
|
490
|
+
|
|
491
|
+
**Pass 4** создаёт каркас слоя L4 Memory: файлы персистентного командного знания (decision-log, failure-patterns, политика компакции, auto-rule-update) плюс правила `60.memory/`, которые указывают будущим сессиям, когда и как читать/записывать эти файлы. Слой памяти — это то, что позволяет Claude Code накапливать уроки между сессиями, а не открывать их заново каждый раз. Когда `--lang` не английский, статический контент фолбэка переводится через Claude перед записью. v2.1.0 добавляет gap-fill для `skills/00.shared/MANIFEST.md` на случай, если Pass 3c его пропустил.
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Структура сгенерированных файлов
|
|
496
|
+
|
|
497
|
+
```
|
|
498
|
+
your-project/
|
|
499
|
+
│
|
|
500
|
+
├── CLAUDE.md ← Точка входа Claude Code
|
|
501
|
+
│
|
|
502
|
+
├── .claude/
|
|
503
|
+
│ └── rules/ ← Правила, срабатывающие по glob
|
|
504
|
+
│ ├── 00.core/
|
|
505
|
+
│ ├── 10.backend/
|
|
506
|
+
│ ├── 20.frontend/
|
|
507
|
+
│ ├── 30.security-db/
|
|
508
|
+
│ ├── 40.infra/
|
|
509
|
+
│ ├── 50.sync/ ← Правила напоминания о синхронизации
|
|
510
|
+
│ └── 60.memory/ ← Правила on-demand-scope для L4 memory (v2.0.0)
|
|
511
|
+
│
|
|
512
|
+
├── claudeos-core/ ← Основная выходная директория
|
|
513
|
+
│ ├── generated/ ← JSON анализа + динамические промпты + Pass-маркеры (gitignore)
|
|
514
|
+
│ │ ├── project-analysis.json ← Информация о стеке (multi-stack)
|
|
515
|
+
│ │ ├── domain-groups.json ← Группы с type: backend/frontend
|
|
516
|
+
│ │ ├── pass1-backend-prompt.md ← Backend-промпт анализа
|
|
517
|
+
│ │ ├── pass1-frontend-prompt.md ← Frontend-промпт анализа (если обнаружен)
|
|
518
|
+
│ │ ├── pass2-prompt.md ← Промпт слияния
|
|
519
|
+
│ │ ├── pass2-merged.json ← Вывод Pass 2 (потребляется только Pass 3a)
|
|
520
|
+
│ │ ├── pass3-context.json ← Облегчённая сводка (< 5 KB) для Pass 3 (v2.1.0)
|
|
521
|
+
│ │ ├── pass3-prompt.md ← Шаблон промпта Pass 3 (с предвставленным блоком Phase 1)
|
|
522
|
+
│ │ ├── pass3a-facts.md ← Fact sheet, записываемый Pass 3a, читаемый 3b/3c/3d (v2.1.0)
|
|
523
|
+
│ │ ├── pass4-prompt.md ← Промпт memory scaffolding (v2.0.0)
|
|
524
|
+
│ │ ├── pass3-complete.json ← Маркер завершения Pass 3 (split-режим: включает groupsCompleted, v2.1.0)
|
|
525
|
+
│ │ ├── pass4-memory.json ← Маркер завершения Pass 4 (пропуск при resume)
|
|
526
|
+
│ │ ├── rule-manifest.json ← Индекс файлов для инструментов верификации
|
|
527
|
+
│ │ ├── sync-map.json ← Маппинг Plan ↔ disk (пустой в v2.1.0; сохранён для совместимости sync-checker)
|
|
528
|
+
│ │ ├── stale-report.json ← Консолидированные результаты верификации
|
|
529
|
+
│ │ ├── .i18n-cache-<lang>.json ← Кэш переводов (неанглийский `--lang`)
|
|
530
|
+
│ │ └── .staged-rules/ ← Временная staging-директория для записей `.claude/rules/` (авто-перемещение + очистка)
|
|
531
|
+
│ ├── standard/ ← Стандарты кодирования (15-19 файлов + per-domain в 60.domains/)
|
|
532
|
+
│ │ ├── 00.core/ ← Обзор, архитектура, именование
|
|
533
|
+
│ │ ├── 10.backend-api/ ← API-паттерны (стек-специфические)
|
|
534
|
+
│ │ ├── 20.frontend-ui/ ← Frontend-паттерны (если обнаружены)
|
|
535
|
+
│ │ ├── 30.security-db/ ← Безопасность, схема БД, утилиты
|
|
536
|
+
│ │ ├── 40.infra/ ← Конфиг, логирование, CI/CD
|
|
537
|
+
│ │ ├── 50.verification/ ← Верификация сборки, тестирование
|
|
538
|
+
│ │ ├── 60.domains/ ← Per-domain стандарты (записываются Pass 3b-N, v2.1.0)
|
|
539
|
+
│ │ └── 90.optional/ ← Опциональные конвенции (стек-специфические дополнения)
|
|
540
|
+
│ ├── skills/ ← Skills для CRUD/page scaffolding
|
|
541
|
+
│ │ └── 00.shared/MANIFEST.md ← Единственный источник истины для зарегистрированных skills
|
|
542
|
+
│ ├── guide/ ← Онбординг, FAQ, troubleshooting (9 файлов)
|
|
543
|
+
│ ├── database/ ← Схема БД, гайд миграций
|
|
544
|
+
│ ├── mcp-guide/ ← Гайд интеграции MCP-сервера
|
|
545
|
+
│ └── memory/ ← L4: знания команды (4 файла) — коммитить
|
|
546
|
+
│ ├── decision-log.md ← "Почему" за дизайн-решениями
|
|
547
|
+
│ ├── failure-patterns.md ← Повторяющиеся ошибки и фиксы (auto-score — `npx claudeos-core memory score`)
|
|
548
|
+
│ ├── compaction.md ← Стратегия 4-stage компакции (запустить `npx claudeos-core memory compact`)
|
|
549
|
+
│ └── auto-rule-update.md ← Предложения по улучшению правил (`npx claudeos-core memory propose-rules`)
|
|
550
|
+
│
|
|
551
|
+
└── claudeos-core-tools/ ← Этот тулкит (не модифицировать)
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
Каждый standard-файл включает ✅ правильные примеры, ❌ неправильные примеры и сводную таблицу правил — всё извлечено из ваших реальных паттернов кода, а не из общих шаблонов.
|
|
555
|
+
|
|
556
|
+
> **Примечание v2.1.0:** `claudeos-core/plan/` больше не генерируется. Master plans были внутренним бэкапом, который Claude Code не потреблял в рантайме, а их агрегация в Pass 3 была основной причиной переполнения из-за накопления вывода. Используйте `git` для бэкапа/восстановления. Проекты, обновляющиеся с v2.0.x, могут безопасно удалить любую существующую директорию `claudeos-core/plan/`.
|
|
557
|
+
|
|
558
|
+
### Рекомендации по gitignore
|
|
559
|
+
|
|
560
|
+
**Коммитить** (командное знание — предназначено для обмена):
|
|
561
|
+
- `CLAUDE.md` — точка входа Claude Code
|
|
562
|
+
- `.claude/rules/**` — автозагружаемые правила
|
|
563
|
+
- `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — сгенерированная документация
|
|
564
|
+
- `claudeos-core/memory/**` — история решений, паттерны ошибок, предложения правил
|
|
565
|
+
|
|
566
|
+
**НЕ коммитить** (регенерируемые артефакты сборки):
|
|
567
|
+
|
|
568
|
+
```gitignore
|
|
569
|
+
# ClaudeOS-Core — сгенерированный анализ и кэш переводов
|
|
570
|
+
claudeos-core/generated/
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
Директория `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`.
|
|
574
|
+
|
|
575
|
+
---
|
|
576
|
+
|
|
577
|
+
## Автомасштабирование по размеру проекта
|
|
578
|
+
|
|
579
|
+
Split-режим Pass 3 масштабирует количество стадий по количеству доменов. Разбиение на батчи включается при 16 доменах, чтобы удерживать вывод каждой стадии под ~50 файлами — это эмпирически безопасный диапазон для `claude -p` до того, как начинается переполнение из-за накопления вывода.
|
|
580
|
+
|
|
581
|
+
| Размер проекта | Домены | Стадий Pass 3 | Всего `claude -p` | Расч. время |
|
|
582
|
+
|---|---|---|---|---|
|
|
583
|
+
| Малый | 1–4 | 4 (`3a`, `3b-core`, `3c-core`, `3d-aux`) | 7 (Pass 1 + 2 + 4 стадии Pass 3 + Pass 4) | ~10–15 мин |
|
|
584
|
+
| Средний | 5–15 | 4 | 8–9 | ~25–45 мин |
|
|
585
|
+
| Крупный | 16–30 | **8** (3b, 3c каждая делится на 2 батча) | 11–12 | **~60–105 мин** |
|
|
586
|
+
| X-Крупный | 31–45 | 10 | 13–14 | ~100–150 мин |
|
|
587
|
+
| XX-Крупный | 46–60 | 12 | 15–16 | ~150–200 мин |
|
|
588
|
+
| XXX-Крупный | 61+ | 14+ | 17+ | 200 мин+ |
|
|
589
|
+
|
|
590
|
+
Формула количества стадий (при разбиении на батчи): `1 (3a) + 1 (3b-core) + N (3b-1..N) + 1 (3c-core) + N (3c-1..N) + 1 (3d-aux) = 2N + 4`, где `N = ceil(totalDomains / 15)`.
|
|
591
|
+
|
|
592
|
+
Pass 4 (memory scaffolding) добавляет от ~30 секунд до 5 минут сверху, в зависимости от того, запускается ли Claude-driven генерация или статический фолбэк. Для мульти-стек проектов (например, Java + React) backend- и frontend-домены считаются вместе. Проект с 6 backend + 4 frontend доменами = 10 суммарно = уровень «Средний».
|
|
593
|
+
|
|
594
|
+
### Реальный production-кейс: 18-доменный admin-фронтенд (2026-04-20)
|
|
595
|
+
|
|
596
|
+
Admin-фронтенд на React 19 + Vite 6 + TypeScript с 18 доменами и 6 доменными группами завершился end-to-end за **102 минуты со 101 сгенерированным файлом**. Разбивка по стадиям:
|
|
597
|
+
|
|
598
|
+
| Стадия | Файлы | Время | Файлов/мин |
|
|
599
|
+
|---|---|---|---|
|
|
600
|
+
| `3a` (извлечение фактов) | 1 (`pass3a-facts.md`) | 8м 44с | — |
|
|
601
|
+
| `3b-core` (CLAUDE.md + общее) | 24 | 22м 10с | 1.1 |
|
|
602
|
+
| `3b-1` (15 доменов) | 30 | 10м 6с | **3.0** |
|
|
603
|
+
| `3b-2` (3 домена) | 6 | 4м 34с | 1.3 |
|
|
604
|
+
| `3c-core` (гайды + общее) | 11 | 8м 31с | 1.3 |
|
|
605
|
+
| `3c-1` (15 доменов) | 8 | 5м 11с | **1.5** |
|
|
606
|
+
| `3c-2` (3 домена) | 3 | 3м 50с | 0.8 |
|
|
607
|
+
| `3d-aux` (database + mcp) | 3 | 2м 52с | 1.0 |
|
|
608
|
+
| Pass 4 | 12 | 5м 36с | 2.1 |
|
|
609
|
+
|
|
610
|
+
Пропускная способность заметно выше на доменных батчевых стадиях (3b-1: 3.0 файлов/мин vs. 3b-core: 1.1 файлов/мин), потому что стадии со свежим контекстом выигрывают от компактных повторяющихся per-domain паттернов. Верификация вся зелёная: `plan-validator`, `sync-checker`, `content-validator`, `pass-json-validator` — ноль отказов переполнения, ноль усечений.
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
## Инструменты верификации
|
|
615
|
+
|
|
616
|
+
ClaudeOS-Core включает 5 встроенных инструментов верификации, автоматически запускаемых после генерации:
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
# Запустить все проверки сразу (рекомендуется)
|
|
620
|
+
npx claudeos-core health
|
|
621
|
+
|
|
622
|
+
# Отдельные команды
|
|
623
|
+
npx claudeos-core validate # Сравнение Plan ↔ disk
|
|
624
|
+
npx claudeos-core refresh # Синхронизация Disk → Plan
|
|
625
|
+
npx claudeos-core restore # Восстановление Plan → Disk
|
|
626
|
+
|
|
627
|
+
# Или использовать node напрямую (пользователи git clone)
|
|
628
|
+
node claudeos-core-tools/health-checker/index.js
|
|
629
|
+
node claudeos-core-tools/manifest-generator/index.js
|
|
630
|
+
node claudeos-core-tools/plan-validator/index.js --check
|
|
631
|
+
node claudeos-core-tools/sync-checker/index.js
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
| Инструмент | Функция |
|
|
635
|
+
|---|---|
|
|
636
|
+
| **manifest-generator** | Строит JSON метаданных (`rule-manifest.json`, `sync-map.json`, инициализирует `stale-report.json`); индексирует 7 директорий, включая `memory/` (`totalMemory` в summary). v2.1.0: `plan-manifest.json` больше не генерируется, поскольку master plans были удалены. |
|
|
637
|
+
| **plan-validator** | Валидирует блоки `<file>` из master plan против диска для проектов, у которых всё ещё есть `claudeos-core/plan/` (legacy upgrade-случай). v2.1.0: пропускает эмиссию `plan-sync-status.json`, когда `plan/` отсутствует или пуст — `stale-report.json` всё равно записывает проходящий no-op. |
|
|
638
|
+
| **sync-checker** | Обнаруживает незарегистрированные файлы (на диске, но не в плане) и осиротевшие записи — покрывает 7 директорий (`memory/` добавлена в v2.0.0). Завершается чисто, когда `sync-map.json` не имеет маппингов (состояние по умолчанию в v2.1.0). |
|
|
639
|
+
| **content-validator** | 9-секционная проверка качества — пустые файлы, отсутствующие ✅/❌ примеры, обязательные секции плюс целостность каркаса L4 memory (даты заголовков decision-log, обязательные поля failure-pattern, fence-aware парсинг) |
|
|
640
|
+
| **pass-json-validator** | Валидирует структуру JSON Pass 1–4 плюс completion-маркеры `pass3-complete.json` (split-mode shape, v2.1.0) и `pass4-memory.json` |
|
|
641
|
+
|
|
642
|
+
---
|
|
643
|
+
|
|
644
|
+
## Как Claude Code использует вашу документацию
|
|
645
|
+
|
|
646
|
+
ClaudeOS-Core генерирует документацию, которую Claude Code действительно читает — вот как:
|
|
647
|
+
|
|
648
|
+
### Что Claude Code читает автоматически
|
|
649
|
+
|
|
650
|
+
| Файл | Когда | Гарантировано |
|
|
651
|
+
|---|---|---|
|
|
652
|
+
| `CLAUDE.md` | В начале каждого диалога | Всегда |
|
|
653
|
+
| `.claude/rules/00.core/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
|
|
654
|
+
| `.claude/rules/10.backend/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
|
|
655
|
+
| `.claude/rules/20.frontend/*` | При редактировании любого фронтенд-файла (ограничено путями компонентов/страниц/стилей) | Условно |
|
|
656
|
+
| `.claude/rules/30.security-db/*` | При редактировании любого файла (`paths: ["**/*"]`) | Всегда |
|
|
657
|
+
| `.claude/rules/40.infra/*` | Только при редактировании config/infra-файлов (ограниченные пути) | Условно |
|
|
658
|
+
| `.claude/rules/50.sync/*` | Только при редактировании claudeos-core-файлов (ограниченные пути) | Условно |
|
|
659
|
+
| `.claude/rules/60.memory/*` | При редактировании `claudeos-core/memory/*` (ограничено путями memory) — инструктирует **как** читать/записывать on-demand memory-слой | Условно (v2.0.0) |
|
|
660
|
+
|
|
661
|
+
### Что Claude Code читает по запросу через ссылки в правилах
|
|
662
|
+
|
|
663
|
+
Каждый файл правила ссылается на соответствующий standard через секцию `## Reference`. Claude читает только релевантный для текущей задачи standard:
|
|
664
|
+
|
|
665
|
+
- `claudeos-core/standard/**` — паттерны кода, ✅/❌ примеры, конвенции именования
|
|
666
|
+
- `claudeos-core/database/**` — схема БД (для запросов, мапперов, миграций)
|
|
667
|
+
- `claudeos-core/memory/**` (v2.0.0) — слой командного знания L4; **не** автозагружается (был бы слишком шумным для каждого диалога). Вместо этого правила `60.memory/*` указывают Claude, *когда* читать эти файлы: в начале сессии (обзор свежего `decision-log.md` + high-importance `failure-patterns.md`), и append-on-demand при принятии решений или столкновении с повторяющимися ошибками.
|
|
668
|
+
|
|
669
|
+
`00.standard-reference.md` служит каталогом всех standard-файлов для обнаружения стандартов, у которых нет соответствующего правила.
|
|
670
|
+
|
|
671
|
+
### Что Claude Code НЕ читает (экономит контекст)
|
|
672
|
+
|
|
673
|
+
Эти папки явно исключены через секцию `DO NOT Read` в правиле standard-reference:
|
|
674
|
+
|
|
675
|
+
| Папка | Почему исключена |
|
|
676
|
+
|---|---|
|
|
677
|
+
| `claudeos-core/plan/` | Бэкапы Master Plan из legacy-проектов (v2.0.x и ранее). Не генерируется в v2.1.0. Если присутствует, Claude Code не загружает её автоматически — только чтение по запросу. |
|
|
678
|
+
| `claudeos-core/generated/` | JSON метаданных сборки, промпты, Pass-маркеры, кэш переводов, `.staged-rules/`. Не для кодинга. |
|
|
679
|
+
| `claudeos-core/guide/` | Онбординг-гайды для людей. |
|
|
680
|
+
| `claudeos-core/mcp-guide/` | Документация MCP-сервера. Не для кодинга. |
|
|
681
|
+
| `claudeos-core/memory/` (автозагрузка) | **Автозагрузка отключена** by design — раздула бы контекст на каждом диалоге. Вместо этого читается on-demand через правила `60.memory/*` (например, скан `failure-patterns.md` в начале сессии). Всегда коммитьте эти файлы. |
|
|
682
|
+
|
|
683
|
+
---
|
|
684
|
+
|
|
685
|
+
## Ежедневный рабочий процесс
|
|
686
|
+
|
|
687
|
+
### После установки
|
|
688
|
+
|
|
689
|
+
```
|
|
690
|
+
# Просто пользуйтесь Claude Code как обычно — он автоматически ссылается на ваши стандарты:
|
|
691
|
+
"Создай CRUD для домена order"
|
|
692
|
+
"Добавь API обновления профиля пользователя"
|
|
693
|
+
"Отрефактори этот код под паттерны проекта"
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### После ручного редактирования стандартов
|
|
697
|
+
|
|
698
|
+
```bash
|
|
699
|
+
# После редактирования файлов стандартов или правил:
|
|
700
|
+
npx claudeos-core refresh
|
|
701
|
+
|
|
702
|
+
# Проверить согласованность всего
|
|
703
|
+
npx claudeos-core health
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
### Когда документация повреждена
|
|
707
|
+
|
|
708
|
+
```bash
|
|
709
|
+
# Рекомендация v2.1.0: используйте git для восстановления (так как master plans
|
|
710
|
+
# больше не генерируются). Коммитьте сгенерированные документы регулярно, чтобы
|
|
711
|
+
# можно было откатить отдельные файлы без регенерации:
|
|
712
|
+
git checkout HEAD -- .claude/rules/ claudeos-core/
|
|
713
|
+
|
|
714
|
+
# Legacy (проекты v2.0.x с всё ещё присутствующим claudeos-core/plan/):
|
|
715
|
+
npx claudeos-core restore
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
### Обслуживание Memory-слоя (v2.0.0)
|
|
719
|
+
|
|
720
|
+
Слой L4 Memory (`claudeos-core/memory/`) накапливает командное знание между сессиями. Три CLI-подкоманды поддерживают его в здоровом состоянии:
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
# Compact: применить политику 4-stage компакции (периодически — например, ежемесячно)
|
|
724
|
+
npx claudeos-core memory compact
|
|
725
|
+
# Stage 1: резюмировать устаревшие записи (>30 дней, тело → одна строка)
|
|
726
|
+
# Stage 2: слить дубликаты заголовков (частоты суммируются, последний фикс сохраняется)
|
|
727
|
+
# Stage 3: удалить low-importance + устаревшее (importance <3 И lastSeen >60 дней)
|
|
728
|
+
# Stage 4: применить лимит 400 строк на файл (старейшие low-importance удаляются первыми)
|
|
729
|
+
|
|
730
|
+
# Score: пересчитать ранги записей failure-patterns.md по importance
|
|
731
|
+
npx claudeos-core memory score
|
|
732
|
+
# importance = round(frequency × 1.5 + recency × 5), ограничено 10
|
|
733
|
+
# Запускать после добавления нескольких новых failure-паттернов
|
|
734
|
+
|
|
735
|
+
# Propose-rules: выявить кандидатов на добавление правил из повторяющихся ошибок
|
|
736
|
+
npx claudeos-core memory propose-rules
|
|
737
|
+
# Читает записи failure-patterns.md с frequency ≥ 3
|
|
738
|
+
# Вычисляет confidence (сигмоида на взвешенных доказательствах × anchor-множитель)
|
|
739
|
+
# Пишет предложения в memory/auto-rule-update.md (НЕ автоприменяются)
|
|
740
|
+
# Confidence ≥ 0.70 заслуживает серьёзного рассмотрения; принять → редактировать правило + логировать решение
|
|
741
|
+
|
|
742
|
+
# v2.1.0: `memory --help` теперь маршрутизирует к справке подкоманды (раньше показывался top-level)
|
|
743
|
+
npx claudeos-core memory --help
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
> **Фиксы v2.1.0:** `memory score` больше не оставляет дублирующие строки `importance` после первого прогона (раньше auto-scored строка добавлялась сверху, а оригинальная plain-строка оставалась ниже). Маркер summary для Stage 1 в `memory compact` теперь является корректным markdown-элементом списка (`- _Summarized on ..._`), поэтому рендерится чисто и корректно повторно парсится при последующих компакциях.
|
|
747
|
+
|
|
748
|
+
Когда писать в memory (Claude делает это по запросу, но можно редактировать и вручную):
|
|
749
|
+
- **`decision-log.md`** — добавить новую запись при выборе между конкурирующими паттернами, выборе библиотеки, определении командной конвенции или решении НЕ делать что-то. Только append; никогда не редактировать исторические записи.
|
|
750
|
+
- **`failure-patterns.md`** — добавлять при **втором появлении** повторяющейся ошибки или неочевидной root cause. Первичные ошибки не требуют записи.
|
|
751
|
+
- `compaction.md` и `auto-rule-update.md` — генерируются/управляются указанными выше CLI-подкомандами; не редактировать вручную.
|
|
752
|
+
|
|
753
|
+
### Интеграция CI/CD
|
|
754
|
+
|
|
755
|
+
```yaml
|
|
756
|
+
# Пример GitHub Actions
|
|
757
|
+
- run: npx claudeos-core validate
|
|
758
|
+
# Exit code 1 блокирует PR
|
|
759
|
+
|
|
760
|
+
# Опционально: ежемесячное обслуживание memory (отдельный cron-workflow)
|
|
761
|
+
- run: npx claudeos-core memory compact
|
|
762
|
+
- run: npx claudeos-core memory score
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
## Чем это отличается?
|
|
768
|
+
|
|
769
|
+
### vs. другие инструменты Claude Code
|
|
770
|
+
|
|
771
|
+
| | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
|
|
772
|
+
|---|---|---|---|---|---|
|
|
773
|
+
| **Подход** | Код анализирует первым, затем LLM генерирует | Предсобранные Config-пресеты | LLM проектирует Agent-команды | LLM генерирует Spec-документы | LLM пишет CLAUDE.md |
|
|
774
|
+
| **Читает ваш исходный код** | ✅ Детерминированный статический анализ | ❌ | ❌ | ❌ (LLM читает) | ❌ (LLM читает) |
|
|
775
|
+
| **Определение стека** | Код подтверждает (ORM, БД, build-tool, pkg-manager) | Н/Д (стек-агностично) | LLM угадывает | LLM угадывает | LLM угадывает |
|
|
776
|
+
| **Определение доменов** | Код подтверждает (Java 5 паттернов, Kotlin CQRS, Next.js FSD) | Н/Д | LLM угадывает | Н/Д | Н/Д |
|
|
777
|
+
| **Одинаковый проект → одинаковый результат** | ✅ Детерминированный анализ | ✅ (статические файлы) | ❌ (LLM варьируется) | ❌ (LLM варьируется) | ❌ (LLM варьируется) |
|
|
778
|
+
| **Обработка крупных проектов** | Разбиение на группы доменов (4 домена / 40 файлов на группу) | Н/Д | Без разбиения | Без разбиения | Лимит context window |
|
|
779
|
+
| **Вывод** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ файлов) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 spec-документов | CLAUDE.md (1 файл) |
|
|
780
|
+
| **Место вывода** | `.claude/rules/` (автозагружается Claude Code) | `.claude/` разное | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
|
|
781
|
+
| **Верификация после генерации** | ✅ 5 автоматических валидаторов | ❌ | ❌ | ❌ | ❌ |
|
|
782
|
+
| **Мультиязычный вывод** | ✅ 10 языков | ❌ | ❌ | ❌ | ❌ |
|
|
783
|
+
| **Мульти-стек** | ✅ Backend + Frontend одновременно | ❌ Стек-агностично | ❌ | ❌ | Частично |
|
|
784
|
+
| **Персистентный memory-слой** | ✅ L4 — decision log + failure patterns + auto-scored предложения правил (v2.0.0) | ❌ | ❌ | ❌ | ❌ |
|
|
785
|
+
| **Оркестрация агентов** | ❌ | ✅ 28 агентов | ✅ 6 паттернов | ❌ | ❌ |
|
|
786
|
+
|
|
787
|
+
### Ключевое различие одним предложением
|
|
788
|
+
|
|
789
|
+
**Другие инструменты дают Claude «в целом хорошие инструкции». ClaudeOS-Core даёт Claude «инструкции, извлечённые из вашего реального кода».**
|
|
790
|
+
|
|
791
|
+
Именно поэтому Claude Code перестаёт генерировать JPA-код в вашем MyBatis-проекте,
|
|
792
|
+
перестаёт использовать `success()`, когда ваша кодовая база использует `ok()`,
|
|
793
|
+
и перестаёт создавать директории `user/controller/`, когда ваш проект использует `controller/user/`.
|
|
794
|
+
|
|
795
|
+
### Взаимодополняющее, не конкурирующее
|
|
796
|
+
|
|
797
|
+
ClaudeOS-Core фокусируется на **проектно-специфичных правилах и стандартах**.
|
|
798
|
+
Другие инструменты фокусируются на **оркестрации агентов и workflow**.
|
|
799
|
+
|
|
800
|
+
Вы можете использовать ClaudeOS-Core для генерации правил вашего проекта, а затем ECC или Harness поверх для агент-команд и автоматизации workflow. Они решают разные задачи.
|
|
801
|
+
|
|
802
|
+
---
|
|
803
|
+
|
|
804
|
+
## FAQ
|
|
805
|
+
|
|
806
|
+
**В: Модифицирует ли он мой исходный код?**
|
|
807
|
+
Нет. Создаёт только `CLAUDE.md`, `.claude/rules/` и `claudeos-core/`. Ваш существующий код никогда не модифицируется.
|
|
808
|
+
|
|
809
|
+
**В: Сколько это стоит?**
|
|
810
|
+
Он вызывает `claude -p` несколько раз на протяжении 4 проходов. В split-режиме v2.1.0 только Pass 3 разворачивается в 4–14+ стадий в зависимости от размера проекта (см. [Автомасштабирование](#автомасштабирование-по-размеру-проекта)). Типичный малый проект (1–15 доменов) использует в сумме 8–9 вызовов `claude -p`; 18-доменный проект использует 11; 60-доменный проект использует 15–17. Каждая стадия запускается со свежим context window — per-call стоимость токенов в действительности ниже, чем была у single-call Pass 3, потому что ни одна стадия не должна удерживать всё дерево файлов в одном контексте. Когда `--lang` не английский, путь статического фолбэка может вызвать несколько дополнительных `claude -p` для перевода; результаты кэшируются в `claudeos-core/generated/.i18n-cache-<lang>.json`, так что последующие запуски их переиспользуют. Это в пределах нормального использования Claude Code.
|
|
811
|
+
|
|
812
|
+
**В: Что такое Pass 3 split-режим и зачем он был добавлен в v2.1.0?**
|
|
813
|
+
До v2.1.0 Pass 3 делал один вызов `claude -p`, который должен был выдать всё сгенерированное дерево файлов (`CLAUDE.md`, стандарты, правила, skills, гайды — обычно 30–60 файлов) в одном ответе. Это работало на малых проектах, но стабильно падало с ошибкой `Prompt is too long` (переполнение из-за накопления вывода) около 5 доменов. Отказ не был предсказуем по размеру входа — он зависел от того, насколько многословным оказался каждый сгенерированный файл, и мог случаться на одном и том же проекте эпизодически. Split-режим структурно обходит проблему: Pass 3 разбивается на последовательные стадии (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), каждая из которых — отдельный вызов `claude -p` со свежим context window. Кросс-стейджевая согласованность сохраняется через `pass3a-facts.md` — дистиллированный fact sheet размером 5–10 KB, на который ссылается каждая последующая стадия вместо повторного чтения `pass2-merged.json`. Маркер `pass3-complete.json` несёт массив `groupsCompleted`, так что краш во время `3c-2` возобновляется с `3c-2` (а не с `3a`), избегая двойного расхода токенов. Эмпирически проверено до 18 доменов × 101 файл × 102 минут с нулевыми переполнениями — см. [Автомасштабирование](#автомасштабирование-по-размеру-проекта) для реальной production-разбивки.
|
|
814
|
+
|
|
815
|
+
**В: Стоит ли коммитить сгенерированные файлы в Git?**
|
|
816
|
+
Да, рекомендуется. Ваша команда может использовать одинаковые стандарты Claude Code. Подумайте о добавлении `claudeos-core/generated/` в `.gitignore` (JSON анализа регенерируется).
|
|
817
|
+
|
|
818
|
+
**В: Что насчёт проектов со смешанным стеком (например, Java backend + React frontend)?**
|
|
819
|
+
Полностью поддерживается. ClaudeOS-Core автоматически определяет оба стека, тегирует домены как `backend` или `frontend` и использует стек-специфические промпты анализа для каждого. Pass 2 сливает всё, а Pass 3 генерирует стандарты и backend, и frontend на своих split-стадиях — backend-домены идут в одни батчи 3b/3c, frontend-домены — в другие, и все они ссылаются на один и тот же `pass3a-facts.md` для согласованности.
|
|
820
|
+
|
|
821
|
+
**В: Работает ли он с Turborepo / pnpm workspaces / Lerna-монорепо?**
|
|
822
|
+
Да. ClaudeOS-Core обнаруживает `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` или `package.json#workspaces` и автоматически сканирует файлы `package.json` в под-пакетах на фреймворк/ORM/БД-зависимости. Сканирование доменов покрывает паттерны `apps/*/src/` и `packages/*/src/`. Запускать из корня монорепо.
|
|
823
|
+
|
|
824
|
+
**В: Что происходит при повторном запуске?**
|
|
825
|
+
Если существуют предыдущие результаты Pass 1/2, интерактивный промпт позволяет выбрать: **Continue** (продолжить с места остановки) или **Fresh** (удалить всё и начать заново). Используйте `--force`, чтобы пропустить промпт и всегда начинать заново. В split-режиме v2.1.0 resume Pass 3 работает на уровне гранулярности стадий — если прогон упал во время `3c-2`, следующий `init` возобновляется с `3c-2`, а не перезапускается с `3a` (что удвоило бы расход токенов). Маркер `pass3-complete.json` записывает `mode: "split"` плюс массив `groupsCompleted`, чтобы управлять этой логикой.
|
|
826
|
+
|
|
827
|
+
**В: Получает ли NestJS свой собственный шаблон или использует Express?**
|
|
828
|
+
NestJS использует выделенный шаблон `node-nestjs` с NestJS-специфичными категориями анализа: декораторы `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, DI-контейнер, CQRS-паттерны и `Test.createTestingModule`. Express-проекты используют отдельный шаблон `node-express`.
|
|
829
|
+
|
|
830
|
+
**В: Что насчёт проектов Vue / Nuxt?**
|
|
831
|
+
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`.
|
|
832
|
+
|
|
833
|
+
**В: Поддерживает ли он Kotlin?**
|
|
834
|
+
Да. ClaudeOS-Core автоматически обнаруживает Kotlin из `build.gradle.kts` или kotlin-плагина в `build.gradle`. Он использует выделенный шаблон `kotlin-spring` с Kotlin-специфичным анализом (data class, sealed class, coroutines, extension functions, MockK и др.).
|
|
835
|
+
|
|
836
|
+
**В: Что насчёт CQRS / BFF архитектуры?**
|
|
837
|
+
Полностью поддерживается для Kotlin мультимодульных проектов. ClaudeOS-Core читает `settings.gradle.kts`, определяет типы модулей (command, query, bff, integration) из имён модулей и группирует один домен между Command/Query модулями. Сгенерированные стандарты включают отдельные правила для command-контроллеров vs query-контроллеров, BFF/Feign паттерны и конвенции межмодульной коммуникации.
|
|
838
|
+
|
|
839
|
+
**В: Что насчёт Gradle мультимодульных монорепо?**
|
|
840
|
+
ClaudeOS-Core сканирует все подмодули (`**/src/main/kotlin/**/*.kt`) независимо от глубины вложенности. Типы модулей выводятся из конвенций именования (например, `reservation-command-server` → домен: `reservation`, тип: `command`). Общие библиотеки (`shared-lib`, `integration-lib`) также обнаруживаются.
|
|
841
|
+
|
|
842
|
+
**В: Что такое слой L4 Memory (v2.0.0)? Стоит ли коммитить `claudeos-core/memory/`?**
|
|
843
|
+
Да — **всегда коммитьте** `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 в начале сессии). Это держит стоимость контекста низкой, сохраняя долгосрочное знание.
|
|
844
|
+
|
|
845
|
+
**В: Что если Pass 4 падает?**
|
|
846
|
+
Автоматический пайплайн (`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`, так что последующие запуски их переиспользуют.
|
|
847
|
+
|
|
848
|
+
**В: Что делают `memory compact` / `memory score` / `memory propose-rules`?**
|
|
849
|
+
См. секцию [Обслуживание Memory-слоя](#обслуживание-memory-слоя-v200) выше. Кратко: `compact` запускает 4-stage политику (резюмирование устаревшего, слияние дубликатов, удаление устаревшего low-importance, применение лимита 400 строк); `score` пересчитывает ранги `failure-patterns.md` по importance (frequency × recency); `propose-rules` выводит кандидатов на добавление правил из повторяющихся ошибок в `auto-rule-update.md` (не автоприменяется — просмотреть и принять/отклонить вручную).
|
|
850
|
+
|
|
851
|
+
**В: Почему `--force` (или режим resume «fresh») удаляет `.claude/rules/`?**
|
|
852
|
+
v2.0.0 добавил три Guard'а Pass 3 против silent-failure (Guard 3 покрывает два варианта incomplete-output: H2 для `guide/` и H1 для `standard/skills`). Guard 1 («частичное перемещение staged-rules») и Guard 3 («неполный вывод — отсутствующие/пустые guide-файлы или отсутствующий standard-sentinel / пустые skills») не зависят от существующих правил, но Guard 2 («обнаружено ноль правил») зависит — он срабатывает, когда Claude игнорирует директиву `staging-override.md` и пытается писать напрямую в `.claude/` (где политика чувствительных путей Claude Code это блокирует). Устаревшие правила от предыдущего запуска дали бы Guard 2 false-negative — поэтому `--force`/`fresh` очищает `.claude/rules/`, чтобы обеспечить чистое обнаружение. **Ручные правки файлов правил будут потеряны** при `--force`/`fresh`; сделайте бэкап при необходимости. (Примечание v2.1.0: Guard 3 H1 больше не проверяет `plan/`, поскольку master plans больше не генерируются.)
|
|
853
|
+
|
|
854
|
+
**В: Что такое `claudeos-core/generated/.staged-rules/` и зачем она существует?**
|
|
855
|
+
Политика чувствительных путей Claude Code отказывает в прямой записи в `.claude/` из подпроцесса `claude -p` (даже с `--dangerously-skip-permissions`). v2.0.0 обходит это, заставляя промпты Pass 3/4 перенаправлять все записи `.claude/rules/` в staging-директорию; оркестратор на Node.js (не подпадающий под эту политику) затем перемещает staged-дерево в `.claude/rules/` после каждого прохода. Это прозрачно для пользователя — директория автосоздаётся, автоочищается и автоперемещается. Если предыдущий запуск упал в середине перемещения, следующий запуск очищает staging-директорию перед повтором. В split-режиме v2.1.0 stage-раннер перемещает staged-правила в `.claude/rules/` после каждой стадии (не только в конце), так что краш в середине Pass 3 всё равно оставляет правила предыдущих завершённых стадий на месте.
|
|
856
|
+
|
|
857
|
+
**В: Можно ли запускать Pass 3 вручную вместо `npx claudeos-core init`?**
|
|
858
|
+
Да для малых проектов (≤5 доменов) — инструкции для single-call ручного режима в [Шаге 6](#шаг-6-pass-3--генерация-всей-документации-разбита-на-несколько-стадий) всё ещё работают. Для более крупных проектов следует использовать `npx claudeos-core init`, потому что split-раннер — это то, что оркестрирует постадийное выполнение со свежими контекстами, обрабатывает разбиение на батчи при ≥16 доменов, записывает корректную форму маркера `pass3-complete.json` (`mode: "split"` + `groupsCompleted`) и перемещает staged-правила между стадиями. Воспроизвести эту оркестрацию вручную возможно, но утомительно. Если у вас есть причина запускать стадии вручную (например, отладка конкретной стадии), можно подставить шаблон `pass3-prompt.md` с соответствующей директивой `STAGE:` и подать его `claude -p` напрямую — но не забудьте переместить `.staged-rules/` после каждой стадии и обновить маркер самостоятельно.
|
|
859
|
+
|
|
860
|
+
**В: Мой проект — апгрейд с v2.0.x, и у него есть существующая директория `claudeos-core/plan/`. Что делать?**
|
|
861
|
+
Ничего не требуется — инструменты v2.1.0 игнорируют `plan/`, когда она отсутствует или пуста, а `plan-validator` всё ещё обрабатывает legacy-проекты с заполненными директориями `plan/` для обратной совместимости. Вы можете безопасно удалить `claudeos-core/plan/`, если не нуждаетесь в бэкапах master plan (история git всё равно лучший бэкап). Если вы сохраните `plan/`, запуск `npx claudeos-core init` не будет её обновлять — новый контент не агрегируется в master plans в v2.1.0. Инструменты верификации обрабатывают оба случая чисто.
|
|
862
|
+
|
|
863
|
+
---
|
|
864
|
+
|
|
865
|
+
## Структура шаблонов
|
|
866
|
+
|
|
867
|
+
```
|
|
868
|
+
pass-prompts/templates/
|
|
869
|
+
├── common/ # Общий header/footer + pass4 + staging-override
|
|
870
|
+
├── java-spring/ # Java / Spring Boot
|
|
871
|
+
├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
|
|
872
|
+
├── node-express/ # Node.js / Express
|
|
873
|
+
├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
|
|
874
|
+
├── node-fastify/ # Node.js / Fastify
|
|
875
|
+
├── node-nextjs/ # Next.js / React (App Router, RSC)
|
|
876
|
+
├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
|
|
877
|
+
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
878
|
+
├── angular/ # Angular
|
|
879
|
+
├── python-django/ # Python / Django (DRF)
|
|
880
|
+
├── python-fastapi/ # Python / FastAPI
|
|
881
|
+
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
`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` комбинирует цели генерации обоих стеков. В v2.1.0 шаблон Pass 3 дополняется `common/pass3-phase1.md` (блок «Read Once, Extract Facts» с Rules A–E) перед тем, как нарезаться по стадиям split-режима. Pass 4 использует общий шаблон `common/pass4.md` (memory scaffolding) независимо от стека.
|
|
885
|
+
|
|
886
|
+
---
|
|
887
|
+
|
|
888
|
+
## Поддержка монорепо
|
|
889
|
+
|
|
890
|
+
ClaudeOS-Core автоматически обнаруживает JS/TS монорепо-настройки и сканирует под-пакеты на зависимости.
|
|
891
|
+
|
|
892
|
+
**Поддерживаемые маркеры монорепо** (автообнаружение):
|
|
893
|
+
- `turbo.json` (Turborepo)
|
|
894
|
+
- `pnpm-workspace.yaml` (pnpm workspaces)
|
|
895
|
+
- `lerna.json` (Lerna)
|
|
896
|
+
- `package.json#workspaces` (npm/yarn workspaces)
|
|
897
|
+
|
|
898
|
+
**Запуск из корня монорепо** — ClaudeOS-Core читает `apps/*/package.json` и `packages/*/package.json` для обнаружения фреймворк/ORM/БД-зависимостей в под-пакетах:
|
|
899
|
+
|
|
900
|
+
```bash
|
|
901
|
+
cd my-monorepo
|
|
902
|
+
npx claudeos-core init
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
**Что обнаруживается:**
|
|
906
|
+
- Зависимости из `apps/web/package.json` (например, `next`, `react`) → frontend-стек
|
|
907
|
+
- Зависимости из `apps/api/package.json` (например, `express`, `prisma`) → backend-стек
|
|
908
|
+
- Зависимости из `packages/db/package.json` (например, `drizzle-orm`) → ORM/БД
|
|
909
|
+
- Пользовательские пути workspace из `pnpm-workspace.yaml` (например, `services/*`)
|
|
910
|
+
|
|
911
|
+
**Сканирование доменов также покрывает раскладки монорепо:**
|
|
912
|
+
- `apps/api/src/modules/*/` и `apps/api/src/*/` для backend-доменов
|
|
913
|
+
- `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` для frontend-доменов
|
|
914
|
+
- `packages/*/src/*/` для доменов shared-пакетов
|
|
915
|
+
|
|
916
|
+
```
|
|
917
|
+
my-monorepo/ ← Запускайте здесь: npx claudeos-core init
|
|
918
|
+
├── turbo.json ← Автообнаружение как Turborepo
|
|
919
|
+
├── apps/
|
|
920
|
+
│ ├── web/ ← Next.js обнаружен из apps/web/package.json
|
|
921
|
+
│ │ ├── app/dashboard/ ← Frontend-домен обнаружен
|
|
922
|
+
│ │ └── package.json ← { "dependencies": { "next": "^14" } }
|
|
923
|
+
│ └── api/ ← Express обнаружен из apps/api/package.json
|
|
924
|
+
│ ├── src/modules/users/ ← Backend-домен обнаружен
|
|
925
|
+
│ └── package.json ← { "dependencies": { "express": "^4" } }
|
|
926
|
+
├── packages/
|
|
927
|
+
│ ├── db/ ← Drizzle обнаружен из packages/db/package.json
|
|
928
|
+
│ └── ui/
|
|
929
|
+
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
> **Примечание:** Для Kotlin/Java монорепо обнаружение мультимодулей использует `settings.gradle.kts` (см. [Обнаружение доменов Kotlin мультимодульных проектов](#обнаружение-доменов-kotlin-мультимодульных-проектов) выше) и не требует маркеров JS-монорепо.
|
|
933
|
+
|
|
934
|
+
## Устранение неполадок
|
|
935
|
+
|
|
936
|
+
**«claude: command not found»** — Claude Code CLI не установлен или не в PATH. См. [документацию Claude Code](https://code.claude.com/docs/en/overview).
|
|
937
|
+
|
|
938
|
+
**«npm install failed»** — Версия Node.js может быть слишком старой. Требуется v18+.
|
|
939
|
+
|
|
940
|
+
**«0 domains detected»** — Структура вашего проекта может быть нестандартной. См. паттерны обнаружения выше для вашего стека.
|
|
941
|
+
|
|
942
|
+
**«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/`.
|
|
943
|
+
|
|
944
|
+
**«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`.
|
|
945
|
+
|
|
946
|
+
**«CQRS not detected»** — Обнаружение архитектуры полагается на имена модулей, содержащие ключевые слова `command` и `query`. Если ваши модули используют другое именование (например, `write-server`, `read-server`), архитектура CQRS не будет автоматически обнаружена. Вы можете вручную скорректировать сгенерированные промпты после запуска plan-installer.
|
|
947
|
+
|
|
948
|
+
**«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` находится в начале.
|
|
949
|
+
|
|
950
|
+
**«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`.
|
|
951
|
+
|
|
952
|
+
**«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`, чтобы регенерировать с нуля.
|
|
953
|
+
|
|
954
|
+
**«Pass 3 finished but the following required output(s) are missing or empty» (v2.0.0, обновлено в v2.1.0)** — Сработал Guard 3 (H1): Claude обрезал ПОСЛЕ `claudeos-core/guide/`, но до (или во время) `claudeos-core/standard/` или `claudeos-core/skills/`. Требования: (a) `standard/00.core/01.project-overview.md` существует и не пуст (sentinel, записываемый промптом Pass 3 каждого стека), (b) `skills/` имеет ≥1 непустой `.md`. `database/` и `mcp-guide/` намеренно исключены (некоторые стеки законно производят ноль файлов). `plan/` больше не проверяется начиная с v2.1.0 (master plans были удалены). Тот же путь восстановления, что у Guard 3 (H2): перезапустить `init`, или `--force`, если повторяется.
|
|
955
|
+
|
|
956
|
+
**«Pass 3 split stage crashed partway through (v2.1.0)»** — Когда одна из split-стадий (например, `3b-1`, `3c-2`) падает в середине прогона, stage-level маркер НЕ записывается, но завершённые стадии ЗАПИСЫВАЮТСЯ в `pass3-complete.json.groupsCompleted`. Следующий запуск `init` читает этот массив и возобновляется с первой незавершённой стадии, пропуская всю ранее выполненную работу. Вам не нужно делать ничего вручную — просто перезапустите `npx claudeos-core init`. Если resume продолжает падать на одной и той же стадии, проверьте `claudeos-core/generated/pass3-prompt.md` на некорректное содержимое, затем попробуйте `--force` для полного перезапуска. Форма `pass3-complete.json` (`mode: "split"`, `groupsCompleted: [...]`) стабильна; отсутствующий или некорректный маркер приводит к повторному запуску всего Pass 3 с `3a`.
|
|
957
|
+
|
|
958
|
+
**«Pass 3 stale marker (shape mismatch) — treating as incomplete» (v2.1.0)** — `pass3-complete.json` от pre-v2.1.0 single-call прогона интерпретируется по новым правилам split-режима. Проверка формы ищет `mode: "split"` и массив `groupsCompleted`; если что-то из этого отсутствует, маркер трактуется как частичный, и Pass 3 перезапускается в split-режиме. Если вы обновились с v2.0.x, это ожидаемо один раз — следующий прогон запишет корректную форму маркера. Действий не требуется.
|
|
959
|
+
|
|
960
|
+
**«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`.
|
|
961
|
+
|
|
962
|
+
**«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`, чтобы пропустить перевод.
|
|
963
|
+
|
|
964
|
+
**«pass4-memory.json exists but memory/ is empty» (v2.0.0)** — Предыдущий запуск записал маркер, но пользователь (или cleanup-скрипт) удалил `claudeos-core/memory/`. CLI автоматически обнаруживает этот устаревший маркер и перезапускает Pass 4 на следующем `init`. Ручные действия не нужны.
|
|
965
|
+
|
|
966
|
+
**«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 автоматически перезапускается.
|
|
967
|
+
|
|
968
|
+
**«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`.
|
|
969
|
+
|
|
970
|
+
**«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`.
|
|
971
|
+
|
|
972
|
+
---
|
|
973
|
+
|
|
974
|
+
## Контрибьюции
|
|
975
|
+
|
|
976
|
+
Контрибьюции приветствуются! Области, где помощь нужна больше всего:
|
|
977
|
+
|
|
978
|
+
- **Новые шаблоны стеков** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
|
|
979
|
+
- **Интеграция с IDE** — расширение VS Code, плагин IntelliJ
|
|
980
|
+
- **CI/CD-шаблоны** — GitLab CI, CircleCI, примеры Jenkins (GitHub Actions уже поставлен — см. `.github/workflows/test.yml`)
|
|
981
|
+
- **Покрытие тестами** — расширение тестового пакета (в настоящее время 563 теста в 29 тестовых файлах, покрывающих сканеры, определение стека, группировку доменов, парсинг планов, генерацию промптов, 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 3 split-mode разбиение на батчи, Pass 3 partial-marker resume (v2.1.0), валидацию содержимого маркера Pass 4 + строгость stale-marker unlink + scaffoldSkillsManifest gap-fill (v2.1.0), translation env-skip guard + early fail-fast + CI workflow, перемещение staged-rules, lang-aware translation fallback, regression-сюиту удаления master plan (v2.1.0), регрессию форматирования memory score/compact (v2.1.0) и структуру шаблона AI Work Rules)
|
|
982
|
+
|
|
983
|
+
См. [`CONTRIBUTING.md`](./CONTRIBUTING.md) для полного списка областей, стиля кода, конвенции коммитов и пошагового руководства по добавлению нового шаблона стека.
|
|
984
|
+
|
|
985
|
+
---
|
|
986
|
+
|
|
987
|
+
## Автор
|
|
988
|
+
|
|
989
|
+
Создано **claudeos-core** — [GitHub](https://github.com/claudeos-core) · [Email](mailto:claudeoscore@gmail.com)
|
|
990
|
+
|
|
991
|
+
## Лицензия
|
|
992
|
+
|
|
993
|
+
ISC
|