@dzhechkov/p-replicator 1.5.18 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.dz-manifest.json +126 -46
  2. package/CHANGELOG.md +135 -0
  3. package/MULTIPLATFORM_ROADMAP.md +1 -1
  4. package/README/eng/01_quickstart.md +2 -2
  5. package/README/eng/02_user_guide.md +1 -1
  6. package/README/eng/03_admin_guide.md +2 -2
  7. package/README/eng/05_architecture.md +6 -2
  8. package/README/eng/README.md +1 -1
  9. package/README/ru/01_quickstart.md +2 -2
  10. package/README/ru/02_user_guide.md +1 -1
  11. package/README/ru/03_admin_guide.md +2 -2
  12. package/README/ru/05_architecture.md +1 -1
  13. package/README/ru/README.md +1 -1
  14. package/README/ru/html/index.html +7 -7
  15. package/README.md +36 -15
  16. package/bin/cli.js +0 -0
  17. package/package.json +11 -10
  18. package/sbom.json +245 -45
  19. package/src/utils.js +2 -0
  20. package/templates/.claude/agents/doc-validator.md +2 -1
  21. package/templates/.claude/agents/product-discoverer.md +1 -1
  22. package/templates/.claude/commands/next.md +16 -0
  23. package/templates/.claude/commands/replicate.md +126 -8
  24. package/templates/.claude/commands/start.md +19 -1
  25. package/templates/.claude/hooks/autocommit-insights.cjs +95 -10
  26. package/templates/.claude/hooks/autocommit-plans.cjs +95 -10
  27. package/templates/.claude/hooks/autocommit-roadmap.cjs +96 -13
  28. package/templates/.claude/hooks/check-ports.cjs +232 -0
  29. package/templates/.claude/hooks/session-insights.cjs +13 -1
  30. package/templates/.claude/hooks/state-update.cjs +13 -1
  31. package/templates/.claude/hooks/statusline.cjs +145 -18
  32. package/templates/.claude/rules/docker-ports.md +123 -0
  33. package/templates/.claude/rules/replicate-pipeline.md +5 -2
  34. package/templates/.claude/settings.json +5 -5
  35. package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/01-detect-parse.md +57 -14
  36. package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/02-analyze-map.md +9 -7
  37. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/enhanced-recommendations.md +6 -4
  38. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/extended-mapping.md +2 -2
  39. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-agents.md +2 -2
  40. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-skills.md +1 -1
  41. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/enhanced-claude-md.md +2 -2
  42. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-suggestions.md +11 -2
  43. package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/start-command.md +1 -1
  44. package/templates/.claude/skills/requirements-validator/SKILL.md +7 -0
  45. package/templates/.claude/skills/requirements-validator/references/scoring-system.md +28 -0
  46. package/templates/.claude/skills/sparc-prd-mini/SKILL.md +143 -1
  47. package/tests/e2e/lifecycle.test.js +21 -10
  48. package/tests/snapshot/baseline.json +29 -27
  49. package/tests/snapshot/update-baseline.js +2 -1
  50. package/tests/unit/adr-decision-coverage.test.js +137 -0
  51. package/tests/unit/adr-scanner-contract.test.js +108 -0
  52. package/tests/unit/autocommit-deletion.test.js +242 -0
  53. package/tests/unit/check-ports.test.js +184 -0
  54. package/tests/unit/db-port-rule.test.js +216 -0
  55. package/tests/unit/detect-parse-anchor.test.js +109 -0
  56. package/tests/unit/external-dependency-check.test.js +209 -0
  57. package/tests/unit/growth-module-b2b-gate.test.js +104 -0
  58. package/tests/unit/hooks-project-anchored.test.js +223 -0
  59. package/tests/unit/hooks-report-failures.test.js +207 -0
  60. package/tests/unit/pipeline-file-ownership.test.js +95 -0
  61. package/tests/unit/roadmap-one-schema.test.js +179 -0
  62. package/tests/unit/sparc-reconciliation.test.js +117 -0
  63. package/tests/unit/spec-pseudocode-traceability.test.js +146 -0
  64. package/tests/unit/statusline-honest-labels.test.js +178 -0
  65. package/tests/unit/statusline-two-roots.test.js +237 -0
  66. package/tests/unit/sync-templates-guard.test.js +209 -0
  67. package/tests/unit/utils.test.js +2 -2
  68. package/tests/unit/validation-gate-teeth.test.js +158 -0
  69. package/LICENSE +0 -21
