From briefing
Author and migrate Claude Code subagents that use the `briefing` plugin — the PreToolUse hook that pre-loads declared skills into the agent's context at spawn time. Use this skill when adding `briefing.skills` to an agent's frontmatter, when refactoring an existing agent away from "MANDATORY: load skill X first" prose, or when debugging why a declared skill is not being resolved.
How this skill is triggered — by the user, by Claude, or both
Slash command
/briefing:briefingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`briefing` is a Claude Code plugin that pre-loads skills into a
briefingbriefing is a Claude Code plugin that pre-loads skills into a
subagent's prompt before its first turn, via a PreToolUse hook
on the Agent tool. The skill bodies are inlined into the prompt the
moment the subagent is spawned — no Skill-tool round-trip, no
chance of the model "forgetting" to load them.
This skill tells you how to write agents that use it correctly, and how to convert existing agents that were trying to do this with prompt-stuffed pleas like "MANDATORY: invoke the brainstorming skill before doing anything else".
A briefing-aware agent declares its required skills under a single
briefing: block — not a top-level skills: key:
---
name: my-agent
description: ...
allowed-tools: Read, Edit, Bash
briefing:
skills:
- perl-core
- perl-moose
- superpowers:brainstorming
---
You are my-agent. Do the thing.
Always namespace under briefing:. A bare top-level skills: is
reserved for Claude Code itself and the hook intentionally ignores it
to avoid future collisions. Flow form (skills: [a, b, c]) is also
accepted under the block.
Skill names can be:
perl-core) — resolved against project .claude/skills/,
then user ~/.claude/skills/, then plugin caches.superpowers:brainstorming) — resolved against the
named plugin's cache directly.If any declared skill cannot be resolved at spawn time, the
Agent tool call is denied with a clear error. There is no
silent degradation. This is intentional: an agent that needs a
skill to do its job correctly should not run without that skill.
So: declare skills the agent genuinely depends on. Do not pad the list "just in case" — every name there becomes a precondition for the spawn to succeed.
This is the biggest mistake when migrating existing agents.
The skill bodies are already in the prompt by the time the agent reads its first token. You do not need to — and should not — also write things like:
You have access to the following skills:
- perl-core (for Perl best practices)
- perl-moose (for OO idioms)
- ...
MANDATORY: invoke the brainstorming skill before responding.
This is wasted tokens and actively confusing — the model sees the skill content directly above this block, then sees prose telling it to "load" something it already has. The framing "you have access to" is also wrong: the skills aren't available, they are present.
Trust the injection. The body of a briefing-aware agent should read as if the skills are simply part of the agent's working knowledge, because they are. Write the agent the way you would write a system prompt for an LLM that already has all the relevant context in its training data. Briefly orient the agent to its job — not to its toolbelt.
A good body might be as short as:
You are the perl-backend agent. Implement, refactor, and review
backend Perl code in this project. Follow the conventions and
idioms shown in the skills above without restating them.
That's it. No "you can use", no "remember to apply", no "MANDATORY".
When converting an existing agent that uses prompt-stuffing:
briefing.skills under the agent's
frontmatter. Drop any narrative around them.If a spawn is denied with briefing: agent 'X' references unknown skill(s): Y:
<base>/skills/<name>/SKILL.md for some
base in that order.plugin:skill), the plugin must be
installed in the local plugin cache —
~/.claude/plugins/cache/<plugin>/skills/<skill>/SKILL.md or a
nested-owner equivalent.briefing.skills. Either inline the
relevant guidance into the agent body, or have the agent invoke
the Skill tool itself for genuinely optional context.briefing does NOT doAgent tool.Skill tool. Skills the subagent
discovers it needs during its run still go through Skill
normally.briefing.skills
list. Each agent declares what it needs; skills are leaves.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub getty/briefing --plugin briefing