simplify-skill
Installation
SKILL.md
Simplify Skill
Refactor an existing larch skill for stronger adherence to the principles in ${CLAUDE_PLUGIN_ROOT}/skills/shared/skill-design-principles.md and to reduce SKILL.md token footprint. Pure delegator: validates the target, builds a deterministic feature description, and hands off to /im (= /implement --merge) for design, implementation, review, version bump, PR, and auto-merge.
Example: /simplify-skill implement refactors skills/implement/SKILL.md plus every in-scope .md file under skills/implement/ (see Step 2 for the exact enumeration rule — it does NOT follow MANDATORY — READ pointers or Skill-tool invocations).
NEVER
- NEVER descend into sub-skills invoked via the
Skilltool. Why: sub-skills are independent refactor targets with their own harnesses and PR histories — pulling them into one refactor produces a PR too large to review and creates cross-skill coupling. Out of scope by construction: the helper script enumerates only*.mdfiles physically under the target skill directory (excludingscripts/andtests/). Sub-skills live in sibling directories (skills/OTHER/), so they never appear in the find output regardless of what the target's SKILL.md cites. Cross-skill citations intoskills/shared/are also out of scope —shared/refactors have cross-skill blast radius and must be done separately. - NEVER run
/simplify-skillon a skill with noSKILL.md. Why: the resolver probes the plugin tree (${CLAUDE_PLUGIN_ROOT}/skills/), the in-plugin-reposkills/layout (for working inside larch itself), and the consumer-repo.claude/skills/layout — and fails closed when none of them contains the target. A missing SKILL.md means there is nothing to refactor. - NEVER introduce feature changes during the refactor. Why: behavior-preserving is the contract; a feature change disguised as a refactor violates reviewer expectations and destabilizes the target skill's CI footprint. The feature description pinned for
/implementnames this explicitly. - NEVER inline the feature description inside the
SKILL.mdbody. Why: Mechanical rule B — shell logic (and the enumeration + feature-prose assembly) lives in a.sh. Keeps this SKILL.md scannable; avoids copy-paste drift with/aliasand/create-skill. - NEVER target a skill name that is actually a plugin-namespaced form (e.g.,
larch:implement). Why: the colon is not a valid directory character in the resolver's probed paths; the resolver rejects it. Pass the bare skill name only.
Step 1 — Parse Arguments
Parse flags from the start of $ARGUMENTS before the first positional token.
--run-id <ID>: Optional run identifier; when set, used as the run ID for this invocation instead of the auto-generated one. Default: empty (auto-generate).