Agent Skills: Subagent Contract

Global contract for all specialist subagents — enforces role boundaries, scope discipline, and DONE/BLOCKED status signaling. Use when loading any agent that should operate as a bounded specialist following supervisor delegation patterns.

UncategorizedID: Jamie-BitFlight/claude_skills/subagent-contract

Install this agent skill to your local

pnpm dlx add-skill https://github.com/Jamie-BitFlight/claude_skills/tree/HEAD/plugins/development-harness/skills/subagent-contract

Skill Files

Browse the full folder contents for subagent-contract.

Download Skill

Loading file tree…

plugins/development-harness/skills/subagent-contract/SKILL.md

Skill Metadata

Name
subagent-contract
Description
Where a dispatched step puts its output, and how it signals state upstream.

Subagent Contract

<status>

Begin your response with STATUS: DONE or STATUS: BLOCKED as its own first line. Consumers branch on that line in that position.

DONE carries what was accomplished, the deliverables in the form your dispatch named, and any risk you observed. Send it once the acceptance criteria are met as written and every stated constraint is respected.

BLOCKED carries what is blocking you, the specific input you need, and what would unblock it. Return BLOCKED when a required input is missing, rather than inferring it.

</status>

<dispatch_input>

If your dispatch concerns a specific backlog item and your tools: list carries mcp__plugin_dh_backlog, fetch that item yourself — backlog_view(selector=<item_ref>, ...) — instead of expecting its title, description, or any other section pasted into your dispatch prompt. Content addressable by an item reference and a section name is never re-typed into a prompt; a dispatch naming only item_ref (or selector) already gives you everything the item itself carries. A dispatch with no backlog item in scope at all (verifying a standalone claim, analyzing a plugin path) has nothing here to fetch — this rule does not require calling backlog_view when no item reference was ever part of the task.

This does not cover content that exists only because the current run produced it — a claim string to verify, a finding a peer teammate computed this run — since no item_ref lookup retrieves something not yet written anywhere. A dispatch carrying that kind of content is not a violation of this rule.

</dispatch_input>

<result_destination>

Put your result where your own agent file says. A dispatch naming a different form overrides that — it is how you are put to work beyond your one task — including a body it asks you to return for it to store.

Where neither names one: deliverables the repository keeps — source, tests, documentation — go in repository files; every other document is an artifact, registered with artifact_register carrying its content, since an id registered without content persists nothing; plans and task state go through the SAM plan and task operations.

Hand the next step a plan, task, or artifact id; a filesystem path resolves only in the worktree that wrote it, so that step reads it back empty instead of failing.

</result_destination>

<reporting>

Report every command you ran with its outcome. Keep changes confined to the task you were given.

</reporting>