- Problem: the registry fixtures validated SKILL.md against the committed docs/COMMAND-REGISTRY.json but nothing in the file asserted the registry itself was fresh, so a standalone run passed against a stale registry (npm test does run command-registry:check first, but this file is also run on its own).
- Fix: rebuild the registry in memory via the exported generateRegistry() and assert deep equality with the committed JSON so drift fails as a regenerate hint with a field diff instead of passing silently; add one sentence to SKILL.md stating that a command retired from commands/ fails closed with the BLOCKED marker like a no-argument command.
- Verification: node tests/skills/plan-orchestrate-registry.test.js passes with the new check 8 (8/8); sabotage with a mutated registry description fails check 8 with the regenerate hint and a field diff.
- Problem: the emitted command does not consume the advertised agent chain
(each command owns its own execution behavior), and steps mapped to
argument-less commands were emitted as bare commands with no
machine-readable link to the intended step.
- Fix: adopt the small-router role — emit only commands whose documented
argument form can carry the [Plan: <path>#step-<id>] scope marker
(orch-*, /plan), fail closed with a BLOCKED entry and a manual-use note
for every other command, derive quoted argument forms from the command
files instead of an authoritative hand-written table, and drop the
agent-chain machinery entirely. Adds
tests/skills/plan-orchestrate-registry.test.js, which validates every
command the skill names against commands/<name>.md and
docs/COMMAND-REGISTRY.json and fails when they drift.
- Verification: node tests/skills/plan-orchestrate-registry.test.js (7
fixture groups pass; sabotage-checked against chain reintroduction,
wrong scope-carrying claim, and retired-command reference).
- Constrain the build-as-feature-verb override so explicit fix/defect/repair
markers keep the primary as fix and the command as /orch-fix-defect.
- Clarify review+security override: it only wins when the step has no
explicit impl or fix intent; lifecycle (impl/fix) + security takes
precedence over review + security.
- Document explicit tie-breaks for overlapping special-case overrides.
- Make the design/plan/lookup agent chains advisory, because the emitted
/plan command runs inline and does not invoke planner, architect, or
docs-lookup subagents.
Greptile noted that /orch-add-feature does not run database-reviewer, yet the plan-orchestrate skill was composing chains that included it. Since no catalogue command exposes database-reviewer directly, drop it from the db and impl+db chains and from the example, and record the db intent only in the command rationale.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Clarify that the quoted task-description form is only for the
commands that explicitly accept it.
- Document the `impl + test` special-case override so compound
"implement and test" steps emit the right `/orch-*` command and
still include test agents in the chain.
- Tighten the `build used as a feature verb` override so feature
phrasing such as "Add a CI pipeline", "Add a compile step", and
"Create a new lint rule" routes to `/orch-add-feature`, while
failure context keeps build repair in `/build-fix`.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Update the /security-scan output form in the plan-orchestrate command table
to quote and escape validated target paths, preserving spaces as a single
argument.
- Reject control characters during path validation while keeping the default
project-root path and allowed-scope checks.
- Reflect the same validation in Phase 3 and the self-check list.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Add a build-used-as-feature-verb override so steps like "Build a new
authentication API" select impl and /orch-add-feature instead of
/build-fix.
- Keep explicit-agent resolution inside the catalogue: map python-reviewer
steps to /code-review rather than emitting language-specific commands
that are not in the skill catalogue.
- Preserve explicit loop patterns (continuous-pr, rfc-dag, infinite) in
the /loop-start output form, defaulting to sequential only when
unspecified.
- Clarify reviewer-class tail rule so it applies to chains that already
contain a reviewer; base chains without a reviewer (design, plan,
lookup, docs, loop) may end with a non-reviewer.
- Extend the plan-input safety gate to validate /security-scan paths
against the command's allowed scope and exclude blocked steps from the
Batch block.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Rename `## When to Activate` to `## When to Use`.
- Remove `build` and `port` from the `impl` trigger words to reduce tag overlap.
- Add explicit `impl`+`security` and `review`+`security` special-case overrides so net-new feature work is not reduced to a scan.
- Make the precedence order explicit and no longer contradictory with the multi-tag notes.
- Default `build` and `review` chains to `build-error-resolver` and `code-reviewer`, aligning with the emitted `/build-fix` and `/code-review` commands; use `<lang>-*` only when a matching language-specific command is emitted.
- Strengthen chain composition: append secondary agents before the tail reviewer, enforce reviewer-class tail, and handle length overflow with a deterministic drop order.
- Detect TypeScript from `tsconfig.json`/TypeScript files/explicit dependency rather than `package.json` alone, and fall back to `code-reviewer`/`build-error-resolver` when no `<lang>-*` agent exists.
- Allow `/code-review <pr-url>` in addition to `<pr-number>`.
- Add untrusted-input guard before emitting quoted task descriptions, and enforce 200–600 character length in the self-check.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
The skill now composes the per-step agent chain before mapping it to the
resolvable ECC slash command that runs the equivalent pipeline. This keeps the
decomposition, tagging, and chain-composition logic that #2862 asks for while
still emitting a single ready-to-paste command per step.
- Re-add `--lang` input and language detection so `<lang>-reviewer` and
`<lang>-build-resolver` can be resolved in the chain.
- Add an Agent chain catalogue and chain composition rules.
- Include an `Agent chain` field in the overview table and per-step output.
- Update Phase 2/4/5 and the worked example to reflect the chain.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Emit bare/flag forms for commands that do not accept quoted task descriptions
(/build-fix, /code-review, /security-scan, /test-coverage, /update-docs, /loop-start).
- Add explicit tag precedence so lifecycle-domain words (build, test, migration,
review, security) win over broad impl/fix matches.
- Add Output form column and worked examples for bare commands.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
devin-ai-integration[bot]GitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>affaanDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(plan-orchestrate): detect ecc@ecc marketplace + emit ecc: agent prefix (#2316)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(ci): resync lockfiles with package.json (eslint 10) + migrate yarn.lock to Yarn 4 format
package.json requires eslint@^10.6.0 but the committed locks pinned 9.39.2, so
npm ci aborted and Yarn 4 hardened mode rejected the stale v1-classic yarn.lock
(YN0028). Regenerate package-lock.json and rewrite yarn.lock in Yarn 4 (berry)
format so npm ci and immutable yarn installs both pass.
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(ci): require clean probe exit for Windows shell/bash detection; add pyyaml dev dep
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---------
Co-authored-by: affaan <affaan@itomarkets.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>