@dzhechkov/p-replicator 1.12.0 → 1.13.2
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 +281 -65
- package/CHANGELOG.md +148 -1
- package/LICENSE +21 -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 +1 -1
- package/README/eng/README.md +2 -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 +2 -1
- package/README/ru/html/index.html +8 -8
- package/README.md +150 -9
- package/bin/cli.js +0 -0
- package/package.json +10 -11
- package/sbom.json +604 -64
- package/scripts/check-pipeline-gaps.sh +510 -21
- package/src/commands/init.js +1 -1
- package/src/rule-components.json +5 -1
- package/src/utils.js +33 -3
- package/templates/.claude/agents/product-discoverer.md +38 -0
- package/templates/.claude/agents/replicate-coordinator.md +11 -1
- package/templates/.claude/commands/feature.md +72 -6
- package/templates/.claude/commands/go.md +6 -8
- package/templates/.claude/commands/harvest.md +5 -7
- package/templates/.claude/commands/replicate.md +169 -44
- package/templates/.claude/commands/start.md +28 -7
- package/templates/.claude/hooks/capture-source-path.cjs +795 -0
- package/templates/.claude/hooks/check-canon.cjs +493 -0
- package/templates/.claude/hooks/check-embed-contract.cjs +374 -0
- package/templates/.claude/hooks/check-external-deps.cjs +288 -0
- package/templates/.claude/hooks/check-file-ownership.cjs +424 -0
- package/templates/.claude/hooks/check-handoff-manifest.cjs +367 -0
- package/templates/.claude/hooks/check-job-contract.cjs +501 -0
- package/templates/.claude/hooks/check-look-origin.cjs +240 -0
- package/templates/.claude/hooks/check-look-trace.cjs +385 -0
- package/templates/.claude/hooks/check-metric-source.cjs +296 -0
- package/templates/.claude/hooks/check-model-cost.cjs +470 -0
- package/templates/.claude/hooks/check-ports.cjs +27 -6
- package/templates/.claude/hooks/check-review-contract.cjs +205 -0
- package/templates/.claude/hooks/check-source-version.cjs +312 -0
- package/templates/.claude/hooks/check-swarm-receipts.cjs +197 -0
- package/templates/.claude/hooks/check-webhook-contract.cjs +535 -0
- package/templates/.claude/hooks/statusline.cjs +2 -2
- package/templates/.claude/rules/embeddable-widget.md +73 -0
- package/templates/.claude/rules/feature-lifecycle.md +5 -6
- package/templates/.claude/rules/incoming-webhooks.md +99 -0
- package/templates/.claude/rules/long-running-job.md +73 -0
- package/templates/.claude/rules/model-call-cost.md +85 -0
- package/templates/.claude/rules/replicate-pipeline.md +122 -52
- package/templates/.claude/skills/brutal-honesty-review/SKILL.md +9 -0
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/SKILL.md +4 -0
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/03-generate-p0.md +46 -1
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/04-generate-p1.md +7 -1
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/modules/06-package-deliver.md +20 -2
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/claude-md-strategy.md +7 -0
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/automation-commands.md +17 -0
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-lifecycle-ent.md +43 -5
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/feature-lifecycle.md +43 -7
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/start-command.md +19 -1
- package/templates/.claude/skills/cc-toolkit-generator-enhanced/references/templates/swarm-file-evidence.md +151 -0
- package/templates/.claude/skills/goap-research-ed25519/SKILL.md +37 -22
- package/templates/.claude/skills/goap-research-ed25519/references/negative-results.md +94 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/check_report_evidence.py +368 -4
- package/templates/.claude/skills/goap-research-ed25519/scripts/ed25519_verifier.py +122 -5
- package/templates/.claude/skills/goap-research-ed25519/scripts/evidence_fetch.py +33 -16
- package/templates/.claude/skills/goap-research-ed25519/scripts/quote_provenance.py +342 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_ed25519_verifier.py +60 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_evidence_provenance.py +139 -6
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_quote_provenance.py +274 -0
- package/templates/.claude/skills/goap-research-ed25519/scripts/test_suite_completeness.py +2 -1
- package/templates/.claude/skills/knowledge-extractor/SKILL.md +4 -0
- package/templates/.claude/skills/pipeline-forge/SKILL.md +18 -23
- package/templates/.claude/skills/pipeline-forge/examples/replicate-analysis.md +7 -2
- package/templates/.claude/skills/pipeline-forge/references/patterns-catalog.md +19 -1
- package/templates/.claude/skills/pipeline-forge/references/self-extracted-patterns.md +17 -6
- package/templates/.claude/skills/pipeline-forge/references/skill-anatomy.md +0 -1
- package/templates/.claude/skills/requirements-validator/SKILL.md +18 -5
- package/templates/.claude/skills/requirements-validator/references/feature-report-contracts.md +67 -0
- package/templates/.claude/skills/requirements-validator/references/scoring-system.md +15 -6
- package/templates/.claude/skills/reverse-engineering-unicorn/modules/025-cjm-prototype.md +21 -1
- package/templates/.claude/skills/sparc-prd-mini/SKILL.md +173 -725
- package/tests/e2e/feature-contour.test.js +176 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/01_specification.md +15 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/02_pseudocode.md +19 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/03_architecture.md +3 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/04_refinement.md +3 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/05_completion.md +7 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/review-report.md +11 -0
- package/tests/fixtures/feature-contour/docs/features/demo-gate/validation-report.md +10 -0
- package/tests/fixtures/feature-contour/tests/demo.test.js +16 -0
- package/tests/snapshot/baseline.json +64 -40
- package/tests/unit/capture-source-path.test.js +492 -0
- package/tests/unit/check-canon.test.js +403 -0
- package/tests/unit/check-embed-contract.test.js +422 -0
- package/tests/unit/check-external-deps.test.js +363 -0
- package/tests/unit/check-file-ownership.test.js +388 -0
- package/tests/unit/check-handoff-manifest.test.js +410 -0
- package/tests/unit/check-job-contract.test.js +514 -0
- package/tests/unit/check-look-origin.test.js +180 -0
- package/tests/unit/check-look-trace.test.js +420 -0
- package/tests/unit/check-metric-source.test.js +325 -0
- package/tests/unit/check-model-cost.test.js +425 -0
- package/tests/unit/check-ports.test.js +46 -2
- package/tests/unit/check-review-contract.test.js +181 -0
- package/tests/unit/check-source-version.test.js +344 -0
- package/tests/unit/check-swarm-receipts.test.js +231 -0
- package/tests/unit/check-webhook-contract.test.js +536 -0
- package/tests/unit/db-port-rule.test.js +8 -2
- package/tests/unit/detection-ladder-registry.test.js +2 -2
- package/tests/unit/generator-swarm-contract.test.js +287 -0
- package/tests/unit/guard-honest-input-meta.test.js +64 -0
- package/tests/unit/honest-failure-rules.test.js +106 -9
- package/tests/unit/look-phase-contract.test.js +231 -0
- package/tests/unit/negative-conclusion-gate.test.js +300 -0
- package/tests/unit/quote-provenance.test.js +122 -0
- package/tests/unit/sync-templates-guard.test.js +46 -3
- package/tests/unit/traceability-completion-gate.test.js +267 -0
- package/tests/unit/utils.test.js +40 -3
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
[](#test-infrastructure)
|
|
15
15
|
[](#skills-reference)
|
|
16
16
|
[](#commands-reference)
|
|
17
|
-
[](#hooks-system)
|
|
18
18
|
[](#pipeline-overview--replicate-phases)
|
|
19
19
|
|
|
20
20
|
<br>
|
|
@@ -101,12 +101,29 @@
|
|
|
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**, **13 rules**, **24 hook utilities**, and a `settings.json` with pre-configured hooks and a multi-line statusline dashboard.
|
|
105
105
|
|
|
106
|
-
The flagship `/replicate` command takes a project through a **
|
|
106
|
+
The flagship `/replicate` command takes a project through a **6-phase pipeline**:
|
|
107
107
|
|
|
108
108
|
```
|
|
109
109
|
Phase 0 (optional) Product Discovery reverse-engineering of similar companies
|
|
110
|
+
Phase 0.5 (ALWAYS) Source Product Profile capture the LOOK of the product being replicated
|
|
111
|
+
|
|
112
|
+
> **Third-party design analyses enter as HYPOTHESES (v1.13).** A ready-made DESIGN.md from a
|
|
113
|
+
> library like styles.refero.design is a claim, not a measurement: the profile header now carries
|
|
114
|
+
> `**Происхождение:**` (closed list: `прокликано | сторонний-разбор | вручную | не снято`), and a
|
|
115
|
+
> `сторонний-разбор` row REQUIRES the analysis source + its own capture date (read from the
|
|
116
|
+
> source's markup, e.g. `extractedAt` — never from a tool's paraphrase). Hypothesis rows never
|
|
117
|
+
> reach `Specification.md` without a DATED live confirmation; the gate is
|
|
118
|
+
> `node .claude/hooks/check-look-origin.cjs .` (exit `0` verified · `1` a promoted hypothesis is
|
|
119
|
+
> NAMED · `2` the check did not run — never "all clear").
|
|
120
|
+
>
|
|
121
|
+
> **Quoted evidence is now byte-verifiable (v1.13).** In `goap-research-ed25519`, every quote
|
|
122
|
+
> carries a closed acquisition method (`raw-fetch | tool-summary | search-listing | manual`), and
|
|
123
|
+
> the "verbatim" verdict can ONLY be produced by `verify_verbatim` comparing the quote against a
|
|
124
|
+
> captured source excerpt (sha256-bound, self-gitignoring store) — a report cannot attest its own
|
|
125
|
+
> quotes, and a tool paraphrase is categorically capped below "verbatim". A quoted phrase absent
|
|
126
|
+
> from its stored source is a named violation.
|
|
110
127
|
Phase 1 Planning 11 SPARC documents (PRD, Architecture, Pseudocode, ...)
|
|
111
128
|
Phase 2 Validation 5-agent swarm validates against INVEST + SMART
|
|
112
129
|
Phase 3 Toolkit Generation project-specific agents, rules, skills
|
|
@@ -239,6 +256,24 @@ EOF
|
|
|
239
256
|
|
|
240
257
|
Full recipe: see [User Guide](./README/eng/02_user_guide.md#feature-workflow-in-an-existing-project-mode-2) ([RU](./README/ru/02_user_guide.md#feature-workflow-в-существующем-проекте-mode-2)).
|
|
241
258
|
|
|
259
|
+
### Three traceability gates
|
|
260
|
+
|
|
261
|
+
Byte-level formats of the three reports (`validation-report.md`, `05_completion.md`, `review-report.md`) live in `templates/.claude/skills/requirements-validator/references/feature-report-contracts.md`; `/feature` names them per phase, the gates below enforce them. The shared `brutal-honesty-review` skill stays byte-identical to its canonical copy — the specification contract is a `/feature` obligation, not a change to the generic reviewer.
|
|
262
|
+
|
|
263
|
+
`/feature` refuses silent traceability loss at validation, implementation, and review. The
|
|
264
|
+
requirements score also has a `Traceability = 0` blocking floor: without a `## Criterion scenarios`
|
|
265
|
+
table mapping every AC id to a named scenario, a high average cannot advance the story.
|
|
266
|
+
|
|
267
|
+
| Check | Command | Expected pass | Example named gap |
|
|
268
|
+
|---|---|---|---|
|
|
269
|
+
| Machine-key traceability and the scoring floor's input | `bash "$CHECK_PIPELINE_GAPS" "${CLAUDE_PROJECT_DIR:-.}" --traceability` | `PASS traceability: 3 AC ids mapped to 3 scenarios` | `GAP AC-checkout-2: no named scenario in 02_pseudocode.md` |
|
|
270
|
+
| Validation report is bound to the current specification bytes | `bash "$CHECK_PIPELINE_GAPS" "${CLAUDE_PROJECT_DIR:-.}" --report-revision` | `PASS report-revision: validation-report.md matches 01_specification.md` | `GAP report-revision: validation=4f27c19c9b20 specification=8ab35d68e021` |
|
|
271
|
+
| Every criterion names a real test file and title | `bash "$CHECK_PIPELINE_GAPS" "${CLAUDE_PROJECT_DIR:-.}" --completion` | `PASS completion: 3 AC ids covered by tests` | `GAP AC-checkout-2: test title not found in tests/checkout.test.js` |
|
|
272
|
+
| Review discloses its family and answers the exact specification revision | `node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/check-review-contract.cjs" "${CLAUDE_PROJECT_DIR:-.}" "checkout"` | `PASS review-contract feature=checkout AC-ids=3 rows=3` | `GAP AC-checkout-2 has no Spec conformance row` |
|
|
273
|
+
|
|
274
|
+
All four commands use the same fail-closed convention: exit `0` passes, exit `1` prints every named
|
|
275
|
+
gap, and exit `2` means the inputs could not be established. Neither non-zero result is a warning.
|
|
276
|
+
|
|
242
277
|
---
|
|
243
278
|
|
|
244
279
|
## 📦 Installation
|
|
@@ -263,7 +298,7 @@ This creates:
|
|
|
263
298
|
- `.claude/commands/` — 11 slash commands (`/replicate`, `/run`, `/feature`, ...)
|
|
264
299
|
- `.claude/agents/` — 4 pipeline agents
|
|
265
300
|
- `.claude/rules/` — 9 governance rules
|
|
266
|
-
- `.claude/hooks/` —
|
|
301
|
+
- `.claude/hooks/` — 24 cross-platform Node scripts
|
|
267
302
|
- `.claude/settings.json` — hooks + statusline configuration
|
|
268
303
|
- `.p-replicator.json` — install manifest
|
|
269
304
|
|
|
@@ -289,8 +324,8 @@ This creates:
|
|
|
289
324
|
| **Skills** | 10 | 92 files (880K+ chars — MEASURED via `wc -c` over `templates/.claude/skills`: 880,679). Modular architecture: foundation → composite → master orchestrator |
|
|
290
325
|
| **Commands** | 11 | `/replicate`, `/harvest`, `/start`, `/plan`, `/feature`, `/go`, `/run`, `/next`, `/myinsights`, `/docs`, `/deploy` |
|
|
291
326
|
| **Agents** | 4 | `replicate-coordinator`, `product-discoverer`, `doc-validator`, `harvest-coordinator` |
|
|
292
|
-
| **Rules** |
|
|
293
|
-
| **Hooks** |
|
|
327
|
+
| **Rules** | 13 | `cost-of-detection-ladder`, `replicate-pipeline`, `skill-interface-protocol`, `git-workflow`, `insights-capture`, `feature-lifecycle`, `docker-ports`, `swarm-file-evidence`, `honest-configuration`, `embeddable-widget`, `incoming-webhooks` |
|
|
328
|
+
| **Hooks** | 15 | Fifteen cross-platform Node utilities: 4 wired to events, 11 invoked deliberately (the harvest insight writer, the status line, and seven `check-*` gates) |
|
|
294
329
|
| **Settings** | 1 | `settings.json` with statusLine + SessionStart + UserPromptSubmit + Stop hooks pre-configured |
|
|
295
330
|
|
|
296
331
|
After running `/replicate`, the toolkit also generates **project-specific** artifacts:
|
|
@@ -427,6 +462,102 @@ A conscious rejection **with a reason written down** passes; a silent drop does
|
|
|
427
462
|
**What it does NOT prove:** that anything was built, or that copying a competitor's growth move is
|
|
428
463
|
lawful. It proves an obligation was carried forward, nothing more.
|
|
429
464
|
|
|
465
|
+
### `check-look-trace.cjs` — the source product's LOOK was not captured and dropped
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
node .claude/hooks/check-look-trace.cjs .
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
```
|
|
472
|
+
❌ часть обязательств по облику потеряна (1 из 2):
|
|
473
|
+
• FR-LOOK-002 (путь)
|
|
474
|
+
Каждое надо либо перенести в docs/Specification.md, либо отклонить С ПРИЧИНОЙ — молча уронить нельзя.
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
When a project reproduces an existing product, that product's LOOK — palette, typography, density,
|
|
478
|
+
screen layout, the order of steps — is the substance of the task. **Phase 0.5 (Source Product
|
|
479
|
+
Profile)** asks that question in every run, including the `--from-docs` entry that skips Phase 0
|
|
480
|
+
entirely, and writes `docs/source-product-profile.md`. This checker asks whether its
|
|
481
|
+
`FR-LOOK-nnn` rows survived into `docs/Specification.md`. A conscious rejection **with a reason
|
|
482
|
+
written down** passes; a silent drop does not.
|
|
483
|
+
|
|
484
|
+
Exit `2` covers five states, and none of them is a pass: no profile (the phase did not run), no
|
|
485
|
+
Specification, an untouched template table, an EMPTY `путь` axis that was never declared — and the
|
|
486
|
+
two legitimate non-captures, `ИСТОЧНИКА НЕТ` (the project replicates nothing) and `НЕ ИЗМЕРЕНО` (a
|
|
487
|
+
source was NAMED but could not be captured, with a reason from the closed list `no-browser-mcp` |
|
|
488
|
+
`no-browser` | `unreachable` | `auth-required` | `out-of-scope` | `bot-protected` | `timeout` |
|
|
489
|
+
`robots-disallowed`). Per the shipped `honest-configuration` rule (CFG-I4), an unreachable source of
|
|
490
|
+
truth yields UNKNOWN, never a plausible value — a palette invented for a product nobody looked at is
|
|
491
|
+
exactly that plausible value.
|
|
492
|
+
|
|
493
|
+
**Two axes, one identifier family, separate answers.** `облик` (what is seen) and `путь` (the order
|
|
494
|
+
of screens) are a COLUMN of `FR-LOOK-nnn`, never a second namespace — but they fail apart, so each
|
|
495
|
+
declares its own status: `**Статус съёмки:**` and `**Статус съёмки (путь):**`. The path declaration
|
|
496
|
+
is demanded only when the axis carries no rows; rows are its answer. A proven loss outranks an
|
|
497
|
+
unanswered axis — exit `1` beats exit `2`.
|
|
498
|
+
|
|
499
|
+
The `облик` capture is done by the canonical `clone-website` skill from the separate
|
|
500
|
+
[`@dzhechkov/skills-website-cloner`](https://www.npmjs.com/package/@dzhechkov/skills-website-cloner)
|
|
501
|
+
package, run recon-only. It is **called, never vendored** (ADR-0001): unavailable prerequisites make
|
|
502
|
+
the outcome `НЕ ИЗМЕРЕНО` with a named reason, they never stall the pipeline.
|
|
503
|
+
|
|
504
|
+
### `capture-source-path.cjs` — the `путь` axis, clicked through in a browser
|
|
505
|
+
|
|
506
|
+
```bash
|
|
507
|
+
node .claude/hooks/capture-source-path.cjs https://example.test/ --max-pages 5 --delay-ms 1500
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
```
|
|
511
|
+
ℹ️ robots.txt прочитан, стартовый путь разрешён
|
|
512
|
+
ℹ️ шаг 2 — экран входа. Останавливаемся: за вход не ходим, это законная последняя точка пути.
|
|
513
|
+
|
|
514
|
+
✅ СНЯТ: ось «путь», 2 экрана(ов). Доказательства: .p-replicator/source-path-capture
|
|
515
|
+
|
|
516
|
+
| FR-LOOK-005 | Шаг 1 из 2; стартовый экран; полей формы: 0; заметных призывов: 1 из 2; уровней заголовков: 2 | путь | / | прокликано …, step-01.aria.txt | ЧЕРНОВИК |
|
|
517
|
+
| FR-LOOK-006 | Шаг 2 из 2; достижим одним действием с предыдущего; полей формы: 2; …; это экран входа | путь | /signup | прокликано …, step-02.aria.txt | ЧЕРНОВИК |
|
|
518
|
+
| FR-LOOK-007 | Последовательность экранов до конца снятого пути: 2 экрана(ов), / → /signup; путь упирается в экран входа | путь | / | прокликано …, capture.json | ЧЕРНОВИК |
|
|
519
|
+
|
|
520
|
+
Замеренные закономерности СТАРТОВОГО экрана (материал для оси «облик», строк не выпускаем):
|
|
521
|
+
шаг сетки отступов: 4px (доля 0.91) · кеглей: 3 · начертаний: 3 · радиусов: 1 · переменных в :root: 3
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
`clone-website` captures what is visible at ONE url; a person's route through a product —
|
|
525
|
+
registration, onboarding, first value, paywall — was captured by nothing. This walks it and emits
|
|
526
|
+
rows in the SAME `FR-LOOK-nnn` family, continuing the profile's numbering, on the `путь` axis.
|
|
527
|
+
|
|
528
|
+
Three outcomes, each with its own exit code: `0` captured · `1` the source opened but has no onward
|
|
529
|
+
step (a one-screen product — a legitimate `ИСТОЧНИКА НЕТ` for this axis, and a PROVEN negative, not
|
|
530
|
+
blindness) · `2` `НЕ ИЗМЕРЕНО` with a reason from the closed list, printed as the exact profile
|
|
531
|
+
lines to paste.
|
|
532
|
+
|
|
533
|
+
**Playwright is an external prerequisite** — this package ships ZERO dependencies, so the module is
|
|
534
|
+
resolved on the machine at run time (`PLAYWRIGHT_MODULE`, the project, `npm root -g`) and its
|
|
535
|
+
absence is the honest outcome `no-browser`, never a crash:
|
|
536
|
+
`npm i -D playwright && npx playwright install chromium`.
|
|
537
|
+
|
|
538
|
+
**What it captures, and what it refuses to.** REGULARITIES — the spacing step, the type scale, how
|
|
539
|
+
many hierarchy levels, how many form fields, how many screens to first value — never VALUES to carry
|
|
540
|
+
over, such as this exact purple. Only computed styles and semantic roles (aria, form types,
|
|
541
|
+
accessible names); **never class names** like `sx-ds2y8i`, which bundlers change on every build of
|
|
542
|
+
someone else's site. Third-party CSS and DOM are copyrighted code — a basis for measurement, never
|
|
543
|
+
material to copy — so they are not stored by default, and the evidence directory ships its own
|
|
544
|
+
`.gitignore`. `robots.txt` is read before crawling more than one page, and a refusal is the outcome
|
|
545
|
+
`robots-disallowed`. Authentication and any circumvention are refused outright: a login screen is
|
|
546
|
+
recorded as the legitimate last step and the crawl stops there. One thread, a pause between pages
|
|
547
|
+
(minimum 250 ms), a hard page cap of 12 — exceeding either is clamped out loud.
|
|
548
|
+
|
|
549
|
+
**When to run it:** inside Phase 0.5, once the source product is named.
|
|
550
|
+
|
|
551
|
+
**What it does NOT prove:** the designer's intent. It reports "padding 8px ×137", never "a 4pt
|
|
552
|
+
step is the design language"; the reading is yours.
|
|
553
|
+
|
|
554
|
+
**When to run it:** at the Phase 1 → Phase 2 boundary, beside `check-growth-trace.cjs`. Run at the
|
|
555
|
+
end of Phase 0.5 itself it answers `2` by construction — nothing has been promoted yet — and there
|
|
556
|
+
it only tells you the profile parses.
|
|
557
|
+
|
|
558
|
+
**What it does NOT prove:** that the interface resembles the source. It proves an obligation was
|
|
559
|
+
carried forward. Resemblance is proven by visual comparison, not by matching identifiers.
|
|
560
|
+
|
|
430
561
|
### `check-pipeline-gaps.sh` — FR/NFR/AC keys are joins, not decoration
|
|
431
562
|
|
|
432
563
|
The package owns the checker at `scripts/check-pipeline-gaps.sh`. `/feature` resolves that packaged
|
|
@@ -479,7 +610,7 @@ npx @dzhechkov/p-replicator verify
|
|
|
479
610
|
|
|
480
611
|
The command checks:
|
|
481
612
|
|
|
482
|
-
- **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents +
|
|
613
|
+
- **Pre-shipped contract** (must-have): 10 skills + 11 commands + 4 agents + 13 rules + settings.json + 25 hooks
|
|
483
614
|
- **Post-/replicate hints** (advisory): CLAUDE.md, project-specific agents, feature-roadmap.json, security rules, etc.
|
|
484
615
|
|
|
485
616
|
**Exit codes:**
|
|
@@ -852,7 +983,7 @@ P-Replicator V1.5.x ● user │ Sonnet 4.7
|
|
|
852
983
|
🚀 Pipeline /<cmd> ▓▓▓░░░░ 50% │ Phase: VALIDATE (2/4) │ Last: /replicate
|
|
853
984
|
🎯 Roadmap [●●●○○○○○] mvp 3/8 │ Done 5/12 │ ▶ auth-jwt │ Domain: banking
|
|
854
985
|
📊 SPARC ●11/11 │ 🟢 78/100 │ Plans ●3 │ ADRs ●2 │ Harvest 2026-05-05
|
|
855
|
-
🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●
|
|
986
|
+
🛠️ Toolkit Skills ●10/10 │ Cmds ●11/11 │ Agents ●4+3 │ Rules ●13+2 │ Hooks ●17/17
|
|
856
987
|
💡 Insights ●12 (2026-05-06) │ Tests 85/85 ✓ │ MCP ●1/1 │ Settings ✓ │ 🧬 Keysarium ✓
|
|
857
988
|
```
|
|
858
989
|
|
|
@@ -888,7 +1019,7 @@ For internals, see [admin guide](./README/eng/03_admin_guide.md#statusline--dash
|
|
|
888
1019
|
|
|
889
1020
|
## 🪝 Hooks System
|
|
890
1021
|
|
|
891
|
-
`p-replicator` ships **
|
|
1022
|
+
`p-replicator` ships **11 cross-platform Node utilities** in `.claude/hooks/`. The Bash traceability
|
|
892
1023
|
gate described above remains a package script and is resolved directly by `/feature`; it is not a
|
|
893
1024
|
Claude Code hook.
|
|
894
1025
|
|
|
@@ -901,6 +1032,16 @@ Claude Code hook.
|
|
|
901
1032
|
| `statusline.cjs` | (statusLine config) | Multi-line dashboard above the prompt |
|
|
902
1033
|
| `state-update.cjs` | (utility) | Argv-driven helper for writing `.claude/.p-replicator-state.json` |
|
|
903
1034
|
| `write-insight.cjs` | (utility, invoked by `/harvest`) | Establish Markdown, return `created`/`appended`/`duplicate`, then best-effort project the same record through dz |
|
|
1035
|
+
| `check-ports.cjs` | (utility, invoke deliberately) | docker-ports Правило №0 against a real Compose config — exits 0/1/2 |
|
|
1036
|
+
| `check-docs-complete.cjs` | (utility, invoke deliberately) | Are the Phase-1 documents written and placeholder-free, before the Phase-2 swarm — exits 0/1/2 |
|
|
1037
|
+
| `check-growth-trace.cjs` | (utility, invoke deliberately) | Did the M5 `FR-GROWTH-nnn` seed reach `docs/Specification.md` — exits 0/1/2 |
|
|
1038
|
+
| `check-look-trace.cjs` | (utility, invoke deliberately) | Did the Phase-0.5 `FR-LOOK-nnn` source-look seed reach `docs/Specification.md` — exits 0/1/2 |
|
|
1039
|
+
| `capture-source-path.cjs` | (utility, invoke deliberately) | Phase-0.5 `путь` axis: click through the source product in a browser and emit `FR-LOOK-nnn` rows — exits 0/1/2 |
|
|
1040
|
+
|
|
1041
|
+
The four `check-*` utilities and `capture-source-path.cjs` are **not wired to any event**, and that
|
|
1042
|
+
is deliberate: a hook of this package is non-blocking by contract (pinned by a test that requires
|
|
1043
|
+
exit 0), so a hook could only print — it could never refuse anything. Invoke them where their answer
|
|
1044
|
+
changes a decision.
|
|
904
1045
|
|
|
905
1046
|
### Cross-platform discipline
|
|
906
1047
|
|
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.13.2",
|
|
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": {
|
|
@@ -19,15 +19,6 @@
|
|
|
19
19
|
".dz-manifest.json",
|
|
20
20
|
"sbom.json"
|
|
21
21
|
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"prepublishOnly": "node --test tests/snapshot/templates.test.js && node ../../../scripts/prepublish-gate.mjs",
|
|
24
|
-
"test": "node --test tests/unit/honest-failure-rules.test.js tests/unit/detection-ladder-contract.test.js tests/unit/detection-ladder-registry.test.js 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/insights-dz-delegation.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/doctor-insight-flow.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/unit/absence-is-not-emptiness.test.js tests/unit/guard-forms.test.js tests/unit/generated-guard-templates.test.js tests/unit/shipped-suite-context.test.js tests/unit/assess-scripts.test.js tests/unit/insights-docs-tell-the-truth.test.js tests/unit/insights-writer.test.js tests/unit/check-pipeline-gaps.test.js tests/unit/traceability-machine-ids.test.js tests/unit/traceability-negative-fixture.test.js tests/e2e/lifecycle.test.js tests/e2e/packed-insights-writer.test.js tests/snapshot/templates.test.js",
|
|
25
|
-
"test:unit": "node --test tests/unit/honest-failure-rules.test.js tests/unit/detection-ladder-contract.test.js tests/unit/detection-ladder-registry.test.js 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/insights-dz-delegation.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/doctor-insight-flow.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/unit/absence-is-not-emptiness.test.js tests/unit/guard-forms.test.js tests/unit/generated-guard-templates.test.js tests/unit/shipped-suite-context.test.js tests/unit/assess-scripts.test.js tests/unit/insights-docs-tell-the-truth.test.js tests/unit/insights-writer.test.js tests/unit/check-pipeline-gaps.test.js tests/unit/traceability-machine-ids.test.js tests/unit/traceability-negative-fixture.test.js",
|
|
26
|
-
"test:e2e": "node --test tests/e2e/lifecycle.test.js tests/e2e/packed-insights-writer.test.js",
|
|
27
|
-
"test:snapshot": "node --test tests/snapshot/templates.test.js",
|
|
28
|
-
"test:doctor": "node bin/cli.js doctor",
|
|
29
|
-
"snapshot:baseline": "node tests/snapshot/update-baseline.js"
|
|
30
|
-
},
|
|
31
22
|
"keywords": [
|
|
32
23
|
"claude",
|
|
33
24
|
"claude-code",
|
|
@@ -80,5 +71,13 @@
|
|
|
80
71
|
},
|
|
81
72
|
"publishConfig": {
|
|
82
73
|
"access": "public"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"test": "node --test tests/unit/honest-failure-rules.test.js tests/unit/generator-swarm-contract.test.js tests/unit/check-swarm-receipts.test.js tests/unit/check-embed-contract.test.js tests/unit/check-model-cost.test.js tests/unit/check-canon.test.js tests/unit/check-file-ownership.test.js tests/unit/check-source-version.test.js tests/unit/check-handoff-manifest.test.js tests/unit/check-external-deps.test.js tests/unit/check-metric-source.test.js tests/unit/negative-conclusion-gate.test.js tests/unit/check-webhook-contract.test.js tests/unit/check-job-contract.test.js tests/unit/detection-ladder-contract.test.js tests/unit/detection-ladder-registry.test.js 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/insights-dz-delegation.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/doctor-insight-flow.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/check-look-trace.test.js tests/unit/check-look-origin.test.js tests/unit/quote-provenance.test.js tests/unit/guard-honest-input-meta.test.js tests/unit/look-phase-contract.test.js tests/unit/capture-source-path.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/unit/check-review-contract.test.js tests/unit/absence-is-not-emptiness.test.js tests/unit/guard-forms.test.js tests/unit/generated-guard-templates.test.js tests/unit/shipped-suite-context.test.js tests/unit/assess-scripts.test.js tests/unit/insights-docs-tell-the-truth.test.js tests/unit/insights-writer.test.js tests/unit/check-pipeline-gaps.test.js tests/unit/traceability-machine-ids.test.js tests/unit/traceability-completion-gate.test.js tests/unit/traceability-negative-fixture.test.js tests/e2e/lifecycle.test.js tests/e2e/feature-contour.test.js tests/e2e/packed-insights-writer.test.js tests/snapshot/templates.test.js",
|
|
77
|
+
"test:unit": "node --test tests/unit/honest-failure-rules.test.js tests/unit/generator-swarm-contract.test.js tests/unit/check-swarm-receipts.test.js tests/unit/check-embed-contract.test.js tests/unit/check-model-cost.test.js tests/unit/check-canon.test.js tests/unit/check-file-ownership.test.js tests/unit/check-source-version.test.js tests/unit/check-handoff-manifest.test.js tests/unit/check-external-deps.test.js tests/unit/check-metric-source.test.js tests/unit/negative-conclusion-gate.test.js tests/unit/check-webhook-contract.test.js tests/unit/check-job-contract.test.js tests/unit/detection-ladder-contract.test.js tests/unit/detection-ladder-registry.test.js 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/insights-dz-delegation.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/doctor-insight-flow.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/check-look-trace.test.js tests/unit/check-look-origin.test.js tests/unit/quote-provenance.test.js tests/unit/guard-honest-input-meta.test.js tests/unit/look-phase-contract.test.js tests/unit/capture-source-path.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/unit/check-review-contract.test.js tests/unit/absence-is-not-emptiness.test.js tests/unit/guard-forms.test.js tests/unit/generated-guard-templates.test.js tests/unit/shipped-suite-context.test.js tests/unit/assess-scripts.test.js tests/unit/insights-docs-tell-the-truth.test.js tests/unit/insights-writer.test.js tests/unit/check-pipeline-gaps.test.js tests/unit/traceability-machine-ids.test.js tests/unit/traceability-completion-gate.test.js tests/unit/traceability-negative-fixture.test.js",
|
|
78
|
+
"test:e2e": "node --test tests/e2e/lifecycle.test.js tests/e2e/packed-insights-writer.test.js",
|
|
79
|
+
"test:snapshot": "node --test tests/snapshot/templates.test.js",
|
|
80
|
+
"test:doctor": "node bin/cli.js doctor",
|
|
81
|
+
"snapshot:baseline": "node tests/snapshot/update-baseline.js"
|
|
83
82
|
}
|
|
84
|
-
}
|
|
83
|
+
}
|