Skip to content

bug(commands): 0 of 94 command descriptions carry a trigger clause — commands lose every semantic match to skills #2906

Description

@KyawZinLatt

Summary

None of the 94 entries in commands/ contains a trigger clause. Skills nearly all say "Use when X"; commands are imperative one-liners ("List all configured hookify rules", "Sweep blocked epic issues"). That is natural for something typed by name — but commands and skills share one listing, so the consequence is systematic:

A command loses every semantic match to a skill covering the same job, and wins only on literal name match.

review-pr, orch-review, plan, multi-plan, harness-audit, project-init, cost-report and loop-start are effectively unreachable unless the user types the name.

Verify

cd commands && grep -Li 'use when\|use this skill\|trigger\|when the user' *.md | wc -l   # → 94 of 94

Measured routing failures

Blind test: an agent given only the 401-entry listing text (307 skills + 94 commands) and 15 realistic prompts, choosing with no access to SKILL.md bodies. 5 prompts were controls; 3 came back fully clean, so the probe is sound. Results: 7 HIGH / 5 MEDIUM / 3 LOW.

1. The billing keyword points at the wrong skill.
Prompt: "This customer says they were charged twice — sort it out."
finance-billing-ops contains the literal phrase "duplicate-charge diagnosis", but is scoped to internal revenue/pricing truth. customer-billing-ops is the correct entry — and never says "duplicate charge". A keyword match lands wrong; only role-matching recovers. customer-billing-ops's own body confirms it owns "duplicate subscriptions, accidental charges, failed renewals".

2. Six entries claim "plan a feature", and a seventh overrides all of them.
plan, prp-plan, multi-plan, feature-dev, writing-plans, blueprint, orch-add-feature all match "help me plan this feature". None states a size, phase, or methodology boundary — except blueprint, which has an explicit floor ("DO NOT TRIGGER when… fewer than 3 tool calls") and is the model worth copying. Compounding: brainstorming asserts "You MUST use this before any creative work", so the listing claims the correct first load is none of the six.
Also: multi-plan's "multi" means multi-model, not multi-step — the description never expands it.

3. One symptom splits three ways.
Prompt: "My agent keeps hitting the max tool call limit and retrying forever."
agent-architecture-audit owns "tool discipline failures, hidden repair loops"; agent-introspection-debugging owns "instead of a retry"; loop-design-check owns "spinning and burning tokens". The prompt contains all three halves; no entry claims more than one.

Coverage gap found incidentally

"Find where user authentication happens in this codebase" has no answer in all 401 entries. The nearest two produce artifacts nobody asked for — code-tour creates .tour files, codebase-onboarding generates a guide + starter CLAUDE.md. Correct behavior (load nothing, grep) is achieved by omission rather than design.

What already works — the fix pattern is in-repo

These resolve their own collisions with a single clause naming the sibling, and are worth propagating:

  • orch-* commands — "Wrapper that kicks off the <name> skill"
  • orch-* skills — mutually exclusive one-liners ("behavior is broken" vs "behavior should change" vs "structure improves, behavior must not")
  • autonomous-loops, continuous-learning — explicit deprecation + redirect
  • loop-design-check — names the two skills it complements and the layer it adds
  • ponytail-audit"Like ponytail-review, but scans the entire codebase instead of a diff"
  • ecc-recipes — carries DO-NOT-TRIGGER clauses naming its neighbours

Suggested fix

Add a Use when … clause to the ~25 commands whose job a skill also claims, using the orch-* wrapper form. Priority order: review-pr, orch-review, code-review, plan, multi-plan, project-init, harness-audit, cost-report.

Separately, 9 names exist as both a skill and a command. The five orch-* pairs handle it; ecc-guide, security-scan, plan-canvas, marketing-campaign say nothing about each other. ecc-guide is the worst case — neither half has a trigger clause.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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