@dzhechkov/p-replicator 1.5.12 → 1.5.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,327 @@
1
+ # Known Limitations
2
+
3
+ Open limitations of `@dzhechkov/p-replicator` that are accepted trade-offs in
4
+ the current version but warrant attention in future iterations. Each item
5
+ lists severity, version introduced, proposed fix, and effort estimate.
6
+
7
+ For *resolved* limitations, see [CHANGELOG.md](./CHANGELOG.md).
8
+
9
+ ---
10
+
11
+ ## Medium priority
12
+
13
+ ### M1. `--feature-branches` behavior tested only via documentation-presence
14
+
15
+ - **Introduced:** v1.5.0
16
+ - **Status:** open
17
+ - **Severity:** Medium
18
+ - **Tags:** testing, e2e, git-workflow
19
+
20
+ **Why it's a limitation:**
21
+ The flag's docs are validated by meta-tests (`/run.md` and `/go.md` mention
22
+ `--feature-branches`, `feature/{NNN}-{id}` format, `--auto-merge`,
23
+ `auto-stash`). But the actual git workflow (branch creation, push, roadmap
24
+ update, optional merge, recovery from dirty tree) is **not** exercised in any
25
+ test. Regression in the documented workflow would slip past the suite.
26
+
27
+ **Proposed fix:**
28
+ Add an e2e test that:
29
+ 1. Initializes a tmp project with `git init`
30
+ 2. Creates a fake `.claude/feature-roadmap.json` with 2-3 features
31
+ 3. Spawns Claude Code (or simulates the workflow with a stub) running
32
+ `/run mvp --feature-branches --auto-merge`
33
+ 4. Asserts: feature branches created with correct names, pushed (to local
34
+ bare remote), roadmap updated with `number`+`branch`, main contains merge
35
+ commits.
36
+
37
+ **Effort:** Tier M (~3-4 hours). Requires git stub or real spawn of Claude
38
+ Code which complicates CI portability. Could use `simple-git` library or
39
+ shell out to git directly.
40
+
41
+ **Workaround until fixed:** Manual smoke test in a real Claude Code session.
42
+
43
+ ---
44
+
45
+ ### M2. No formal `--from-docs` CLI flag for /replicate
46
+
47
+ - **Introduced:** v1.5.1 (workflow documented but invocation is heuristic)
48
+ - **Status:** open
49
+ - **Severity:** Medium
50
+ - **Tags:** cli, ergonomics, replicate-flow
51
+
52
+ **Why it's a limitation:**
53
+ The "starting from existing technical docs" workflow (added in v1.5.1 to all
54
+ documentation surfaces — README.md root, RU/EN user guides, replicate.md spec,
55
+ replicate-pipeline.md rule) is invoked via natural-language overrides in
56
+ `/replicate` input ("use my docs in `<path>`, skip Phase 0"). There is no
57
+ formal CLI flag like `/replicate --from-docs <path> --skip-discovery` that the
58
+ LLM can detect deterministically. The trigger detection is heuristic — it works
59
+ in practice but isn't easy to test or guarantee.
60
+
61
+ **Proposed fix:**
62
+ 1. Extend `templates/.claude/commands/replicate.md` with explicit flag-parsing
63
+ instructions in the command's frontmatter (`argument-hint: --from-docs <path>`)
64
+ 2. Add deterministic flag-detection logic at the start of /replicate:
65
+ - Parse `--from-docs <path>` and `--skip-discovery` from the command input
66
+ - Set state-file fields: `entry_mode: "from-docs"`, `existing_docs_path: <path>`
67
+ 3. Document the formal flags in the user guide (RU + EN) Path A snippet
68
+ 4. Optionally — add a thin wrapper command `/replicate-from-docs <path>` that
69
+ delegates to `/replicate` with pre-set overrides
70
+ 5. Add a meta-test asserting that the documented flags are consistently mentioned
71
+ in spec + rule + user guides
72
+
73
+ **Effort:** Tier S (~2-3 hours). Pure markdown spec + docs sync. No CLI code
74
+ changes (the flag is parsed by the LLM, not by `bin/cli.js`).
75
+
76
+ **Workaround until fixed:** Use natural-language pattern documented in
77
+ `README/{ru,eng}/02_user_guide.md` "Starting from existing tech docs" / "Альтернативный вход".
78
+
79
+ ---
80
+
81
+ ### M3. `/feature` requires standard SPARC doc paths (no `--prd-path` flag)
82
+
83
+ - **Introduced:** v1.5.2 (Mode 2 workflow formalized but doc paths are hardcoded)
84
+ - **Status:** open
85
+ - **Severity:** Medium
86
+ - **Tags:** ergonomics, feature-flow, doc-paths, mode-2
87
+
88
+ **Why it's a limitation:**
89
+ The "Feature workflow in existing project" scenario (Mode 2, added in v1.5.2 to
90
+ all documentation surfaces — README.md root, RU/EN quickstart + user guides,
91
+ feature.md spec, feature-lifecycle.md rule) requires the user to have their PRD,
92
+ Specification, and Architecture docs at standard SPARC paths (`docs/PRD.md`,
93
+ `docs/Specification.md`, `docs/Architecture.md`). There are no `--prd-path`,
94
+ `--spec-path`, or `--docs-dir` flags for `/feature`. Existing projects with
95
+ docs at non-standard locations (e.g., `docs/product/PRD.md`,
96
+ `documentation/architecture.md`) must rename files or create symlinks one-time.
97
+
98
+ **Proposed fix:**
99
+ 1. Add `docPaths` config in `.p-replicator.json` schema:
100
+ ```json
101
+ {
102
+ "docPaths": {
103
+ "prd": "docs/product/PRD.md",
104
+ "specification": "docs/specs/main-spec.md",
105
+ "architecture": "docs/architecture/system.md"
106
+ }
107
+ }
108
+ ```
109
+ 2. `/feature` resolves paths via `docPaths.<slot>` (with fallback to standard
110
+ `docs/<Slot>.md` if config missing)
111
+ 3. `verify` validates all `docPaths` entries exist
112
+ 4. `init --doc-paths-from <config>` flag for one-shot config bootstrap from
113
+ existing project layout
114
+ 5. Update RU + EN user guides with the config example
115
+ 6. Add meta-test asserting docPaths resolution honored
116
+
117
+ **Effort:** Tier S (~3-4 hours). Pure config + spec read changes; no CLI
118
+ command code rewrites. Backward-compatible (default behavior preserved).
119
+
120
+ **Workaround until fixed:** Rename or symlink existing docs to standard SPARC
121
+ slot names. This is a one-time operation per project. Documented in
122
+ `README/{ru,eng}/02_user_guide.md` "Feature workflow в существующем проекте (Mode 2)" /
123
+ "Feature workflow in an existing project (Mode 2)".
124
+
125
+ ---
126
+
127
+ ## Low priority
128
+
129
+ ### L1. `shippedDefaults` baseline tracks only `settings.json`
130
+
131
+ - **Introduced:** v1.4.3
132
+ - **Status:** open
133
+ - **Severity:** Low
134
+ - **Tags:** orphan-detection, manifest-schema, generality
135
+
136
+ **Why:**
137
+ v1.4.3's `shippedDefaults` mechanism solves orphan detection only for
138
+ `settings.json`. If a future version needs the same protection for another
139
+ shipped JSON file (e.g., `.claude/feature-roadmap.json` defaults, or a new
140
+ `.mcp.json` template) — the baseline tracking has to be extended.
141
+
142
+ **Proposed fix:**
143
+ Generalize `shippedDefaults` from a single-file snapshot to a multi-file map.
144
+ `removeOrphanHooks` would become `removeOrphanFromConfig(existing, oldTpl,
145
+ newTpl, configType)` with type-aware diff strategies (hooks for
146
+ settings.json, items for roadmap, etc.).
147
+
148
+ **Effort:** Tier S-M (~1-2 hours). Mostly schema generalization + tests.
149
+
150
+ ---
151
+
152
+ ### L2. Hook identity via `command` string is fragile
153
+
154
+ - **Introduced:** v1.4.2 (`mergeSettingsJson`), v1.4.3 (`removeOrphanHooks`)
155
+ - **Status:** open
156
+ - **Severity:** Low
157
+ - **Tags:** identity-model, settings-json, false-positives
158
+
159
+ **Why:**
160
+ Hook commands are compared by their `command` string for de-dup and orphan
161
+ detection. If a template changes a hook's command string slightly (e.g., adds
162
+ a flag like `--silent`), the old version is treated as orphan and the new as
163
+ addition — usually correct. But if a user customized the command (e.g.,
164
+ changed timeout from 10 to 30 — but command unchanged), they keep their
165
+ customization (correct). Edge case: user TWEAKED the command (e.g., adjusted
166
+ script path), then on upgrade the old command is removed AND the new
167
+ command is added — the user's tweak is discarded.
168
+
169
+ **Proposed fix (option A):** Add stable `_id` field to template hooks.
170
+ Identity by id, not command-string. Pollutes settings.json schema slightly.
171
+
172
+ **Proposed fix (option B):** Track per-hook ownership (template vs user) in
173
+ manifest. More intrusive but cleaner.
174
+
175
+ **Effort:** Tier M (~4 hours). Need careful migration for existing manifests.
176
+
177
+ **Workaround:** User can re-customize after upgrade if their tweaks were lost.
178
+
179
+ ---
180
+
181
+ ### L3. No e2e tests for `update` + orphan detection (only for `init --force`)
182
+
183
+ - **Introduced:** v1.4.3
184
+ - **Status:** open
185
+ - **Severity:** Low
186
+ - **Tags:** testing, e2e, regression-risk
187
+
188
+ **Why:**
189
+ v1.4.3 added the same `mergeSettingsJson` + `removeOrphanHooks` pipeline to
190
+ both `init.js` and `update.js`. E2E tests cover `init --force` thoroughly
191
+ (orphan removed, user-added preserved, --reset-settings resets). Equivalent
192
+ tests for `update` path don't exist — `update.js` is implicitly trusted
193
+ because it uses the same helpers.
194
+
195
+ **Proposed fix:**
196
+ Add 3 e2e tests mirroring the v1.4.3 init e2e tests, but for `update`
197
+ command. Same setup (init → mutate settings.json → modify template → call
198
+ update), same assertions.
199
+
200
+ **Effort:** Tier S (~30 min, copy-paste-adapt of existing init tests).
201
+
202
+ ---
203
+
204
+ ### L4. Validation score regex pattern catches only one format
205
+
206
+ - **Introduced:** v1.5.0 (statusline.cjs)
207
+ - **Status:** open
208
+ - **Severity:** Low
209
+ - **Tags:** statusline, parsing, fragility
210
+
211
+ **Why:**
212
+ `statusline.cjs` extracts validation score from `docs/validation-report.md`
213
+ via regex: `(?:average\s+)?score[:\s]+(\d{1,3})(?:\s*\/\s*100)?`. This
214
+ catches "Score: 78", "Average Score: 78/100", but if a future
215
+ `requirements-validator` skill outputs a different format (e.g.,
216
+ "Total: 78", "Final: 78%", or YAML-style `score: 78`), the parser misses
217
+ and statusline shows no score badge.
218
+
219
+ **Proposed fix:**
220
+ Extend the regex with multiple patterns:
221
+ ```js
222
+ const patterns = [
223
+ /(?:average\s+)?score[:\s]+(\d{1,3})/i,
224
+ /total[:\s]+(\d{1,3})\s*\/?\s*100/i,
225
+ /final[:\s]+(\d{1,3})/i,
226
+ /^score:\s*(\d{1,3})\s*$/im,
227
+ ];
228
+ ```
229
+ Or formalize: `requirements-validator` skill outputs a machine-readable
230
+ sidecar `docs/validation-summary.json` with `{score: N}`, parse that
231
+ directly. More robust.
232
+
233
+ **Effort:** Tier S (~30 min for regex extension, Tier M for sidecar).
234
+
235
+ ---
236
+
237
+ ### L5. State-file `.claude/.p-replicator-state.json` not auto-gitignored
238
+
239
+ - **Introduced:** v1.5.0 (state-update.cjs + statusline.cjs)
240
+ - **Status:** open
241
+ - **Severity:** Low
242
+ - **Tags:** gitignore, ephemeral-state, accidental-commit
243
+
244
+ **Why:**
245
+ The state-file is ephemeral — it tracks *current* command + phase + progress
246
+ for live statusline display. It changes every few seconds during a pipeline
247
+ run. If a user commits everything in `.claude/` (which is normal because
248
+ that's the project's Claude Code config), the state-file gets committed too,
249
+ then changes again, creating noisy diff churn.
250
+
251
+ **Proposed fix (option A):** `init` appends `.claude/.p-replicator-state.json`
252
+ to project's `.gitignore` if not already present. Less invasive: add to
253
+ `/start.md` template the instruction "Add `.claude/.p-replicator-state.json`
254
+ and `.claude/.last-test.json` to .gitignore".
255
+
256
+ **Proposed fix (option B):** Move ephemeral state out of `.claude/` to a
257
+ separate cache dir `.p-replicator-cache/` (which has its own gitignore
258
+ expectation). Cleaner separation of project-config vs runtime-cache.
259
+
260
+ **Effort:** Option A: Tier S (~15 min). Option B: Tier S-M (~1 hour, requires
261
+ updating statusline.cjs paths).
262
+
263
+ ---
264
+
265
+ ### L6. Statusline render time not measured
266
+
267
+ - **Introduced:** v1.5.0
268
+ - **Status:** open
269
+ - **Severity:** Low
270
+ - **Tags:** performance, observability
271
+
272
+ **Why:**
273
+ The statusline runs on every Claude Code prompt. If filesystem operations
274
+ get slow (very large `docs/` tree, network drives, etc.), the prompt
275
+ visibly lags. There's no instrumentation to detect or report this. User
276
+ notices "prompt is slow" without a clear signal that statusline is the
277
+ culprit.
278
+
279
+ **Proposed fix:**
280
+ Add optional `STATUSLINE_PROFILE=1` env-var that prints elapsed time per
281
+ section to stderr. Captured by Claude Code as debug output. Not visible by
282
+ default — opt-in via `STATUSLINE_PROFILE=1 claude`.
283
+
284
+ **Effort:** Tier S (~30 min, just `process.hrtime.bigint()` deltas around
285
+ each parser).
286
+
287
+ **Workaround:** None until measured. If render becomes slow, suspect
288
+ statusline first; can disable by removing `statusLine` field from
289
+ `.claude/settings.json`.
290
+
291
+ ---
292
+
293
+ ### L7. Statusline assumes 5 SPARC docs always required
294
+
295
+ - **Introduced:** v1.5.0
296
+ - **Status:** open
297
+ - **Severity:** Low
298
+ - **Tags:** statusline, hardcoded-list, generality
299
+
300
+ **Why:**
301
+ `statusline.cjs:parseSparcDocs()` has a hardcoded list of 11 expected SPARC
302
+ docs. If `sparc-prd-mini` skill evolves to add a 12th doc or rename one,
303
+ statusline shows incorrect "N/11". Same SSOT-divergence pattern as Fix #1
304
+ fought.
305
+
306
+ **Proposed fix:**
307
+ Source the expected list from the `sparc-prd-mini` skill itself (e.g., its
308
+ SKILL.md frontmatter or a `references/expected-outputs.json`). Statusline
309
+ reads that at runtime.
310
+
311
+ **Effort:** Tier M (~2 hours, requires schema decision in sparc-prd-mini
312
+ side too).
313
+
314
+ ---
315
+
316
+ ## Summary
317
+
318
+ | Priority | Count | Total effort estimate |
319
+ |----------|-------|----------------------|
320
+ | Medium | 1 | ~3-4 hours |
321
+ | Low | 6 | ~6-8 hours |
322
+ | **Total** | **7** | **~10-12 hours** |
323
+
324
+ Pick the items that match current goals; each is independent and can be
325
+ addressed in any order. The Medium-priority M1 (real git e2e for
326
+ `--feature-branches`) gives the highest confidence boost for the v1.5.0
327
+ teaching workflow if the package gets real classroom usage.
@@ -0,0 +1,239 @@
1
+ # Multi-Platform Compatibility Roadmap
2
+
3
+ **Status:** roadmap (not committed). Captured 2026-05-07 for future review.
4
+
5
+ This document analyzes the cost/benefit of expanding `@dzhechkov/p-replicator`
6
+ from Claude Code-only to also supporting **Codex CLI**, **OpenCode**, and
7
+ **KiloCode**. Tracking the analysis here so we can return to the question
8
+ when real demand for non-Claude platforms appears.
9
+
10
+ ---
11
+
12
+ ## Why this matters
13
+
14
+ `p-replicator` ships a workflow toolkit (slash commands, skills, agents,
15
+ rules, hooks, statusline) that currently targets Claude Code's config layout
16
+ (`.claude/...`, `settings.json`). For teaching/demo use cases (the
17
+ `--feature-branches` flag in v1.5.0), students using other AI coding tools
18
+ hit a wall — they have to either install Claude Code or copy artifacts
19
+ manually.
20
+
21
+ The opportunity: 80%+ of the toolkit's *content* (markdown-based skills,
22
+ commands, rules) is platform-neutral. Only delivery paths and a few unique
23
+ features (hooks, statusline) need adapter logic.
24
+
25
+ ---
26
+
27
+ ## Compatibility matrix (concept → platform)
28
+
29
+ | Concept | Claude Code | Codex CLI | OpenCode (sst) | KiloCode (VS Code ext.) |
30
+ |---|---|---|---|---|
31
+ | **Slash commands** | `.claude/commands/<name>.md` | `~/.codex/prompts/<name>.md` (global) or per-project | `opencode.json` commands array | `.kilocode/commands/<name>.md` |
32
+ | **Project context** | `CLAUDE.md` | `AGENTS.md` (canonical) | `AGENTS.md` or `opencode.json` instructions | `.kilocode/rules/` |
33
+ | **Skills (composable, `view()`)** | `.claude/skills/<name>/SKILL.md` | ❌ none — must inline | ❌ none — folder of refs | ⚠️ via custom modes |
34
+ | **Subagents** | `.claude/agents/<name>.md` + Task tool | Subtasks (different API) | Modes/agents in config | Custom modes |
35
+ | **Rules** | `.claude/rules/<name>.md` | Sections in AGENTS.md | `opencode.json:rules` | `.kilocode/rules/<name>.md` |
36
+ | **Hooks (SessionStart, Stop)** | `settings.json:hooks` | ❌ none (only approval policies) | ⚠️ limited | ❌ only VS Code event API |
37
+ | **Statusline** | `settings.json:statusLine` | ❌ none (text CLI) | ⚠️ TUI status (different model) | ❌ requires VS Code ext. API |
38
+ | **MCP servers** | `.mcp.json` | `~/.codex/config.toml` `[mcp_servers.X]` | `opencode.json:mcp` | `.kilocode/mcp.json` |
39
+ | **Manifest tracking** | `.p-replicator.json` | universal — any project | universal | universal |
40
+
41
+ ### Universality verdict
42
+
43
+ - ✅ **Universal (~80-100%):** slash commands, rules, MCP, manifest, project context
44
+ - ⚠️ **Lossy (~50-60%):** skills (require inline-compilation), subagents (different runtime models)
45
+ - ❌ **Claude-only:** hooks, statusline (graceful degradation needed)
46
+
47
+ ---
48
+
49
+ ## Three levels of approach
50
+
51
+ ### Level 1 — Concept-portable, manual copy
52
+
53
+ **Effort:** Tier M, **~6-8 hours**.
54
+
55
+ **What changes:**
56
+ - Remove `.claude/skills/<X>/SKILL.md` paths from command markdown
57
+ - Replace `view("/mnt/skills/...")` with platform-neutral "load skill X"
58
+ - Hooks/statusline remain Claude-only (documented as advanced features)
59
+ - Add `compatibility/MANUAL_INSTALL.md` with per-platform copy instructions
60
+
61
+ **Result:** ~70% functionality preserved on any platform via manual file copy.
62
+ Lost: hooks (auto-commit), statusline.
63
+
64
+ ### Level 2 — Adapter pattern with `init --target <platform>`
65
+
66
+ **Effort:** Tier L, **~16-30 hours total** (per-platform varies).
67
+
68
+ Mirror existing `product-keysarium-2026/lib/platform-adapters.md` pattern
69
+ (`/init-platform --platform <name>`).
70
+
71
+ ```
72
+ src/adapters/
73
+ ├── claude-code.js # default (current behavior)
74
+ ├── codex.js # → ~/.codex/prompts/ + AGENTS.md
75
+ ├── opencode.js # → opencode.json
76
+ └── kilocode.js # → .kilocode/
77
+ ```
78
+
79
+ **Each adapter implements:**
80
+ - `getPaths()` — where each artifact type belongs on this platform
81
+ - `translateCommand(content)` — `$ARGUMENTS` → platform syntax
82
+ - `installCommand|Rule|Skill|Agent` — with path-mapping
83
+ - `installSettings|Hooks|Statusline` — skip on platforms without them (graceful)
84
+
85
+ **Per-platform effort:**
86
+ - Codex: ~8-10h (well-documented, AGENTS.md + prompts/, MCP) — closest model
87
+ - OpenCode: ~8-10h (`opencode.json` schema, modes API)
88
+ - KiloCode: ~12-20h (VS Code paradigm, may need companion extension)
89
+
90
+ **Result:** 80-90% feature parity per platform. Hooks/statusline still degraded.
91
+
92
+ ### Level 3 — Full feature parity with workaround logic
93
+
94
+ **Effort:** Tier XL, **multi-week project**.
95
+
96
+ Beyond Level 2 — adapt logic for platform-specific capabilities:
97
+ - Codex: bake auto-commit into commands themselves (no SessionStart/Stop)
98
+ - OpenCode: use TUI status API for statusline
99
+ - KiloCode: companion VS Code extension with TreeView progress, status bar item
100
+
101
+ **Verdict:** Premature optimization for current scope. Skip until concrete demand.
102
+
103
+ ---
104
+
105
+ ## Per-feature breakdown — what's worth adapting
106
+
107
+ | Feature | Universal | Adapt effort | Recommendation |
108
+ |---|---|---|---|
109
+ | `/replicate` pipeline | ✅ logic universal | path-translate commands | **Yes** — primary value |
110
+ | `/run`, `/go`, `/next` workflow | ✅ universal | translate `$ARGUMENTS` | **Yes** |
111
+ | `/feature`, `/plan` SPARC lifecycle | ✅ universal | inline skill content | **Yes** |
112
+ | `/myinsights`, `/docs`, `/harvest`, `/start`, `/deploy` | ✅ universal | path-translate | **Yes** |
113
+ | 10 skills (sparc-prd-mini, etc.) | ⚠️ Claude-specific composition | inline-compile into commands | **Compromise** — sacrifice runtime-loading |
114
+ | 4 pre-shipped agents | ⚠️ Claude Task-tool specific | translate to platform sub-agents | **Yes if platform supports** |
115
+ | 5 rules | ✅ universal markdown | path-translate | **Yes** |
116
+ | Hooks (SessionStart insights, Stop autocommit) | ❌ Claude-only | bake into commands as instructions | **Compromise** — degraded UX |
117
+ | Statusline dashboard | ❌ Claude-only | optional `progress.md` file? | **Skip** — Claude-exclusive feature |
118
+ | `verify` CLI command | ✅ universal | works as-is | **Yes** (already works) |
119
+ | `feature-roadmap.json` + `--feature-branches` | ✅ git-based | works as-is | **Yes** |
120
+ | MCP server config | ✅ universal | path-translate config file | **Yes** |
121
+
122
+ ---
123
+
124
+ ## Hidden complexities
125
+
126
+ 1. **Slash command argument syntax differs:**
127
+ - Claude: `$ARGUMENTS`, `$ARG1`
128
+ - Codex: `{{arg}}` or appended params
129
+ - OpenCode: configurable
130
+ - **Adapter responsibility:** substitution at install time
131
+
132
+ 2. **Skill composition (`view()` syntax):**
133
+ - Claude runtime resolves `view(.claude/skills/X/SKILL.md)` dynamically
134
+ - On other platforms, SKILL.md content must be **inlined** into command at install time
135
+ - Compile step: recursively replace `view()` references with content
136
+ - Complexity: cross-skill dependencies (cc-toolkit-generator-enhanced → 9 modules), deep recursion
137
+
138
+ 3. **Subagent semantics:**
139
+ - Claude: `Task` tool spawns parallel sub-conversations with their own model
140
+ - Codex: sub-tasks (similar but different API)
141
+ - Some platforms: parallel → sequential fallback
142
+ - Performance hit on large pipelines
143
+
144
+ 4. **Settings schema differences:**
145
+ - Claude: JSON schema X
146
+ - OpenCode: JSON schema Y
147
+ - Codex: TOML
148
+ - Adapter generates platform-specific config from common abstract spec
149
+
150
+ 5. **MCP config location/format:**
151
+ - All 4 support MCP, but file/format differ (JSON vs TOML, project-local vs global)
152
+ - Translatable, but requires per-platform writer
153
+
154
+ ---
155
+
156
+ ## Recommended phased path
157
+
158
+ ### Phase A — Documentation only (Tier S, ~2h)
159
+
160
+ Add a "Compatibility" section to `README.md` and `CHANGELOG.md`:
161
+
162
+ > «p-replicator v1.5.0 is designed primarily for Claude Code. Other platforms
163
+ > (Codex, OpenCode, KiloCode) are supported via Level 1 manual copy. Full
164
+ > per-platform adapters are tracked in `MULTIPLATFORM_ROADMAP.md`.»
165
+
166
+ Honest communication; sets expectations.
167
+
168
+ ### Phase B — Level 1 adaptation (Tier M, ~6-8h)
169
+
170
+ Make commands platform-neutral. Add `compatibility/` directory with
171
+ per-platform manual install guides. Optional `init --target <platform>`
172
+ flag that just prints copy instructions.
173
+
174
+ ### Phase C — Level 2 per-platform adapter (Tier L, ~10-20h per platform)
175
+
176
+ Implement adapter when concrete user demand for that platform appears.
177
+ Recommended order: **Codex first** (closest model, biggest user base),
178
+ then OpenCode, then KiloCode (different paradigm).
179
+
180
+ ---
181
+
182
+ ## Most-bang-for-buck: Codex first
183
+
184
+ If only one adapter ever gets built, **Codex** is the highest-value pick:
185
+ - Closest model to Claude Code (CLI agent + AGENTS.md + slash prompts + MCP)
186
+ - Largest non-Claude user base
187
+ - Cleanest translation (skills → AGENTS.md compilation; commands → prompts/; MCP straightforward)
188
+ - Estimated 85% feature parity post-adapter
189
+
190
+ OpenCode and KiloCode follow as demand appears.
191
+
192
+ ---
193
+
194
+ ## Effort matrix
195
+
196
+ | Approach | Time | Result |
197
+ |---|---|---|
198
+ | **Phase A** (documentation) | **2h** | Honest user communication |
199
+ | **Phase B** (Level 1 manual-copy) | **+6-8h** | ~70% functionality on any platform via copy |
200
+ | **Phase C — Codex adapter** | **+10-14h** | Native install on Codex with ~85% functionality |
201
+ | **Phase C — OpenCode adapter** | **+10-14h** | Native install on OpenCode |
202
+ | **Phase C — KiloCode adapter** | **+15-20h** (different paradigm, harder) | Native install on KiloCode |
203
+ | **Full Phase A+B+C for all 3 platforms** | **~50-60h** | Full multi-platform v2.0 |
204
+
205
+ ---
206
+
207
+ ## Reuse from product-keysarium-2026
208
+
209
+ The parent monorepo already has prior art:
210
+ - `lib/platform-adapters.md` — adapter registry concept
211
+ - `lib/platform-templates/{cursor,opencode,copilot}.md` — example templates
212
+ - `/init-platform --platform <name>` slash command in `.claude/commands/`
213
+
214
+ When implementing Phase B/C, **reuse these patterns** rather than designing
215
+ from scratch. The keysarium pattern already establishes conventions for
216
+ multi-platform support across the dz-* package family.
217
+
218
+ ---
219
+
220
+ ## Open decisions for future review
221
+
222
+ 1. **Which platforms actually needed?** All 4 or just Claude+Codex?
223
+ 2. **Depth of compatibility?** Manual-copy-friendly (Phase B) vs `init --target X` (Phase C) vs full feature parity (Level 3)?
224
+ 3. **Timing:** start with Phase A docs only, or build Phase B+C immediately?
225
+ 4. **Scope:** v2.0 milestone or incremental (v1.6 = Phase A+B, v1.7 = Codex adapter, etc.)?
226
+ 5. **Reuse strategy:** copy keysarium-2026's adapter pattern verbatim or design lighter version?
227
+
228
+ ---
229
+
230
+ ## Companion files
231
+
232
+ - `KNOWN_LIMITATIONS.md` — open issues with current Claude-only implementation (7 items)
233
+ - `CHANGELOG.md` — version history
234
+ - `README.md` — user-facing docs
235
+
236
+ ---
237
+
238
+ *Last updated: 2026-05-07. Re-evaluate when concrete demand for non-Claude
239
+ platform support emerges (e.g., classroom usage with mixed-tool students).*
@@ -349,5 +349,5 @@ Full history — in [07_changelog.md](./07_changelog.md) or `CHANGELOG.md`
349
349
 
