Writes and configures custom .md agent definitions in .claude/agents/, with YAML frontmatter for model, allowed-tools, context-forking, and system prompts. Useful when authoring a specialized agent or constraining tool access.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-patterns-plugin:custom-agent-definitionsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Expert knowledge for defining and configuring custom agents in Claude Code.
Expert knowledge for defining and configuring custom agents in Claude Code.
For full worked YAML examples (isolated research agent, read-only explorer, complete security auditor, plugin layout, common patterns), see REFERENCE.md.
| Use this skill when... | Use agent-teams instead when... |
|---|---|
Authoring a new .md agent definition file in .claude/agents/ | Spawning multiple already-defined agents that coordinate as a team |
Configuring a single agent's model, allowed-tools, or context: fork | Setting up a lead/teammate architecture with a shared task list |
| Constraining tool access for a specialised read-only or write-restricted agent | Sequencing parallel work across worktrees (see parallel-agent-dispatch) |
| Writing the system prompt that defines what one agent does | Auditing existing agent definitions for security (see meta-audit) |
Custom agents let you define specialized agent types beyond the built-in
ones (Explore, Plan, Bash, etc.). Each can have its own model, tools, and
context configuration. They are defined in .claude/agents/ or via plugin
agents/ directories, with YAML frontmatter + a markdown system prompt:
---
name: my-custom-agent
description: What this agent does
model: sonnet
allowed-tools: Bash, Read, Grep, Glob
---
# Agent System Prompt
Instructions and context for the agent...
| Value | Behavior |
|---|---|
fork | Independent context copy — agent sees parent history but changes don't affect parent |
| (default) | Agent shares context with parent and can see/modify conversation state |
Use fork for exploratory research, parallel investigations, and isolated
experiments. See REFERENCE.md → Isolated research agent.
| Field | Purpose | Behavior |
|---|---|---|
allowed-tools | Whitelist of permitted tools | Agent can ONLY use these tools |
disallowedTools | Blacklist of forbidden tools | Agent can use all tools EXCEPT these |
Use disallowedTools for read-only agents, restricting dangerous capabilities,
and sandboxing. The two combine — an explicit whitelist plus a safety blacklist.
See REFERENCE.md → Read-only explorer.
The agent field specifies which agent type to use when delegating via the Agent
tool, letting commands and skills name a preferred agent type:
agent: security-auditor
| Field | Type | Description |
|---|---|---|
name | string | Agent identifier |
description | string | What the agent does |
model | string | Model to use (sonnet, opus) |
context | string | Context mode: fork or default |
permissionMode | string | default, acceptEdits, dontAsk, bypassPermissions, or plan |
maxTurns | number | Maximum agentic turns before agent stops |
background | bool | Set true to always run as a background task |
memory | string | Persistent memory scope: user, project, or local |
skills | list | Skill names to preload into agent context at startup |
mcpServers | list | MCP server names available to this agent |
tools | list | Tools the agent can use (in agents/ dir; use allowed-tools in skills) |
disallowedTools | list | Tools the agent cannot use |
created / modified / reviewed | date | Lifecycle dates |
Principle of least privilege — grant only the tools the agent needs.
Use context: fork for isolation — exploratory work shouldn't pollute main context.
Combine allowed + disallowed — explicit whitelist with a safety blacklist.
Clear descriptions — describe what the agent does and its boundaries.
Model selection — sonnet for development workflows, opus for deep
reasoning/analysis. (See .claude/rules/agent-and-tool-selection.md for the
repo's Opus-for-subagents guidance.)
Report failures loudly — a dispatched agent that hits a wall must say so
in its final message, never a one-word summary like Terminal. / Done. /
Stopped. On a blocker it should commit and push its in-progress work, open a
draft PR, and state exactly what stopped it and which tools were denied. A
one-word surrender is indistinguishable from success to the orchestrator, so
the work is silently cleaned up and lost (issue
#1422). See
parallel-agent-dispatch → "Loud-failure contract" for the dispatch-prompt
form every brief should carry.
Prefer a Skill-less agentType for read-only fan-out — an agent that
only reads files and emits structured output should NOT carry the Skill
tool. Every Skill-bearing agent pays a ~25k-token skill_listing +
deferred_tools_delta context tax before its first tool call, which can push
read-heavy fan-out subagents over their context window. Use a lean read-only
agent (e.g. agents-plugin:review) instead. See
parallel-agent-dispatch → "Skill-less agentType for Read-Only Fan-Out"
(issues
#1549 /
#1550).
Worked YAML for each practice is in REFERENCE.md → Best-practice snippets.
| Context | Configuration |
|---|---|
| Exploratory research | context: fork, minimal read-only tools |
| Security analysis | context: fork, disallowedTools: Bash, Write, Edit |
| Quick lookups | minimal tools |
| Complex implementation | model: sonnet, full tools |
| Mode | Isolation | Use Case |
|---|---|---|
| (default) | Shared | Normal workflows |
fork | Isolated | Research, experiments |
| Pattern | Fields |
|---|---|
| Whitelist only | allowed-tools: Tool1, Tool2 |
| Blacklist only | disallowedTools: Tool1, Tool2 |
| Combined | Both fields specified |
agent-teams — multi-agent coordination via the implicit teamparallel-agent-dispatch — worktree preflight, scope budgets, loud-failure contractmeta-audit — auditing existing agent definitions for security/completeness.claude/rules/agent-development.md — agent lifecycle and field semanticsnpx claudepluginhub laurigates/claude-plugins --plugin agent-patterns-pluginGuides creation of custom agents for Claude Code with specialized behaviors and tool access. Covers agent vs skill differences, file structure, and writing style.
Create custom agents for Claude Code including YAML frontmatter, system prompts, tool restrictions, and discovery optimization. Use when creating, building, or designing agents, or when asked about agent creation, subagent configuration, Task tool delegation, or agent best practices.
Guides creation and configuration of Claude Code agents, including frontmatter structure, triggering conditions, and system prompt design.