@dzhechkov/p-replicator 1.5.5 → 1.5.7

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.
@@ -0,0 +1,1312 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ru" data-theme="auto">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
+ <title>@dzhechkov/p-replicator v1.5.0 — Документация</title>
7
+ <meta name="description" content="@dzhechkov/p-replicator — toolkit для AI-assisted разработки в Claude Code (Vibe Coding). 11 slash-команд, 10 skills, hooks, statusline, --feature-branches workflow для обучения. v1.5.0.">
8
+ <meta name="keywords" content="p-replicator, claude code, vibe coding, sparc, ai-assisted, npm, dzhechkov, /replicate, /run, /feature, statusline, claude-code-toolkit, prd, sparc-mini, requirements-validator">
9
+ <meta name="author" content="dzhechko">
10
+ <meta name="robots" content="index, follow">
11
+
12
+ <!-- Open Graph -->
13
+ <meta property="og:title" content="@dzhechkov/p-replicator v1.5.0">
14
+ <meta property="og:description" content="@dzhechkov/p-replicator — toolkit для AI-assisted разработки в Claude Code (Vibe Coding). 11 slash-команд, 10 skills, hooks, statusline, --feature-branches workflow для обучения. v1.5.0.">
15
+ <meta property="og:type" content="website">
16
+ <meta property="og:locale" content="ru_RU">
17
+ <meta property="og:site_name" content="P-Replicator Docs">
18
+
19
+ <!-- Twitter -->
20
+ <meta name="twitter:card" content="summary">
21
+ <meta name="twitter:title" content="@dzhechkov/p-replicator v1.5.0">
22
+ <meta name="twitter:description" content="@dzhechkov/p-replicator — toolkit для AI-assisted разработки в Claude Code (Vibe Coding). 11 slash-команд, 10 skills, hooks, statusline, --feature-branches workflow для обучения. v1.5.0.">
23
+
24
+ <!-- Theme color (browser chrome) -->
25
+ <meta name="theme-color" content="#0969da" media="(prefers-color-scheme: light)">
26
+ <meta name="theme-color" content="#0d1117" media="(prefers-color-scheme: dark)">
27
+
28
+ <!-- Canonical -->
29
+ <link rel="canonical" href="https://github.com/dzhechko/pu-unicorn-replicate#readme">
30
+
31
+ <!-- Structured data -->
32
+ <script type="application/ld+json">{
33
+ "@context": "https://schema.org",
34
+ "@type": "TechArticle",
35
+ "headline": "@dzhechkov/p-replicator v1.5.0 — Документация",
36
+ "description": "@dzhechkov/p-replicator — toolkit для AI-assisted разработки в Claude Code (Vibe Coding). 11 slash-команд, 10 skills, hooks, statusline, --feature-branches workflow для обучения. v1.5.0.",
37
+ "author": {
38
+ "@type": "Person",
39
+ "name": "dzhechko"
40
+ },
41
+ "datePublished": "2026-05-07",
42
+ "inLanguage": "ru",
43
+ "about": {
44
+ "@type": "SoftwareSourceCode",
45
+ "name": "@dzhechkov/p-replicator",
46
+ "codeRepository": "https://github.com/dzhechko/pu-unicorn-replicate",
47
+ "programmingLanguage": "JavaScript",
48
+ "softwareVersion": "1.5.0",
49
+ "license": "https://opensource.org/licenses/MIT"
50
+ },
51
+ "isPartOf": {
52
+ "@type": "WebSite",
53
+ "name": "@dzhechkov/p-replicator Documentation",
54
+ "url": "https://github.com/dzhechko/pu-unicorn-replicate"
55
+ }
56
+ }</script>
57
+
58
+ <!-- Inline critical CSS for instant first paint (avoid FOUC) -->
59
+ <script>
60
+ // Apply theme BEFORE first paint to prevent flash
61
+ (function() {
62
+ try {
63
+ var t = localStorage.getItem('p-replicator-theme') || 'auto';
64
+ if (t !== 'auto') document.documentElement.setAttribute('data-theme', t);
65
+ } catch (_) {}
66
+ })();
67
+ </script>
68
+
69
+ <link rel="stylesheet" href="style.css">
70
+ </head>
71
+ <body>
72
+ <a href="#main" class="skip-to-content">Перейти к содержимому</a>
73
+
74
+ <div class="progress-bar" id="progressBar" aria-hidden="true"></div>
75
+
76
+ <header class="site-header" role="banner">
77
+ <button class="menu-toggle" id="menuToggle" aria-label="Открыть меню" aria-expanded="false">
78
+ <span aria-hidden="true">☰</span>
79
+ </button>
80
+ <a href="#index" class="site-title">
81
+ <strong>P-Replicator</strong>
82
+ <span class="version">v1.5.0</span>
83
+ </a>
84
+ <nav class="header-nav" aria-label="Внешние ссылки">
85
+ <a href="https://www.npmjs.com/package/@dzhechkov/p-replicator" target="_blank" rel="noopener noreferrer">npm</a>
86
+ <a href="https://github.com/dzhechko/pu-unicorn-replicate" target="_blank" rel="noopener noreferrer">GitHub</a>
87
+ <a href="https://t.me/llm_notes" target="_blank" rel="noopener noreferrer">Telegram</a>
88
+ </nav>
89
+ <button class="theme-toggle" id="themeToggle" aria-label="Переключить тему">
90
+ <span aria-hidden="true">🌙</span>
91
+ </button>
92
+ </header>
93
+
94
+ <div class="layout">
95
+ <aside class="sidebar" id="sidebar" aria-label="Содержание">
96
+ <div class="search-wrap">
97
+ <input type="search" class="search-input" id="searchInput"
98
+ placeholder="🔍 Поиск по документации"
99
+ aria-label="Поиск по документации"
100
+ autocomplete="off"
101
+ spellcheck="false">
102
+ <kbd class="search-kbd">/</kbd>
103
+ </div>
104
+ <div class="search-results" id="searchResults" role="listbox" hidden></div>
105
+ <nav class="toc" id="toc" aria-label="Содержание документации">
106
+ <ul><li><a href="#index" class="toc-section">Главная</a><ul><li><a href="#index-chto-eto">Что это</a></li><li><a href="#index-navigatsiya">Навигация</a></li><li><a href="#index-yazyki">Языки</a></li><li><a href="#index-versiya">Версия</a></li><li><a href="#index-bystryy-start">Быстрый старт</a></li><li><a href="#index-svyazannye-repozitorii">Связанные репозитории</a></li><li><a href="#index-companion-dokumentatsiya-vnutri-paketa">Companion-документация (внутри пакета)</a></li></ul></li><li><a href="#quickstart" class="toc-section">01. Быстрый старт</a><ul><li><a href="#quickstart-predusloviya">Предусловия</a></li><li><a href="#quickstart-ustanovka">Установка</a></li><li><a href="#quickstart-pervyy-zapusk">Первый запуск</a></li><li><a href="#quickstart-alternativnyy-vhod-u-menya-uzhe-est-tehdokumentatsiya">Альтернативный вход — у меня уже есть техдокументация</a></li><li><a href="#quickstart-dobavlenie-fich-v-suschestvuyuschiy-proekt-mode-2">Добавление фич в существующий проект (Mode 2)</a></li><li><a href="#quickstart-proverka-ustanovki">Проверка установки</a></li><li><a href="#quickstart-chto-delat-dalshe">Что делать дальше</a></li><li><a href="#quickstart-dopolnitelnye-komandy">Дополнительные команды</a></li><li><a href="#quickstart-chto-v-proekte-poyavilos-posle-init">Что в проекте появилось после init</a></li><li><a href="#quickstart-sleduyuschie-shagi">Следующие шаги</a></li></ul></li><li><a href="#user-guide" class="toc-section">02. Руководство</a><ul><li><a href="#user-guide-tablitsa-komand">Таблица команд</a></li><li><a href="#user-guide-replicate-glavnyy-pipeline">/replicate — главный pipeline</a></li><li><a href="#user-guide-start-bootstrap-proekta">/start — bootstrap проекта</a></li><li><a href="#user-guide-run-avtonomnaya-sborka-fich">/run — автономная сборка фич</a></li><li><a href="#user-guide-go-intelligent-router">/go — intelligent router</a></li><li><a href="#user-guide-next-navigator-po-roadmap">/next — навигатор по roadmap</a></li><li><a href="#user-guide-plan-lyogkiy-plan">/plan — лёгкий план</a></li><li><a href="#user-guide-feature-polnyy-sparc-mini-tsikl">/feature — полный SPARC-mini цикл</a></li><li><a href="#user-guide-myinsights-knowledge-capture">/myinsights — knowledge capture</a></li><li><a href="#user-guide-docs-generator-dokumentatsii">/docs — генератор документации</a></li><li><a href="#user-guide-harvest-izvlechenie-znaniy">/harvest — извлечение знаний</a></li><li><a href="#user-guide-deploy-deployment-workflow">/deploy — deployment workflow</a></li></ul></li><li><a href="#admin-guide" class="toc-section">03. Admin Guide</a><ul><li><a href="#admin-guide-settingsjson-glavnyy-konfig">settings.json — главный конфиг</a></li><li><a href="#admin-guide-hooks-zhiznennyy-tsikl">Hooks — жизненный цикл</a></li><li><a href="#admin-guide-statusline-pribornaya-panel">Statusline — приборная панель</a></li><li><a href="#admin-guide-state-file-dlya-live-progress">State-file для live progress</a></li><li><a href="#admin-guide-insights-system">Insights system</a></li><li><a href="#admin-guide-roadmap-management">Roadmap management</a></li><li><a href="#admin-guide-doctor-verify-dva-raznyh-instrumenta">Doctor + Verify — два разных инструмента</a></li><li><a href="#admin-guide-update-workflow">Update workflow</a></li><li><a href="#admin-guide-mcp-servers">MCP servers</a></li><li><a href="#admin-guide-svyaz-s-keysarium">Связь с Keysarium</a></li><li><a href="#admin-guide-dalshe">Дальше</a></li></ul></li><li><a href="#api-reference" class="toc-section">04. API Reference</a><ul><li><a href="#api-reference-cli-npx-dzhechkovp-replicator">CLI: npx @dzhechkov/p-replicator</a></li><li><a href="#api-reference-manifest-schema-p-replicatorjson">Manifest schema (.p-replicator.json)</a></li><li><a href="#api-reference-roadmap-schema-claudefeature-roadmapjson">Roadmap schema (.claude/feature-roadmap.json)</a></li><li><a href="#api-reference-state-file-schema-claudep-replicator-statejson">State-file schema (.claude/.p-replicator-state.json)</a></li><li><a href="#api-reference-settingsjson-struktura">settings.json — структура</a></li><li><a href="#api-reference-components-schema-vnutri-srcutilsjs">COMPONENTS schema (внутри src/utils.js)</a></li><li><a href="#api-reference-hook-scripts-api">Hook scripts API</a></li><li><a href="#api-reference-dalshe">Дальше</a></li></ul></li><li><a href="#architecture" class="toc-section">05. Архитектура</a><ul><li><a href="#architecture-dvuhurovnevaya-model-pre-shipped-vs-project-generated">Двухуровневая модель: Pre-shipped vs Project-generated</a></li><li><a href="#architecture-ssot-utilscomponents">SSOT: utils.COMPONENTS</a></li><li><a href="#architecture-path-derivation-getitemrelativepath">Path derivation: getItemRelativePath()</a></li><li><a href="#architecture-cross-platform-hooks-v141">Cross-platform hooks (v1.4.1)</a></li><li><a href="#architecture-sync-templates-merge-mode-v141">Sync-templates: MERGE mode (v1.4.1)</a></li><li><a href="#architecture-settingsjson-merge-v142">Settings.json merge (v1.4.2)</a></li><li><a href="#architecture-orphan-detection-v143">Orphan detection (v1.4.3)</a></li><li><a href="#architecture-statusline-architecture-v150">Statusline architecture (v1.5.0)</a></li><li><a href="#architecture-test-infrastructure">Test infrastructure</a></li><li><a href="#architecture-module-composition-view-syntax-claude-code-specific">Module composition: view() syntax (Claude Code-specific)</a></li><li><a href="#architecture-pipeline-replicate-fazy">Pipeline: /replicate фазы</a></li><li><a href="#architecture-dalshe">Дальше</a></li></ul></li><li><a href="#troubleshooting" class="toc-section">06. Troubleshooting</a><ul><li><a href="#troubleshooting-ustanovka-init">Установка / init</a></li><li><a href="#troubleshooting-posle-replicate">После /replicate</a></li><li><a href="#troubleshooting-hooks-statusline">Hooks / Statusline</a></li><li><a href="#troubleshooting-roadmap-feature-branches">Roadmap / --feature-branches</a></li><li><a href="#troubleshooting-tests-snapshot">Tests / Snapshot</a></li><li><a href="#troubleshooting-insights">Insights</a></li><li><a href="#troubleshooting-mcp-servers">MCP servers</a></li><li><a href="#troubleshooting-performance">Performance</a></li><li><a href="#troubleshooting-versionnye-nesovmestimosti">Версионные несовместимости</a></li><li><a href="#troubleshooting-esli-nichego-ne-pomogaet">Если ничего не помогает</a></li></ul></li><li><a href="#changelog" class="toc-section">07. Changelog</a><ul><li><a href="#changelog-v150-2026-05-07">v1.5.0 — 2026-05-07</a></li><li><a href="#changelog-v143-2026-05-07">v1.4.3 — 2026-05-07</a></li><li><a href="#changelog-v142-2026-05-06">v1.4.2 — 2026-05-06</a></li><li><a href="#changelog-v141-2026-05-06">v1.4.1 — 2026-05-06</a></li><li><a href="#changelog-v140-2026-05-06">v1.4.0 — 2026-05-06</a></li><li><a href="#changelog-v131-2026-05-06">v1.3.1 — 2026-05-06</a></li><li><a href="#changelog-v130-baseline">v1.3.0 (baseline)</a></li><li><a href="#changelog-migration-po-versiyam">Migration по версиям</a></li><li><a href="#changelog-patterns-persisted-v-aqe-memory">Patterns persisted в AQE memory</a></li><li><a href="#changelog-polnyy-changelog">Полный CHANGELOG</a></li></ul></li></ul>
107
+ </nav>
108
+ </aside>
109
+
110
+ <main id="main" class="main-content" role="main">
111
+ <article id="index" class="section" data-section-title="Главная">
112
+ <h1 id="dokumentatsiya-dzhechkovp-replicator">Документация @dzhechkov/p-replicator</h1>
113
+ <p>Полный комплект документации к npm-пакету <code>@dzhechkov/p-replicator</code> — toolkit для AI-assisted разработки в Claude Code (Vibe Coding).</p>
114
+ <h2 id="index-chto-eto">Что это</h2>
115
+ <p><code>p-replicator</code> устанавливает в проект готовый набор <code>.claude/</code>-инструментов: <strong>11 slash-команд</strong>, <strong>10 skills</strong>, <strong>4 агента</strong>, <strong>5 правил</strong>, <strong>6 hook-скриптов</strong> и <code>settings.json</code> с pre-configured хуками. Главная команда <code>/replicate</code> проводит проект через 5-фазный pipeline (Discovery → Planning → Validation → Toolkit Generation → Finalize), генерирует SPARC-документацию и project-specific артефакты.</p>
116
+ <h2 id="index-navigatsiya">Навигация</h2>
117
+ <div class="table-wrap"><table><thead><tr><th>Раздел</th><th>Описание</th></tr></thead><tbody><tr><td><a href="#quickstart">01_quickstart.md</a></td><td>Установка, первый запуск, проверка</td></tr><tr><td><a href="#user-guide">02_user_guide.md</a></td><td>Все команды и workflow с примерами</td></tr><tr><td><a href="#admin-guide">03_admin_guide.md</a></td><td>Настройка hooks, settings.json, statusline, insights</td></tr><tr><td><a href="#api-reference">04_api_reference.md</a></td><td>CLI-флаги, схемы манифеста, roadmap, state</td></tr><tr><td><a href="#architecture">05_architecture.md</a></td><td>Архитектура: pre-shipped vs generated, SSOT, hooks</td></tr><tr><td><a href="#troubleshooting">06_troubleshooting.md</a></td><td>Решение типичных проблем</td></tr><tr><td><a href="#changelog">07_changelog.md</a></td><td>История версий 1.3.x → 1.5.x</td></tr></tbody></table></div>
118
+ <h2 id="index-yazyki">Языки</h2>
119
+ <ul><li>🇷🇺 <a href="#index">Документация на русском</a> (вы здесь)</li><li>🇬🇧 <a href="https://github.com/dzhechko/pu-unicorn-replicate/blob/main/packages/p-replicator/README/eng/README.md" target="_blank" rel="noopener noreferrer">English documentation</a></li></ul>
120
+ <h2 id="index-versiya">Версия</h2>
121
+ <p><code>@dzhechkov/p-replicator@1.5.0</code> (последняя стабильная). См. история всех изменений в <code>../../CHANGELOG.md</code> (авторитетный источник).</p>
122
+ <h2 id="index-bystryy-start">Быстрый старт</h2>
123
+ <pre data-lang="bash"><code class="language-bash">cd ваш-проект
124
+ npx @dzhechkov/p-replicator init
125
+ claude # открыть Claude Code
126
+ /replicate "описание вашего продукта"</code></pre>
127
+ <p>После завершения <code>/replicate</code> запустите <code>/run mvp</code> для автономной сборки фич из roadmap'а или <code>/start</code> для bootstrap'а scaffold'а.</p>
128
+ <h2 id="index-svyazannye-repozitorii">Связанные репозитории</h2>
129
+ <ul><li>npm: https://www.npmjs.com/package/@dzhechkov/p-replicator</li><li>GitHub: https://github.com/dzhechko/pu-unicorn-replicate</li><li>Issues: https://github.com/dzhechko/pu-unicorn-replicate/issues</li></ul>
130
+ <h2 id="index-companion-dokumentatsiya-vnutri-paketa">Companion-документация (внутри пакета)</h2>
131
+ <ul><li><code>../../CHANGELOG.md</code> — история версий</li><li><code>../../KNOWN_LIMITATIONS.md</code> — открытые задачи на улучшение (7 пунктов)</li><li><code>../../MULTIPLATFORM_ROADMAP.md</code> — roadmap поддержки Codex/OpenCode/KiloCode</li><li><code>../../README.md</code> — короткое user-facing intro</li></ul>
132
+ <nav class="section-nav" aria-label="Навигация по секциям"><span></span><a href="#quickstart" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">01. Быстрый старт</span></span> <span class="nav-arrow">→</span></a></nav>
133
+ </article>
134
+ <article id="quickstart" class="section" data-section-title="01. Быстрый старт">
135
+ <h1 id="01-bystryy-start">01. Быстрый старт</h1>
136
+ <p>5 минут от пустой папки до работающего AI-pipeline'а.</p>
137
+ <h2 id="quickstart-predusloviya">Предусловия</h2>
138
+ <ul><li>Node.js ≥ 16.0.0</li><li>Claude Code установлен (CLI или web)</li><li>Git инициализирован в проекте (<code>git init</code> если ещё нет)</li><li>Docker + Docker Compose (нужны для <code>/start</code> фазы 3)</li></ul>
139
+ <h2 id="quickstart-ustanovka">Установка</h2>
140
+ <p>В корне вашего проекта:</p>
141
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator init</code></pre>
142
+ <p>Это создаст:</p>
143
+ <ul><li><code>.claude/skills/</code> — 10 предустановленных skills</li><li><code>.claude/commands/</code> — 11 slash-команд (<code>/replicate</code>, <code>/run</code>, <code>/feature</code>, ...)</li><li><code>.claude/agents/</code> — 4 пайплайн-агента</li><li><code>.claude/rules/</code> — 5 governance-правил</li><li><code>.claude/hooks/</code> — 6 cross-platform Node-скриптов</li><li><code>.claude/settings.json</code> — конфигурация hooks + statusline</li><li><code>.p-replicator.json</code> — манифест установки</li></ul>
144
+ <p>Установка идемпотентна: <code>init</code> не перезапишет существующие файлы без флага <code>--force</code>.</p>
145
+ <h2 id="quickstart-pervyy-zapusk">Первый запуск</h2>
146
+ <pre data-lang="bash"><code class="language-bash">claude # открыть Claude Code в проекте</code></pre>
147
+ <p>В Claude Code выполните:</p>
148
+ <pre data-lang=""><code class="language-text">/replicate "Опишите ваш продукт в 1-2 предложениях"</code></pre>
149
+ <p>Это запустит 5-фазный pipeline:</p>
150
+ <div class="table-wrap"><table><thead><tr><th>Фаза</th><th>Что делает</th><th>Артефакты</th></tr></thead><tbody><tr><td><strong>0. Product Discovery</strong> (опционально)</td><td>Reverse-engineering похожих компаний</td><td><code>docs/00_product_discovery.md</code></td></tr><tr><td><strong>1. Planning</strong></td><td>Генерирует 11 SPARC-документов</td><td><code>docs/PRD.md</code>, <code>Architecture.md</code>, <code>Pseudocode.md</code>, ...</td></tr><tr><td><strong>2. Validation</strong></td><td>Swarm из 5 агентов проверяет docs (INVEST/SMART, score ≥70)</td><td><code>docs/validation-report.md</code></td></tr><tr><td><strong>3. Toolkit Generation</strong></td><td>Генерирует project-specific агенты, правила, скиллы</td><td><code>.claude/agents/planner.md</code>, <code>architect.md</code>, ...</td></tr><tr><td><strong>4. Finalize</strong></td><td>Scaffolds (Dockerfile, docker-compose.yml, .gitignore) + git commit</td><td>Project-готов</td></tr></tbody></table></div>
151
+ <p>В каждой фазе — checkpoint: вы пишете «ок» для продолжения или даёте feedback.</p>
152
+ <h2 id="quickstart-alternativnyy-vhod-u-menya-uzhe-est-tehdokumentatsiya">Альтернативный вход — у меня уже есть техдокументация</h2>
153
+ <p>Если у вас на руках уже есть техническая документация (tech spec, архитектура, API-описания, design docs), можно <strong>пропустить Phase 0</strong> (Product Discovery) и скормить ваши доки прямо в Phase 1 как pre-filled context.</p>
154
+ <h3 id="quickstart-podgotovka">Подготовка</h3>
155
+ <pre data-lang="bash"><code class="language-bash">mkdir -p docs/existing
156
+ cp your-tech-doc-*.md docs/existing/ # положите свои доки сюда</code></pre>
157
+ <h3 id="quickstart-zapusk-3-sub-puti">Запуск (3 sub-пути)</h3>
158
+ <div class="table-wrap"><table><thead><tr><th>Путь</th><th>Когда подходит</th><th>Что вызывается</th></tr></thead><tbody><tr><td><strong>A. /replicate с override</strong></td><td>Полный pipeline + toolkit + scaffold</td><td><code>/replicate "Use my docs in docs/existing/, skip Phase 0"</code></td></tr><tr><td><strong>B. Только SPARC docs</strong></td><td>Хочется только 11 SPARC-документов</td><td>Прямой вызов skill: «использовать <code>sparc-prd-mini</code> в AUTO режиме на <code>docs/existing/</code>»</td></tr><tr><td><strong>C. Только валидация</strong></td><td>Доки уже SPARC-форматированы</td><td>Переименовать в <code>PRD.md</code>, <code>Architecture.md</code> и т.д., затем «вызвать <code>requirements-validator</code>»</td></tr></tbody></table></div>
159
+ <h3 id="quickstart-chto-menyaetsya-v-pipeline">Что меняется в pipeline</h3>
160
+ <ul><li><strong>Phase 0</strong> — пропускается полностью</li><li><strong>Phase 1</strong> — <code>sparc-prd-mini</code> запускается в AUTO mode (без интерактивных вопросов), читает ваши доки, генерирует 11 SPARC-слотов; недостающее помечается <code>[GAP: ...]</code></li><li><strong>Phase 2-4</strong> — без изменений (валидация → toolkit → scaffold)</li></ul>
161
+ <h3 id="quickstart-caveats">Caveats</h3>
162
+ <ul><li>Не каждая ваша дока ляжет на 11 SPARC-слотов — ожидайте <code>[GAP: ...]</code> маркеров</li><li>Validation может пометить user stories «не INVEST» — это сигнал, что ваши доки стоит дополнить, а не баг</li><li>Архитектурные ограничения (pattern, containers, infra, deploy, AI) передавайте в Phase 1 явно, если их нет в ваших доках</li></ul>
163
+ <p>Полный спец см. в <code>.claude/commands/replicate.md</code> секция «Alternative entry» и правило <code>.claude/rules/replicate-pipeline.md</code>.</p>
164
+ <h2 id="quickstart-dobavlenie-fich-v-suschestvuyuschiy-proekt-mode-2">Добавление фич в существующий проект (Mode 2)</h2>
165
+ <p>Если у вас <strong>уже есть рабочий проект</strong> (стек определён, PRD/Specification/ CLAUDE.md существуют) и вы хотите добавлять новые фичи с тем же циклом верификации что в <code>/replicate</code> — используйте <code>/feature</code>, а не <code>/replicate</code>.</p>
166
+ <h3 id="quickstart-ustanovka-idempotent">Установка (idempotent)</h3>
167
+ <pre data-lang="bash"><code class="language-bash">cd existing-project
168
+ npx @dzhechkov/p-replicator init # НЕ перезапишет ваш CLAUDE.md
169
+ npx @dzhechkov/p-replicator verify # убедиться что pre-shipped contract цел</code></pre>
170
+ <h3 id="quickstart-normalizatsiya-sparc-putey-odnorazovo">Нормализация SPARC-путей (одноразово)</h3>
171
+ <p><code>/feature</code> читает доки из стандартных слотов:</p>
172
+ <pre data-lang="bash"><code class="language-bash">mv docs/your-prd.md docs/PRD.md # если у вас другие имена
173
+ mv docs/your-spec.md docs/Specification.md
174
+ mv docs/your-arch.md docs/Architecture.md
175
+ # Pseudocode / Refinement / Completion — опционально</code></pre>
176
+ <h3 id="quickstart-zapusk-fich-3-sub-puti">Запуск фич (3 sub-пути)</h3>
177
+ <div class="table-wrap"><table><thead><tr><th>Путь</th><th>Когда подходит</th><th>Команда</th></tr></thead><tbody><tr><td><strong>A. /feature напрямую</strong></td><td>Одна фича, ≥4 файлов, новая capability</td><td><code>/feature add-stripe-payments</code></td></tr><tr><td><strong>B. /go auto-router</strong></td><td>Микс по сложности</td><td><code>/go add-pagination</code> (роутит /plan vs /feature)</td></tr><tr><td><strong>C. Прямые skill-вызовы</strong></td><td>Только validation-цикл, без полного lifecycle</td><td><code>requirements-validator</code> + <code>brutal-honesty-review</code></td></tr></tbody></table></div>
178
+ <h3 id="quickstart-validation-thresholds-tot-zhe-swarm-chto-v-replicate-phase-2">Validation thresholds (тот же swarm, что в /replicate Phase 2)</h3>
179
+ <div class="table-wrap"><table><thead><tr><th>Verdict</th><th>Score</th><th>Действие</th></tr></thead><tbody><tr><td>🟢 READY</td><td>≥ 70</td><td>IMPLEMENT</td></tr><tr><td>🟡 CAVEATS</td><td>50-69</td><td>IMPLEMENT + auto-retry один раз</td></tr><tr><td>🔴 NEEDS WORK</td><td>&lt; 50 / blockers</td><td>возврат на PLAN, max 3 retries</td></tr></tbody></table></div>
180
+ <h3 id="quickstart-chto-sohranyaetsya-pri-init">Что сохраняется при <code>init</code></h3>
181
+ <ul><li><code>CLAUDE.md</code> (root) — <strong>не трогается</strong> (только <code>--force</code>)</li><li><code>docs/PRD.md</code>, <code>Specification.md</code> — <strong>не трогаются</strong></li><li><code>.claude/commands/your-custom.md</code> — <strong>не трогаются</strong> (init добавляет только pre-shipped 11)</li><li><code>.claude/settings.json</code> — <strong>сливается</strong> через v1.4.2+ merge logic с deep-equals</li><li><code>.gitignore</code>, <code>package.json</code> — <strong>не трогаются</strong> init'ом</li></ul>
182
+ <h3 id="quickstart-caveats">Caveats</h3>
183
+ <ul><li><code>/start</code> НЕ запускайте в Mode 2 — он для свежих scaffold'ов</li><li><code>/feature-ent</code> недоступна в Mode 2 без ручного добавления DDD/ADR/C4 доков</li><li>Auto-commit hooks (Stop) могут конфликтовать с вашим git-workflow — отредактируйте <code>settings.json</code> после <code>init</code> (merge сохранит ваши правки на следующих апдейтах)</li><li>Нет флага <code>--prd-path</code> для нестандартных путей — нужен одноразовый rename/symlink (см. KNOWN_LIMITATIONS.md M3)</li></ul>
184
+ <p>Полный recipe в <code>02_user_guide.md</code> секция «Feature workflow в существующем проекте (Mode 2)».</p>
185
+ <h2 id="quickstart-proverka-ustanovki">Проверка установки</h2>
186
+ <p>После <code>/replicate</code> выполните:</p>
187
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
188
+ <p>Команда проверит:</p>
189
+ <ul><li><strong>Pre-shipped contract</strong> (must-have): 10 skills + 11 commands + 4 agents + 5 rules + settings.json</li><li><strong>Post-/replicate hints</strong> (advisory): CLAUDE.md, project-specific агенты, feature-roadmap.json, security-правила и т.д.</li></ul>
190
+ <p>Exit code <code>0</code> означает что pre-shipped контракт цел; warnings показывают что из project-specific артефактов ещё не создано.</p>
191
+ <p>Альтернатива (для общей health-проверки):</p>
192
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator doctor</code></pre>
193
+ <h2 id="quickstart-chto-delat-dalshe">Что делать дальше</h2>
194
+ <p>Сразу после <code>/replicate</code> доступны 3 основных пути:</p>
195
+ <h3 id="quickstart-1-bootstrap-proekta-start">1. Bootstrap проекта (<code>/start</code>)</h3>
196
+ <pre data-lang=""><code class="language-text">/start</code></pre>
197
+ <p>Реализует scaffold по <code>docs/Architecture.md</code>: создаёт пакеты в monorepo, генерирует <code>package.json</code>, поднимает Docker, прогоняет migrations.</p>
198
+ <h3 id="quickstart-2-avtonomnaya-sborka-fich-run-mvp">2. Автономная сборка фич (<code>/run mvp</code>)</h3>
199
+ <pre data-lang=""><code class="language-text">/run mvp # только MVP-фичи
200
+ /run all # все фичи из roadmap
201
+ /run mvp --feature-branches # каждая фича в отдельной ветке
202
+ /run mvp --feature-branches --auto-merge # с автомерджем в main</code></pre>
203
+ <p>Цикл: <code>/next</code> → <code>/go &lt;id&gt;</code> → пушит коммит → следующая фича. Останавливается когда roadmap пустой.</p>
204
+ <h3 id="quickstart-3-odna-konkretnaya-ficha-go">3. Одна конкретная фича (<code>/go</code>)</h3>
205
+ <pre data-lang=""><code class="language-text">/go auth-jwt # auto-роутер /plan vs /feature
206
+ /feature auth-jwt # явно полный SPARC-mini цикл
207
+ /plan add-payment-gateway # лёгкий плановый файл</code></pre>
208
+ <h2 id="quickstart-dopolnitelnye-komandy">Дополнительные команды</h2>
209
+ <div class="table-wrap"><table><thead><tr><th>Команда</th><th>Когда использовать</th></tr></thead><tbody><tr><td><code>/myinsights "описание"</code></td><td>Зафиксировать «грабли» — error/workaround для будущих сессий</td></tr><tr><td><code>/docs</code></td><td>Сгенерировать пользовательскую документацию (RU+EN)</td></tr><tr><td><code>/harvest</code></td><td>Извлечь reusable-паттерны из проекта в knowledge-базу</td></tr><tr><td><code>/deploy staging</code></td><td>Deployment workflow с per-tier проверками</td></tr></tbody></table></div>
210
+ <h2 id="quickstart-chto-v-proekte-poyavilos-posle-init">Что в проекте появилось после <code>init</code></h2>
211
+ <pre data-lang=""><code class="language-text">ваш-проект/
212
+ ├── .claude/
213
+ │ ├── skills/ # 10 skills
214
+ │ ├── commands/ # 11 slash-команд
215
+ │ ├── agents/ # 4 pipeline-агента
216
+ │ ├── rules/ # 5 правил
217
+ │ ├── hooks/ # 6 Node-скриптов
218
+ │ └── settings.json # hooks + statusline config
219
+ ├── .p-replicator.json # манифест установки
220
+ └── (your existing files…)</code></pre>
221
+ <p>Все файлы в <code>.claude/</code> — каноничные шаблоны от пакета. Не редактируйте их напрямую: на следующем <code>update</code> они мерджатся через <code>mergeSettingsJson</code>+<code>removeOrphanHooks</code> алгоритм (с сохранением user customizations).</p>
222
+ <h2 id="quickstart-sleduyuschie-shagi">Следующие шаги</h2>
223
+ <ul><li>Прочитайте <a href="#user-guide">02_user_guide.md</a> — детали по каждой команде</li><li>Прочитайте <a href="#admin-guide">03_admin_guide.md</a> — настройка hooks/statusline</li><li>Если что-то не работает — <a href="#troubleshooting">06_troubleshooting.md</a></li></ul>
224
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#index" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">Главная</span></span></a><a href="#user-guide" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">02. Руководство</span></span> <span class="nav-arrow">→</span></a></nav>
225
+ </article>
226
+ <article id="user-guide" class="section" data-section-title="02. Руководство пользователя">
227
+ <h1 id="02-rukovodstvo-polzovatelya">02. Руководство пользователя</h1>
228
+ <p>Подробный обзор всех 11 команд и их workflow.</p>
229
+ <h2 id="user-guide-tablitsa-komand">Таблица команд</h2>
230
+ <div class="table-wrap"><table><thead><tr><th>Команда</th><th>Назначение</th><th>Когда использовать</th></tr></thead><tbody><tr><td><code>/replicate</code></td><td>Полный pipeline: идея → SPARC docs → toolkit</td><td>В начале нового проекта</td></tr><tr><td><code>/start</code></td><td>Bootstrap скаффолда из SPARC docs</td><td>После <code>/replicate</code>, перед сборкой фич</td></tr><tr><td><code>/run</code></td><td>Автономный цикл сборки фич из roadmap</td><td>Регулярная разработка</td></tr><tr><td><code>/go</code></td><td>Router: выбирает /plan, /feature или /feature-ent</td><td>Одна конкретная фича</td></tr><tr><td><code>/next</code></td><td>Покажет следующую фичу из roadmap</td><td>Навигация по sprint'у</td></tr><tr><td><code>/plan</code></td><td>Лёгкий план в <code>docs/plans/&lt;id&gt;.md</code></td><td>Маленькая задача (≤3 файла)</td></tr><tr><td><code>/feature</code></td><td>Полный SPARC-mini цикл (PLAN → VALIDATE → IMPLEMENT → REVIEW)</td><td>Большая фича (4+ файлов)</td></tr><tr><td><code>/myinsights</code></td><td>Зафиксировать или recall insights</td><td>После каждой нетривиальной отладки</td></tr><tr><td><code>/docs</code></td><td>Генерация bilingual-документации (RU+EN)</td><td>В конце проекта или фичи</td></tr><tr><td><code>/harvest</code></td><td>Извлечение reusable-паттернов</td><td>После завершённого проекта</td></tr><tr><td><code>/deploy</code></td><td>Deployment workflow (dev/staging/prod)</td><td>Деплой</td></tr></tbody></table></div>
231
+ <hr>
232
+ <h2 id="user-guide-replicate-glavnyy-pipeline">/replicate — главный pipeline</h2>
233
+ <p><strong>Назначение:</strong> превратить идею продукта в полностью документированный, валидированный, toolkit-готовый проект.</p>
234
+ <p><strong>Использование:</strong></p>
235
+ <pre data-lang=""><code class="language-text">/replicate "Маркетплейс хендмейд-товаров с AI-рекомендациями"
236
+ /replicate "название компании" # для reverse-engineering режима</code></pre>
237
+ <p><strong>Фазы:</strong></p>
238
+ <h3 id="user-guide-phase-0-product-discovery-optsionalno">Phase 0 — Product Discovery (опционально)</h3>
239
+ <p>Активируется автоматически для SaaS, стартапов, новых продуктов. Скипается для internal tools и экспериментов.</p>
240
+ <ul><li>Reverse-engineering похожих компаний (<code>reverse-engineering-unicorn</code> skill)</li><li>JTBD анализ + конкуренты + Blue Ocean</li><li>Output: <code>docs/00_product_discovery.md</code></li></ul>
241
+ <h3 id="user-guide-phase-1-planning-sparc-docs">Phase 1 — Planning (SPARC docs)</h3>
242
+ <p>Генерирует 11 документов в <code>docs/</code>:</p>
243
+ <div class="table-wrap"><table><thead><tr><th>Документ</th><th>Содержание</th></tr></thead><tbody><tr><td><code>PRD.md</code></td><td>Vision, personas, user stories</td></tr><tr><td><code>Solution_Strategy.md</code></td><td>Подход к решению</td></tr><tr><td><code>Specification.md</code></td><td>Acceptance criteria, NFRs</td></tr><tr><td><code>Pseudocode.md</code></td><td>Алгоритмы и data flow</td></tr><tr><td><code>Architecture.md</code></td><td>C4 diagrams, tech stack</td></tr><tr><td><code>Refinement.md</code></td><td>Edge cases, testing strategy</td></tr><tr><td><code>Completion.md</code></td><td>Deploy, CI/CD, monitoring</td></tr><tr><td><code>Research_Findings.md</code></td><td>Market+tech research</td></tr><tr><td><code>Final_Summary.md</code></td><td>Executive summary</td></tr><tr><td><code>C4_Diagrams.md</code></td><td>Контекст / контейнеры / компоненты</td></tr><tr><td><code>ADR.md</code></td><td>Architecture Decision Records</td></tr></tbody></table></div>
244
+ <p>Использует <code>sparc-prd-mini</code> skill (включает explore + research + solve фазы).</p>
245
+ <h3 id="user-guide-phase-2-validation">Phase 2 — Validation</h3>
246
+ <p>Swarm из 5 параллельных агентов:</p>
247
+ <div class="table-wrap"><table><thead><tr><th>Агент</th><th>Что валидирует</th></tr></thead><tbody><tr><td><code>validator-stories</code></td><td>INVEST criteria для user stories</td></tr><tr><td><code>validator-acceptance</code></td><td>SMART criteria для AC</td></tr><tr><td><code>validator-architecture</code></td><td>Consistency архитектуры</td></tr><tr><td><code>validator-pseudocode</code></td><td>Cohesion алгоритмов</td></tr><tr><td><code>validator-coherence</code></td><td>Cross-document consistency</td></tr></tbody></table></div>
248
+ <p><strong>Verdict:</strong></p>
249
+ <ul><li>🟢 READY (score ≥70) → Phase 3</li><li>🟡 CAVEATS (50-69) → Phase 3 с заметками</li><li>🔴 NEEDS WORK (&lt;50 или blockers) → возврат на Phase 1 (max 3 retries)</li></ul>
250
+ <h3 id="user-guide-phase-3-toolkit-generation">Phase 3 — Toolkit Generation</h3>
251
+ <p><strong>Не генерирует pre-shipped команды</strong> (они уже установлены через init). Генерирует <strong>только project-specific</strong> артефакты:</p>
252
+ <ul><li><code>.claude/agents/planner.md</code>, <code>code-reviewer.md</code>, <code>architect.md</code> (project-aware)</li><li><code>.claude/rules/security.md</code>, <code>coding-style.md</code>, <code>testing.md</code></li><li><code>.claude/skills/project-context/</code>, <code>coding-standards/</code></li><li><code>CLAUDE.md</code> enhanced с project-specific содержимым</li><li><code>.claude/feature-roadmap.json</code> (генерируется из PRD MVP scope)</li><li><code>DEVELOPMENT_GUIDE.md</code>, <code>README.md</code></li></ul>
253
+ <h3 id="user-guide-phase-4-finalize">Phase 4 — Finalize</h3>
254
+ <ul><li><code>docker-compose.yml</code>, <code>Dockerfile</code>, <code>.gitignore</code> (scaffold-файлы)</li><li>Git commit «chore: initial project setup»</li><li>Final summary</li></ul>
255
+ <h3 id="user-guide-alternativnyy-vhod-u-vas-uzhe-est-tehdokumentatsiya">Альтернативный вход — у вас уже есть техдокументация</h3>
256
+ <p>Pipeline официально поддерживает старт <strong>с уже существующей техдокументации</strong> — без прохождения Phase 0 (Product Discovery). Полезно когда:</p>
257
+ <ul><li>Вы переносите существующий проект под Claude Code workflow</li><li>У вас есть tech spec / архитектура / API-доки от предыдущего этапа</li><li>Вы хотите только сгенерировать SPARC-документы и/или провалидировать их</li></ul>
258
+ <h4 id="user-guide-triggery-lyuboy-iz-variantov">Триггеры (любой из вариантов)</h4>
259
+ <p><code>/replicate</code> switch'ит на этот режим, когда видит в input одно из:</p>
260
+ <ul><li>Path-указание: «используй мои доки в <code>docs/existing/</code>», «my tech specs in <code>&lt;path&gt;</code>»</li><li>Явный skip: «skip discovery», «skip Phase 0»</li><li>Утверждение: «у меня уже есть техническая документация»</li><li>Семантический флаг: <code>/replicate --from-docs &lt;path&gt;</code> или <code>--skip-discovery</code></li></ul>
261
+ <h4 id="user-guide-podgotovka">Подготовка</h4>
262
+ <p>Положите ваши доки в локальный подкаталог проекта (рекомендуется <code>docs/existing/</code> или <code>docs/source/</code>) — они должны быть видны pipeline'у, но отделены от сгенерированных SPARC-выходов.</p>
263
+ <pre data-lang="bash"><code class="language-bash">mkdir -p docs/existing
264
+ cp your-tech-doc-*.md docs/existing/</code></pre>
265
+ <h4 id="user-guide-chto-menyaetsya-v-kazhdoy-faze">Что меняется в каждой фазе</h4>
266
+ <div class="table-wrap"><table><thead><tr><th>Фаза</th><th>Стандартный режим</th><th>Существующие-docs режим</th></tr></thead><tbody><tr><td><strong>Phase 0</strong></td><td>reverse-engineering-unicorn (опц.)</td><td><strong>SKIPPED</strong></td></tr><tr><td><strong>Phase 1</strong></td><td>sparc-prd-mini interactive</td><td>sparc-prd-mini <strong>AUTO mode</strong> + ваши доки как контекст</td></tr><tr><td>Phase 1 sub-phases</td><td>Explore + Research + Solve</td><td><strong>SKIPPED</strong> (ответы уже у вас в доках)</td></tr><tr><td><strong>Phase 2</strong></td><td>Validation (5 агентов)</td><td>без изменений</td></tr><tr><td><strong>Phase 3</strong></td><td>Toolkit Generation</td><td>без изменений</td></tr><tr><td><strong>Phase 4</strong></td><td>Finalize + scaffolds</td><td>без изменений</td></tr></tbody></table></div>
267
+ <h4 id="user-guide-tri-sub-puti">Три sub-пути</h4>
268
+ <h5 id="user-guide-path-a-polnyy-pipeline-rekomenduemyy">Path A — полный pipeline (рекомендуемый)</h5>
269
+ <pre data-lang=""><code class="language-text">/replicate "Use my docs in docs/existing/, skip Phase 0"</code></pre>
270
+ <p>Получите все 11 SPARC-документов + validation report + project-specific toolkit</p>
271
+ <ul><li>Docker scaffold. Лучший выбор когда нужен полный generated-проект.</li></ul>
272
+ <h5 id="user-guide-path-b-tolko-sparc-docs">Path B — только SPARC docs</h5>
273
+ <pre data-lang=""><code class="language-text">В Claude Code: «Используй skill sparc-prd-mini в AUTO режиме, читай контекст из
274
+ docs/existing/, сгенерируй 11 SPARC-документов в docs/. Не запускай Phase 2/3/4.»</code></pre>
275
+ <p>Только 11 файлов в <code>docs/</code>. Без validation, без toolkit, без scaffold. Полезно когда нужна только стандартизация документации.</p>
276
+ <h5 id="user-guide-path-c-tolko-validatsiya">Path C — только валидация</h5>
277
+ <p>Если ваши доки уже SPARC-форматированы (есть <code>PRD.md</code>, <code>Architecture.md</code> и т.д.):</p>
278
+ <pre data-lang="bash"><code class="language-bash"># 1. Переместите/переименуйте доки в стандартные имена
279
+ mv docs/existing/PRD.md docs/PRD.md
280
+ # ... остальные 10 SPARC-имен
281
+
282
+ # 2. В Claude Code:
283
+ «Вызови skill requirements-validator на docs/. Сгенерируй validation-report.md.»</code></pre>
284
+ <p>Получите только <code>docs/validation-report.md</code> + <code>docs/test-scenarios.md</code>. Без re-генерации SPARC.</p>
285
+ <h4 id="user-guide-caveats-vazhno-znat">Caveats (важно знать)</h4>
286
+ <ul><li><strong><code>[GAP: ...]</code> маркеры</strong> — если в ваших доках нет покрытия для какого-то из 11 SPARC-слотов, sparc-prd-mini поставит placeholder. Это нормально, но потребует ручного дополнения перед Phase 3.</li><li><strong>Validation может пометить «не INVEST»</strong> — если user stories в ваших доках не следуют INVEST/SMART, swarm выдаст 🟡 CAVEATS или 🔴 NEEDS WORK. Это сигнал, что доки стоит расширить, а не баг.</li><li><strong>Архитектурные ограничения</strong> — pattern, containers, infrastructure, deploy, AI integration — должны быть в ваших доках или явно переданы в input. По умолчанию sparc-prd-mini использует target-architecture из этой репы: Distributed Monolith / Docker / VPS / MCP.</li></ul>
287
+ <h4 id="user-guide-verification">Verification</h4>
288
+ <p>После <code>/replicate</code> запустите:</p>
289
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
290
+ <p><code>verify</code> сообщит:</p>
291
+ <ul><li>✅ Pre-shipped contract intact</li><li>✅ Post-/replicate hints: SPARC docs, validation-report, опционально toolkit-артефакты</li></ul>
292
+ <h4 id="user-guide-future-enhancement-m2-v-knownlimitations">Future enhancement (M2 в KNOWN_LIMITATIONS)</h4>
293
+ <p>Семантический флаг <code>--from-docs &lt;path&gt;</code> сейчас работает через natural-language override в input'е <code>/replicate</code>. Формальный CLI-флаг с парсингом на уровне команды — в roadmap'е (см. KNOWN_LIMITATIONS.md M2).</p>
294
+ <hr>
295
+ <h2 id="user-guide-start-bootstrap-proekta">/start — bootstrap проекта</h2>
296
+ <p><strong>Назначение:</strong> превратить SPARC-документацию в работающий monorepo с <code>docker compose up</code>.</p>
297
+ <p><strong>Использование:</strong></p>
298
+ <pre data-lang=""><code class="language-text">/start # с тестами + миграциями
299
+ /start --skip-tests # без тестов (быстрее)
300
+ /start --skip-seed # без DB seeding
301
+ /start --dry-run # preview без записи</code></pre>
302
+ <p><strong>4 фазы (sequential → parallel → sequential → finalize):</strong></p>
303
+ <ol><li><strong>Foundation</strong> — root configs (<code>package.json</code>, <code>docker-compose.yml</code>, <code>.env.example</code>)</li><li><strong>Packages</strong> (⚡ parallel via <code>Task</code> tool) — один Task на пакет из Architecture.md</li><li><strong>Integration</strong> — <code>docker compose build/up</code>, миграции, health-check</li><li><strong>Finalize</strong> — README + git tag <code>v0.1.0-scaffold</code></li></ol>
304
+ <p><strong>Critical rule:</strong> каждый Task в Phase 2 ОБЯЗАН ссылаться на конкретные SPARC docs (e.g., <code>docs/Specification.md</code> → ORM schema), не генерировать из памяти.</p>
305
+ <hr>
306
+ <h2 id="user-guide-run-avtonomnaya-sborka-fich">/run — автономная сборка фич</h2>
307
+ <p><strong>Назначение:</strong> прокрутить весь roadmap (или MVP-подмножество) автоматически.</p>
308
+ <p><strong>Использование:</strong></p>
309
+ <pre data-lang=""><code class="language-text">/run mvp # только priority=mvp
310
+ /run all # всё что в `next`/`planned`
311
+ /run mvp --feature-branches # каждая фича в отдельной ветке
312
+ /run mvp --feature-branches --auto-merge # с автомерджем</code></pre>
313
+ <p><strong>Workflow одной итерации:</strong></p>
314
+ <pre data-lang=""><code class="language-text">while есть фичи в scope:
315
+ feature_id = /next # выбрать highest-priority
316
+ if no feature: break
317
+ /go feature_id # complexity router
318
+ verify (tests green, code committed)
319
+ mark roadmap entry: status=done
320
+ git commit + git push</code></pre>
321
+ <p><strong>При <code>--feature-branches</code></strong> добавляются шаги:</p>
322
+ <ol><li>Verify on <code>main</code> (else fail)</li><li>Auto-stash dirty working tree</li><li><code>git checkout -b feature/{NNN}-{id}</code> (NNN = zero-padded 3-digit)</li><li>После реализации: <code>git push origin feature/{NNN}-{id}</code></li><li>Update roadmap с <code>branch</code> field</li><li><code>git checkout main</code></li><li>(если <code>--auto-merge</code>) <code>git merge --no-ff feature/{NNN}-{id}</code></li></ol>
323
+ <p><strong>Use case:</strong> для обучения / демо. Инструктор checkout'ит <code>feature/003-payment</code> для конкретной демонстрации.</p>
324
+ <hr>
325
+ <h2 id="user-guide-go-intelligent-router">/go — intelligent router</h2>
326
+ <p><strong>Назначение:</strong> автоматически выбрать <code>/plan</code>, <code>/feature</code> или <code>/feature-ent</code> по complexity score.</p>
327
+ <p><strong>Использование:</strong></p>
328
+ <pre data-lang=""><code class="language-text">/go auth-jwt # фича из roadmap по id
329
+ /go "Add Stripe integration" # свободное описание
330
+ /go auth-jwt --feature-branches # с branch workflow (см. /run)</code></pre>
331
+ <p><strong>Complexity scoring matrix:</strong></p>
332
+ <div class="table-wrap"><table><thead><tr><th>Сигнал</th><th>Очки</th></tr></thead><tbody><tr><td>Touches ≤ 3 files</td><td>-2</td></tr><tr><td>Touches &gt; 10 files</td><td>+3</td></tr><tr><td>External API integration</td><td>+2</td></tr><tr><td>New DB entities</td><td>+2</td></tr><tr><td>Cross-bounded-context dependencies</td><td>+3</td></tr><tr><td>Hotfix</td><td>-3</td></tr><tr><td>&gt; 2 hours implementation</td><td>+3</td></tr></tbody></table></div>
333
+ <p><strong>Decision:</strong></p>
334
+ <ul><li>≤ -2 → <code>/plan</code></li><li>-1 to +4 → <code>/feature</code></li><li>≥ +5 + <code>/feature-ent</code> доступен → <code>/feature-ent</code> (DDD pipeline)</li><li>≥ +5 без <code>/feature-ent</code> → <code>/feature</code> с extra architecture care</li></ul>
335
+ <hr>
336
+ <h2 id="user-guide-next-navigator-po-roadmap">/next — навигатор по roadmap</h2>
337
+ <p><strong>Использование:</strong></p>
338
+ <pre data-lang=""><code class="language-text">/next # default: top 3 next/planned features
339
+ /next update # сканирует код, suggest status updates
340
+ /next auth-jwt # mark done + cascade unblock</code></pre>
341
+ <p><strong>Default output:</strong></p>
342
+ <pre data-lang=""><code class="language-text">1. [mvp] auth-jwt — JWT login (medium, 2-4h)
343
+ 2. [mvp] user-profile — Profile CRUD (simple, 1-2h)
344
+ 3. [high] payment-webhook — Stripe handler (complex, 4-6h)
345
+
346
+ In progress: &lt;id&gt;
347
+ Done: 5/12
348
+ Blocked: 1</code></pre>
349
+ <p><strong>Roadmap schema</strong> см. в <code>04_api_reference.md</code>.</p>
350
+ <hr>
351
+ <h2 id="user-guide-plan-lyogkiy-plan">/plan — лёгкий план</h2>
352
+ <p><strong>Когда:</strong> ≤3 файла, &lt; 30 мин implementation, без новой архитектуры.</p>
353
+ <p><strong>Использование:</strong></p>
354
+ <pre data-lang=""><code class="language-text">/plan add-validation-helper
355
+ /plan "fix race condition in cart"</code></pre>
356
+ <p><strong>Output:</strong> <code>docs/plans/&lt;slug&gt;.md</code> с секциями:</p>
357
+ <ul><li>Goal (1-2 предложения)</li><li>Tasks (numbered checklist)</li><li>Files Touched (table)</li><li>Dependencies + Risks</li><li>Verification</li></ul>
358
+ <p>Auto-commit через Stop hook.</p>
359
+ <hr>
360
+ <h2 id="user-guide-feature-polnyy-sparc-mini-tsikl">/feature — полный SPARC-mini цикл</h2>
361
+ <p><strong>Когда:</strong> ≥4 файла, новая capability, новая архитектура.</p>
362
+ <p><strong>4 фазы с checkpoints:</strong></p>
363
+ <h3 id="user-guide-phase-1-plan-sparc-prd-mini">Phase 1 — PLAN (sparc-prd-mini)</h3>
364
+ <p>Генерирует 5 SPARC docs в <code>docs/features/&lt;feature&gt;/</code>:</p>
365
+ <ul><li><code>01_specification.md</code>, <code>02_pseudocode.md</code>, <code>03_architecture.md</code>, <code>04_refinement.md</code>, <code>05_completion.md</code></li></ul>
366
+ <h3 id="user-guide-phase-2-validate-requirements-validator">Phase 2 — VALIDATE (requirements-validator)</h3>
367
+ <p>Score ≥ 70 → Phase 3. Auto-retry на 🟡 (caveats), max 3 retry на 🔴.</p>
368
+ <h3 id="user-guide-phase-3-implement-parallel-agents">Phase 3 — IMPLEMENT (parallel agents)</h3>
369
+ <p><code>Task</code> tool spawns параллельные tasks по independent units из Architecture.</p>
370
+ <h3 id="user-guide-phase-4-review-brutal-honesty-review">Phase 4 — REVIEW (brutal-honesty-review)</h3>
371
+ <p>Findings по severity: blocker (must fix) / high / medium / low.</p>
372
+ <p><strong>AUTO mode</strong> (вызвано из <code>/go</code> или <code>/run</code>): без per-phase confirmations.</p>
373
+ <h3 id="user-guide-feature-workflow-v-suschestvuyuschem-proekte-mode-2">Feature workflow в существующем проекте (Mode 2)</h3>
374
+ <p><code>/feature</code> официально поддерживает <strong>два режима</strong> входа — оба используют идентичный 4-фазный pipeline (PLAN → VALIDATE → IMPLEMENT → REVIEW), те же validation thresholds, ту же retry-логику.</p>
375
+ <div class="table-wrap"><table><thead><tr><th>Mode</th><th>Когда</th><th>Pre-conditions</th></tr></thead><tbody><tr><td><strong>Mode 1: Post-/replicate</strong></td><td>Проект bootstrap'нут через <code>/replicate</code></td><td>CLAUDE.md, docs/, scaffold всё сгенерено /replicate</td></tr><tr><td><strong>Mode 2: Existing project</strong></td><td>Проект уже работает, добавляем фичи с верификацией</td><td><code>init</code> запущен поверх существующего проекта; CLAUDE.md уже существует</td></tr></tbody></table></div>
376
+ <h4 id="user-guide-kogda-ispolzovat-mode-2">Когда использовать Mode 2</h4>
377
+ <ul><li>У вас уже есть стек, PRD, Specification, Architecture, CLAUDE.md</li><li>Вы хотите добавлять фичи с <strong>тем же циклом валидации</strong> что в <code>/replicate</code></li><li>Вы НЕ хотите перегенерировать существующий CLAUDE.md и scaffold</li></ul>
378
+ <h4 id="user-guide-shagi-dlya-mode-2">Шаги для Mode 2</h4>
379
+ <pre data-lang="bash"><code class="language-bash"># 1. Установка (idempotent — НЕ трогает CLAUDE.md и существующие .claude/ файлы)
380
+ cd existing-project
381
+ npx @dzhechkov/p-replicator init
382
+ npx @dzhechkov/p-replicator verify # pre-shipped contract OK
383
+
384
+ # 2. Нормализация SPARC-путей (одноразово)
385
+ # /feature ожидает docs/PRD.md, docs/Specification.md, docs/Architecture.md
386
+ mv docs/your-prd.md docs/PRD.md
387
+ mv docs/your-spec.md docs/Specification.md
388
+ mv docs/your-arch.md docs/Architecture.md
389
+
390
+ # 3. (Опционально) feature-roadmap для batch-режима через /run
391
+ cat &gt; .claude/feature-roadmap.json &lt;&lt; 'EOF'
392
+ {
393
+ "features": [
394
+ {"id": "stripe-payments", "title": "Stripe", "priority": "mvp", "status": "planned"},
395
+ {"id": "user-2fa", "title": "2FA TOTP", "priority": "mvp", "status": "planned"}
396
+ ]
397
+ }
398
+ EOF
399
+
400
+ # 4. Запуск
401
+ claude
402
+ /feature stripe-payments # одна фича
403
+ /run mvp --feature-branches --auto-merge # batch с git-веткованием</code></pre>
404
+ <h4 id="user-guide-tri-sub-puti-dlya-mode-2">Три sub-пути для Mode 2</h4>
405
+ <h5 id="user-guide-path-a-feature-napryamuyu-rekomenduemyy">Path A — <code>/feature</code> напрямую (рекомендуемый)</h5>
406
+ <p>Одна фича, полный 4-фазный lifecycle. Подходит когда фича ≥4 файлов или вводит новую capability/архитектуру.</p>
407
+ <pre data-lang=""><code class="language-text">/feature add-stripe-payments</code></pre>
408
+ <h5 id="user-guide-path-b-go-auto-router">Path B — <code>/go</code> auto-router</h5>
409
+ <p>Сам решает между <code>/plan</code> (≤3 файла) и <code>/feature</code> (≥4 файла) по эвристикам.</p>
410
+ <pre data-lang=""><code class="language-text">/go add-pagination # → /plan (мелкая)
411
+ /go add-stripe-payments # → /feature (крупная)</code></pre>
412
+ <h5 id="user-guide-path-c-pryamoy-vyzov-skills-tolko-validation-tsikl">Path C — прямой вызов skills (только validation-цикл)</h5>
413
+ <p>Если у вас своя реализация-флоу и нужен <strong>только</strong> validation-cycle:</p>
414
+ <pre data-lang=""><code class="language-text">В Claude Code:
415
+ «Вызови skill requirements-validator на docs/features/my-feature/.
416
+ Сгенерируй validation-report.md с verdict 🟢/🟡/🔴.»
417
+
418
+ После реализации:
419
+ «Вызови skill brutal-honesty-review на изменённые файлы.»</code></pre>
420
+ <h4 id="user-guide-chto-sohranyaetsya-pri-init-v-suschestvuyuschem-proekte">Что сохраняется при <code>init</code> в существующем проекте</h4>
421
+ <div class="table-wrap"><table><thead><tr><th>Артефакт</th><th>Поведение</th></tr></thead><tbody><tr><td><code>CLAUDE.md</code> (root)</td><td><strong>Сохраняется</strong> (только <code>--force</code> перезапишет)</td></tr><tr><td><code>docs/PRD.md</code>, <code>Specification.md</code>, ваши доки</td><td><strong>Сохраняются</strong></td></tr><tr><td><code>.claude/commands/your-custom.md</code></td><td><strong>Сохраняются</strong></td></tr><tr><td><code>.claude/settings.json</code></td><td><strong>Сливается</strong> (v1.4.2+ deep-equals merge с <code>shippedDefaults</code> baseline для orphan-detection)</td></tr><tr><td><code>.gitignore</code>, <code>package.json</code></td><td><strong>Не трогаются</strong></td></tr><tr><td><code>.p-replicator.json</code></td><td>Создаётся новый (manifest)</td></tr></tbody></table></div>
422
+ <h4 id="user-guide-validation-thresholds-identichny-phase-2-of-replicate">Validation thresholds (идентичны Phase 2 of /replicate)</h4>
423
+ <p><code>requirements-validator</code> оценивает по INVEST (user stories) + SMART (acceptance criteria). Тот же swarm-of-5 что в <code>/replicate</code>:</p>
424
+ <ul><li>🟢 <strong>READY</strong> (score ≥ 70) — IMPLEMENT</li><li>🟡 <strong>CAVEATS</strong> (50-69, нет blockers) — IMPLEMENT + auto-retry один раз</li><li>🔴 <strong>NEEDS WORK</strong> (&lt; 50 OR blockers) — возврат на PLAN, max 3 retries → halt</li></ul>
425
+ <p>После <code>IMPLEMENT</code> — <code>brutal-honesty-review</code> с severity: <code>blocker</code> (must fix) / <code>high</code> (fix unless deferred) / <code>medium</code> (follow-up issue) / <code>low</code> (logged only).</p>
426
+ <h4 id="user-guide-caveats-mode-2-vazhno-znat">Caveats Mode 2 (важно знать)</h4>
427
+ <ol><li><strong><code>/start</code> НЕ запускайте</strong> — он для свежих scaffold'ов под <code>Architecture.md</code>, не для добавления к существующему проекту.</li><li><strong><code>/feature-ent</code> недоступна</strong> в Mode 2 если нет DDD/ADR/C4-доков — <code>/replicate</code> Phase 3 нормально генерит её условно. Используйте <code>/feature</code> или <code>/go</code>.</li><li><strong>Auto-commit hooks</strong> (<code>Stop</code> → <code>autocommit-roadmap.cjs</code> / <code>-insights.cjs</code> / <code>-plans.cjs</code>) могут конфликтовать с custom git-workflow. Решение: после <code>init</code> отредактируйте <code>.claude/settings.json</code> — удалите ненужные matchers. v1.4.2+ merge logic сохранит правки на следующих <code>update</code> командах благодаря <code>shippedDefaults</code> baseline.</li><li><strong>Нестандартные пути доков</strong> — нет флагов <code>--prd-path</code> / <code>--spec-path</code>. Решение: одноразовый rename или symlink. См. KNOWN_LIMITATIONS.md M3 — формальный config-flag в roadmap (Tier S effort).</li></ol>
428
+ <h4 id="user-guide-verification">Verification</h4>
429
+ <p>После <code>/feature</code> (или <code>/run</code>) запустите:</p>
430
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
431
+ <p>Должен показать:</p>
432
+ <ul><li>✅ Pre-shipped contract intact (10 skills + 11 commands + 4 agents + 5 rules + settings.json)</li><li>✅ Post-/replicate hints — для Mode 2 многие будут отсутствовать (это нормально)</li><li>📊 Per-feature artifacts: <code>docs/features/&lt;id&gt;/01_specification.md</code>...<code>05_completion.md</code>, <code>validation-report.md</code>, <code>review-report.md</code></li></ul>
433
+ <h4 id="user-guide-future-enhancement-m3-v-knownlimitations">Future enhancement (M3 в KNOWN_LIMITATIONS)</h4>
434
+ <p><code>docPaths</code> config в <code>.p-replicator.json</code> для нестандартных путей доков — в roadmap'е. Tier S effort, чисто config + spec-read изменения, без изменений CLI-кода.</p>
435
+ <hr>
436
+ <h2 id="user-guide-myinsights-knowledge-capture">/myinsights — knowledge capture</h2>
437
+ <p><strong>Назначение:</strong> строить project-local knowledge base «грабли» (rakes), которые auto-injected'ятся в каждую сессию через <code>SessionStart</code> hook.</p>
438
+ <p><strong>Использование:</strong></p>
439
+ <pre data-lang=""><code class="language-text">/myinsights # interactive prompt
440
+ /myinsights "Prisma migrate dev fails silently if shadow DB unreachable. Workaround: set DATABASE_URL_SHADOW explicitly."
441
+ /myinsights recall prisma # search by keyword</code></pre>
442
+ <p><strong>Структура entry:</strong></p>
443
+ <pre data-lang="markdown"><code class="language-markdown">## 2026-05-07 — Prisma shadow DB requirement
444
+
445
+ **Tags:** prisma-migration, postgres-shadow
446
+
447
+ **Problem:**
448
+ Migrate dev fails silently when shadow DB unreachable (no error message).
449
+
450
+ **Solution:**
451
+ Set DATABASE_URL_SHADOW env var explicitly to a separate database.
452
+
453
+ **References:** packages/backend/prisma/schema.prisma:12, commit a3f4...</code></pre>
454
+ <p><strong>Auto-injection:</strong> <code>SessionStart</code> hook (<code>.claude/hooks/session-insights.cjs</code>) читает <code>.claude/insights/index.md</code>, выводит 3 свежих entries в stdout, Claude Code инжектит в initial context.</p>
455
+ <hr>
456
+ <h2 id="user-guide-docs-generator-dokumentatsii">/docs — генератор документации</h2>
457
+ <p><strong>Это команда, которая создала эти файлы.</strong> Bilingual (RU + EN) по умолчанию.</p>
458
+ <p><strong>Использование:</strong></p>
459
+ <pre data-lang=""><code class="language-text">/docs # RU + EN, create or replace
460
+ /docs ru # только русский
461
+ /docs eng # только английский
462
+ /docs update # обновить только изменённые секции</code></pre>
463
+ <p><strong>Output:</strong> <code>README/{ru,eng}/</code> с 8 файлами per language (этот файл — один из них).</p>
464
+ <hr>
465
+ <h2 id="user-guide-harvest-izvlechenie-znaniy">/harvest — извлечение знаний</h2>
466
+ <p><strong>Назначение:</strong> в конце проекта извлечь reusable-паттерны (skills, commands, rules, templates, snippets) для использования в новых проектах.</p>
467
+ <p><strong>Использование:</strong></p>
468
+ <pre data-lang=""><code class="language-text">/harvest quick # быстро, без checkpoints (~15 мин)
469
+ /harvest full # полный 4-фазный pipeline (~45 мин)
470
+ /harvest marker # пометить артефакт для extraction
471
+ /harvest audit # ревью toolkit-зрелости</code></pre>
472
+ <p><strong>4 фазы (full):</strong></p>
473
+ <ol><li>AGENT REVIEW — 5 параллельных scanner-агентов</li><li>CLASSIFY — 7 категорий (skills/commands/rules/templates/...)</li><li>DECONTEXTUALIZE — убрать project-specific имена</li><li>INTEGRATE — записать в toolkit, обновить index</li></ol>
474
+ <hr>
475
+ <h2 id="user-guide-deploy-deployment-workflow">/deploy — deployment workflow</h2>
476
+ <p><strong>Использование:</strong></p>
477
+ <pre data-lang=""><code class="language-text">/deploy dev # auto, минимум checks
478
+ /deploy staging # gate checks + smoke tests + health
479
+ /deploy prod # explicit `yes` confirmation + rollback plan</code></pre>
480
+ <p><strong>Per-tier gate checks:</strong></p>
481
+ <ul><li>ALL: tests pass, build OK, lint clean</li><li>STAGING+PROD: env vars set, external services reachable, images tagged</li><li>PROD: staging successful in 24h, no critical issues, on-call notified</li></ul>
482
+ <p><strong>Auto-rollback</strong> на staging/prod при failed health-check.</p>
483
+ <hr>
484
+ <h2 id="user-guide-svyazi-mezhdu-komandami">Связи между командами</h2>
485
+ <pre data-lang=""><code class="language-text">/replicate ─┬─ /start ──────── (один раз для bootstrap'а)
486
+
487
+ └─ /run mvp/all ──┬─ /next (выбор)
488
+ ├─ /go ──┬─ /plan (simple)
489
+ │ └─ /feature (standard)
490
+ │ └─ AUTO mode внутри /run
491
+ └─ git push + roadmap update
492
+
493
+ В любой момент:
494
+ /myinsights — фиксация знаний
495
+ /docs — обновление документации
496
+ /verify, /doctor — health checks (CLI)
497
+
498
+ В конце:
499
+ /harvest — извлечение паттернов
500
+ /deploy — деплой в production</code></pre>
501
+ <p>Подробности по конфигурации hooks/statusline/insights см. в <a href="#admin-guide">03_admin_guide.md</a>.</p>
502
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#quickstart" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">01. Быстрый старт</span></span></a><a href="#admin-guide" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">03. Admin Guide</span></span> <span class="nav-arrow">→</span></a></nav>
503
+ </article>
504
+ <article id="admin-guide" class="section" data-section-title="03. Admin Guide">
505
+ <h1 id="03-admin-guide-konfiguratsiya-i-tonkaya-nastroyka">03. Admin Guide — конфигурация и тонкая настройка</h1>
506
+ <p>Для тех, кто хочет понять и кастомизировать инфраструктуру <code>p-replicator</code>: hooks, statusline, settings.json, insights, roadmap.</p>
507
+ <h2 id="admin-guide-settingsjson-glavnyy-konfig">settings.json — главный конфиг</h2>
508
+ <p><strong>Расположение:</strong> <code>.claude/settings.json</code> в корне проекта.</p>
509
+ <p><strong>Структура (defaults после init):</strong></p>
510
+ <pre data-lang="json"><code class="language-json">{
511
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
512
+ "_comment": "Default hooks + statusline shipped by @dzhechkov/p-replicator init.",
513
+ "statusLine": {
514
+ "type": "command",
515
+ "command": "node .claude/hooks/statusline.cjs"
516
+ },
517
+ "hooks": {
518
+ "SessionStart": [
519
+ {
520
+ "matcher": "*",
521
+ "hooks": [
522
+ { "type": "command", "command": "node .claude/hooks/session-insights.cjs", "timeout": 5 }
523
+ ]
524
+ }
525
+ ],
526
+ "Stop": [
527
+ {
528
+ "matcher": "*",
529
+ "hooks": [
530
+ { "type": "command", "command": "node .claude/hooks/autocommit-roadmap.cjs", "timeout": 10 },
531
+ { "type": "command", "command": "node .claude/hooks/autocommit-insights.cjs", "timeout": 10 },
532
+ { "type": "command", "command": "node .claude/hooks/autocommit-plans.cjs", "timeout": 10 }
533
+ ]
534
+ }
535
+ ]
536
+ }
537
+ }</code></pre>
538
+ <p><strong>Кастомизация:</strong> добавляйте новые hooks или event types — они будут СОХРАНЕНЫ при <code>init --force</code> или <code>update</code> благодаря merge-логике (<code>mergeSettingsJson</code> + <code>removeOrphanHooks</code>).</p>
539
+ <p><strong>Полный сброс к defaults:</strong></p>
540
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator init --force --reset-settings</code></pre>
541
+ <hr>
542
+ <h2 id="admin-guide-hooks-zhiznennyy-tsikl">Hooks — жизненный цикл</h2>
543
+ <p><code>p-replicator</code> shipped с <strong>6 cross-platform Node-скриптами</strong> в <code>.claude/hooks/</code>:</p>
544
+ <div class="table-wrap"><table><thead><tr><th>Hook</th><th>Event</th><th>Что делает</th></tr></thead><tbody><tr><td><code>session-insights.cjs</code></td><td>SessionStart</td><td>Инжектит 3 свежих insights из <code>.claude/insights/index.md</code> в stdout (Claude Code захватывает)</td></tr><tr><td><code>autocommit-roadmap.cjs</code></td><td>Stop</td><td>Auto-commit <code>.claude/feature-roadmap.json</code> если изменён</td></tr><tr><td><code>autocommit-insights.cjs</code></td><td>Stop</td><td>Auto-commit <code>.claude/insights/</code> если изменены</td></tr><tr><td><code>autocommit-plans.cjs</code></td><td>Stop</td><td>Auto-commit <code>docs/plans/</code> если изменены</td></tr><tr><td><code>statusline.cjs</code></td><td>(statusLine)</td><td>Multi-line dashboard над промптом</td></tr><tr><td><code>state-update.cjs</code></td><td>(utility)</td><td>Argv-driven helper для записи <code>.claude/.p-replicator-state.json</code></td></tr></tbody></table></div>
545
+ <p><strong>Cross-platform discipline:</strong> все 4 autocommit-скрипта используют <code>execFileSync('git', [...])</code> (без shell-pipes, без <code>2&gt;/dev/null</code>/<code>|| true</code> — работает на Windows-cmd, bash, PowerShell идентично).</p>
546
+ <p><strong>Каждый скрипт defensive:</strong> wrapped в try/catch, exit 0 always (best-effort, не блокирует сессию).</p>
547
+ <hr>
548
+ <h2 id="admin-guide-statusline-pribornaya-panel">Statusline — приборная панель</h2>
549
+ <p><strong>Что показывает (6 строк):</strong></p>
550
+ <pre data-lang=""><code class="language-text">P-Replicator V1.5.0 ● user │ Sonnet 4.7
551
+ 🚀 Pipeline /&lt;cmd&gt; ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
552
+ 🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
553
+ 📊 SPARC ●11/11 │ 🟢 78/100 │ Plans ●3 │ ADRs ●2 │ Harvest 2026-05-05
554
+ 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●5+2 │ Hooks ●6/6
555
+ 💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓</code></pre>
556
+ <p><strong>Источники (heuristic + state-file):</strong></p>
557
+ <div class="table-wrap"><table><thead><tr><th>Метрика</th><th>Откуда</th></tr></thead><tbody><tr><td>Pipeline command + phase + progress</td><td><code>.claude/.p-replicator-state.json</code> (state-file)</td></tr><tr><td>Roadmap progress</td><td><code>.claude/feature-roadmap.json</code></td></tr><tr><td>SPARC count</td><td><code>docs/{PRD,Architecture,...}.md</code> files</td></tr><tr><td>Validation score</td><td>regex extract from <code>docs/validation-report.md</code></td></tr><tr><td>Plans count</td><td><code>docs/plans/*.md</code></td></tr><tr><td>ADRs count</td><td><code>docs/ADR.md</code> <code>## ADR-...</code> headings, или <code>docs/adr/*.md</code>, или <code>docs/ddd/adr/*.md</code></td></tr><tr><td>Insights count + last date</td><td><code>## YYYY-MM-DD</code> headings в <code>.claude/insights/index.md</code></td></tr><tr><td>Toolkit counts</td><td>filesystem walk <code>.claude/{skills,commands,agents,rules,hooks}/</code></td></tr><tr><td>Settings status</td><td>deep-equals current vs <code>manifest.shippedDefaults</code> → <code>defaults</code>/<code>merged</code></td></tr><tr><td>MCP servers</td><td><code>.mcp.json</code></td></tr><tr><td>Domain</td><td>keyword grep <code>CLAUDE.md</code> (banking/retail/enterprise/healthcare)</td></tr><tr><td>Last harvest</td><td><code>TOOLKIT_HARVEST.md</code> mtime</td></tr><tr><td>Last test</td><td>optional <code>.claude/.last-test.json</code> cache</td></tr></tbody></table></div>
558
+ <p><strong>Stale state file:</strong> если <code>.p-replicator-state.json</code> старше 30 минут — игнорируется (показывается <code>idle</code>).</p>
559
+ <p><strong>Защита от поломки:</strong> каждая секция wrapped в <code>safeRun()</code> — error в одной не убивает весь statusline.</p>
560
+ <p><strong>Отключить statusline:</strong></p>
561
+ <p>Удалите поле <code>statusLine</code> из <code>.claude/settings.json</code>. На следующем <code>update</code> с merge-логикой удаление будет сохранено.</p>
562
+ <hr>
563
+ <h2 id="admin-guide-state-file-dlya-live-progress">State-file для live progress</h2>
564
+ <p><code>.claude/.p-replicator-state.json</code> — ephemeral state, обновляется командами во время выполнения pipeline:</p>
565
+ <pre data-lang="json"><code class="language-json">{
566
+ "currentCommand": "/feature",
567
+ "currentPhase": {
568
+ "name": "VALIDATE",
569
+ "index": 2,
570
+ "total": 4,
571
+ "progress": 0.5
572
+ },
573
+ "lastCommand": "/replicate",
574
+ "lastFeature": "auth-jwt",
575
+ "updatedAt": "2026-05-07T..."
576
+ }</code></pre>
577
+ <p><strong>Обновляется через <code>state-update.cjs</code>:</strong></p>
578
+ <pre data-lang="bash"><code class="language-bash">node .claude/hooks/state-update.cjs \
579
+ --command /feature \
580
+ --phase VALIDATE \
581
+ --index 2 \
582
+ --total 4 \
583
+ --progress 0.5</code></pre>
584
+ <p>Команды pipeline'а опционально вызывают этот скрипт через Bash tool, чтобы statusline показывал реальный прогресс.</p>
585
+ <p><strong>⚠️ Известное ограничение:</strong> этот файл не auto-gitignored. Рекомендуется добавить вручную:</p>
586
+ <pre data-lang=""><code class="language-text">echo ".claude/.p-replicator-state.json" &gt;&gt; .gitignore
587
+ echo ".claude/.last-test.json" &gt;&gt; .gitignore</code></pre>
588
+ <p>См. <code>KNOWN_LIMITATIONS.md</code> пункт L5.</p>
589
+ <hr>
590
+ <h2 id="admin-guide-insights-system">Insights system</h2>
591
+ <p><strong>Storage:</strong> <code>.claude/insights/index.md</code> (markdown лог).</p>
592
+ <p><strong>Формат entry:</strong></p>
593
+ <pre data-lang="markdown"><code class="language-markdown">## YYYY-MM-DD — короткий title
594
+
595
+ **Tags:** tag1, tag2, tag3
596
+
597
+ **Problem:**
598
+ Что произошло (1-3 предложения).
599
+
600
+ **Solution:**
601
+ Что починило (1-5 предложений с кодом если уместно).
602
+
603
+ **References:** file:line или commit hash или external link
604
+
605
+ ---</code></pre>
606
+ <p><strong>Жизненный цикл:</strong></p>
607
+ <ul><li>≤ 50 entries → один <code>index.md</code></li><li>&gt; 50 → split на archive <code>&lt;YYYY-MM&gt;.md</code> с <code>index.md</code> как TOC</li><li>Никогда не удалять — only supersede через <code>**Status:** superseded by &lt;link&gt;</code></li></ul>
608
+ <p><strong>Tag-конвенции:</strong></p>
609
+ <ul><li>✅ <code>prisma-migration</code>, <code>postgres-timezone</code>, <code>docker-compose-network</code></li><li>❌ <code>bug</code>, <code>fix</code>, <code>important</code> (слишком generic — recall fail'ит)</li></ul>
610
+ <p><strong>Auto-injection через SessionStart hook</strong> — описано выше.</p>
611
+ <hr>
612
+ <h2 id="admin-guide-roadmap-management">Roadmap management</h2>
613
+ <p><strong>Файл:</strong> <code>.claude/feature-roadmap.json</code> (генерируется в <code>/replicate</code> Phase 3 из PRD MVP scope, или вручную).</p>
614
+ <p><strong>Schema (post v1.5.0):</strong></p>
615
+ <pre data-lang="json"><code class="language-json">{
616
+ "version": "1.0",
617
+ "features": [
618
+ {
619
+ "id": "auth-jwt",
620
+ "number": 1,
621
+ "branch": "feature/001-auth-jwt",
622
+ "name": "JWT-based authentication",
623
+ "priority": "mvp",
624
+ "status": "next",
625
+ "complexity": "medium",
626
+ "estimated_hours": "2-4",
627
+ "blockers": [],
628
+ "expected_files": [
629
+ "packages/backend/src/auth/jwt.ts"
630
+ ],
631
+ "depends_on": []
632
+ }
633
+ ]
634
+ }</code></pre>
635
+ <p><strong>Lifecycle states:</strong></p>
636
+ <ul><li><code>planned</code> → ещё не приоритетная</li><li><code>next</code> → следующая в очереди (берётся <code>/next</code>)</li><li><code>in_progress</code> → активно работают</li><li><code>done</code> → реализована</li><li><code>blocked</code> → ждёт <code>depends_on</code> или manual fix</li></ul>
637
+ <p><strong>Поля <code>number</code> и <code>branch</code></strong> заполняются <code>--feature-branches</code> flag'ом в <code>/run</code> или <code>/go</code>.</p>
638
+ <p><strong>Auto-commit</strong> через <code>autocommit-roadmap.cjs</code> (Stop hook) при изменениях.</p>
639
+ <hr>
640
+ <h2 id="admin-guide-doctor-verify-dva-raznyh-instrumenta">Doctor + Verify — два разных инструмента</h2>
641
+ <div class="table-wrap"><table><thead><tr><th>Инструмент</th><th>Что проверяет</th><th>Когда</th></tr></thead><tbody><tr><td><code>npx @dzhechkov/p-replicator doctor</code></td><td>Pre-shipped contract: 10 skills + 11 commands + 4 agents + 5 rules + settings.json + 6 hooks + git on PATH</td><td>После init / при подозрении что что-то сломалось</td></tr><tr><td><code>npx @dzhechkov/p-replicator verify</code></td><td>Pre-shipped + post-/replicate hints (CLAUDE.md, planner.md, security.md, feature-roadmap.json, и т.д.)</td><td>После каждого <code>/replicate</code> для уверенности</td></tr></tbody></table></div>
642
+ <p><strong><code>doctor</code> exit codes:</strong></p>
643
+ <ul><li><code>0</code> — всё в порядке</li><li><code>1</code> — что-то отсутствует из must-have (используйте <code>init --force</code> для repair)</li></ul>
644
+ <p><strong><code>verify</code> exit codes:</strong></p>
645
+ <ul><li><code>0</code> — pre-shipped contract в порядке (могут быть warnings про project-specific)</li><li><code>1</code> — pre-shipped contract нарушен</li></ul>
646
+ <hr>
647
+ <h2 id="admin-guide-update-workflow">Update workflow</h2>
648
+ <pre data-lang="bash"><code class="language-bash"># Безопасный upgrade с preserve user customizations:
649
+ npx @dzhechkov/p-replicator@latest update
650
+
651
+ # Или через init --force (тоже preserves customizations):
652
+ npx @dzhechkov/p-replicator@latest init --force
653
+
654
+ # Полный сброс settings.json к defaults:
655
+ npx @dzhechkov/p-replicator@latest init --force --reset-settings</code></pre>
656
+ <p><strong>Что делает merge-логика:</strong></p>
657
+ <ol><li>Читает <code>manifest.shippedDefaults['settings.json']</code> (что мы shipped в прошлый раз)</li><li>Читает текущий <code>templates/.claude/settings.json</code> (новый template)</li><li>Читает <code>.claude/settings.json</code> (user's current)</li><li><strong>Orphan detection:</strong> удаляет hooks, которые были в old template но НЕТ в new</li><li><strong>Merge:</strong> добавляет hooks из new template которых ЕЩЁ НЕТ в user's current</li><li>User-added hooks (никогда не были в old template) — <strong>СОХРАНЯЮТСЯ</strong></li></ol>
658
+ <p><strong>Identity model:</strong> hooks сравниваются по <code>command</code> string. User-modified default (изменил command) → treated как user-added, preserved.</p>
659
+ <p>См. подробности алгоритма в <a href="#architecture">05_architecture.md</a>.</p>
660
+ <hr>
661
+ <h2 id="admin-guide-mcp-servers">MCP servers</h2>
662
+ <p><strong>Файл:</strong> <code>.mcp.json</code> (project-local).</p>
663
+ <pre data-lang="json"><code class="language-json">{
664
+ "mcpServers": {
665
+ "filesystem": {
666
+ "command": "npx",
667
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
668
+ },
669
+ "github": {
670
+ "command": "npx",
671
+ "args": ["-y", "@modelcontextprotocol/server-github"],
672
+ "env": { "GITHUB_TOKEN": "..." }
673
+ }
674
+ }
675
+ }</code></pre>
676
+ <p>Statusline показывает количество MCP серверов в строке Status.</p>
677
+ <p><code>/replicate</code> Phase 3 автоматически генерирует <code>.mcp.json</code> при detected external integrations.</p>
678
+ <hr>
679
+ <h2 id="admin-guide-svyaz-s-keysarium">Связь с Keysarium</h2>
680
+ <p>Если в проекте обнаружен <code>.keysarium.json</code> (от соседнего пакета <code>@dzhechkov/keysarium</code>):</p>
681
+ <ul><li><code>init</code> показывает интеграционный banner</li><li>Statusline показывает <code>🧬 Keysarium ✓</code></li><li><code>/replicate</code> Phase 3 НЕ дублирует skills, которые уже предоставлены Keysarium'ом</li></ul>
682
+ <p>Документация Keysarium — в собственном пакете.</p>
683
+ <hr>
684
+ <h2 id="admin-guide-dalshe">Дальше</h2>
685
+ <ul><li><a href="#api-reference">04_api_reference.md</a> — формальные схемы</li><li><a href="#architecture">05_architecture.md</a> — внутреннее устройство</li><li><a href="#troubleshooting">06_troubleshooting.md</a> — типичные проблемы</li></ul>
686
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#user-guide" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">02. Руководство</span></span></a><a href="#api-reference" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">04. API Reference</span></span> <span class="nav-arrow">→</span></a></nav>
687
+ </article>
688
+ <article id="api-reference" class="section" data-section-title="04. API Reference">
689
+ <h1 id="04-api-reference">04. API Reference</h1>
690
+ <p>Формальная справка: CLI-команды, флаги, схемы JSON-файлов.</p>
691
+ <h2 id="api-reference-cli-npx-dzhechkovp-replicator">CLI: <code>npx @dzhechkov/p-replicator</code></h2>
692
+ <h3 id="api-reference-subcommands">Subcommands</h3>
693
+ <div class="table-wrap"><table><thead><tr><th>Subcommand</th><th>Назначение</th><th>Exit code</th></tr></thead><tbody><tr><td><code>init</code> (default)</td><td>Установка пакета в проект</td><td><code>0</code> ok, <code>1</code> если уже установлен без <code>--force</code></td></tr><tr><td><code>update</code></td><td>Обновление файлов до новой версии</td><td><code>0</code> ok, <code>1</code> если не установлен</td></tr><tr><td><code>remove</code></td><td>Удаление package-tracked файлов</td><td><code>0</code> ok, <code>1</code> если не установлен</td></tr><tr><td><code>list</code></td><td>Список установленных components</td><td><code>0</code></td></tr><tr><td><code>doctor</code></td><td>Health check pre-shipped contract</td><td><code>0</code> ok, <code>1</code> если что-то не так</td></tr><tr><td><code>verify</code></td><td>Pre-shipped + post-/replicate проверка</td><td><code>0</code> ok, <code>1</code> если pre-shipped contract нарушен</td></tr></tbody></table></div>
694
+ <h3 id="api-reference-globalnye-flagi">Глобальные флаги</h3>
695
+ <div class="table-wrap"><table><thead><tr><th>Флаг</th><th>Где работает</th><th>Описание</th></tr></thead><tbody><tr><td><code>--force</code></td><td><code>init</code></td><td>Перезаписать существующие файлы (с merge-логикой для settings.json)</td></tr><tr><td><code>--dry-run</code></td><td><code>init</code>, <code>update</code>, <code>remove</code></td><td>Preview без записи на диск</td></tr><tr><td><code>--reset-settings</code></td><td><code>init --force</code>, <code>update</code></td><td>Полный overwrite settings.json (отключает merge)</td></tr><tr><td><code>--help</code>, <code>-h</code></td><td>любой</td><td>Показать help</td></tr><tr><td><code>--version</code>, <code>-v</code></td><td>любой</td><td>Показать версию пакета</td></tr></tbody></table></div>
696
+ <h3 id="api-reference-slash-command-flagi-vnutri-claude-code">Slash command флаги (внутри Claude Code)</h3>
697
+ <div class="table-wrap"><table><thead><tr><th>Флаг</th><th>Где работает</th><th>Описание</th></tr></thead><tbody><tr><td><code>--feature-branches</code></td><td><code>/run</code>, <code>/go</code></td><td>Каждая фича в отдельной ветке <code>feature/{NNN}-{id}</code></td></tr><tr><td><code>--auto-merge</code></td><td><code>/run</code>, <code>/go</code> (с <code>--feature-branches</code>)</td><td>Автомердж feature-ветки в main после успеха</td></tr><tr><td><code>--skip-tests</code></td><td><code>/start</code></td><td>Пропустить генерацию тестов</td></tr><tr><td><code>--skip-seed</code></td><td><code>/start</code></td><td>Пропустить DB seeding</td></tr><tr><td><code>--dry-run</code></td><td><code>/start</code>, <code>/replicate</code></td><td>Preview без записи</td></tr></tbody></table></div>
698
+ <hr>
699
+ <h2 id="api-reference-manifest-schema-p-replicatorjson">Manifest schema (<code>.p-replicator.json</code>)</h2>
700
+ <pre data-lang="json"><code class="language-json">{
701
+ "version": "1.5.0",
702
+ "installedAt": "2026-05-07T12:00:00.000Z",
703
+ "components": ["agents", "commands", "hooks", "rules", "settings", "skills"],
704
+ "files": [
705
+ ".claude/agents/doc-validator.md",
706
+ ".claude/commands/replicate.md",
707
+ "...sorted list of all installed files..."
708
+ ],
709
+ "shippedDefaults": {
710
+ "settings.json": {
711
+ "hooks": { "SessionStart": [...], "Stop": [...] },
712
+ "statusLine": { "type": "command", "command": "..." }
713
+ }
714
+ }
715
+ }</code></pre>
716
+ <p><strong>Поля:</strong></p>
717
+ <div class="table-wrap"><table><thead><tr><th>Поле</th><th>Тип</th><th>Назначение</th></tr></thead><tbody><tr><td><code>version</code></td><td>semver</td><td>Версия pre-replicator при последнем install/update</td></tr><tr><td><code>installedAt</code></td><td>ISO-8601</td><td>Timestamp последней установки</td></tr><tr><td><code>components</code></td><td>array of group keys</td><td>Pre-shipped группы (skills/commands/agents/rules/settings/hooks)</td></tr><tr><td><code>files</code></td><td>sorted array</td><td>Все package-tracked файлы (для <code>remove</code>)</td></tr><tr><td><code>shippedDefaults</code></td><td>optional map</td><td>Snapshot template'ов для orphan detection при upgrade</td></tr></tbody></table></div>
718
+ <p><strong>Backward compat:</strong> manifest без <code>shippedDefaults</code> (pre-1.4.3) загружается без ошибок — orphan detection skipped на первый upgrade.</p>
719
+ <hr>
720
+ <h2 id="api-reference-roadmap-schema-claudefeature-roadmapjson">Roadmap schema (<code>.claude/feature-roadmap.json</code>)</h2>
721
+ <pre data-lang="json"><code class="language-json">{
722
+ "version": "1.0",
723
+ "features": [
724
+ {
725
+ "id": "auth-jwt",
726
+ "number": 1,
727
+ "branch": "feature/001-auth-jwt",
728
+ "name": "JWT-based authentication",
729
+ "priority": "mvp",
730
+ "status": "next",
731
+ "complexity": "medium",
732
+ "estimated_hours": "2-4",
733
+ "blockers": [],
734
+ "expected_files": ["packages/backend/src/auth/jwt.ts"],
735
+ "depends_on": []
736
+ }
737
+ ]
738
+ }</code></pre>
739
+ <h3 id="api-reference-feature-fields">Feature fields</h3>
740
+ <div class="table-wrap"><table><thead><tr><th>Field</th><th>Required</th><th>Тип</th><th>Заполняется кем</th><th>Назначение</th></tr></thead><tbody><tr><td><code>id</code></td><td>yes</td><td>kebab-case slug</td><td>initial generation</td><td>Стабильный идентификатор</td></tr><tr><td><code>number</code></td><td>optional</td><td>int</td><td><code>--feature-branches</code> flag</td><td>Sequential 1..N для branch naming</td></tr><tr><td><code>branch</code></td><td>optional</td><td>string</td><td><code>--feature-branches</code> после успеха</td><td><code>feature/{NNN}-{id}</code> actual ref</td></tr><tr><td><code>name</code></td><td>recommended</td><td>string</td><td>initial generation</td><td>Human-readable title</td></tr><tr><td><code>priority</code></td><td>yes</td><td>enum</td><td>initial generation</td><td><code>mvp</code> \</td><td><code>high</code> \</td><td><code>medium</code> \</td><td><code>low</code></td></tr><tr><td><code>status</code></td><td>yes</td><td>enum</td><td>lifecycle</td><td><code>planned</code> \</td><td><code>next</code> \</td><td><code>in_progress</code> \</td><td><code>done</code> \</td><td><code>blocked</code></td></tr><tr><td><code>complexity</code></td><td>optional</td><td>enum</td><td>initial generation</td><td><code>simple</code> \</td><td><code>medium</code> \</td><td><code>complex</code></td></tr><tr><td><code>estimated_hours</code></td><td>optional</td><td>string</td><td>initial generation</td><td>Time hint</td></tr><tr><td><code>blockers</code></td><td>optional</td><td>string[]</td><td>manual</td><td>Issue IDs или free-form</td></tr><tr><td><code>expected_files</code></td><td>optional</td><td>string[]</td><td>initial generation</td><td>Используется <code>/next update</code> для detection</td></tr><tr><td><code>depends_on</code></td><td>optional</td><td>string[]</td><td>initial generation</td><td>Feature IDs которые должны завершиться первыми</td></tr></tbody></table></div>
741
+ <hr>
742
+ <h2 id="api-reference-state-file-schema-claudep-replicator-statejson">State-file schema (<code>.claude/.p-replicator-state.json</code>)</h2>
743
+ <pre data-lang="json"><code class="language-json">{
744
+ "currentCommand": "/feature",
745
+ "currentPhase": {
746
+ "name": "VALIDATE",
747
+ "index": 2,
748
+ "total": 4,
749
+ "progress": 0.5
750
+ },
751
+ "lastCommand": "/replicate",
752
+ "lastFeature": "auth-jwt",
753
+ "updatedAt": "2026-05-07T..."
754
+ }</code></pre>
755
+ <p><strong>Поля:</strong></p>
756
+ <div class="table-wrap"><table><thead><tr><th>Field</th><th>Тип</th><th>Назначение</th></tr></thead><tbody><tr><td><code>currentCommand</code></td><td><code>/&lt;name&gt;</code></td><td>Активная команда сейчас (<code>null</code> если idle)</td></tr><tr><td><code>currentPhase</code></td><td>object</td><td>Live progress в текущей команде</td></tr><tr><td><code>currentPhase.name</code></td><td>string</td><td>Имя фазы (e.g., <code>VALIDATE</code>, <code>IMPLEMENT</code>)</td></tr><tr><td><code>currentPhase.index</code></td><td>int</td><td>Текущая фаза 1..total</td></tr><tr><td><code>currentPhase.total</code></td><td>int</td><td>Сколько всего фаз</td></tr><tr><td><code>currentPhase.progress</code></td><td>float 0..1</td><td>Прогресс в текущей фазе</td></tr><tr><td><code>lastCommand</code></td><td><code>/&lt;name&gt;</code></td><td>Предыдущая команда (для статусной строки)</td></tr><tr><td><code>lastFeature</code></td><td>string</td><td>ID последней реализованной фичи</td></tr><tr><td><code>updatedAt</code></td><td>ISO-8601</td><td>Time-stamp</td></tr></tbody></table></div>
757
+ <p><strong>Stale check:</strong> statusline игнорирует state старше 30 минут.</p>
758
+ <p><strong>Update API:</strong></p>
759
+ <pre data-lang="bash"><code class="language-bash">node .claude/hooks/state-update.cjs \
760
+ --command /feature \
761
+ --phase VALIDATE \
762
+ --index 2 \
763
+ --total 4 \
764
+ --progress 0.5 \
765
+ --last-command /replicate \
766
+ --last-feature auth-jwt</code></pre>
767
+ <p>Or with full JSON:</p>
768
+ <pre data-lang="bash"><code class="language-bash">node .claude/hooks/state-update.cjs --json '{"currentCommand":"/run", ...}'</code></pre>
769
+ <hr>
770
+ <h2 id="api-reference-settingsjson-struktura">settings.json — структура</h2>
771
+ <pre data-lang="json"><code class="language-json">{
772
+ "$schema": "https://json.schemastore.org/claude-code-settings.json",
773
+ "_comment": "Описание установки",
774
+ "statusLine": {
775
+ "type": "command",
776
+ "command": "node .claude/hooks/statusline.cjs"
777
+ },
778
+ "hooks": {
779
+ "SessionStart": [ /* matchers + hooks */ ],
780
+ "Stop": [ /* matchers + hooks */ ],
781
+ "PreToolUse": [ /* user-added */ ],
782
+ "PostToolUse": [ /* user-added */ ]
783
+ }
784
+ }</code></pre>
785
+ <h3 id="api-reference-statusline-field"><code>statusLine</code> field</h3>
786
+ <pre data-lang="json"><code class="language-json">{
787
+ "statusLine": {
788
+ "type": "command", // только "command" поддерживается
789
+ "command": "node .claude/hooks/statusline.cjs"
790
+ }
791
+ }</code></pre>
792
+ <p>Скрипт пишет в stdout multi-line ANSI-output. Удалите поле — statusline выключится (merge сохранит удаление при upgrade).</p>
793
+ <h3 id="api-reference-hookseventtype-array"><code>hooks.&lt;EventType&gt;</code> array</h3>
794
+ <p>Каждый element:</p>
795
+ <pre data-lang="json"><code class="language-json">{
796
+ "matcher": "*", // или regex для tool-name
797
+ "hooks": [
798
+ {
799
+ "type": "command",
800
+ "command": "node .claude/hooks/X.cjs",
801
+ "timeout": 10 // в секундах
802
+ }
803
+ ]
804
+ }</code></pre>
805
+ <p><strong>Event types в Claude Code:</strong></p>
806
+ <ul><li><code>SessionStart</code> — при начале сессии (stdout инжектится в context)</li><li><code>Stop</code> — при завершении turn'а (side-effects: commit, log)</li><li><code>PreToolUse</code>, <code>PostToolUse</code> — вокруг tool-вызовов</li></ul>
807
+ <hr>
808
+ <h2 id="api-reference-components-schema-vnutri-srcutilsjs">COMPONENTS schema (внутри <code>src/utils.js</code>)</h2>
809
+ <p>Контракт того что shipped и что generated:</p>
810
+ <pre data-lang="javascript"><code class="language-javascript">const COMPONENTS = {
811
+ skills: {
812
+ src: '.claude/skills',
813
+ kind: 'pre-shipped',
814
+ label: 'Skills (10 skill packs)',
815
+ group: 'core',
816
+ items: { 'explore': '...', /* ... 10 entries */ },
817
+ },
818
+ commands: {
819
+ src: '.claude/commands',
820
+ kind: 'pre-shipped',
821
+ label: 'Commands (orchestration + workflow)',
822
+ group: 'core',
823
+ items: { 'replicate': '...', /* ... 11 entries */ },
824
+ },
825
+ agents: { kind: 'pre-shipped', items: { /* 4 entries */ } },
826
+ rules: { kind: 'pre-shipped', items: { /* 5 entries */ } },
827
+ settings: { isFile: true, kind: 'pre-shipped', items: { 'settings.json': '...' } },
828
+ hooks: { kind: 'pre-shipped', items: { /* 6 entries */ } },
829
+
830
+ // Project-generated (created by /replicate Phase 3)
831
+ projectAgents: {
832
+ kind: 'project-generated',
833
+ items: {
834
+ '.claude/agents/planner.md': '...',
835
+ '.claude/agents/code-reviewer.md': '...',
836
+ '.claude/agents/architect.md': '...',
837
+ },
838
+ },
839
+ projectRules: {
840
+ kind: 'project-generated',
841
+ items: {
842
+ '.claude/rules/security.md': '...',
843
+ '.claude/rules/coding-style.md': '...',
844
+ '.claude/rules/testing.md': '...',
845
+ },
846
+ },
847
+ projectFiles: {
848
+ kind: 'project-generated',
849
+ items: {
850
+ 'CLAUDE.md': '...',
851
+ '.claude/feature-roadmap.json': '...',
852
+ 'DEVELOPMENT_GUIDE.md': '...',
853
+ 'docker-compose.yml': '...',
854
+ },
855
+ },
856
+ };</code></pre>
857
+ <p><strong>Identity:</strong></p>
858
+ <ul><li><code>kind: 'pre-shipped'</code> — installed by <code>init</code>, file paths derived from <code>src</code> + item key</li><li><code>kind: 'project-generated'</code> — created by <code>/replicate</code> Phase 3, item keys ARE full paths</li><li><code>isFile: true</code> — single-file component (settings.json), not a directory</li></ul>
859
+ <p><strong>Helper:</strong> <code>utils.getItemRelativePath(comp, itemKey)</code> — централизованная derivation:</p>
860
+ <ul><li>pre-shipped skills: <code>&lt;src&gt;/&lt;itemKey&gt;/SKILL.md</code></li><li>pre-shipped hooks: <code>&lt;src&gt;/&lt;itemKey&gt;.cjs</code></li><li>pre-shipped commands/rules/agents: <code>&lt;src&gt;/&lt;itemKey&gt;.md</code></li><li>pre-shipped settings.json: <code>comp.src</code> (full path)</li><li>project-generated: <code>itemKey</code> (already full path)</li></ul>
861
+ <p>Используется <code>verify</code>, <code>doctor</code>, <code>list</code> для единообразного path-resolution.</p>
862
+ <hr>
863
+ <h2 id="api-reference-hook-scripts-api">Hook scripts API</h2>
864
+ <h3 id="api-reference-session-insightscjs"><code>session-insights.cjs</code></h3>
865
+ <p><strong>Trigger:</strong> <code>SessionStart</code> hook. <strong>Reads:</strong> <code>.claude/insights/index.md</code> (<code>## YYYY-MM-DD</code> headings) <strong>Writes:</strong> stdout (Claude Code инжектит в session context) <strong>Output:</strong> до 3 свежих insights в <code>## Recent project insights\n\n## ... ## ... ## ...</code> format</p>
866
+ <h3 id="api-reference-autocommit-roadmapcjs-autocommit-insightscjs-autocommit-planscjs"><code>autocommit-roadmap.cjs</code> / <code>autocommit-insights.cjs</code> / <code>autocommit-plans.cjs</code></h3>
867
+ <p><strong>Trigger:</strong> <code>Stop</code> hook. <strong>Reads:</strong> target paths (roadmap json / insights/ dir / plans/ dir) <strong>Side-effect:</strong> <code>git add</code> + <code>git diff --cached --quiet</code> check + <code>git commit --only</code> if changed <strong>stdout/stderr:</strong> suppressed (<code>stdio: 'ignore'</code>) <strong>Always exits 0</strong> (best-effort, не блокирует сессию)</p>
868
+ <h3 id="api-reference-statuslinecjs"><code>statusline.cjs</code></h3>
869
+ <p><strong>Trigger:</strong> Claude Code <code>statusLine</code> config (every prompt render). <strong>Reads:</strong> filesystem heuristics + state-file <strong>Writes:</strong> stdout 6-line ANSI-output (header + 5 content) <strong>Defensive:</strong> every section wrapped в <code>safeRun()</code> with fallback</p>
870
+ <h3 id="api-reference-state-updatecjs"><code>state-update.cjs</code></h3>
871
+ <p><strong>Invoked:</strong> by pipeline commands via Bash tool <strong>Args:</strong> <code>--command</code>, <code>--phase</code>, <code>--index</code>, <code>--total</code>, <code>--progress</code>, <code>--last-command</code>, <code>--last-feature</code>, <code>--json</code> <strong>Writes:</strong> <code>.claude/.p-replicator-state.json</code> <strong>Always exits 0</strong> (best-effort)</p>
872
+ <hr>
873
+ <h2 id="api-reference-dalshe">Дальше</h2>
874
+ <ul><li><a href="#architecture">05_architecture.md</a> — как всё это устроено внутри</li></ul>
875
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#admin-guide" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">03. Admin Guide</span></span></a><a href="#architecture" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">05. Архитектура</span></span> <span class="nav-arrow">→</span></a></nav>
876
+ </article>
877
+ <article id="architecture" class="section" data-section-title="05. Архитектура">
878
+ <h1 id="05-arhitektura">05. Архитектура</h1>
879
+ <p>Внутреннее устройство <code>p-replicator</code> — как ставится, как обновляется, как сосуществует с user customizations.</p>
880
+ <h2 id="architecture-dvuhurovnevaya-model-pre-shipped-vs-project-generated">Двухуровневая модель: Pre-shipped vs Project-generated</h2>
881
+ <p>Главное архитектурное разделение:</p>
882
+ <div class="table-wrap"><table><thead><tr><th>Уровень</th><th>Кто создаёт</th><th>Где живёт</th><th>Изменяется</th></tr></thead><tbody><tr><td><strong>Pre-shipped</strong></td><td><code>npx p-replicator init</code></td><td><code>.claude/{skills,commands,agents,rules,hooks}/</code> + <code>settings.json</code></td><td>На каждом upgrade пакета</td></tr><tr><td><strong>Project-generated</strong></td><td><code>/replicate</code> Phase 3 (LLM execution)</td><td>Различные места: <code>CLAUDE.md</code>, <code>.claude/agents/planner.md</code>, <code>docs/</code>, и т.д.</td><td>Только при пересоздании</td></tr></tbody></table></div>
883
+ <p>Это <strong>главный фикс</strong> v1.4.0 — раньше <code>/replicate</code> Phase 3 пыталась генерировать ВСЕ артефакты (включая generic команды как <code>/run</code>, <code>/feature</code>), что приводило к flaky outputs (LLM compression, missed templates). После v1.4.0 generic-команды pre-shipped, Phase 3 генерирует ТОЛЬКО project-specific.</p>
884
+ <hr>
885
+ <h2 id="architecture-ssot-utilscomponents">SSOT: <code>utils.COMPONENTS</code></h2>
886
+ <p>Единый источник правды о том что shipped и что generated. Структура:</p>
887
+ <pre data-lang="javascript"><code class="language-javascript">const COMPONENTS = {
888
+ // Pre-shipped (6 групп, install via npx init):
889
+ skills: { kind: 'pre-shipped', src: '.claude/skills', items: { /* 10 */ } },
890
+ commands: { kind: 'pre-shipped', src: '.claude/commands', items: { /* 11 */ } },
891
+ agents: { kind: 'pre-shipped', src: '.claude/agents', items: { /* 4 */ } },
892
+ rules: { kind: 'pre-shipped', src: '.claude/rules', items: { /* 5 */ } },
893
+ settings: { kind: 'pre-shipped', isFile: true, src: '.claude/settings.json' },
894
+ hooks: { kind: 'pre-shipped', src: '.claude/hooks', items: { /* 6 */ } },
895
+
896
+ // Project-generated (3 группы, created by /replicate Phase 3):
897
+ projectAgents: { kind: 'project-generated', items: { /* full paths */ } },
898
+ projectRules: { kind: 'project-generated', items: { /* full paths */ } },
899
+ projectFiles: { kind: 'project-generated', items: { /* full paths */ } },
900
+ };</code></pre>
901
+ <p><strong>Consumers:</strong></p>
902
+ <ul><li><code>init.js</code> / <code>update.js</code> — итерируют только <code>kind === 'pre-shipped'</code> для install</li><li><code>doctor.js</code> — проверяет существование pre-shipped artifacts</li><li><code>list.js</code> — выводит metadata</li><li><code>verify.js</code> — проверяет ОБЕ группы (pre-shipped strict, project-generated hints)</li><li><code>cli.js</code> showHelp — динамически считает items для отображения</li></ul>
903
+ <p><strong>Любая будущая правка items автоматически обновляет все 5 поверхностей</strong> — устранены drift-проблемы которые были до v1.3.1.</p>
904
+ <hr>
905
+ <h2 id="architecture-path-derivation-getitemrelativepath">Path derivation: <code>getItemRelativePath()</code></h2>
906
+ <p>Один helper централизует derivation для всех групп:</p>
907
+ <pre data-lang="javascript"><code class="language-javascript">function getItemRelativePath(comp, itemKey) {
908
+ if (comp.isFile) return comp.src; // settings.json
909
+ if (comp.kind === 'project-generated') return itemKey; // full paths
910
+ if (comp.src === '.claude/skills') return path.join(comp.src, itemKey, 'SKILL.md');
911
+ if (comp.src === '.claude/hooks') return path.join(comp.src, itemKey + '.cjs');
912
+ return path.join(comp.src, itemKey + '.md'); // commands/rules/agents
913
+ }</code></pre>
914
+ <hr>
915
+ <h2 id="architecture-cross-platform-hooks-v141">Cross-platform hooks (v1.4.1)</h2>
916
+ <p><strong>Дизайн-принцип:</strong> zero shell dependency.</p>
917
+ <p>Все 6 hook-скриптов написаны на pure Node, используют <code>execFileSync('git', [...])</code> вместо shell-pipes. Это эквивалентно работает на:</p>
918
+ <ul><li>Windows cmd.exe (нет <code>2&gt;/dev/null</code>, есть <code>2&gt;nul</code> — не нужен ни тот ни другой)</li><li>Bash / zsh / Git Bash на Windows</li><li>PowerShell</li></ul>
919
+ <p><strong>Pattern для autocommit-скрипта:</strong></p>
920
+ <pre data-lang="javascript"><code class="language-javascript">const fs = require('node:fs');
921
+ const path = require('node:path');
922
+ const { execFileSync } = require('node:child_process');
923
+
924
+ const TARGET = path.resolve(process.cwd(), '.claude', 'feature-roadmap.json');
925
+ const SILENT = { stdio: 'ignore' };
926
+ const git = (args) =&gt; execFileSync('git', args, SILENT);
927
+
928
+ try {
929
+ if (!fs.existsSync(TARGET)) process.exit(0);
930
+ try { git(['rev-parse', '--git-dir']); } catch { process.exit(0); }
931
+ git(['add', '--', TARGET]);
932
+ let hasDiff = false;
933
+ try { git(['diff', '--cached', '--quiet', '--', TARGET]); }
934
+ catch { hasDiff = true; }
935
+ if (hasDiff) git(['commit', '--only', '--', TARGET, '-m', '...']);
936
+ } catch { process.exit(0); }</code></pre>
937
+ <p><strong>Defensive properties:</strong></p>
938
+ <ul><li><code>if (!fs.existsSync) exit 0</code> — нет файла, нечего коммитить</li><li><code>try { rev-parse } catch { exit 0 }</code> — нет git репозитория, skip</li><li><code>try { diff } catch { hasDiff = true }</code> — <code>git diff --quiet</code> exits 1 if diff</li><li>Outer <code>try/catch</code> гарантирует exit 0 при любых ошибках (best-effort)</li></ul>
939
+ <hr>
940
+ <h2 id="architecture-sync-templates-merge-mode-v141">Sync-templates: MERGE mode (v1.4.1)</h2>
941
+ <p><strong>Файл:</strong> <code>scripts/sync-templates.js</code> — runs as <code>prepublishOnly</code> hook.</p>
942
+ <p><strong>Цель:</strong> скопировать <code>.claude/</code> из source-repo в <code>templates/.claude/</code> (который попадает в npm tarball).</p>
943
+ <p><strong>До v1.4.1 (BUG):</strong> <code>cleanDir(target)</code> + <code>copyRecursive(source, target)</code> — очищал target перед copy. Удалял файлы которые есть в <code>templates/</code> но нет в source. Это <strong>silently удалило все v1.4.0 pre-shipped команды</strong> во время <code>npm publish --dry-run</code>.</p>
944
+ <p><strong>После v1.4.1 (FIX):</strong> <code>ensureDir(target)</code> + <code>copyRecursive(source, target)</code> — копирует/перезаписывает source-файлы, но НЕ удаляет target-only. Pre-shipped файлы выживают, source файлы overwrite'ят с правильным содержимым.</p>
945
+ <p><strong>Идемпотентность:</strong> прогон 2 раза подряд → одинаковый result.</p>
946
+ <hr>
947
+ <h2 id="architecture-settingsjson-merge-v142">Settings.json merge (v1.4.2)</h2>
948
+ <p><code>init --force</code> и <code>update</code> используют <code>mergeSettingsJson(existing, template)</code> для preserve user customizations:</p>
949
+ <h3 id="architecture-algoritm">Алгоритм</h3>
950
+ <pre data-lang=""><code class="language-text">mergeSettingsJson(existing, template):
951
+ if !existing: return template (fresh install)
952
+ if !template: return existing (defensive)
953
+
954
+ merged = {...existing}
955
+
956
+ # Top-level: template добавляет только то чего нет у user
957
+ for each (key, value) in template:
958
+ if key not in merged: merged[key] = value
959
+
960
+ # Hooks: deep merge per event type
961
+ if template.hooks:
962
+ merged.hooks = mergeHookEvents(existing.hooks, template.hooks)
963
+
964
+ return merged
965
+
966
+ mergeHookEvents(existing, template):
967
+ for each eventType in template:
968
+ if !existing[eventType]: existing[eventType] = template[eventType]
969
+ else: mergeHookMatchers(existing[eventType], template[eventType])
970
+
971
+ mergeHookMatchers(existing[], template[]):
972
+ for each tplEntry in template:
973
+ target = existing.find(e =&gt; e.matcher === tplEntry.matcher)
974
+ if !target: existing.push(tplEntry)
975
+ else:
976
+ existingCmds = Set(target.hooks.map(h =&gt; h.command))
977
+ for each tplHook in tplEntry.hooks:
978
+ if !existingCmds.has(tplHook.command):
979
+ target.hooks.push(tplHook) # de-dup by command string</code></pre>
980
+ <h3 id="architecture-identity-model">Identity model</h3>
981
+ <p>Hooks сравниваются по <code>command</code> string. Implications:</p>
982
+ <ul><li>User-added hook (отсутствует в template): <strong>preserved</strong></li><li>User-modified default (изменил command): treated как user-added → <strong>preserved</strong> (старый default удаляется через orphan detection если был в shippedDefaults)</li><li>Identical command в template и user: <strong>de-duped</strong> (только одна копия)</li><li>New hook in template: <strong>added</strong> к user's settings</li></ul>
983
+ <h3 id="architecture-override">Override</h3>
984
+ <p><code>--reset-settings</code> flag отключает merge — full overwrite. Для случаев когда user хочет clean-slate.</p>
985
+ <hr>
986
+ <h2 id="architecture-orphan-detection-v143">Orphan detection (v1.4.3)</h2>
987
+ <p><strong>Проблема merge-only логики:</strong> если в новой версии package удаляет hook, старый hook остаётся у user'а forever (user-added perspective).</p>
988
+ <p><strong>Решение:</strong> <code>manifest.shippedDefaults</code> baseline.</p>
989
+ <h3 id="architecture-algoritm">Алгоритм</h3>
990
+ <pre data-lang=""><code class="language-text">init/update upgrade flow:
991
+ 1. previousManifest = read .p-replicator.json BEFORE overwrite
992
+ 2. oldTpl = previousManifest.shippedDefaults['settings.json']
993
+ 3. newTpl = read templates/.claude/settings.json (current)
994
+ 4. existing = read user's .claude/settings.json
995
+ 5. cleaned = removeOrphanHooks(existing, oldTpl, newTpl)
996
+ 6. merged = mergeSettingsJson(cleaned, newTpl)
997
+ 7. write merged to .claude/settings.json
998
+ 8. write new manifest with shippedDefaults = newTpl (для следующего upgrade)
999
+
1000
+ removeOrphanHooks(existing, oldTpl, newTpl):
1001
+ if !oldTpl: return existing (first upgrade, no baseline yet)
1002
+ oldCmds = extractCommands(oldTpl)
1003
+ newCmds = extractCommands(newTpl)
1004
+ orphans = oldCmds.filter(c =&gt; !newCmds.has(c))
1005
+ return existing with orphan commands filtered out</code></pre>
1006
+ <h3 id="architecture-svoystva">Свойства</h3>
1007
+ <ul><li><strong>User-added</strong> (никогда не было в <code>oldTpl</code>) → preserved</li><li><strong>Removed default</strong> (было в <code>oldTpl</code>, нет в <code>newTpl</code>, есть у user) → удалён</li><li><strong>Unchanged default</strong> (есть везде) → kept</li><li><strong>Renamed/modified default</strong> (cmd-string changed) → старый orphaned, новый added через merge</li></ul>
1008
+ <h3 id="architecture-backward-compat">Backward compat</h3>
1009
+ <p>Если manifest без <code>shippedDefaults</code> (pre-1.4.3 install) — orphan detection skipped на первый upgrade. Manifest заполняется на текущем install для будущих upgrade'ов.</p>
1010
+ <hr>
1011
+ <h2 id="architecture-statusline-architecture-v150">Statusline architecture (v1.5.0)</h2>
1012
+ <p><strong>Цель:</strong> single-script multi-line dashboard.</p>
1013
+ <pre data-lang=""><code class="language-text">┌─ statusline.cjs (entry, ~330 LOC) ─────────────────────────┐
1014
+ │ │
1015
+ │ 1. main() │
1016
+ │ ├── parseManifest() ───────► .p-replicator.json │
1017
+ │ ├── parseState() ──────────► .claude/.p-replicator-state.json (with stale-check) │
1018
+ │ ├── parseRoadmap() ────────► .claude/feature-roadmap.json │
1019
+ │ ├── parseSparcDocs() ──────► docs/PRD.md, ..., ADR.md │
1020
+ │ ├── parseValidationScore() ► docs/validation-report.md (regex) │
1021
+ │ ├── parseAdrs() ───────────► docs/ADR.md OR docs/adr/ OR docs/ddd/adr/ │
1022
+ │ ├── parsePlans() ──────────► docs/plans/*.md │
1023
+ │ ├── parseInsights() ───────► .claude/insights/index.md │
1024
+ │ ├── parseToolkit() ────────► filesystem walks │
1025
+ │ ├── parseSettingsStatus() ─► deep-equals current vs shippedDefaults │
1026
+ │ ├── parseMcpServers() ─────► .mcp.json │
1027
+ │ ├── parseKeysarium() ──────► .keysarium.json existence │
1028
+ │ ├── parseDomain() ─────────► CLAUDE.md keyword grep │
1029
+ │ ├── parseLastHarvest() ────► TOOLKIT_HARVEST.md mtime │
1030
+ │ └── parseLastTest() ───────► .claude/.last-test.json (optional) │
1031
+ │ │
1032
+ │ 2. lines = [ │
1033
+ │ buildHeader(manifest), │
1034
+ │ buildPipeline(state), │
1035
+ │ buildRoadmap(roadmap, domain), │
1036
+ │ buildDocs(sparc, validation, plans, adrs, lastHarvest), │
1037
+ │ buildToolkit(toolkit, expected), │
1038
+ │ buildStatus(insights, lastTest, mcpServers, settingsStatus, keysarium), │
1039
+ │ ] │
1040
+ │ │
1041
+ │ 3. process.stdout.write(lines.join('\n') + '\n') │
1042
+ │ │
1043
+ └─────────────────────────────────────────────────────────────┘</code></pre>
1044
+ <p><strong>Defensive design:</strong> каждая <code>parse*</code> функция wrapped в <code>safeRun()</code> с fallback. Один parse error → fallback value, остальные секции работают.</p>
1045
+ <p><strong>State-file flow:</strong></p>
1046
+ <pre data-lang=""><code class="language-text">команда (e.g., /run) ──Bash──► node .claude/hooks/state-update.cjs --command /run --phase loop --progress 0.4
1047
+
1048
+
1049
+ .claude/.p-replicator-state.json (atomic write)
1050
+
1051
+
1052
+ Claude Code prompt ────────► node .claude/hooks/statusline.cjs
1053
+
1054
+
1055
+ читает state, считает heuristics, рендерит 6 строк</code></pre>
1056
+ <p><strong>Stale check:</strong> state старше 30 минут → ignore (показывается <code>idle</code> в Pipeline секции).</p>
1057
+ <hr>
1058
+ <h2 id="architecture-test-infrastructure">Test infrastructure</h2>
1059
+ <p><strong>Suite:</strong> 105 tests, 36 suites, ~25 sec runtime.</p>
1060
+ <div class="table-wrap"><table><thead><tr><th>Layer</th><th>File</th><th>Coverage</th></tr></thead><tbody><tr><td><strong>Unit</strong></td><td><code>tests/unit/utils.test.js</code> (54 tests)</td><td>Pure functions: createManifest, mergeSettingsJson, removeOrphanHooks, getItemRelativePath, parseToolkit logic</td></tr><tr><td><strong>E2E</strong></td><td><code>tests/e2e/lifecycle.test.js</code> (48 tests)</td><td>Full CLI lifecycle, hooks installation, settings merge edge cases, statusline output, --feature-branches docs</td></tr><tr><td><strong>Snapshot</strong></td><td><code>tests/snapshot/templates.test.js</code> (3 tests)</td><td>SHA-256 baseline для всех 115 файлов в <code>templates/</code></td></tr></tbody></table></div>
1061
+ <p><strong>Меta-тесты:</strong> проверяют consistency между документами. Например:</p>
1062
+ <ul><li><code>replicate-pipeline.md</code> упоминает все pre-shipped commands (no orphan in rule)</li><li><code>replicate.md</code> Phase 3 не утверждает «Generate <code>&lt;pre-shipped&gt;.md</code>» (no drift в spec)</li></ul>
1063
+ <p><strong>Snapshot baseline</strong> регенерируется через <code>npm run snapshot:baseline</code> после intentional template changes.</p>
1064
+ <hr>
1065
+ <h2 id="architecture-module-composition-view-syntax-claude-code-specific">Module composition: <code>view()</code> syntax (Claude Code-specific)</h2>
1066
+ <p>Skills используют <code>view()</code> для cross-skill loading в runtime:</p>
1067
+ <pre data-lang="markdown"><code class="language-markdown">view() .claude/skills/explore/SKILL.md
1068
+ view() .claude/skills/explore/references/questioning-techniques.md</code></pre>
1069
+ <p>Claude Code разрешает эти ссылки динамически: при выполнении skill, LLM читает referenced files в момент использования. Это позволяет skill A делегировать в skill B без duplicate-копий контента.</p>
1070
+ <p><strong>Ограничение:</strong> только Claude Code поддерживает этот runtime-механизм. Для других платформ (Codex, OpenCode) skill content должен быть <strong>inlined</strong> (скомпилирован в command markdown) на install-time. См. <code>MULTIPLATFORM_ROADMAP.md</code>.</p>
1071
+ <hr>
1072
+ <h2 id="architecture-pipeline-replicate-fazy">Pipeline: <code>/replicate</code> фазы</h2>
1073
+ <pre data-lang=""><code class="language-text">INPUT (idea or company name)
1074
+
1075
+
1076
+ Phase 0: PRODUCT DISCOVERY (опц.)
1077
+ │ skill: reverse-engineering-unicorn
1078
+ │ output: docs/00_product_discovery.md
1079
+
1080
+ Phase 1: PLANNING
1081
+ │ skill: sparc-prd-mini (внутри: explore + research + solve + 5 SPARC phases)
1082
+ │ output: docs/PRD.md, Architecture.md, Pseudocode.md, ... (11 docs)
1083
+
1084
+ Phase 2: VALIDATION (5-agent swarm)
1085
+ │ skill: requirements-validator
1086
+ │ output: docs/validation-report.md, docs/test-scenarios.md (BDD)
1087
+ │ verdict: 🟢 READY / 🟡 CAVEATS / 🔴 NEEDS WORK (max 3 retries)
1088
+
1089
+ Phase 3: TOOLKIT GENERATION (project-specific only)
1090
+ │ skill: cc-toolkit-generator-enhanced (9 modules)
1091
+ │ output: project agents (planner, code-reviewer, architect),
1092
+ │ project rules (security, coding-style, testing),
1093
+ │ project skills (project-context, coding-standards),
1094
+ │ CLAUDE.md, feature-roadmap.json, DEVELOPMENT_GUIDE.md
1095
+
1096
+ Phase 4: FINALIZE
1097
+ │ output: docker-compose.yml, Dockerfile, .gitignore
1098
+ │ action: git commit
1099
+
1100
+ DONE — project готов к /start или /run</code></pre>
1101
+ <hr>
1102
+ <h2 id="architecture-dalshe">Дальше</h2>
1103
+ <ul><li><a href="#troubleshooting">06_troubleshooting.md</a> — типичные проблемы</li><li><a href="#changelog">07_changelog.md</a> — история эволюции</li></ul>
1104
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#api-reference" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">04. API Reference</span></span></a><a href="#troubleshooting" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">06. Troubleshooting</span></span> <span class="nav-arrow">→</span></a></nav>
1105
+ </article>
1106
+ <article id="troubleshooting" class="section" data-section-title="06. Troubleshooting">
1107
+ <h1 id="06-troubleshooting">06. Troubleshooting</h1>
1108
+ <p>Типичные проблемы и пути их решения.</p>
1109
+ <h2 id="troubleshooting-ustanovka-init">Установка / <code>init</code></h2>
1110
+ <h3 id="troubleshooting-init-otkazyvaetsya-rabotat-p-replicator-is-already-installed"><code>init</code> отказывается работать: «P-Replicator is already installed»</h3>
1111
+ <pre data-lang="bash"><code class="language-bash"># Если хотите upgrade с preserve customizations:
1112
+ npx @dzhechkov/p-replicator update
1113
+
1114
+ # Или через init --force (тоже preserves customizations):
1115
+ npx @dzhechkov/p-replicator init --force
1116
+
1117
+ # Полный сброс к defaults (потеряете user hooks):
1118
+ npx @dzhechkov/p-replicator init --force --reset-settings</code></pre>
1119
+ <h3 id="troubleshooting-posle-init-otsutstvuyut-kakie-to-fayly">После <code>init</code> отсутствуют какие-то файлы</h3>
1120
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator doctor</code></pre>
1121
+ <p>Если что-то fail'ит (e.g., «security.md missing»):</p>
1122
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator init --force # полная переустановка pre-shipped</code></pre>
1123
+ <h3 id="troubleshooting-ustanovka-poshla-v-nodemodules-a-ne-v-proekt">Установка пошла в <code>~/node_modules</code>, а не в проект</h3>
1124
+ <p>Cause: в проекте нет <code>package.json</code>, npm walk'ает вверх и находит <code>package.json</code> в home-директории.</p>
1125
+ <p>Fix: создайте <code>package.json</code> в корне проекта:</p>
1126
+ <pre data-lang="bash"><code class="language-bash">npm init -y
1127
+ npx @dzhechkov/p-replicator init</code></pre>
1128
+ <hr>
1129
+ <h2 id="troubleshooting-posle-replicate">После <code>/replicate</code></h2>
1130
+ <h3 id="troubleshooting-replicate-ne-sgenerirovala-ozhidaemye-komandy-run-feature-myinsights"><code>/replicate</code> не сгенерировала ожидаемые команды (<code>/run</code>, <code>/feature</code>, <code>/myinsights</code>, ...)</h3>
1131
+ <p><strong>Это решено в v1.4.0+.</strong> Теперь все 11 generic команд <strong>pre-shipped</strong> через <code>init</code> — <code>/replicate</code> Phase 3 их не генерирует, только enhance'ит project-specific артефакты.</p>
1132
+ <p>Если у вас старая версия (≤1.3.x):</p>
1133
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator@latest init --force</code></pre>
1134
+ <p>После обновления <code>verify</code> покажет полный набор:</p>
1135
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
1136
+ <h3 id="troubleshooting-replicate-phase-3-pishet-generate-commandsstartmd"><code>/replicate</code> Phase 3 пишет «Generate /commands/start.md»</h3>
1137
+ <p>Это устаревшая formulation в <code>replicate.md</code>. Должна быть <code>Pre-shipped... do NOT overwrite</code>. Если видите эту фразу:</p>
1138
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator@latest update # обновит replicate.md</code></pre>
1139
+ <p>В v1.4.0+ есть meta-test который ловит эту регрессию. См. <code>tests/e2e/lifecycle.test.js</code> describe <code>meta: doc-consistency</code>.</p>
1140
+ <h3 id="troubleshooting-project-specific-agenty-plannermd-architectmd-ne-sozdany">Project-specific агенты (planner.md, architect.md) не созданы</h3>
1141
+ <p>Это нормально если <code>/replicate</code> Phase 3 ещё не запускалась. Запустите <code>/replicate "описание"</code> в Claude Code.</p>
1142
+ <p><code>verify</code> показывает их как <strong>hints</strong> (warning, не error) если <code>CLAUDE.md</code> или <code>feature-roadmap.json</code> есть, но agents отсутствуют.</p>
1143
+ <hr>
1144
+ <h2 id="troubleshooting-hooks-statusline">Hooks / Statusline</h2>
1145
+ <h3 id="troubleshooting-statusline-ne-otobrazhaetsya">Statusline не отображается</h3>
1146
+ <p><strong>Проверки:</strong></p>
1147
+ <ol><li>Версия Claude Code поддерживает <code>statusLine</code> config? Обновите Claude Code до последней.</li><li>Поле <code>statusLine</code> присутствует в <code>.claude/settings.json</code>? ``<code>bash cat .claude/settings.json | grep -A 3 statusLine </code>``</li><li>Скрипт работает напрямую? ``<code>bash node .claude/hooks/statusline.cjs </code>`` Должен вывести 6 строк ANSI-output.</li></ol>
1148
+ <p>Если 3-й пункт fail'ит:</p>
1149
+ <pre data-lang="bash"><code class="language-bash">node .claude/hooks/statusline.cjs 2&gt;&amp;1</code></pre>
1150
+ <p>Покажет stack trace. Скорее всего corrupt JSON или отсутствует <code>.p-replicator.json</code>.</p>
1151
+ <h3 id="troubleshooting-hooks-ne-auto-commityat">Hooks не auto-commit'ят</h3>
1152
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator doctor</code></pre>
1153
+ <p>В секции <code>Prerequisites:</code> должно быть:</p>
1154
+ <pre data-lang=""><code class="language-text">✓ git on PATH</code></pre>
1155
+ <p>Если <code>✗ git NOT on PATH</code> — установите git, добавьте в PATH.</p>
1156
+ <p>Также проверьте что <code>.git</code> директория существует (вы в репозитории):</p>
1157
+ <pre data-lang="bash"><code class="language-bash">git rev-parse --git-dir</code></pre>
1158
+ <h3 id="troubleshooting-huki-zapuskayutsya-no-nichego-ne-kommityat">Хуки запускаются но ничего не коммитят</h3>
1159
+ <p><strong>Cause:</strong> <code>.git</code> есть, но нет changes для коммита (что нормально).</p>
1160
+ <p><strong>Debug:</strong> напрямую:</p>
1161
+ <pre data-lang="bash"><code class="language-bash">node .claude/hooks/autocommit-roadmap.cjs
1162
+ echo "Exit: $?"
1163
+ git log -1 --format="%s"</code></pre>
1164
+ <p>Если файл не в манифесте git, сделайте <code>git add .claude/feature-roadmap.json</code> вручную один раз.</p>
1165
+ <h3 id="troubleshooting-statusline-pokazyvaet-settings-merged-hotya-ya-nichego-ne-menyal">Statusline показывает «Settings ⚠️ merged» хотя я ничего не менял</h3>
1166
+ <p>Cause: какой-то процесс модифицировал <code>settings.json</code> (формат, whitespace, ordering). Statusline сравнивает через deep-equals по sorted keys.</p>
1167
+ <p>Fix:</p>
1168
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator init --force --reset-settings</code></pre>
1169
+ <h3 id="troubleshooting-settingsjson-poteryal-moi-custom-hooks-posle-update">Settings.json потерял мои custom hooks после update</h3>
1170
+ <p><strong>Это БЫЛ bug до v1.4.2.</strong> В v1.4.2+ <code>update</code> и <code>init --force</code> используют <code>mergeSettingsJson</code> который preserves user customizations.</p>
1171
+ <p>Если вы на v1.4.1 или раньше:</p>
1172
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator@latest update</code></pre>
1173
+ <p>Если потеряли hooks безвозвратно — восстановите вручную из git history:</p>
1174
+ <pre data-lang="bash"><code class="language-bash">git log -p --follow -- .claude/settings.json</code></pre>
1175
+ <hr>
1176
+ <h2 id="troubleshooting-roadmap-feature-branches">Roadmap / <code>--feature-branches</code></h2>
1177
+ <h3 id="troubleshooting-run-feature-branches-srazu-failit-not-on-main"><code>/run --feature-branches</code> сразу fail'ит «not on main»</h3>
1178
+ <p>Cause: вы на feature-branch'е (не на main).</p>
1179
+ <pre data-lang="bash"><code class="language-bash">git status
1180
+ git checkout main # переключиться
1181
+ /run mvp --feature-branches</code></pre>
1182
+ <h3 id="troubleshooting-feature-branches-poteryal-moi-nesohranyonnye-changes"><code>--feature-branches</code> потерял мои несохранённые changes</h3>
1183
+ <p>Они в stash:</p>
1184
+ <pre data-lang="bash"><code class="language-bash">git stash list # список stash'ей
1185
+ git stash show stash@{0} # preview
1186
+ git stash pop # восстановить (или git stash drop для удаления)</code></pre>
1187
+ <p><code>p-replicator</code> auto-stash'ит с message «auto-stash before /run feature-branches».</p>
1188
+ <h3 id="troubleshooting-feature-branch-bez-number-v-roadmap">Feature branch без <code>number</code> в roadmap</h3>
1189
+ <p>Cause: roadmap создан до v1.5.0 (нет <code>number</code> field).</p>
1190
+ <p><code>--feature-branches</code> flag auto-assign'ит <code>number = max(numbers) + 1</code> при первом encounter, persists обратно. Просто прогоните <code>/run mvp --feature-branches</code> ещё раз — numbers заполнятся.</p>
1191
+ <hr>
1192
+ <h2 id="troubleshooting-tests-snapshot">Tests / Snapshot</h2>
1193
+ <h3 id="troubleshooting-npm-test-failit-posle-moih-izmeneniy-v-template"><code>npm test</code> fail'ит после моих изменений в template</h3>
1194
+ <pre data-lang="bash"><code class="language-bash">npm test 2&gt;&amp;1 | head -30 # увидеть какие тесты упали</code></pre>
1195
+ <p>Типичные причины:</p>
1196
+ <ol><li><strong>Snapshot test fail</strong> — изменились templates, baseline устарел. ``<code>bash npm run snapshot:baseline # перегенерировать npm test # должно стать зелёным </code>``</li></ol>
1197
+ <ol><li><strong>Meta-test fail</strong> — <code>replicate-pipeline.md</code> или <code>replicate.md</code> упоминают pre-shipped command в неправильной секции. Проверьте сами edits.</li></ol>
1198
+ <ol><li><strong>Unit test fail на COMPONENTS</strong> — нарушили SSOT. Проверьте что добавили <code>kind</code>, <code>items</code>, <code>label</code> в новый component group.</li></ol>
1199
+ <h3 id="troubleshooting-verify-pokazyvaet-orphany-post-init"><code>verify</code> показывает orphan'ы post-init</h3>
1200
+ <p>Cause: вы upgrade'нулись с старой версии (≤1.4.2) которая не tracked <code>shippedDefaults</code>. Orphan detection skipped на первый upgrade.</p>
1201
+ <p>Fix:</p>
1202
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator init --force # populate shippedDefaults в manifest
1203
+ npx @dzhechkov/p-replicator init --force # второй прогон удалит реальные orphan'ы (если они есть)</code></pre>
1204
+ <p>После этого orphan detection будет работать на каждом subsequent upgrade.</p>
1205
+ <hr>
1206
+ <h2 id="troubleshooting-insights">Insights</h2>
1207
+ <h3 id="troubleshooting-insights-ne-auto-injected-v-novuyu-sessiyu">Insights не auto-injected в новую сессию</h3>
1208
+ <p><strong>Проверки:</strong></p>
1209
+ <ol><li><code>.claude/insights/index.md</code> существует и содержит entries? ``<code>bash wc -l .claude/insights/index.md grep -c "^## " .claude/insights/index.md # количество entries </code>``</li><li>Hook <code>session-insights.cjs</code> работает? ``<code>bash node .claude/hooks/session-insights.cjs </code>`<code> Должен вывести </code>## Recent project insights\n\n## ... ## ... ## ...`.</li><li>SessionStart hook configured? ``<code>bash cat .claude/settings.json | grep -A 5 SessionStart </code>``</li></ol>
1210
+ <p>Если все 3 OK, но всё равно не работает — Claude Code может cache'ировать session context. Перезапустите <code>claude</code>.</p>
1211
+ <h3 id="troubleshooting-myinsights-recall-query-nichego-ne-nahodit"><code>/myinsights recall &lt;query&gt;</code> ничего не находит</h3>
1212
+ <p>Cause: query не матчит tags. Recall — case-insensitive substring search по tags + body.</p>
1213
+ <p>Tip: проверьте tags entries:</p>
1214
+ <pre data-lang="bash"><code class="language-bash">grep "^\*\*Tags:" .claude/insights/index.md | head -10</code></pre>
1215
+ <p>Подберите более специфичный query (e.g., <code>prisma</code> вместо <code>bug</code>).</p>
1216
+ <hr>
1217
+ <h2 id="troubleshooting-mcp-servers">MCP servers</h2>
1218
+ <h3 id="troubleshooting-mcp-servers-ne-connectyatsya">MCP servers не connect'ятся</h3>
1219
+ <p>Это вне scope <code>p-replicator</code> — это Claude Code config. Проверьте:</p>
1220
+ <pre data-lang="bash"><code class="language-bash">cat .mcp.json # формат правильный?
1221
+ claude --debug # MCP errors в logs?</code></pre>
1222
+ <p>Statusline показывает количество server'ов из <code>.mcp.json</code> независимо от их working state.</p>
1223
+ <hr>
1224
+ <h2 id="troubleshooting-performance">Performance</h2>
1225
+ <h3 id="troubleshooting-statusline-tormozit-pri-kazhdoy-komande">Statusline тормозит при каждой команде</h3>
1226
+ <p><strong>Cause:</strong> очень большие docs/ или filesystem-trees.</p>
1227
+ <p><strong>Diagnose:</strong></p>
1228
+ <pre data-lang="bash"><code class="language-bash">time node .claude/hooks/statusline.cjs # сколько секунд?</code></pre>
1229
+ <p>Должно быть &lt; 100ms. Если &gt; 1s — проверьте размер <code>docs/</code>:</p>
1230
+ <pre data-lang="bash"><code class="language-bash">du -sh docs/
1231
+ find docs/ -type f -name "*.md" | wc -l</code></pre>
1232
+ <p><strong>Workaround:</strong> временно отключить statusline через удаление <code>statusLine</code> поля в <code>.claude/settings.json</code>.</p>
1233
+ <p>См. <code>KNOWN_LIMITATIONS.md</code> пункт L6 — будущий enhancement: env-var <code>STATUSLINE_PROFILE=1</code> для измерения каждой секции.</p>
1234
+ <hr>
1235
+ <h2 id="troubleshooting-versionnye-nesovmestimosti">Версионные несовместимости</h2>
1236
+ <h3 id="troubleshooting-ya-na-staroy-versii-stoit-li-upgrading">Я на старой версии. Стоит ли upgrading?</h3>
1237
+ <div class="table-wrap"><table><thead><tr><th>Текущая → Целевая</th><th>Что получите</th><th>Migration cost</th></tr></thead><tbody><tr><td>1.3.x → 1.5.0</td><td>Все pre-shipped команды + statusline + feature-branches + merge-логика</td><td>Запустите <code>init --force</code> (preserves customizations)</td></tr><tr><td>1.4.0 → 1.4.1</td><td>Cross-platform hooks + sync merge mode</td><td><code>init --force</code></td></tr><tr><td>1.4.1 → 1.4.2</td><td>Settings merge (preserve customizations)</td><td><code>init --force</code> сразу безопасен (preserves)</td></tr><tr><td>1.4.2 → 1.4.3</td><td>Orphan detection</td><td>Первый upgrade без baseline — re-run <code>init --force</code> для populate</td></tr><tr><td>1.4.3 → 1.5.0</td><td>Statusline + --feature-branches</td><td><code>update</code> или <code>init --force</code></td></tr></tbody></table></div>
1238
+ <p>Полная история — в <a href="#changelog">07_changelog.md</a> или <code>CHANGELOG.md</code> (авторитетный).</p>
1239
+ <hr>
1240
+ <h2 id="troubleshooting-esli-nichego-ne-pomogaet">Если ничего не помогает</h2>
1241
+ <ol><li>Прочитайте <code>KNOWN_LIMITATIONS.md</code> — может это известное ограничение</li><li>Запустите <code>verify</code> + <code>doctor</code> — соберите exact output</li><li>Issue: https://github.com/dzhechko/pu-unicorn-replicate/issues приложите версию, output <code>verify</code>, шаги воспроизведения</li></ol>
1242
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#architecture" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">05. Архитектура</span></span></a><a href="#changelog" class="next"><span class="nav-text"><span class="nav-label">Далее</span><span class="nav-title">07. Changelog</span></span> <span class="nav-arrow">→</span></a></nav>
1243
+ </article>
1244
+ <article id="changelog" class="section" data-section-title="07. Changelog">
1245
+ <h1 id="07-changelog-kratkaya-versiya">07. Changelog (краткая версия)</h1>
1246
+ <p>Эволюция пакета по релизам. Полные detail'и — в <code>../../CHANGELOG.md</code> (авторитетный источник).</p>
1247
+ <h2 id="changelog-v150-2026-05-07">v1.5.0 — 2026-05-07</h2>
1248
+ <p><strong>Две фичи + 12 новых тестов.</strong></p>
1249
+ <ul><li>✨ <strong>Statusline dashboard</strong> (RuFlo-style 6-line multi-line status bar) через <code>templates/.claude/hooks/statusline.cjs</code></li><li>✨ <strong><code>--feature-branches</code> flag</strong> для <code>/run</code> и <code>/go</code> (workflow для обучения / демо: каждая фича на отдельной ветке <code>feature/{NNN}-{id}</code>)</li><li>🆕 <code>state-update.cjs</code> — argv-driven helper для pipeline команд писать прогресс</li><li>🆕 Roadmap schema расширена: <code>number</code> (auto-assigned), <code>branch</code> (populated при done)</li><li>🆕 <code>--auto-merge</code> companion flag (off by default)</li><li>📊 105 tests / 36 suites / 113 → 115 файлов в snapshot baseline</li></ul>
1250
+ <h2 id="changelog-v143-2026-05-07">v1.4.3 — 2026-05-07</h2>
1251
+ <p><strong>Orphan hook detection.</strong></p>
1252
+ <ul><li>🐛 <strong>Closed last v1.4.2 limitation:</strong> <code>mergeSettingsJson</code> теперь cleans hooks которые были shipped в прошлой версии но удалены в новой</li><li>🆕 <code>manifest.shippedDefaults['settings.json']</code> — baseline для orphan detection</li><li>🆕 <code>removeOrphanHooks(existing, oldTpl, newTpl)</code> helper</li><li>🐛 <strong>Bonus fix:</strong> <code>update.js</code> теперь тоже использует merge-логику (был bug: blindly overwrite settings.json)</li><li>📊 93 tests, +8 от v1.4.2</li></ul>
1253
+ <h2 id="changelog-v142-2026-05-06">v1.4.2 — 2026-05-06</h2>
1254
+ <p><strong>3 v1.4.1 limitations устранены.</strong></p>
1255
+ <ul><li>🐛 <code>init --force</code> теперь MERGE settings.json (preserves user customizations)</li><li>🆕 <code>--reset-settings</code> flag для explicit nuclear-overwrite</li><li>🐛 Stronger meta-test для <code>replicate.md</code> drift (multi-axis: verbs + section-scope + list-style + allowlist)</li><li>🆕 <code>doctor</code> checks <code>git on PATH</code> (Prerequisites section) — explains why autocommit hooks could silently no-op</li><li>📊 85 tests, +11 от v1.4.1</li></ul>
1256
+ <h2 id="changelog-v141-2026-05-06">v1.4.1 — 2026-05-06</h2>
1257
+ <p><strong>3 v1.4.0 limitations + 1 critical regression discovery.</strong></p>
1258
+ <ul><li>🐛 <strong>Cross-platform hooks:</strong> заменены bash-chains на 4 Node-скрипта (<code>session-insights</code>, <code>autocommit-{roadmap,insights,plans}</code>)</li><li>🐛 <strong><code>verify.js</code> SSOT:</strong> <code>kind: 'pre-shipped' | 'project-generated'</code> field + 3 новых project-generated groups</li><li>🐛 <strong>Meta-tests</strong> для <code>replicate.md</code> ↔ <code>replicate-pipeline.md</code> consistency</li><li>🐛 <strong>Critical regression discovered + fixed:</strong> <code>sync-templates.js</code> cleanDir тихо удалял pre-shipped файлы во время <code>npm publish --dry-run</code>. Switched to MERGE mode</li><li>🆕 6th COMPONENTS group: <code>hooks</code> (4 cross-platform Node scripts)</li><li>🆕 <code>getItemRelativePath()</code> helper для централизованного path-derivation</li><li>📊 74 tests, +14 от v1.4.0</li></ul>
1259
+ <h2 id="changelog-v140-2026-05-06">v1.4.0 — 2026-05-06</h2>
1260
+ <p><strong>Major release — 9 pre-shipped команд + verify command.</strong></p>
1261
+ <ul><li>✨ Закрыт корневой источник pain: <code>/replicate</code> Phase 3 больше не пытается генерировать generic команды. Все 11 commands + 5 rules + settings.json + 4 hooks теперь pre-shipped через <code>init</code></li><li>✨ <strong>9 новых pre-shipped команд:</strong> <code>/start</code>, <code>/plan</code>, <code>/feature</code>, <code>/go</code>, <code>/run</code>, <code>/next</code>, <code>/myinsights</code>, <code>/docs</code>, <code>/deploy</code></li><li>✨ <strong>3 новых pre-shipped rules:</strong> <code>git-workflow</code>, <code>insights-capture</code>, <code>feature-lifecycle</code></li><li>✨ <strong>Settings.json shipped</strong> with hooks (SessionStart insights inject + Stop auto-commit)</li><li>✨ <strong><code>verify</code> command</strong> — replaces user's manual verification prompt</li><li>🐛 5 sources of truth divergence (<code>replicate.md</code>, <code>replicate-pipeline.md</code>, cc-toolkit modules, README, cli help) unified via <code>utils.COMPONENTS.items</code></li><li>📊 60 tests, +8 от v1.3.1</li></ul>
1262
+ <h2 id="changelog-v131-2026-05-06">v1.3.1 — 2026-05-06</h2>
1263
+ <p><strong>Two real bug fixes.</strong></p>
1264
+ <ul><li>🐛 <strong><code>cli.js</code> --help showed «1 rule» while <code>EXPECTED_RULES</code> had 2 entries.</strong> SSOT fix: <code>COMPONENTS.&lt;group&gt;.items</code> map is single source of truth for counts, used by doctor/list/cli.js help via dynamic derivation</li><li>🐛 <strong><code>update.js</code> corrupted manifest</strong> — walked user's full <code>.claude/</code>, capturing project-generated files into <code>manifest.files</code>. Subsequent <code>remove</code> would delete them, contradicting documented behavior. Fixed by using <code>getRelativePaths(templateClaude)</code> instead</li><li>🐛 Bonus: <code>update</code> now removes orphan template files (files in old manifest but not in new template) — addresses original v1.3.0 concern about ignored <code>missing[]</code> from <code>diffFiles</code></li><li>📊 52 tests, +7 от v1.3.0</li></ul>
1265
+ <h2 id="changelog-v130-baseline">v1.3.0 (baseline)</h2>
1266
+ <p>Initial published version. 10 skills, 2 commands (<code>/replicate</code>, <code>/harvest</code>), 4 agents, 2 rules. SPARC documentation pipeline + knowledge extraction.</p>
1267
+ <hr>
1268
+ <h2 id="changelog-migration-po-versiyam">Migration по версиям</h2>
1269
+ <div class="table-wrap"><table><thead><tr><th>From → To</th><th>Команда</th></tr></thead><tbody><tr><td>1.3.x → 1.5.0</td><td><code>npx @dzhechkov/p-replicator@1.5.0 init --force</code> (preserves customizations)</td></tr><tr><td>Любая → latest</td><td><code>npx @dzhechkov/p-replicator@latest update</code></td></tr><tr><td>Полный reset</td><td><code>... init --force --reset-settings</code> (потеряете custom hooks)</td></tr></tbody></table></div>
1270
+ <p>После любого upgrade — <code>verify</code> для проверки contract:</p>
1271
+ <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
1272
+ <hr>
1273
+ <h2 id="changelog-patterns-persisted-v-aqe-memory">Patterns persisted в AQE memory</h2>
1274
+ <p>Каждое значимое улучшение зафиксировано как pattern (для cross-session learning):</p>
1275
+ <ul><li>v1.3.1: <code>cli-package-ssot-component-lists</code>, <code>cli-package-manifest-preservation</code>, <code>tdd-red-test-must-trigger-bug</code></li><li>v1.4.0: <code>cli-package-pre-ship-vs-generate-boundary</code>, <code>cli-package-verify-replaces-manual-prompts</code>, <code>documentation-source-of-truth-divergence</code></li><li>v1.4.1: <code>cli-package-cross-platform-hooks-via-node-scripts</code>, <code>cli-package-kind-discrimination-for-ssot</code>, <code>npm-package-prepublish-clean-and-replace-anti-pattern</code></li><li>v1.4.2: <code>cli-package-settings-json-merge-vs-overwrite</code>, <code>meta-test-multi-axis-drift-detection</code>, <code>cli-doctor-prerequisites-section</code></li><li>v1.4.3: <code>cli-shipped-defaults-baseline-for-orphan-detection</code>, <code>cli-update-must-mirror-init-merge-logic</code></li><li>v1.5.0: <code>cli-statusline-multi-line-dashboard</code>, <code>cli-feature-branches-flag-for-teaching-workflows</code></li></ul>
1276
+ <p>Каждый pattern содержит: context, problem, solution, verification, tradeoffs, applied-to (version/file).</p>
1277
+ <hr>
1278
+ <h2 id="changelog-polnyy-changelog">Полный CHANGELOG</h2>
1279
+ <p>См. <code>../../CHANGELOG.md</code> — авторитетный источник с полным detail'ями всех версий, migration notes, breaking changes (которых не было — все upgrade'ы backward-compatible).</p>
1280
+ <nav class="section-nav" aria-label="Навигация по секциям"><a href="#troubleshooting" class="prev"><span class="nav-arrow">←</span> <span class="nav-text"><span class="nav-label">Предыдущее</span><span class="nav-title">06. Troubleshooting</span></span></a><span></span></nav>
1281
+ </article>
1282
+
1283
+ <footer class="site-footer">
1284
+ <div class="footer-row">
1285
+ <strong>@dzhechkov/p-replicator</strong> v1.5.0 · MIT License
1286
+ </div>
1287
+ <div class="footer-row footer-muted">
1288
+ Сгенерировано из <code>README/ru/*.md</code> командой <code>/docs</code>.
1289
+ </div>
1290
+ <div class="footer-row footer-muted">
1291
+ Re-build: <code>cd packages/p-replicator/README/ru/html &amp;&amp; node build.js</code>
1292
+ </div>
1293
+ <div class="footer-row footer-links">
1294
+ <a href="https://github.com/dzhechko/pu-unicorn-replicate" target="_blank" rel="noopener noreferrer">GitHub</a>
1295
+ ·
1296
+ <a href="https://www.npmjs.com/package/@dzhechkov/p-replicator" target="_blank" rel="noopener noreferrer">npm</a>
1297
+ ·
1298
+ <a href="https://t.me/llm_notes" target="_blank" rel="noopener noreferrer">Telegram</a>
1299
+ </div>
1300
+ </footer>
1301
+ </main>
1302
+ </div>
1303
+
1304
+ <div class="sidebar-overlay" id="sidebarOverlay" aria-hidden="true"></div>
1305
+
1306
+ <button class="back-to-top" id="backToTop" aria-label="Наверх" hidden>
1307
+ <span aria-hidden="true">↑</span>
1308
+ </button>
1309
+
1310
+ <script src="script.js"></script>
1311
+ </body>
1312
+ </html>