350
350
  1. Read `KNOWN_LIMITATIONS.md` — might be a known limitation
351
351
  2. Run `verify` + `doctor` — collect exact output
352
- 3. File issue: https://github.com/dzhechko/pu-unicorn-replicate/issues
352
+ 3. File issue: https://github.com/djd1m/dz-harness-hub/issues
353
353
  include: version, `verify` output, repro steps
@@ -2,6 +2,63 @@
2
2
 
3
3
  Per-release evolution. Full details — in `../../CHANGELOG.md` (authoritative).
4
4
 
5
+ ## v1.5.14 — 2026-07-28
6
+
7
+ **Docs & packaging fixes** (package-verification findings; no runtime code changes).
8
+
9
+ - 📚 Changelog gap v1.5.5–v1.5.13 closed in `CHANGELOG.md` + README highlights
10
+ - 📦 `CHANGELOG.md` / `KNOWN_LIMITATIONS.md` / `MULTIPLATFORM_ROADMAP.md` /
11
+ `tests/` now ship in the tarball (doc links resolve; `npm test` works in the
12
+ installed package — MEASURED: 105/105 in the unpacked pack)
13
+ - 🔗 GitHub links → monorepo `github.com/djd1m/dz-harness-hub`
14
+ (`packages/@dzhechkov/p-replicator`)
15
+ - 🔢 npm description skill char-count 194K+ → 880K+ (MEASURED:
16
+ `find templates/.claude/skills -type f -exec cat {} + | wc -c` → 880,679)
17
+
18
+ ## v1.5.13 — 2026-07-10
19
+
20
+ - 🐛 `brutal-honesty-review/schemas/output.json`: `trustTier` `const: 3` →
21
+ range 1–3
22
+
23
+ ## v1.5.11 / v1.5.12 — 2026-07-06
24
+
25
+ - ✨ `brutal-honesty-review` gained `evals/`, `schemas/output.json`,
26
+ `scripts/validate-config.json` (baseline-heal); v1.5.12 = version-sync only
27
+
28
+ ## v1.5.9 / v1.5.10 — 2026-07-06
29
+
30
+ - 🔒 `goap-research-ed25519` honesty rewrite: Ed25519 = provenance +
31
+ tamper-evidence under pinned issuer keys, NOT anti-hallucination (net
32
+ −1,696 lines — MEASURED: `git diff --stat 9f18ec43 41ec8d36`)
33
+ - 🐛 `remove --dry-run` no longer deletes the manifest; `remove` keeps the
34
+ manifest when some files fail to delete; v1.5.10 = version-sync only
35
+
36
+ ## v1.5.8 — 2026-06-29
37
+
38
+ - 🆕 `trust_tier` frontmatter on vendored skills + ADR-0001 `sources.json`
39
+ provenance record + optional `clone-website` UI-replication section
40
+ (MEASURED: `git diff c9225e8f 9f18ec43 -- packages/@dzhechkov/p-replicator`)
41
+
42
+ ## v1.5.7 — 2026-06-16
43
+
44
+ - 🐛 Unknown options / unexpected CLI arguments now exit 1
45
+ - 🐛 `init` manifest tracks the TEMPLATE source, never a destination scan
46
+
47
+ ## v1.5.5 / v1.5.6 — 2026-06-11
48
+
49
+ - 📦 First monorepo releases (`dz-harness-hub`); destructive `prepublishOnly`
50
+ sync hook removed; `explore` skill gained `trust_tier` frontmatter
51
+
52
+ ## v1.5.4 — 2026-05-13
53
+
54
+ - 🐛 settings.json `$schema` URL → `json.schemastore.org` variant (the `www.`
55
+ variant made Claude Code skip the whole settings file)
56
+
57
+ ## v1.5.1 – v1.5.3 — 2026-05-07
58
+
59
+ - 📚 Docs-only patches: existing-docs workflow (v1.5.1), Mode 2 formalized
60
+ (v1.5.2), npm README expanded ~14.6 kB → ~50 kB (v1.5.3)
61
+
5
62
  ## v1.5.0 — 2026-05-07
