Files
everyinc__compound-engineer…/docs/solutions/skill-design/authoring-auto-invoke-standing-instructions.md

4.1 KiB

title, date, last_updated, category, module, problem_type, component, severity, applies_when, tags, related_components
title date last_updated category module problem_type component severity applies_when tags related_components
Authoring "Make It Automatic" auto-invoke guidance for CE skills 2026-07-12 2026-09-02 skill-design compound-engineering convention development_workflow medium
Adding a "Make It Automatic" / "Make Capture Automatic" section to a skill's docs page
Writing a standing instruction that tells an agent to auto-invoke a skill from AGENTS.md/CLAUDE.md
Wiring a mutating skill (ce-simplify-code, ce-compound) to run on its own without user prompting
auto-invoke
standing-instruction
ce-simplify-code
ce-compound
defense-in-depth
cross-harness
ce-simplify-code
ce-compound

Authoring "Make It Automatic" auto-invoke guidance for CE skills

Users add a standing instruction to their agent-instructions file so a skill whose value sits at a completion boundary (ce-simplify-code, ce-compound) runs on its own. A naive instruction wastes cycles (a homegrown "always simplify after changes" rule ran three reviewer subagents on documentation-only diffs) and fires at the wrong moment (mid-build, rewriting code still being shaped).

The two-layer split, where the standing instruction carries the size/cost floor and the skill self-guards on the kind of change only, is stated in docs/guides/ce-simplify-code.md and the Preflight in skills/ce-simplify-code/SKILL.md; for ce-compound, the value gate is its Preconditions. This doc keeps what those do not say.

Timing: a completion boundary, not per-edit

Fire when a unit of work has settled ("when you finish a coherent unit of work / before you review, commit, or hand it off") with an explicit negative: not after every individual edit while still building. Vague wording like "after significant changes" with no boundary and no numeric floor lets eager agents fire constantly.

Offer-first is not the safe one

When a skill is safe by construction (behavior-preserving, refuses to weaken tests or types, verifies before finishing, lands edits on a branch the user reviews before commit), auto-run is not the reckless option and offer-first is not the safe one. Present them as peer variants and frame the choice as interruption preference, not risk. Reflexively stamping offer-first "recommended" over-weights a risk the skill design already handles.

Cross-harness phrasing rules

These sections are read by whatever agent the user runs (Claude Code, Codex, Gemini, Cursor):

  • "invoke the <skill> skill", never "run /<skill>": the slash-command form is not reliably agent-callable across harnesses; reference the capability, not the keystroke.
  • "before review, commit, or handoff", not "at the end of the session": an agent cannot reliably detect session end but does know an imminent workflow boundary.
  • Key eligibility on "substantive human-authored code", not a filename allowlist: tests, migrations, and code-bearing config carry real yield, and a mixed code+docs diff still qualifies (the skill scopes to the code).
  • Exclusions are the load-bearing part and must be hard negatives: documentation-/Markdown-only, formatting/lint-only, dependency/lockfile, generated/vendored, other purely mechanical churn.

When to apply

A skill whose value is concentrated at a completion boundary and whose reviewers have a no-yield input class worth excluding. A skill that is cheap, always-relevant, or has no distinct no-yield class needs neither the exclusions nor a self-guard.

The kind-not-size self-guard was verified by a cross-host routing eval (5 resolved-scope scenarios on Claude and Codex, fresh subagents reading the on-disk SKILL.md, 10/10): docs-only and lockfile scopes short-circuited, a mixed diff narrowed to its code file, and both a ~5-line explicit scope and a normal code diff ran.

See Also