Without this, upgrades from pre-rename installs that contain the old
`web-researcher` agent artifact leave the stale file alongside the new
`ce-web-researcher`, producing duplicate entries on Codex/OpenCode/etc.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update remaining stale references to skill/agent names after rebase:
- AGENTS.md cross-platform reference example uses ce-doc-review
- ce-compound/SKILL.md internal /compound heading and session-historian ref
- ce-code-review/references/resolve-base.sh header comment
- pi converter and codex-agents tool mapping use ce-todo-create
- pi-converter test assertion matches converter output
- release preview/components tests use ce-plan (non-beta)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Remove stray merge markers in ce-ideate/references/post-ideation-workflow.md
that survived the last rebase. Kept the upstream v2 quality-bar bullets
(persistence opt-in, mode defaults) and dropped the stale pre-v2 line.
- Scope isLegacyPromptWrapper to compound-owned wrappers. Body-instruction
fingerprint alone was too permissive — renderPrompt emits the same
boilerplate for every plugin, so a shared ~/.codex/prompts/ with a
sibling plugin's ce-plan.md would have been deleted. Now requires
BOTH signals: body matches the plugin-generated boilerplate AND
description matches either the current shipped ce-* description or
a historical alias in LEGACY_PROMPT_DESCRIPTION_ALIASES. Seeded
alias map from shipped releases for ce-plan, ce-work, ce-work-beta,
ce-brainstorm, ce-ideate, ce-compound, ce-compound-refresh, ce-review.
Added regression test: foreign plugin's same-named wrapper is preserved.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The exact-description match in isLegacyPromptWrapper keeps missing real
upgrade paths because skill description text drifts (different wording
across shipped plugin versions). Two prior rounds on this file patched
the symptom by adding ce:->ce- normalization, then per-file description
aliases — but ce-plan drifted again when HEAD added a trailing
"prefer ce-brainstorm first" sentence that no shipped version contains.
Swap prompt-ownership detection to a body-instruction fingerprint:
"Use the $<skill> skill for this command and follow its instructions."
(plus pre-rename workflow-style variants). The Codex converter writes
this boilerplate deterministically and has since v2.39.0. The skill
name is embedded by reference, so the fingerprint stays accurate
across description rewordings.
Added two regression tests: drifted-description wrapper is removed,
user-authored file with the same path but a different body is preserved.
Resolves#503 review feedback on legacy-cleanup.ts:404.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Unify ce-code-review artifact directory path: fixed 5 remaining stale
references to .context/compound-engineering/ce-review/<run-id> in
SKILL.md (Stage 4 run-id mkdir, persona dispatch, per-agent JSON write,
Stage 6 detail-enrichment read) and the subagent-template.md output
contract. Announced path and actual write path now match.
- Close legacy-cleanup fingerprint gap for stale names without ce-*
counterpart: loadLegacyFingerprints previously skipped any legacy name
whose mapped current file was missing, leaving isLegacyPluginOwned
unable to verify ownership of orphaned entries (4 skills, 2 agents).
Added LEGACY_ONLY_SKILL_DESCRIPTIONS and LEGACY_ONLY_AGENT_DESCRIPTIONS
maps sourced from last-shipped frontmatter, wired as fallback. Content-
match safety preserved — user files with same names are still protected.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- scope Kiro stale agent cleanup to compound fingerprints
- clean legacy Codex workflow wrappers across pre- and post-rename formats
- remove stale OpenClaw agent-* directories during upgrades
- cover session-historian and slack-researcher cleanup regressions
Teach stale cleanup about the historical setup skill description and Kiro's legacy JSON/prompt agent formats so rename cleanup still works after later wording changes and on Kiro installs.
Remove pre-rename agent skill directories from Gemini installs before writing generated skills so stale unprefixed agents do not remain discoverable after the ce- rename.
Make stale skill and agent removal fingerprint-aware so shared install roots keep user-owned files with overlapping names.
Also move Qwen cleanup ahead of agent writes and clean Pi legacy agent directories from skills/ instead of prompts, with regression tests for both cases.
Users who previously ran `install --to codex` (or any target) have old
skill dirs (git-commit/, setup/, document-review/) and agent files
(adversarial-reviewer.md, etc.) that would coexist with the new ce-*
names after re-installing. This causes duplicate/conflicting entries
at runtime.
Add a one-time legacy cleanup module that removes known stale paths
before writing new content. Wired into all 10 target writers. Handles:
- 31 stale skill dirs (29 renamed + ce-review, ce-document-review)
- 49 stale agent files/dirs (all agents gained ce- prefix)
- 8 stale Codex prompt wrappers (removed in this release)
Cleanup is idempotent and marked with TODO(cleanup) for removal after
the v3 transition window.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update ce-work and ce-work-beta to reference `ce-commit-push-pr` and
`ce-commit` instead of old `git-commit-push-pr`/`git-commit` names
- Add WORKFLOW_ALIAS_OVERRIDES map so `workflows:review` correctly
resolves to `ce-code-review` instead of non-existent `ce-review`
- Add 2-segment `category:ce-agent` rewrite to OpenCode transform so
refs like `review:ce-correctness-reviewer` flatten to `ce-correctness-reviewer`
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Standardize all 37 compound-engineering skills and 49 agents on a
`ce-` hyphen prefix, eliminating namespace collisions with other
plugins and removing the colon character that required filesystem
sanitization.
Key changes:
- `ce:plan` → `ce-plan`, `git-commit` → `ce-commit`, etc. (29 skill
directory renames + 8 frontmatter-only updates)
- `adversarial-reviewer` → `ce-adversarial-reviewer`, etc. (49 agent
file renames + frontmatter updates)
- `ce-review` → `ce-code-review` (clearer purpose)
- `ce-document-review` → `ce-doc-review` (more concise)
- Agent references simplified: `compound-engineering:review:X` → `review:ce-X`
- All bare agent names in prose now carry `ce-` prefix
- Codex converter: remove workflow prompt wrappers (skills are directly
invocable), replace `isCanonicalCodexWorkflowSkill` prefix check with
direct skill copying, map deprecated `workflows:*` aliases to skill
targets instead of dead prompt targets
- Remove `codexPrompt` field from types/parser (no longer needed)
- Path sanitization tests use non-CE examples to preserve colon coverage
- New invariant test: no CE skill name contains a colon
BREAKING CHANGE: All skill and agent names changed. `/ce:plan` is now
`/ce-plan`, `/ce:review` is now `/ce-code-review`, agent references use
`<category>:ce-<name>` format instead of `compound-engineering:<category>:<name>`.
Closes#337
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove plugin version fields from marketplace.json -- canonical
versions live in each plugin's plugin.json. Duplicating them created
drift that release-please couldn't maintain.
- Remove version sync logic from metadata.ts (description sync kept)
- Fix release-preview test to compute expected versions dynamically
from current manifests instead of hardcoding them
* docs: capture codex skill prompt model
* fix: align codex workflow conversion
* chore: remove deprecated workflows:* skill aliases
The workflows:brainstorm, workflows:plan, workflows:work, workflows:review,
and workflows:compound aliases have been deprecated long enough. Remove them
and update skill counts (46 → 41) across plugin.json, marketplace.json,
README, and CLAUDE.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(kiro): parse .mcp.json wrapper key and support remote MCP servers
* refactor: extract unwrapMcpServers helper to deduplicate parser logic
Address review feedback by extracting the mcpServers unwrap logic
into a shared helper used by both loadMcpServers and loadMcpPaths.
Deduplicate colon-separated command name logic across all 4 targets
(opencode, droid, gemini, qwen) into a single resolveCommandPath()
helper in utils/files.ts.
Addresses review feedback on PR #251.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On Windows/NTFS, colons are reserved for alternate data streams, so
filenames like "ce:plan.md" are invalid. Split colon-separated command
names into nested directories (e.g. "ce:plan" -> "ce/plan.md"),
matching the approach already used by the Qwen target.
Applied to opencode, droid, and gemini targets.
Fixes#226
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bump plugin to 2.39.0 with features from Matt Van Horn (@mvanhorn):
context budget precheck, plan sequence numbers, review serial mode,
agent-browser debugging commands, test-browser port detection, lfg
phase gating, and Context7 API key auth.
Also fixes MCP server merge order so plugin servers correctly
overwrite stale entries during sync.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When Claude makes parallel tool calls and a PreToolUse hook command
fails, the thrown error can crash the entire batch, causing API 400
errors. Wrap generated tool.execute.before handlers in try-catch so
failures are logged but non-fatal.
Fixes#85
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The sync path's mergeJsonConfigAtKey had incoming entries overwriting
existing user entries on conflict. Reverse the spread order so user
config wins, matching the install path's existing behavior.
Also add merge feedback logging and a test for the sync merge path.
Fixes#125
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenClaw rejects generated plugin manifests that omit configSchema, even for tool plugins with no user configuration. Always emit an empty object schema so converted installs boot cleanly.\n\nAdd converter and writer regression coverage for the manifest shape.\n\nFixes #224