6
63
 
7
64
  **Two features + 12 new tests.**
@@ -49,8 +49,8 @@ from roadmap, or `/start` to bootstrap the scaffold.
49
49
  ## Related repositories
50
50
 
51
51
  - npm: https://www.npmjs.com/package/@dzhechkov/p-replicator
52
- - GitHub: https://github.com/dzhechko/pu-unicorn-replicate
53
- - Issues: https://github.com/dzhechko/pu-unicorn-replicate/issues
52
+ - GitHub: https://github.com/djd1m/dz-harness-hub/tree/main/packages/@dzhechkov/p-replicator
53
+ - Issues: https://github.com/djd1m/dz-harness-hub/issues
54
54
 
55
55
  ## Companion documentation (in package)
56
56
 
@@ -351,5 +351,5 @@ find docs/ -type f -name "*.md" | wc -l
351
351
 
352
352
  1. Прочитайте `KNOWN_LIMITATIONS.md` — может это известное ограничение
353
353
  2. Запустите `verify` + `doctor` — соберите exact output
354
- 3. Issue: https://github.com/dzhechko/pu-unicorn-replicate/issues
354
+ 3. Issue: https://github.com/djd1m/dz-harness-hub/issues
355
355
  приложите версию, output `verify`, шаги воспроизведения