@@ -502,7 +502,7 @@ npx @dzhechkov/p-replicator verify
502
502
  ```
503
503
 
504
504
  Должен показать:
505
- - ✅ Pre-shipped contract intact (10 skills + 11 commands + 4 agents + 5 rules + settings.json)
505
+ - ✅ Pre-shipped contract intact (10 skills + 11 commands + 4 agents + 6 rules + settings.json)
506
506
  - ✅ Post-/replicate hints — для Mode 2 многие будут отсутствовать (это нормально)
507
507
  - 📊 Per-feature artifacts: `docs/features/<id>/01_specification.md`...`05_completion.md`,
508
508
  `validation-report.md`, `review-report.md`
@@ -83,7 +83,7 @@ P-Replicator V1.5.0 ● user │ Sonnet 4.7
83
83
  🚀 Pipeline /<cmd> ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
84
84
  🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
85
85
  📊 SPARC ●11/11 │ 🟢 78/100 │ Plans ●3 │ ADRs ●2 │ Harvest 2026-05-05
86
- 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●5+2 │ Hooks ●6/6
86
+ 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●6+2 │ Hooks ●7/7
87
87
  💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓
88
88
  ```
89
89
 
@@ -248,7 +248,7 @@ echo ".claude/.last-test.json" >> .gitignore
248
248
 
249
249
  | Инструмент | Что проверяет | Когда |
250
250
  |---|---|---|
251
- | `npx @dzhechkov/p-replicator doctor` | Pre-shipped contract: 10 skills + 11 commands + 4 agents + 5 rules + settings.json + 6 hooks + git on PATH | После init / при подозрении что что-то сломалось |
251
+ | `npx @dzhechkov/p-replicator doctor` | Pre-shipped contract: 10 skills + 11 commands + 4 agents + 6 rules + settings.json + 7 hooks + git on PATH | После init / при подозрении что что-то сломалось |
252
252
  | `npx @dzhechkov/p-replicator verify` | Pre-shipped + post-/replicate hints (CLAUDE.md, planner.md, security.md, feature-roadmap.json, и т.д.) | После каждого `/replicate` для уверенности |
253
253
 
254
254
  **`doctor` exit codes:**
