magpie-optimize-skill · git:20260913.a4dd8ba · 2026-09-13 · sha256 7f78534b0d93063c
magpie-optimize-skill git:20260913.a4dd8baA
Immutable. This exact content is served forever at /api/v1/blob/7f78534b0d93063c.
---
# SPDX-License-Identifier: Apache-2.0
# https://www.apache.org/licenses/LICENSE-2.0
name: magpie-optimize-skill
family: utilities
mode: Meta
description: |
Optimize an existing framework skill (or sweep a set of them) by
applying the restructuring patterns proven on the security-skill
suite: split an oversized `SKILL.md` into linked sibling docs,
lift concrete/project-specific values out of the body into
`<project-config>` placeholders, replace in-agent-context body
reads with out-of-context tool calls, batch per-item fetches into
a single upfront pass, and add a deterministic pre-flight no-op
classifier ahead of LLM passes. Every change is a behavior-
preserving proposal the maintainer signs off on; the skill
validator must stay green before and after. The refactoring
sibling of `write-skill` (which authors net-new skills).
when_to_use: |
Invoke when a maintainer says "optimize <skill>", "slim down
<skill>'s SKILL.md", "this SKILL.md is too long", "split <skill>
into subdocs", "lift the hardcoded values out of <skill>", "make
<skill> read less into context", or "sweep the skills for P14
violations". Also a natural follow-up to a principles/validator
audit that flags an over-500-line SKILL.md, concrete-name
leakage, or a heavy in-context read. Skip for net-new skills —
that is `write-skill`. Skip when the request is a behavior
change dressed up as an optimization; route those through normal
skill editing + review.
capability: capability:authoring
license: Apache-2.0
---
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
<!-- Placeholder convention (see AGENTS.md#placeholder-convention-used-in-skill-files):
<project-config> → adopting project's `.apache-magpie/` directory
<tracker> → value of `tracker_repo:` in <project-config>/project.md
<upstream> → value of `upstream_repo:` in <project-config>/project.md
<framework> → `.apache-magpie/apache-magpie` in adopters; `.` in
the framework standalone -->
# optimize-skill
<!-- BEGIN MAGPIE PREFLIGHT — generated from tools/dev/preflight-block.md -->
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Pre-flight — is this project set up?](#pre-flight--is-this-project-set-up)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
## Pre-flight — is this project set up?
Do this **first, before anything else in this skill**, and do it silently: a
couple of file checks, or one CLI call for a marketplace install.
1. **Is a lock present?** If `.apache-magpie.lock` exists, read its
`method`.
2. **A snapshot method** (`svn-zip` / `git-tag` / `git-branch`) →
compare with `.apache-magpie.local.lock`:
- local lock missing → the snapshot was never fetched on this
machine;
- `ref` / `commit` differ → this machine is on a different framework
version than the project pins.
Anything unresolved → **stop and propose `/magpie-setup`** (or
`/magpie-setup upgrade` for a version mismatch).
3. **`method: marketplace`** → the lock is the project's **floor**: a
minimum version and a minimum plugin set, never a pin. Compare the
machine against it.
**First, check `url`.** If it is anything other than
`apache/magpie`, run **nothing**. Name the marketplace the lock
points at, show the commands it would take, and let the user decide.
A lock is a committed file in whatever repository happened to be
opened, and acting on it automatically would make opening a
repository enough to install someone else's code.
Otherwise read the installed state — `claude plugin list --json`, or
the running agent's equivalent — and compare **as PEP 440, not as
strings**: `0.10.0` is newer than `0.9.0`, and `0.2.0` is newer than
`0.2.0.dev202609110041`.
- every floor plugin installed at or above `min_version` →
**silent**; continue the skill;
- a floor plugin absent → `claude plugin install
<plugin>@apache-magpie`;
- a floor plugin below `min_version` → `claude plugin update
<plugin>@apache-magpie`.
**Never** remove a plugin, downgrade one, pin the marketplace to a
tag, or touch a plugin absent from the floor. Being *ahead* of the
floor is the normal case and is not a finding.
Where there is no such CLI, run nothing and print the commands
instead.
4. **Unless step 3 passed silently, stop.** Whichever branch you took —
plugins installed or updated, commands printed because there is no
CLI, or nothing run at all because `url` named another marketplace —
this session is still below the project's floor. Claude Code loads
plugins at session start, so anything just installed is not live
here, and anything only printed has not run at all. Say what ran, or
what to run, and that the session has to be restarted before
re-running this command.
5. **No lock?** Then this is the marketplace install without adoption,
or nothing at all. That is a supported end state, not a fault — what
matters is whether *this skill's* configuration resolves.
6. **Resolve this skill's `requires_config:` frontmatter.** Each file,
per the lookup chain: `.apache-magpie-local/<file>` (gitignored,
personal) first, then `.apache-magpie-overrides/<file>` (committed).
All present → **silent**, carry on.
Any required file missing → **run `/magpie-setup config` for this
skill now**, say that you are doing it and why, then continue into
the work the user actually asked for.
Running it is safe to do unasked because of what it touches: only
`.apache-magpie-local/` and `.git/info/exclude`, both gitignored,
both invisible to every other person and every other clone, and both
undone by deleting a directory. It stages nothing, commits nothing,
and changes nothing about the repository anyone else sees.
Two things it still may not do: **fabricate a value** — anything it
cannot derive from the repository is a question it asks or a `TODO`
it leaves — and **continue past a value it needs but does not have**.
Unlike a plugin below the floor, this needs no restart: the files
are written and read in the same turn, so the interruption ends and
the command proceeds.
7. **Never run `/magpie-setup adopt` unattended.** Adoption commits a
recommendation for every contributor and is a maintainer's decision
taken with the other maintainers. When configuration was just
written locally, add **one line** saying the project can also adopt
Magpie so contributors get this on clone, and name the command.
Then drop it. Do not ask, do not offer to run it, and do not repeat
it on later invocations.
Report only when a check fails, or when the user asked what state the project
is in. `/magpie-setup verify` is the full diagnostic.
<!-- END MAGPIE PREFLIGHT -->
Take one existing framework skill — or a maintainer-supplied set of
them — and make it leaner without changing what it does. The skill
diagnoses a target against the optimization catalogue distilled from
the recent security-suite refactors, proposes the applicable passes,
and applies them one at a time as **behavior-preserving** edits the
maintainer confirms. The skill validator (and, for tracker-touching
skills, the placeholder linter) is the deterministic gate: it is
green before the first pass and green again after the last.
This skill operates only on **framework-internal files** — `SKILL.md`
bodies, their sibling docs, `<project-config>` manifests, tool
adapters in this repo. It reads no external or attacker-controlled
content, so the prompt-injection-defence callout does not apply.
It is the refactoring counterpart to
[`write-skill`](../write-skill/SKILL.md): `write-skill` authors a
net-new skill; `optimize-skill` restructures one that already exists.
The five passes, their smells, exemplar PRs, mechanics, and
behavior-preservation guarantees live in
[`patterns.md`](patterns.md); this body is the orchestration.
---
## Adopter overrides
Before running the default behaviour documented
below, this skill consults
[`.apache-magpie-local/optimize-skill.md`](../../../../docs/setup/agentic-overrides.md) (personal, gitignored) and [`.apache-magpie-overrides/optimize-skill.md`](../../../../docs/setup/agentic-overrides.md) (committed, project-wide)
in the adopter repo if it exists, and applies any
agent-readable overrides it finds. See
[`docs/setup/agentic-overrides.md`](../../../../docs/setup/agentic-overrides.md)
for the contract — what overrides may contain, hard
rules, the reconciliation flow on framework upgrade,
upstreaming guidance.
**Hard rule**: agents NEVER modify the snapshot under
`<adopter-repo>/.apache-magpie/`. Local modifications
go in the override file. Framework changes go via PR
to `apache/magpie`.
---
## Snapshot drift
Also at the top of every run, this skill compares the
gitignored `.apache-magpie.local.lock` (per-machine
fetch) against the committed `.apache-magpie.lock`
(the project pin). On mismatch the skill surfaces the
gap and proposes
[`setup upgrade`](../../../magpie-setup/skills/setup/upgrade.md).
The proposal is non-blocking — the user may defer if
they want to run with the local snapshot for now.
---
## Inputs
- **Target** — the skill to optimize, as a skill name
(`security-issue-import`), a directory
(`.claude/skills/security-issue-import/`), or a `SKILL.md`
path. Required for a single-skill run.
- **Sweep selector** (optional) — `--all` to diagnose every skill
under `.claude/skills/` and rank optimization candidates without
applying anything, or `over:<N>` to scope the sweep to SKILL.md
files longer than `<N>` lines (default threshold: **500**, the
`PRINCIPLES.md` P14 cap).
- **Pass filter** (optional) — restrict to named passes from
[`patterns.md`](patterns.md), e.g. `pass:split` or
`pass:config-lift,out-of-context`. Default: propose every
applicable pass.
When no target and no sweep selector are given, default to a
read-only `--all` diagnosis and let the maintainer pick a target
from the ranked list.
---
## Prerequisites
- **`uv`** — runs the skill validator
([`tools/skill-and-tool-validator`](../../../../tools/skill-and-tool-validator/README.md))
and the placeholder linter. Without it the green-before /
green-after gate cannot run; stop and ask the user to install
`uv`.
- **`git`** — the behavior-preservation checks rely on
`git diff` / `git mv`; the skill expects a clean (or
intentionally dirty, user-acknowledged) working tree so its own
edits are isolable.
- **`doctoc`** — regenerates a sibling/anchor TOC after a split
changes headings. If absent, surface the manual TOC step instead
of silently skipping it.
---
## Step 0 — Pre-flight check
1. **Target resolves** to a real skill directory containing a
`SKILL.md`. A bad name → stop and list the available skills.
2. **Baseline is green.** Run the validator on the target (or the
whole tree for a sweep) and record the result. If it is already
**red**, stop: optimization is a no-behavior-change operation
layered on a passing skill, not a way to fix a broken one. Hand
the failures back; the maintainer fixes correctness first.
3. **Working tree is isolable.** Prefer a clean tree, or a
dedicated branch, so the optimization diff is reviewable on its
own. If the tree carries unrelated changes, surface them and ask
before proceeding.
4. **Snapshot is current** (see *Snapshot drift* above) — a stale
snapshot means the target on disk may not match the framework
the maintainer thinks they are editing.
---
## Step 1 — Diagnose
Run every diagnostic in [`patterns.md`](patterns.md) against the
target and emit a findings table — one row per detected smell, each
naming the pass that addresses it, the evidence (`path:line`, line
count, the offending construct), and an effort/blast-radius note.
Diagnosis is **read-only**; it never edits.
The five smells, in the order the passes below apply them:
1. **Oversized body** — `SKILL.md` over the 500-line P14 cap, or a
single section that dominates the body. → *split* pass.
2. **Concrete-name leakage** — adopter-specific values (a concrete
`<upstream>` repo slug, real list addresses, real IDs) baked into
the body instead of resolved from `<project-config>`. →
*config-lift* pass.
3. **In-context bulk read** — a step that pulls a whole issue body,
rollup comment, or large artefact into the agent context only to
touch one field of it. → *out-of-context* pass.
4. **Per-item round-trips** — N sequential fetches the skill could
issue as one upfront batch. → *fetch-upfront* pass.
5. **No deterministic pre-filter** — the skill spends an LLM pass on
items a cheap deterministic classifier could skip as obvious
no-ops. → *preflight-classifier* pass.
For a sweep, rank targets by (cap overflow × number of distinct
smells) and present the list; apply nothing until the maintainer
picks one.
---
## Step 2 — Propose
For the chosen target, propose the applicable passes **in the order
above** (lowest blast radius first: a pure file move before any
content lift before any tool rewire). For each proposed pass state:
the exact files created/moved, the slimming delta (e.g. *"SKILL.md
3425 → ~660 lines, four new siblings"*), and the
behavior-preservation guarantee from [`patterns.md`](patterns.md).
Propose; do not apply. Wait for the maintainer to pick which passes
to run, in which order.
---
## Step 3 — Apply one pass at a time
For each confirmed pass, smallest reversible step first:
- **Restructure passes (split, config-lift)** move or relocate text
with **no wording change to the instructions themselves**. Use
`git mv` where a whole file relocates; otherwise cut-and-paste the
exact bytes and replace the body region with a one-line pointer to
the new sibling. Never paraphrase a moved instruction — a
behavior-preserving move means the moved bytes are identical.
- **Rewire passes (out-of-context, fetch-upfront,
preflight-classifier)** change *how* a step runs, not *what
decision it reaches*. They route through an existing deterministic
tool (e.g. [`github-body-field`](../../../../tools/github-body-field/README.md),
[`github-rollup`](../../../../tools/github-rollup/README.md)) or a
pre-flight classifier; the human-visible proposals and gates the
skill produces are unchanged. If a rewire would alter what the
skill proposes to the user, it is a behavior change — stop and
route it through normal review, not this skill.
After each pass: regenerate the doctoc TOC if headings moved, and
re-run the validator. One pass per commit keeps the diff reviewable
and the `git mv` rename-detection intact.
---
## Step 4 — Validate (green-after gate)
Re-run the validator (and the placeholder linter for tracker-
touching skills) on the optimized target. It **must** return the
same green it returned at Step 0. Then prove behavior preservation:
- For restructure passes, confirm the concatenation of `SKILL.md` +
new siblings contains the same instruction bytes as the original
(a moved-not-changed check: `git diff` should show deletions in
`SKILL.md` matching additions in the siblings, plus the new
pointer lines).
- For rewire passes, confirm the skill's proposal/apply surface —
the things a human signs off on — is unchanged; only the
in-context cost or round-trip count drops.
If the validator goes red or behavior preservation cannot be shown,
**revert the pass** and hand back; do not ship a half-applied
optimization.
---
## Step 5 — Hand back
Summarise per pass: files touched, the slimming delta, validator
result, and the behavior-preservation evidence. Do **not** open a
PR or commit unless the maintainer asks — surface the diff and let
them review. When they do commit, one pass per commit, subject in
the `refactor(<skill>): …` form the security-suite splits used
(e.g. *"extract N subdocs to slim SKILL.md A → B lines"*).
If the run was a sweep, restate the ranked remaining candidates so
the maintainer can queue the next one.
---
## Hard rules
- **Behavior never changes.** This skill restructures and rewires;
it never alters what a skill decides, proposes, or asks a human to
confirm. A change that alters behavior is out of scope — route it
through normal skill editing and review.
- **Moved bytes are identical bytes.** A split or lift that
paraphrases the moved instructions is a behavior change in
disguise. Move verbatim; only the surrounding pointer is new.
- **Propose before applying.** Every pass is a proposal the
maintainer confirms (framework Principle 6). Never batch-apply a
sweep.
- **The validator is the gate.** Green before, green after, every
pass. A pass that needs the validator relaxed is not an
optimization.
- **The optimized SKILL.md still obeys P14** — under 500 lines, with
every sibling linked exactly one level deep and no unreferenced
siblings.
- **Never touch the snapshot** (`<adopter-repo>/.apache-magpie/`).
Framework-skill optimizations land via PR to `apache/magpie`.
---
## References
- [`patterns.md`](patterns.md) — the five optimization passes:
smell, exemplar PR, mechanics, behavior-preservation guarantee,
validation.
- [`write-skill`](../write-skill/SKILL.md) — authoring a net-new
skill (this skill's counterpart).
- [`tools/skill-and-tool-validator`](../../../../tools/skill-and-tool-validator/README.md)
— the green-before / green-after gate.
- [`tools/github-body-field`](../../../../tools/github-body-field/README.md)
and [`tools/github-rollup`](../../../../tools/github-rollup/README.md)
— out-of-context read/PATCH tools the rewire passes route through.
- [`docs/labels-and-capabilities.md`](../../../../docs/labels-and-capabilities.md)
— the `capability:*` taxonomy and the P14 authorship rule this
skill enforces.