@dzhechkov/p-replicator 1.5.18 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dz-manifest.json +173 -57
- package/CHANGELOG.md +262 -0
- package/MULTIPLATFORM_ROADMAP.md +1 -1
- package/README/eng/01_quickstart.md +2 -2
- package/README/eng/02_user_guide.md +1 -1
- package/README/eng/03_admin_guide.md +2 -2
- package/README/eng/05_architecture.md +6 -2
- package/README/eng/README.md +1 -1
- package/README/ru/01_quickstart.md +2 -2
- package/README/ru/02_user_guide.md +1 -1
- package/README/ru/03_admin_guide.md +2 -2
- package/README/ru/05_architecture.md +1 -1
- package/README/ru/README.md +1 -1
- package/README/ru/html/index.html +7 -7
- package/README.md +139 -16
- package/bin/cli.js +0 -0
- package/package.json +11 -10
- package/sbom.json +346 -56
- package/src/utils.js +4 -0
- package/templates/.claude/agents/doc-validator.md +2 -1
- package/templates/.claude/agents/product-discoverer.md +1 -1
- package/templates/.claude/commands/next.md +16 -0
- package/templates/.claude/commands/replicate.md +183 -9
- package/templates/.claude/commands/start.md +19 -1
- package/templates/.claude/hooks/autocommit-insights.cjs +95 -10
- package/templates/.claude/hooks/autocommit-plans.cjs +95 -10
- package/templates/.claude/hooks/autocommit-roadmap.cjs +96 -13
- package/templates/.claude/hooks/check-docs-complete.cjs +174 -0
- package/templates/.claude/hooks/check-growth-trace.cjs +191 -0
- package/templates/.claude/hooks/check-ports.cjs +232 -0
- package/templates/.claude/hooks/session-insights.cjs +13 -1
- package/templates/.claude/hooks/state-update.cjs +13 -1
- package/templates/.claude/hooks/statusline.cjs +145 -18
- package/templates/.claude/rules/docker-ports.md +123 -0
- package/templates/.claude/rules/replicate-pipeline.md +19 -6
- package/templates/.claude/rules/skill-interface-protocol.md +9 -0
- package/templates/.claude/settings.json +5 -5
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/01-detect-parse.md +57 -14
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/02-analyze-map.md +9 -7
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/03-generate-p0.md +6 -4
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/08-skill-composition.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/enhanced-recommendations.md +6 -4
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/extended-mapping.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-agents.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/ddd-skills.md +1 -1
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/enhanced-claude-md.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-lifecycle.md +2 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-suggestions.md +11 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/start-command.md +1 -1
- package/templates/.claude/skills/requirements-validator/SKILL.md +59 -0
- package/templates/.claude/skills/requirements-validator/references/scoring-system.md +28 -0
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/01-intelligence.md +4 -4
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/02-product-customers.md +2 -2
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/025-cjm-prototype.md +9 -1
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/03-market-competition.md +3 -3
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/04-business-finance.md +3 -3
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/05-growth-engine.md +132 -12
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/06-playbook-synthesis.md +1 -1
- package/templates/.claude/skills/sparc-prd-mini/SKILL.md +152 -10
- package/tests/e2e/lifecycle.test.js +21 -10
- package/tests/snapshot/baseline.json +42 -38
- package/tests/snapshot/update-baseline.js +2 -1
- package/tests/unit/adr-decision-coverage.test.js +137 -0
- package/tests/unit/adr-scanner-contract.test.js +108 -0
- package/tests/unit/autocommit-deletion.test.js +242 -0
- package/tests/unit/check-docs-complete.test.js +249 -0
- package/tests/unit/check-growth-trace.test.js +188 -0
- package/tests/unit/check-ports.test.js +184 -0
- package/tests/unit/db-port-rule.test.js +216 -0
- package/tests/unit/detect-parse-anchor.test.js +109 -0
- package/tests/unit/external-dependency-check.test.js +209 -0
- package/tests/unit/growth-axes-and-compliance.test.js +169 -0
- package/tests/unit/growth-gate-conditional.test.js +122 -0
- package/tests/unit/growth-module-b2b-gate.test.js +122 -0
- package/tests/unit/growth-requirements-bridge.test.js +127 -0
- package/tests/unit/hooks-project-anchored.test.js +223 -0
- package/tests/unit/hooks-report-failures.test.js +207 -0
- package/tests/unit/module-copy-identity.test.js +76 -0
- package/tests/unit/pipeline-file-ownership.test.js +95 -0
- package/tests/unit/roadmap-one-schema.test.js +179 -0
- package/tests/unit/skill-paths-prebaked.test.js +174 -0
- package/tests/unit/sparc-reconciliation.test.js +117 -0
- package/tests/unit/spec-pseudocode-traceability.test.js +146 -0
- package/tests/unit/statusline-honest-labels.test.js +178 -0
- package/tests/unit/statusline-two-roots.test.js +237 -0
- package/tests/unit/sync-templates-guard.test.js +209 -0
- package/tests/unit/utils.test.js +2 -2
- package/tests/unit/validation-gate-teeth.test.js +158 -0
- package/LICENSE +0 -21
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**, **
|
|
104
|
+
`@dzhechkov/p-replicator` installs a ready-made `.claude/` toolkit into any project: **11 slash commands**, **10 skills**, **4 agents**, **6 rules**, **9 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
|
|
|
@@ -289,8 +289,8 @@ This creates:
|
|
|
289
289
|
| **Skills** | 10 | 92 files (880K+ chars — MEASURED via `wc -c` over `templates/.claude/skills`: 880,679). Modular architecture: foundation → composite → master orchestrator |
|
|
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
|
-
| **Rules** |
|
|
293
|
-
| **Hooks** |
|
|
292
|
+
| **Rules** | 6 | `replicate-pipeline`, `skill-interface-protocol`, `git-workflow`, `insights-capture`, `feature-lifecycle`, `docker-ports` |
|
|
293
|
+
| **Hooks** | 9 | `session-insights`, `autocommit-{roadmap,insights,plans}`, `statusline`, `state-update`, `check-ports`, `check-growth-trace`, `check-docs-complete` (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:
|
|
@@ -306,6 +306,108 @@ After running `/replicate`, the toolkit also generates **project-specific** arti
|
|
|
306
306
|
|
|
307
307
|
---
|
|
308
308
|
|
|
309
|
+
## 📈 Growth: from analysis to obligation
|
|
310
|
+
|
|
311
|
+
Phase 0's M5 module used to end as analysis — and the analysis had nowhere to go, because the Product
|
|
312
|
+
Discovery Brief was never written to disk at all. Since 1.7.0:
|
|
313
|
+
|
|
314
|
+
- Phase 0 writes `docs/product-discovery-brief.md`.
|
|
315
|
+
- M5 emits a **Growth Requirements Seed**: `FR-GROWTH-nnn` DRAFT obligations, each naming the
|
|
316
|
+
analysis block it came from and carrying that block's confidence verbatim.
|
|
317
|
+
- Growth type is **two independent choices** — a go-to-market MOTION and a growth LOOP. The old
|
|
318
|
+
single list forced one pick across both, which made "sales-led company running a referral loop"
|
|
319
|
+
unsayable. `No loop` is a real answer and skips the loop-only output.
|
|
320
|
+
- A **compliance checklist** runs before a technique becomes a requirement. It names the norm and
|
|
321
|
+
where to check it, never an amount or a statute — those go stale and are jurisdiction-specific.
|
|
322
|
+
A `no` answer blocks that requirement's promotion.
|
|
323
|
+
- Phase 2's validator gains a **conditional** `Growth Traceability` criterion: `+5` traced, `+0` not
|
|
324
|
+
applicable, `-10` applicable but dropped. It scores outside the 100-point table, and a project with
|
|
325
|
+
no acquisition objective — or one that never ran Phase 0 — scores `+0`, never a penalty.
|
|
326
|
+
|
|
327
|
+
What none of this proves: that anything was built, or that copying a competitor's move is lawful.
|
|
328
|
+
|
|
329
|
+
## 🔎 The three deliberate checks
|
|
330
|
+
|
|
331
|
+
Six of the nine hook scripts run themselves. Three do not: they are utilities you invoke when you want
|
|
332
|
+
an answer, and they are wired to no event on purpose. A hook of this package is **non-blocking by
|
|
333
|
+
contract** — it can print, never refuse — so a check that must be able to say "no" cannot be one.
|
|
334
|
+
|
|
335
|
+
Both answer with **three** exit codes, and the third is the one that matters:
|
|
336
|
+
|
|
337
|
+
| Code | Meaning |
|
|
338
|
+
|:---:|---|
|
|
339
|
+
| `0` | the rule holds |
|
|
340
|
+
| `1` | the rule is violated — the offender is named |
|
|
341
|
+
| `2` | **the check did not run** — it could not look, and says so |
|
|
342
|
+
|
|
343
|
+
A checker that answers "clean" when it could not look turns an unknown into a reassurance. That is
|
|
344
|
+
why a missing config, a missing docker, or a missing brief is `2` and never `0`.
|
|
345
|
+
|
|
346
|
+
### `check-ports.cjs` — no database faces the internet
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
node .claude/hooks/check-ports.cjs .
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
❌ Правило №0 нарушено (.claude/rules/docker-ports.md):
|
|
354
|
+
• db: порт 5432 → 5432 (без адреса — значит все интерфейсы) — хранилище опубликовано наружу.
|
|
355
|
+
Убрать ports: целиком, либо привязать к 127.0.0.1
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Reads the normalised config (`docker compose config`), so the short port form and `extends` are
|
|
359
|
+
already resolved. Catches `network_mode: host` and services published beside a reverse-proxy too.
|
|
360
|
+
A loopback bind (`127.0.0.1:` or `[::1]:`) is legal and passes — that exception is part of the rule.
|
|
361
|
+
|
|
362
|
+
**When to run it:** after writing or editing `docker-compose.yml`, and before any deploy.
|
|
363
|
+
|
|
364
|
+
### `check-docs-complete.cjs` — the cheap question, before the swarm
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
node .claude/hooks/check-docs-complete.cjs .
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
❌ документы Фазы 1 не готовы к валидации (1):
|
|
372
|
+
• PRD.md: пуст или почти пуст (5 симв., порог 200)
|
|
373
|
+
Рой валидации запускать рано: он потратит агентов на то, что видно отсюда.
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Phase 2 launches a swarm of validation agents over whatever Phase 1 produced. Existence, emptiness
|
|
377
|
+
and unfilled placeholders are decidable by forty lines of code — this asks them first, so the swarm
|
|
378
|
+
is spent on testability and completeness rather than on discovering an empty file.
|
|
379
|
+
|
|
380
|
+
`docs/ADR.md` and `docs/C4_Diagrams.md` stay optional, as `/replicate` itself declares them. A
|
|
381
|
+
markdown link is not a placeholder.
|
|
382
|
+
|
|
383
|
+
**When to run it:** at the Phase 1 → Phase 2 boundary. `/replicate` now runs it there for you.
|
|
384
|
+
|
|
385
|
+
**What it does NOT prove:** that the documents are correct. That is what the swarm is for.
|
|
386
|
+
|
|
387
|
+
### `check-growth-trace.cjs` — the growth analysis was not analysed and dropped
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
node .claude/hooks/check-growth-trace.cjs .
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
❌ часть требований по росту потеряна (1 из 2):
|
|
395
|
+
• FR-GROWTH-002
|
|
396
|
+
Каждое надо либо перенести в docs/Specification.md, либо отклонить С ПРИЧИНОЙ — молча уронить нельзя.
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Phase 0's M5 module emits a `Growth Requirements Seed` table of `FR-GROWTH-nnn` draft obligations
|
|
400
|
+
into `docs/product-discovery-brief.md`. This asks whether they survived into `docs/Specification.md`.
|
|
401
|
+
A conscious rejection **with a reason written down** passes; a silent drop does not.
|
|
402
|
+
|
|
403
|
+
`docs/product-discovery-brief.md` absent is `2`, not `0` — it means Phase 0 never ran (the
|
|
404
|
+
`--from-docs` entry skips it), which is not the same as having nothing to trace.
|
|
405
|
+
|
|
406
|
+
**When to run it:** at the Phase 1 → Phase 2 boundary, before the validation pass.
|
|
407
|
+
|
|
408
|
+
**What it does NOT prove:** that anything was built, or that copying a competitor's growth move is
|
|
409
|
+
lawful. It proves an obligation was carried forward, nothing more.
|
|
410
|
+
|
|
309
411
|
## ✅ Verify the install
|
|
310
412
|
|
|
311
413
|
After `/replicate`, run:
|
|
@@ -316,7 +418,7 @@ npx @dzhechkov/p-replicator verify
|
|
|
316
418
|
|
|
317
419
|
The command checks:
|
|
318
420
|
|
|
319
|
-
- **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents +
|
|
421
|
+
- **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents + 6 rules + settings.json + 9 hooks
|
|
320
422
|
- **Post-/replicate hints** (advisory): CLAUDE.md, project-specific agents, feature-roadmap.json, security rules, etc.
|
|
321
423
|
|
|
322
424
|
**Exit codes:**
|
|
@@ -360,6 +462,14 @@ Generates 11 standardized documents in `docs/`:
|
|
|
360
462
|
| `C4_Diagrams.md` | Context / container / component |
|
|
361
463
|
| `ADR.md` | Architecture Decision Records |
|
|
362
464
|
|
|
465
|
+
> **ADR detection reads BOTH storage shapes.** `/replicate` writes every decision into one
|
|
466
|
+
> `docs/ADR.md`, while an idea2prd-manual project keeps a `docs/adr/*.md` directory. Since 1.5.19 the
|
|
467
|
+
> toolkit generator's scanner normalizes both into one decision list, so the ADR-driven parts of the
|
|
468
|
+
> generated toolkit (architect skill weighting, security boosts, tech-stack extraction, CLAUDE.md key
|
|
469
|
+
> decisions) work for `/replicate` projects too. Before 1.5.19 the scanner required a directory of
|
|
470
|
+
> more than five files, so for every `/replicate` project the flag was unreachable and those parts
|
|
471
|
+
> silently produced nothing.
|
|
472
|
+
|
|
363
473
|
Skill: `sparc-prd-mini` (internally chains explore + research + solve sub-phases).
|
|
364
474
|
|
|
365
475
|
### Phase 2 — Validation (5-agent swarm)
|
|
@@ -664,7 +774,7 @@ P-Replicator V1.5.x ● user │ Sonnet 4.7
|
|
|
664
774
|
🚀 Pipeline /<cmd> ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
|
|
665
775
|
🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
|
|
666
776
|
📊 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 ●
|
|
777
|
+
🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●6+2 │ Hooks ●7/7
|
|
668
778
|
💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓
|
|
669
779
|
```
|
|
670
780
|
|
|
@@ -734,7 +844,7 @@ All 4 autocommit scripts use `execFileSync('git', [...])` (no shell pipes, no `2
|
|
|
734
844
|
Updated via `state-update.cjs`:
|
|
735
845
|
|
|
736
846
|
```bash
|
|
737
|
-
node
|
|
847
|
+
node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/state-update.cjs" \
|
|
738
848
|
--command /feature \
|
|
739
849
|
--phase VALIDATE \
|
|
740
850
|
--index 2 \
|
|
@@ -880,14 +990,14 @@ Default structure after `init`:
|
|
|
880
990
|
"_comment": "Default hooks + statusline shipped by @dzhechkov/p-replicator init.",
|
|
881
991
|
"statusLine": {
|
|
882
992
|
"type": "command",
|
|
883
|
-
"command": "node
|
|
993
|
+
"command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/statusline.cjs\""
|
|
884
994
|
},
|
|
885
995
|
"hooks": {
|
|
886
996
|
"SessionStart": [
|
|
887
997
|
{
|
|
888
998
|
"matcher": "*",
|
|
889
999
|
"hooks": [
|
|
890
|
-
{ "type": "command", "command": "node
|
|
1000
|
+
{ "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/session-insights.cjs\"", "timeout": 5 }
|
|
891
1001
|
]
|
|
892
1002
|
}
|
|
893
1003
|
],
|
|
@@ -895,9 +1005,9 @@ Default structure after `init`:
|
|
|
895
1005
|
{
|
|
896
1006
|
"matcher": "*",
|
|
897
1007
|
"hooks": [
|
|
898
|
-
{ "type": "command", "command": "node
|
|
899
|
-
{ "type": "command", "command": "node
|
|
900
|
-
{ "type": "command", "command": "node
|
|
1008
|
+
{ "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-roadmap.cjs\"", "timeout": 10 },
|
|
1009
|
+
{ "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-insights.cjs\"", "timeout": 10 },
|
|
1010
|
+
{ "type": "command", "command": "node \"${CLAUDE_PROJECT_DIR}/.claude/hooks/autocommit-plans.cjs\"", "timeout": 10 }
|
|
901
1011
|
]
|
|
902
1012
|
}
|
|
903
1013
|
]
|
|
@@ -905,6 +1015,19 @@ Default structure after `init`:
|
|
|
905
1015
|
}
|
|
906
1016
|
```
|
|
907
1017
|
|
|
1018
|
+
**Why `${CLAUDE_PROJECT_DIR}` and not a relative path:** a relative path resolves against the process
|
|
1019
|
+
working directory, which drifts — one `cd` inside a tool call moves it for the rest of the session, and
|
|
1020
|
+
the hook then dies with `MODULE_NOT_FOUND`. Because hooks are non-blocking, the session continues and
|
|
1021
|
+
your roadmap silently stops being committed. Claude Code sets `CLAUDE_PROJECT_DIR` to the project root
|
|
1022
|
+
and rewrites this exact braced form for PowerShell, so it works on every platform.
|
|
1023
|
+
|
|
1024
|
+
The hook scripts anchor their DATA the same way, and fall back to their own location
|
|
1025
|
+
(`__dirname/../..`) when the variable is absent — so a hand-run works too. That fallback is why the
|
|
1026
|
+
shell examples elsewhere in this README use `${CLAUDE_PROJECT_DIR:-.}`: in a plain terminal the
|
|
1027
|
+
variable is unset, and `:-.` keeps the example working. Do **not** use the `:-.` form inside
|
|
1028
|
+
`settings.json` — Claude Code's PowerShell rewrite matches only the bare `${CLAUDE_PROJECT_DIR}`
|
|
1029
|
+
token, so `:-.` would leave a POSIX-only construct in a file that must work on every platform.
|
|
1030
|
+
|
|
908
1031
|
**Customization:** add new hooks or event types — preserved on `init --force` or `update` thanks to merge logic.
|
|
909
1032
|
|
|
910
1033
|
**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 +1135,13 @@ Checks:
|
|
|
1012
1135
|
3. Script runs directly:
|
|
1013
1136
|
|
|
1014
1137
|
```bash
|
|
1015
|
-
node
|
|
1138
|
+
node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs"
|
|
1016
1139
|
```
|
|
1017
1140
|
|
|
1018
1141
|
Should print 6 lines of ANSI output. If it errors:
|
|
1019
1142
|
|
|
1020
1143
|
```bash
|
|
1021
|
-
node
|
|
1144
|
+
node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs" 2>&1
|
|
1022
1145
|
```
|
|
1023
1146
|
|
|
1024
1147
|
Likely cause: corrupt JSON or missing `.p-replicator.json`.
|
|
@@ -1038,7 +1161,7 @@ git rev-parse --git-dir
|
|
|
1038
1161
|
Debug a specific hook:
|
|
1039
1162
|
|
|
1040
1163
|
```bash
|
|
1041
|
-
node
|
|
1164
|
+
node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/autocommit-roadmap.cjs"
|
|
1042
1165
|
echo "Exit: $?"
|
|
1043
1166
|
git log -1 --format="%s"
|
|
1044
1167
|
```
|
|
@@ -1103,7 +1226,7 @@ Checks:
|
|
|
1103
1226
|
1. `.claude/insights/index.md` exists with entries?
|
|
1104
1227
|
2. Hook works:
|
|
1105
1228
|
```bash
|
|
1106
|
-
node
|
|
1229
|
+
node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/session-insights.cjs" # should print recent insights
|
|
1107
1230
|
```
|
|
1108
1231
|
3. SessionStart hook configured in `settings.json`?
|
|
1109
1232
|
|
|
@@ -1112,7 +1235,7 @@ If all 3 OK but still nothing — Claude Code may cache. Restart `claude`.
|
|
|
1112
1235
|
### Statusline lags on every command
|
|
1113
1236
|
|
|
1114
1237
|
```bash
|
|
1115
|
-
time node
|
|
1238
|
+
time node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/statusline.cjs" # how many seconds?
|
|
1116
1239
|
```
|
|
1117
1240
|
|
|
1118
1241
|
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.
|
|
3
|
+
"version": "1.9.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 --test tests/snapshot/templates.test.js && 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/unit/growth-requirements-bridge.test.js tests/unit/check-growth-trace.test.js tests/unit/growth-gate-conditional.test.js tests/unit/module-copy-identity.test.js tests/unit/growth-axes-and-compliance.test.js tests/unit/skill-paths-prebaked.test.js tests/unit/check-docs-complete.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 tests/unit/growth-requirements-bridge.test.js tests/unit/check-growth-trace.test.js tests/unit/growth-gate-conditional.test.js tests/unit/module-copy-identity.test.js tests/unit/growth-axes-and-compliance.test.js tests/unit/skill-paths-prebaked.test.js tests/unit/check-docs-complete.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
|
+
}
|