Readonly_Optional ReadonlyargumentOptional ReadonlybodyFreeform instruction body (linear/unstructured skills). Use this OR steps.
Optional ReadonlycontextExecution context. "fork" runs the skill's body as the task inside a
forked SUBAGENT (its own context window) instead of inline in the main
conversation (Anthropic's context: fork frontmatter). This is the ONLY
setting under which a skill gains a real call→return boundary — so it's the
prerequisite for declaring an output Result contract (see output). Omit
for the default inline execution.
ReadonlydescriptionShort description (used in frontmatter).
Optional ReadonlydisableWhether to disable model invocation (frontmatter flag).
Optional ReadonlyinputsTyped inputs — compile to argument-hint + a ## Arguments section.
Optional ReadonlymaxMax lines for an inline fenced code block before compilation errors,
forcing the script into a file referenced via file() (default 20).
Keeps big scripts out of the skill body (token budget + progressive
disclosure). Set 0 to disable.
ReadonlynameSkill name (used in frontmatter).
Optional ReadonlyoutputThe skill's typed railway outcome — the SAME Result<ok, err> contract a
subagent declares with result(okShape, errShape). Valid ONLY with
context: "fork": a forked skill runs as a subagent, so it has the
call→return boundary a typed outcome needs (compile errors if output is set
without context: "fork"). When valid, compiles to a ## Output contract
with a vigiles:ok / vigiles:err block — parseable (parseAgentResult) and
testable (assertAgentOk) via the existing subagent rail. An INLINE skill has
no return, so a typed outcome there is a category error — hence the gate. See
research/spec-syntax-and-railway-scope.md.
Optional ReadonlypurityDeclare this skill's purity floor — compile rejects a tool contract looser
than it. "pure" allows only read-only tools; "bounded" also allows
decidable side-effecting tools (Write, Edit, …) but bars Bash /
unknown-effect / inherits-all; "dangerously-unrestricted" (or omitting it)
enforces nothing. NOTE: "pure"/"bounded" require an explicit read-only
tools list — an absent list inherits ALL tools and is a violation.
Optional ReadonlyresultTerminal postcondition — the skill is "done" only when this gate passes.
Compiles to a ## Result section + a vigiles:result marker.
Optional ReadonlystepsGated pipeline steps. When set, the skill compiles to a ## Steps
checklist with a deterministic gate per step. Use this OR body.
Optional ReadonlytoolsThe allowed-tools contract for this skill. Each entry must be a known
built-in tool or an MCP tool (mcp__server__tool). Omit to inherit all
tools. When purity is "pure"/"bounded", the declared tools are checked
against that floor — compile rejects a tool looser than the declared level.
Hint for the argument (frontmatter). Ignored when
inputsis set —inputsderive the argument-hint instead.