@@ -73,7 +73,7 @@ function getItemRelativePath(comp, itemKey) {
73
73
 
74
74
  **Дизайн-принцип:** zero shell dependency.
75
75
 
76
- Все 6 hook-скриптов написаны на pure Node, используют `execFileSync('git', [...])`
76
+ Все 7 hook-скриптов написаны на pure Node, используют `execFileSync('git', [...])`
77
77
  вместо shell-pipes. Это эквивалентно работает на:
78
78
  - Windows cmd.exe (нет `2>/dev/null`, есть `2>nul` — не нужен ни тот ни другой)
79
79
  - Bash / zsh / Git Bash на Windows
@@ -6,7 +6,7 @@ toolkit для AI-assisted разработки в Claude Code (Vibe Coding).
6
6
  ## Что это
7
7
 
8
8
  `p-replicator` устанавливает в проект готовый набор `.claude/`-инструментов:
9
- **11 slash-команд**, **10 skills**, **4 агента**, **5 правил**, **6 hook-скриптов**
9
+ **11 slash-команд**, **10 skills**, **4 агента**, **6 правил**, **7 hook-скриптов**
10
10
  и `settings.json` с pre-configured хуками. Главная команда `/replicate`
11
11
  проводит проект через 5-фазный pipeline (Discovery → Planning → Validation →
12
12
  Toolkit Generation → Finalize), генерирует SPARC-документацию и project-specific
@@ -112,7 +112,7 @@
112
112
  <h1 id="dokumentatsiya-dzhechkovp-replicator">Документация @dzhechkov/p-replicator</h1>
113
113
  <p>Полный комплект документации к npm-пакету <code>@dzhechkov/p-replicator</code> — toolkit для AI-assisted разработки в Claude Code (Vibe Coding).</p>
114
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>
115
+ <p><code>p-replicator</code> устанавливает в проект готовый набор <code>.claude/</code>-инструментов: <strong>11 slash-команд</strong>, <strong>10 skills</strong>, <strong>4 агента</strong>, <strong>6 правил</strong>, <strong>7 hook-скриптов</strong> и <code>settings.json</code> с pre-configured хуками. Главная команда <code>/replicate</code> проводит проект через 5-фазный pipeline (Discovery → Planning → Validation → Toolkit Generation → Finalize), генерирует SPARC-документацию и project-specific артефакты.</p>
116
116
  <h2 id="index-navigatsiya">Навигация</h2>
117
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
118
  <h2 id="index-yazyki">Языки</h2>
@@ -186,7 +186,7 @@ mv docs/your-arch.md docs/Architecture.md
186
186
  <p>После <code>/replicate</code> выполните:</p>
187
187
  <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
188
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>
189
+ <ul><li><strong>Pre-shipped contract</strong> (must-have): 10 skills + 11 commands + 4 agents + 6 rules + settings.json</li><li><strong>Post-/replicate hints</strong> (advisory): CLAUDE.md, project-specific агенты, feature-roadmap.json, security-правила и т.д.</li></ul>
190
190
  <p>Exit code <code>0</code> означает что pre-shipped контракт цел; warnings показывают что из project-specific артефактов ещё не создано.</p>
191
191
  <p>Альтернатива (для общей health-проверки):</p>
192
192
  <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator doctor</code></pre>
@@ -213,7 +213,7 @@ mv docs/your-arch.md docs/Architecture.md
213
213
  │ ├── skills/ # 10 skills
214
214
  │ ├── commands/ # 11 slash-команд
215
215
  │ ├── agents/ # 4 pipeline-агента
216
- │ ├── rules/ # 5 правил
216
+ │ ├── rules/ # 6 правил
217
217
  │ ├── hooks/ # 6 Node-скриптов
218
218
  │ └── settings.json # hooks + statusline config
219
219
  ├── .p-replicator.json # манифест установки
@@ -429,7 +429,7 @@ claude
429
429
  <p>После <code>/feature</code> (или <code>/run</code>) запустите:</p>
430
430
  <pre data-lang="bash"><code class="language-bash">npx @dzhechkov/p-replicator verify</code></pre>
431
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>
432
+ <ul><li>✅ Pre-shipped contract intact (10 skills + 11 commands + 4 agents + 6 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
433
  <h4 id="user-guide-future-enhancement-m3-v-knownlimitations">Future enhancement (M3 в KNOWN_LIMITATIONS)</h4>
434
434
  <p><code>docPaths</code> config в <code>.p-replicator.json</code> для нестандартных путей доков — в roadmap'е. Tier S effort, чисто config + spec-read изменения, без изменений CLI-кода.</p>
435
435
  <hr>
@@ -551,7 +551,7 @@ Set DATABASE_URL_SHADOW env var explicitly to a separate database.
551
551
  🚀 Pipeline /&lt;cmd&gt; ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
552
552
  🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
553
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
554
+ 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●6+2 │ Hooks ●7/7
555
555
  💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓</code></pre>
556
556
  <p><strong>Источники (heuristic + state-file):</strong></p>
557
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>
@@ -638,7 +638,7 @@ echo ".claude/.last-test.json" &gt;&gt; .gitignore</code></pre>
638
638
  <p><strong>Auto-commit</strong> через <code>autocommit-roadmap.cjs</code> (Stop hook) при изменениях.</p>
639
639
  <hr>
640
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>
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 + 6 rules + settings.json + 7 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
642
  <p><strong><code>doctor</code> exit codes:</strong></p>
643
643
  <ul><li><code>0</code> — всё в порядке</li><li><code>1</code> — что-то отсутствует из must-have (используйте <code>init --force</code> для repair)</li></ul>
644
644
  <p><strong><code>verify</code> exit codes:</strong></p>
@@ -914,7 +914,7 @@ npx @dzhechkov/p-replicator@latest init --force --reset-settings</code></pre>
914
914
  <hr>
915
915
  <h2 id="architecture-cross-platform-hooks-v141">Cross-platform hooks (v1.4.1)</h2>
916
916
  <p><strong>Дизайн-принцип:</strong> zero shell dependency.</p>
917
- <p>Все 6 hook-скриптов написаны на pure Node, используют <code>execFileSync('git', [...])</code> вместо shell-pipes. Это эквивалентно работает на:</p>
917
+ <p>Все 7 hook-скриптов написаны на pure Node, используют <code>execFileSync('git', [...])</code> вместо shell-pipes. Это эквивалентно работает на:</p>
918
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
919
  <p><strong>Pattern для autocommit-скрипта:</strong></p>
920
920
  <pre data-lang="javascript"><code class="language-javascript">const fs = require('node:fs');
package/README.md CHANGED
@@ -101,7 +101,7 @@
101
101
 
102
102
  ## 📖 What is p-replicator?
103
103
 
104
- `@dzhechkov/p-replicator` installs a ready-made `.claude/` toolkit into any project: **11 slash commands**, **10 skills**, **4 agents**, **5 rules**, **6 hook scripts**, and a `settings.json` with pre-configured hooks and a multi-line statusline dashboard.
104
+ `@dzhechkov/p-replicator` installs a ready-made `.claude/` toolkit into any project: **11 slash commands**, **10 skills**, **4 agents**, **6 rules**, **7 hook scripts**, and a `settings.json` with pre-configured hooks and a multi-line statusline dashboard.
105
105
 
106
106
  The flagship `/replicate` command takes a project through a **5-phase pipeline**:
107
107
 
@@ -290,7 +290,7 @@ This creates:
290
290
  | **Commands** | 11 | `/replicate`, `/harvest`, `/start`, `/plan`, `/feature`, `/go`, `/run`, `/next`, `/myinsights`, `/docs`, `/deploy` |
291
291
  | **Agents** | 4 | `replicate-coordinator`, `product-discoverer`, `doc-validator`, `harvest-coordinator` |
292
292
  | **Rules** | 5 | `replicate-pipeline`, `skill-interface-protocol`, `git-workflow`, `insights-capture`, `feature-lifecycle` |
293
- | **Hooks** | 6 | `session-insights`, `autocommit-{roadmap,insights,plans}`, `statusline`, `state-update` (cross-platform Node) |
293
+ | **Hooks** | 7 | `session-insights`, `autocommit-{roadmap,insights,plans}`, `statusline`, `state-update`, `check-ports` (cross-platform Node) |
294
294
  | **Settings** | 1 | `settings.json` with statusLine + SessionStart + Stop hooks pre-configured |
295
295
 
296
296
  After running `/replicate`, the toolkit also generates **project-specific** artifacts:
@@ -316,7 +316,7 @@ npx @dzhechkov/p-replicator verify
316
316
 
317
317
  The command checks:
318
318
 
319
- - **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents + 5 rules + settings.json + 6 hooks
319
+ - **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents + 6 rules + settings.json + 7 hooks
320
320
  - **Post-/replicate hints** (advisory): CLAUDE.md, project-specific agents, feature-roadmap.json, security rules, etc.
321
321
 
322
322
  **Exit codes:**
@@ -360,6 +360,14 @@ Generates 11 standardized documents in `docs/`:
360
360
  | `C4_Diagrams.md` | Context / container / component |
361
361
  | `ADR.md` | Architecture Decision Records |
362
362
 
363
+ > **ADR detection reads BOTH storage shapes.** `/replicate` writes every decision into one
364
+ > `docs/ADR.md`, while an idea2prd-manual project keeps a `docs/adr/*.md` directory. Since 1.5.19 the
365
+ > toolkit generator's scanner normalizes both into one decision list, so the ADR-driven parts of the
366
+ > generated toolkit (architect skill weighting, security boosts, tech-stack extraction, CLAUDE.md key
367
+ > decisions) work for `/replicate` projects too. Before 1.5.19 the scanner required a directory of
368
+ > more than five files, so for every `/replicate` project the flag was unreachable and those parts
369
+ > silently produced nothing.
370
+
363
371
  Skill: `sparc-prd-mini` (internally chains explore + research + solve sub-phases).
364
372
 
365
373
  ### Phase 2 — Validation (5-agent swarm)
@@ -664,7 +672,7 @@ P-Replicator V1.5.x ● user │ Sonnet 4.7
664
672
  🚀 Pipeline /<cmd> ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
665
673
  🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
666
674
  📊 SPARC ●11/11 │ 🟢 78/100 │ Plans ●3 │ ADRs ●2 │ Harvest 2026-05-05
667
- 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●5+2 │ Hooks ●6/6
675
+ 🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●6+2 │ Hooks ●7/7
668
676
  💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓
669
677
  ```
670
678
 
@@ -734,7 +742,7 @@ All 4 autocommit scripts use `execFileSync('git', [...])` (no shell pipes, no `2
734
742
  Updated via `state-update.cjs`:
735
743
 
736
744
  ```bash
737
- node .claude/hooks/state-update.cjs \
745
+ node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/state-update.cjs" \
738
746
  --command /feature \
739
747
  --phase VALIDATE \
740
748
  --index 2 \
@@ -880,14 +888,14 @@ Default structure after `init`:
880
888
  "_comment": "Default hooks + statusline shipped by @dzhechkov/p-replicator init.",
881
889
  "statusLine": {
882
890
  "type": "command",
883
- "command": "node .claude/hooks/statusline.cjs"
891
+ "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/statusline.cjs\""
884
892
  },
885
893
  "hooks": {
886
894
  "SessionStart": [
887
895
  {
888
896
  "matcher": "*",
889
897
  "hooks": [
890
- { "type": "command", "command": "node .claude/hooks/session-insights.cjs", "timeout": 5 }
898
+ { "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/session-insights.cjs\"", "timeout": 5 }
891
899
  ]
892
900
  }
893
901
  ],
@@ -895,9 +903,9 @@ Default structure after `init`:
895
903
  {
896
904
  "matcher": "*",
897
905
  "hooks": [
898
- { "type": "command", "command": "node .claude/hooks/autocommit-roadmap.cjs", "timeout": 10 },
899
- { "type": "command", "command": "node .claude/hooks/autocommit-insights.cjs", "timeout": 10 },
900
- { "type": "command", "command": "node .claude/hooks/autocommit-plans.cjs", "timeout": 10 }
906
+ { "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-roadmap.cjs\"", "timeout": 10 },
907
+ { "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-insights.cjs\"", "timeout": 10 },
908
+ { "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-plans.cjs\"", "timeout": 10 }
901
909
  ]
902
910
  }
903
911
  ]
@@ -905,6 +913,19 @@ Default structure after `init`:
905
913
  }
906
914
  ```
907
915
 
916
+ **Why `${CLAUDE_PROJECT_DIR}` and not a relative path:** a relative path resolves against the process
917
+ working directory, which drifts — one `cd` inside a tool call moves it for the rest of the session, and
918
+ the hook then dies with `MODULE_NOT_FOUND`. Because hooks are non-blocking, the session continues and
919
+ your roadmap silently stops being committed. Claude Code sets `CLAUDE_PROJECT_DIR` to the project root
920
+ and rewrites this exact braced form for PowerShell, so it works on every platform.
921
+
922
+ The hook scripts anchor their DATA the same way, and fall back to their own location
923
+ (`__dirname/../..`) when the variable is absent — so a hand-run works too. That fallback is why the
924
+ shell examples elsewhere in this README use `${CLAUDE_PROJECT_DIR:-.}`: in a plain terminal the
925
+ variable is unset, and `:-.` keeps the example working. Do **not** use the `:-.` form inside
926
+ `settings.json` — Claude Code's PowerShell rewrite matches only the bare `${CLAUDE_PROJECT_DIR}`
927
+ token, so `:-.` would leave a POSIX-only construct in a file that must work on every platform.
928
+
908
929
  **Customization:** add new hooks or event types — preserved on `init --force` or `update` thanks to merge logic.
909
930
 
910
931
  **Disable individual default hooks:** delete from `settings.json` after `init`. The deletion is preserved on next `update` (orphan detection only removes hooks **previously shipped** but absent in **new** template — your manual deletion is a user customization).
@@ -1012,13 +1033,13 @@ Checks:
1012
1033
  3. Script runs directly:
1013
1034
 
1014
1035
  ```bash
1015
- node .claude/hooks/statusline.cjs
1036
+ node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs"
1016
1037
  ```
1017
1038
 
1018
1039
  Should print 6 lines of ANSI output. If it errors:
1019
1040
 
1020
1041
  ```bash
1021
- node .claude/hooks/statusline.cjs 2>&1
1042
+ node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs" 2>&1
1022
1043
  ```
1023
1044
 
1024
1045
  Likely cause: corrupt JSON or missing `.p-replicator.json`.
@@ -1038,7 +1059,7 @@ git rev-parse --git-dir
1038
1059
  Debug a specific hook:
1039
1060
 
1040
1061
  ```bash
1041
- node .claude/hooks/autocommit-roadmap.cjs
1062
+ node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/autocommit-roadmap.cjs"
1042
1063
  echo "Exit: $?"
1043
1064
  git log -1 --format="%s"
1044
1065
  ```
@@ -1103,7 +1124,7 @@ Checks:
1103
1124
  1. `.claude/insights/index.md` exists with entries?
1104
1125
  2. Hook works:
1105
1126
  ```bash
1106
- node .claude/hooks/session-insights.cjs # should print recent insights
1127
+ node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/session-insights.cjs" # should print recent insights
1107
1128
  ```
1108
1129
  3. SessionStart hook configured in `settings.json`?
1109
1130
 
@@ -1112,7 +1133,7 @@ If all 3 OK but still nothing — Claude Code may cache. Restart `claude`.
1112
1133
  ### Statusline lags on every command
1113
1134
 
1114
1135
  ```bash
1115
- time node .claude/hooks/statusline.cjs # how many seconds?
1136
+ time node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs" # how many seconds?
1116
1137
  ```
1117
1138
 
1118
1139
  Should be < 100ms. If > 1s, check `docs/` size:
package/bin/cli.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/p-replicator",
3
- "version": "1.5.18",
3
+ "version": "1.6.0",
4
4
  "description": "P-Replicator — Claude Code toolkit for AI-assisted product development (Vibe Coding). Full /replicate pipeline, 10 modular skills (880K+ chars), /harvest knowledge extraction, swarm agents, quality gates, security patterns, cross-project learning.",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
@@ -18,6 +18,15 @@
18
18
  ".dz-manifest.json",
19
19
  "sbom.json"
20
20
  ],
21
+ "scripts": {
22
+ "prepublishOnly": "node ../../../scripts/prepublish-gate.mjs",
23
+ "test": "node --test tests/unit/utils.test.js tests/unit/adr-scanner-contract.test.js tests/unit/sparc-reconciliation.test.js tests/unit/pipeline-file-ownership.test.js tests/unit/validation-gate-teeth.test.js tests/unit/hooks-project-anchored.test.js tests/unit/statusline-two-roots.test.js tests/unit/external-dependency-check.test.js tests/unit/spec-pseudocode-traceability.test.js tests/unit/sync-templates-guard.test.js tests/unit/db-port-rule.test.js tests/unit/roadmap-one-schema.test.js tests/unit/hooks-report-failures.test.js tests/unit/growth-module-b2b-gate.test.js tests/unit/detect-parse-anchor.test.js tests/unit/statusline-honest-labels.test.js tests/unit/autocommit-deletion.test.js tests/unit/check-ports.test.js tests/unit/adr-decision-coverage.test.js tests/e2e/lifecycle.test.js tests/snapshot/templates.test.js",
24
+ "test:unit": "node --test tests/unit/utils.test.js tests/unit/adr-scanner-contract.test.js tests/unit/sparc-reconciliation.test.js tests/unit/pipeline-file-ownership.test.js tests/unit/validation-gate-teeth.test.js tests/unit/hooks-project-anchored.test.js tests/unit/statusline-two-roots.test.js tests/unit/external-dependency-check.test.js tests/unit/spec-pseudocode-traceability.test.js tests/unit/sync-templates-guard.test.js tests/unit/db-port-rule.test.js tests/unit/roadmap-one-schema.test.js tests/unit/hooks-report-failures.test.js tests/unit/growth-module-b2b-gate.test.js tests/unit/detect-parse-anchor.test.js tests/unit/statusline-honest-labels.test.js tests/unit/autocommit-deletion.test.js tests/unit/check-ports.test.js tests/unit/adr-decision-coverage.test.js",
25
+ "test:e2e": "node --test tests/e2e/lifecycle.test.js",
26
+ "test:snapshot": "node --test tests/snapshot/templates.test.js",
27
+ "test:doctor": "node bin/cli.js doctor",
28
+ "snapshot:baseline": "node tests/snapshot/update-baseline.js"
29
+ },
21
30
  "keywords": [
22
31
  "claude",
23
32
  "claude-code",
@@ -70,13 +79,5 @@
70
79
  },
71
80
  "publishConfig": {
72
81
  "access": "public"
73
- },
74
- "scripts": {
75
- "test": "node --test tests/unit/utils.test.js tests/e2e/lifecycle.test.js tests/snapshot/templates.test.js",
76
- "test:unit": "node --test tests/unit/utils.test.js",
77
- "test:e2e": "node --test tests/e2e/lifecycle.test.js",
78
- "test:snapshot": "node --test tests/snapshot/templates.test.js",
79
- "test:doctor": "node bin/cli.js doctor",
80
- "snapshot:baseline": "node tests/snapshot/update-baseline.js"
81
82
  }
82
- }
83
+ }