Skip to content

plan-orchestrate ships but emits /orchestrate invocations that no longer resolve #2862

Description

@dMillerus

Summary

skills/plan-orchestrate ships in the default install, and its entire output contract is emitting /ecc:orchestrate (or /orchestrate) invocations for the user to paste. That command is no longer in the default command surface, so the skill's output does not resolve.

Evidence

The skill ships:

package.json:404                 "skills/plan-orchestrate/",
manifests/install-modules.json:793   "skills/plan-orchestrate"

Its purpose is generating those invocations. skills/plan-orchestrate/SKILL.md:10:

Bridge a plan document to /orchestrate custom by emitting one ready-to-paste invocation per step. The skill is generative only — it never executes /orchestrate. The user pastes each line when ready.

:33-36 defines the output shape as authoritative:

Authoritative /orchestrate shape (do not deviate)

{ORCH_CMD} custom "<agent1>,<agent2>,...,<agentN>" "<task description>"

:52-55 resolves {ORCH_CMD} to /ecc:orchestrate under a plugin install and /orchestrate under a legacy bare install. The worked example at :244 emits:

/ecc:orchestrate custom "ecc:tdd-guide,ecc:database-reviewer,ecc:python-reviewer,ecc:security-reviewer" "[Plan: ...] Implement EncryptedString ..."

But the command is not in the shipped surface:

  • There is no commands/orchestrate.md.
  • The only remaining definition is legacy-command-shims/commands/orchestrate.md, and legacy-command-shims/README.md states: "These slash-entry shims are no longer loaded by the default plugin command surface."
  • Grepping .claude-plugin/, manifests/, and package.json for a shipped orchestrate command entry returns nothing (excluding plan-orchestrate itself).

Retired in 06f9eca (fix: retire legacy command shims from default surface). That retirement looks intentional; updating this consumer appears to have been missed.

Impact

A user installs ECC, runs plan-orchestrate on a plan document as designed, receives a set of per-step bash blocks, pastes the first one, and it does not resolve. The failure surfaces at the end of the workflow, after the skill has done its decomposition and chain-composition work, so the wasted effort is maximal.

The stale translated copies still document the old interface (docs/es|ja-JP|zh-CN|zh-TW|ko-KR|tr|pt-BR/commands/orchestrate.md describe /orchestrate [workflow-type] [task]), which may make this look supported to anyone reading localized docs. There is no English commands/orchestrate.md.

Options

A. Retarget the emitted form. Keep the skill's decomposition, tagging, and chain-composition logic (which is genuinely useful and has no equivalent elsewhere) and change what it emits — for example a Task-tool dispatch per step, or an orch-* skill invocation. Requires rewriting the "Authoritative shape" section and both worked examples.

B. Restore /orchestrate to the default surface. Reverses part of 06f9eca; presumably unwanted, since the retirement was deliberate.

C. Unship the skill. Remove from package.json and manifests/install-modules.json, or move it alongside the shims. Loses the decomposition and chain-composition tables, which are the most reusable "plan → per-step agent chain" asset in the repo.

A looks best from the outside, but the right call depends on where orchestration is heading — workflows/README.md suggests the fan-out-heavy segments are moving to native Workflow scripts, which may be the intended emit target.

Notes

Not opening a PR since A, B, and C are materially different product decisions and A's correct emit target depends on the roadmap. Happy to implement whichever you prefer.

Found while auditing the orchestration surface; related to #2861 (unrelated root cause).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions