Claude Code Agent Development
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
A skill your agent uses when creating new agents, editing existing agents, or defining specialized subagent roles for the Task tool
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aaddrick/claude-pipeline writing-agents --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/writing-agents .claude/skills/writing-agents && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .claude/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aaddrick/claude-pipeline writing-agents --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/writing-agents .agents/skills/writing-agents && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .agents/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aaddrick/claude-pipeline writing-agents --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/writing-agents .cursor/skills/writing-agents && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .cursor/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/aaddrick/claude-pipeline.git --path .claude/skills/writing-agents--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aaddrick/claude-pipeline writing-agents --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/writing-agents .gemini/skills/writing-agents && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .gemini/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install aaddrick/claude-pipeline writing-agentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/writing-agents .github/skills/writing-agents && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .github/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aaddrick/claude-pipeline --skill writing-agents -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aaddrick/claude-pipeline writing-agents --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aaddrick/claude-pipeline.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/writing-agents .opencode/skills/writing-agents && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "writing-agents" agent skill from https://github.com/aaddrick/claude-pipeline/tree/main/.claude/skills/writing-agents into .opencode/skills/writing-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "writing-agents", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
writing-agentsA skill your agent uses when creating new agents, editing existing agents, or defining specialized subagent roles for the Task tool
Writing Agents is an agent skill from aaddrick/claude-pipeline. Use when creating new agents, editing existing agents, or defining specialized subagent roles for the Task tool
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `agent-templates.md`).
It sits in Agent Workflows, covering Subagents. The repository describes itself as: Portable Claude Code multi-agent pipeline - skills, agents, hooks, orchestration scripts, and quality gates. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 402eac7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
composerphpFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
prompthub.ustheagentarchitect.substack.comdatablist.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Writing Agents loads about 3.3k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 838 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from aaddrick/claude-pipeline at commit 402eac7, republished under its MIT licence (© aaddrick). 838 words, ~3,311 tokens.
.claude/skills/writing-agents/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Writing agents IS Test-Driven Development applied to role definitions.
Agents are specialized subagents invoked via the Task tool. They receive full conversation context and execute autonomously with a defined persona, tools, and behavioral guidelines.
Core principle: If you didn't test the agent on representative tasks, you don't know if it performs correctly.
REQUIRED BACKGROUND: Understand test-driven-development and writing-skills before using this skill. Same RED-GREEN-REFACTOR cycle applies.
| Aspect | Agents | Skills |
|---|---|---|
| Invocation | Task tool with subagent_type | Skill tool with skill name |
| Context | Full conversation history | Loaded on-demand |
| Execution | Autonomous, multi-turn | Single response guidance |
| Persona | Explicit role/identity | Reference documentation |
| Location | .claude/agents/ | .claude/skills/ |
| Use for | Complex, autonomous tasks | Reusable patterns/techniques |
Agents are PROJECT-LEVEL. They live in the project's .claude/agents/ directory, not personal directories.
.claude/agents/
agent-name.md # Single file with frontmatter + personaFrontmatter (YAML):
---
name: agent-name
description: Role description. Use for [specific task types].
model: opus # Optional: opus, sonnet, haiku (defaults to parent)
---IMPORTANT: After creating or modifying an agent, prompt the user to restart their Claude Code session. Agents are loaded at session start and won't be available until restart.
Before writing the agent, gather domain knowledge and project context:
Use WebSearch to find domain-specific guidance. Search for:
Example searches by domain:
# Laravel backend agent
"Laravel best practices 2026"
"Laravel anti-patterns to avoid"
"Eloquent ORM performance mistakes"
"PHP security vulnerabilities OWASP"
# React frontend agent
"React component best practices 2026"
"React performance anti-patterns"
"React accessibility checklist"
# DevOps/infrastructure agent
"AWS Lambda best practices"
"Infrastructure as Code anti-patterns"
"Cloud security common mistakes"
# Database agent
"PostgreSQL query optimization"
"Database schema anti-patterns"
"SQL injection prevention"Incorporate findings into:
Explore the project to make the agent project-specific:
.claude/agents/ for:Example exploration:
# Find project structure for a backend agent
Glob: "app/**/*.php"
Grep: "class.*Service"
Read: "CLAUDE.md", "README.md"
# Find existing agent patterns
Glob: ".claude/agents/*.md"Combine research + codebase context into the agent definition:
After writing the agent file, inform the user:
Agent created: .claude/agents/[agent-name].md
**ACTION REQUIRED:** Please restart your Claude Code session for the new agent to be available. Agents are loaded at session start.
To use the agent after restart:
- It will appear in the Task tool's available agents
- Invoke with: Task tool, subagent_type="[agent-name]"The persona is the agent's DNA. A well-defined persona produces consistent behavior across interactions.
You are a [specific role] with expertise in [domains]. You specialize in [specific capabilities] for [context/project].Good persona:
You are a senior PHP/Laravel backend developer with deep expertise in Laravel, PHP, and server-side architecture. You specialize in building robust, scalable backend systems with clean architecture and secure coding practices for the [Project Name] platform.Bad persona:
You are a helpful assistant that can help with code.Define what the agent DOES and DOES NOT handle. Prevents scope creep and enables deferral to specialists.
## CORE COMPETENCIES
- [Domain 1]: Specific capabilities
- [Domain 2]: Specific capabilities
**Not in scope** (defer to [other-agent]):
- [Excluded domain 1]
- [Excluded domain 2]List specific mistakes to avoid. More effective than generic guidelines.
## Anti-Patterns to Avoid
- **N+1 query prevention** -- always eager load relationships with `with()`
- **Never use `Model::all()`** on large tables -- use pagination
- **Use `config()` not `env()`** -- never call `env()` outside config filesDefine how the agent coordinates with others. Essential for multi-agent workflows.
## Coordination with [Other Agent]
**When delegated work:**
1. Acknowledge the task
2. Implement following their requirements
3. Report completion with specific details
**Report format:**
- Issue/task reference
- Changes made (files, methods)
- Testing performed
- Explicit "ready for next step" statementProvide relevant project structure and conventions. Enables autonomous operation.
## PROJECT CONTEXT
### Project Structureproject/ ├── app/Controllers/ # HTTP handlers ├── app/Services/ # Business logic └── app/Models/ # Database models
### Key Commands
```bash
composer run dev # Start development
php artisan test # Run tests
## Agent Description Best Practices
The description field is critical for Task tool routing. Claude uses it to select the right agent.
**Format:** `[Role statement]. Use for [specific task types].`
**Good descriptions:**
```yaml
# Specific role + clear triggers
description: Senior PHP/Laravel backend developer. Use for controllers, models, services, middleware, Eloquent ORM, database migrations, API endpoints, authentication, and PHPUnit testing.
# Clear scope + deferral
description: Frontend CSS/HTML craftsman specializing in bulletproof interfaces. Use for CSS architecture, responsive design, Blade templates. Defers to laravel-backend-developer for PHP.
# Domain-specific expertise
description: AWS infrastructure engineer. Use for Cognito, RDS, Lambda, VPC, IAM, SES, SNS, Secrets Manager, EventBridge, CloudWatch, and boto3 operations.Bad descriptions:
# Too vague
description: Helps with code
# No trigger conditions
description: A senior developer
# Process summary (causes shortcut behavior)
description: Reviews code by checking style, then logic, then testsChoose the right model for the task complexity:
| Model | Use When | Cost |
|---|---|---|
| haiku | Quick, straightforward tasks | Low |
| sonnet | Balanced complexity (default) | Medium |
| opus | Deep reasoning, architecture decisions | High |
# Example: Code simplification needs deep judgment
model: opus
# Example: Documentation generation is straightforward
model: haikuOmit model to inherit from parent conversation.
Focused on a single domain with clear boundaries and deferral rules.
You are a [specialist role] focused on [specific domain].
**Your scope:**
- [Capability 1]
- [Capability 2]
**Defer to [other-agent] for:**
- [Out-of-scope area 1]
- [Out-of-scope area 2]Coordinates other agents, manages workflow, doesn't do implementation.
You orchestrate [workflow type]. You delegate to specialist agents and track progress.
**You manage:**
- Task breakdown and assignment
- Progress tracking
- Integration of results
**You do NOT:**
- Write code directly
- Make implementation decisions
- Deploy without approvalEvaluates work against criteria, provides structured feedback.
You review [artifact type] against [criteria].
**Review process:**
1. [Step 1]
2. [Step 2]
3. [Step 3]
**Output format:**
- Status: [PASS/FAIL/NEEDS_CHANGES]
- Issues: [List]
- Recommendations: [List]Run representative tasks with a generic prompt. Document:
Address specific baseline failures:
Test edge cases:
Research Phase:
Context Phase:
.claude/agents/ for patternsRED Phase:
GREEN Phase:
REFACTOR Phase:
Quality Checks:
Deployment:
.claude/agents/[name].md# BAD: Could be anyone
You are a helpful assistant.
# GOOD: Specific expertise and context
You are a senior PHP/Laravel backend developer with deep expertise in Laravel 11, PHP 8.2, and PostgreSQL for the [Project Name] platform.# BAD: No limits
You can help with anything.
# GOOD: Clear boundaries with deferral
**Not in scope** (defer to bulletproof-frontend-developer):
- CSS, Tailwind, styling
- JavaScript, Alpine.js
- Blade template layout# BAD: Too general
- Write good code
- Follow best practices
# GOOD: Specific and actionable
- **N+1 prevention** -- always use `with()` for relationships
- **Never use `env()`** outside config files -- use `config()` helper# BAD: Claude may follow description instead of reading agent
description: Reviews code by first checking style, then logic, then tests, finally creating report
# GOOD: Just triggers, no process
description: Code quality reviewer. Use after completing features to check against standards.Agents are autonomous specialists. They need:
Test your agents on real tasks. A well-defined persona produces consistent, reliable behavior. A vague persona produces unpredictable results.
© aaddrick, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .claude/skills/writing-agents of aaddrick/claude-pipeline.
Open the folder on GitHubat commit 402eac7
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in aaddrick/claude-pipeline, which our catalogue first saw on October 7, 2026.
Writing Agents next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Writing Agents this skillaaddrick/claude-pipeline | 130 | 1 repos | ~3.3k | Automated safety check: Pass | MIT | |
| Claude Code Agent Developmentanthropics/claude-plugins-official | 38k | 8 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Subagent Driven DevelopmentAsvarox/allkaraoke | 261 | 38 repos | ~1.2k | Automated safety check: Pass | None | |
| Dispatching Parallel Agentsultralisp/ultralisp | 258 | 41 repos | ~1.5k | Automated safety check: Pass | None | |
| Paseo Advisor Second Opiniongetpaseo/paseo | 20k | 1 repos | ~756 | Automated safety check: Pass | Custom licence | |
| Task Observerrebelytics/one-skill-to-rule-them-all | 3.2k | 1 repos | ~12k | Automated safety check: Pass | CC-BY-4.0 |
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
Asvarox/allkaraoke
A skill your agent uses when executing implementation plans with independent tasks in the current session
ultralisp/ultralisp
A skill your agent uses when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
getpaseo/paseo
Launches one separate agent through Paseo to give a second opinion on the current task, with a self-contained briefing and no permission to edit files.
rebelytics/one-skill-to-rule-them-all
Monitors task execution for skill improvement opportunities.
openobserve/openobserve
Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.
aaddrick/claude-pipeline
A skill your agent uses when adapting the generic .claude pipeline folder to a specific codebase - adjusting skills, agents, hooks, scripts, prompts, and settings for the target project's tech stack…
aaddrick/claude-pipeline
A skill your agent uses when asked to create user stories from a codebase, document existing features as stories, or reverse-engineer requirements from code
aaddrick/claude-pipeline
Comprehensive UI/CSS review using parallel agents. An agent skill from aaddrick/claude-pipeline.
aaddrick/claude-pipeline
A skill your agent uses when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees in .worktrees/
aaddrick/claude-pipeline
A skill your agent uses when given a GitHub issue number and base branch to implement end-to-end
aaddrick/claude-pipeline
A skill your agent uses when documentation coverage is low, after composer docs:coverage shows gaps, or when asked to batch-write PHPDoc blocks across multiple files
Categories
A skill your agent uses when creating new agents, editing existing agents, or defining specialized subagent roles for the Task tool. Writing Agents is an agent skill from aaddrick/claude-pipeline.
Writing Agents fits situations like: creating new agents; editing existing agents; defining specialized subagent roles for the Task tool.
Run `npx skills add aaddrick/claude-pipeline --skill writing-agents -a claude-code`. Or copy the skill folder (.claude/skills/writing-agents in aaddrick/claude-pipeline) into .claude/skills/writing-agents in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aaddrick/claude-pipeline --skill writing-agents -a codex`. Or copy the skill folder (.claude/skills/writing-agents in aaddrick/claude-pipeline) into .agents/skills/writing-agents in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aaddrick/claude-pipeline --skill writing-agents -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-agents, .gemini/skills/writing-agents, .github/skills/writing-agents and .opencode/skills/writing-agents in your project.
Going by SKILL.md and its folder, Writing Agents needs the command-line tools its instructions call (composer and php).
SKILL.md names 3 domains. As links in the text: prompthub.us, theagentarchitect.substack.com and datablist.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Writing Agents is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Writing Agents: Claude Code Agent Development (anthropics/claude-plugins-official, 38k stars), Subagent Driven Development (Asvarox/allkaraoke, 261 stars), Dispatching Parallel Agents (ultralisp/ultralisp, 258 stars) and Paseo Advisor Second Opinion (getpaseo/paseo, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
aaddrick (a GitHub user) maintains it in aaddrick/claude-pipeline, which has 130 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on February 25, 2026.
Source: aaddrick/claude-pipeline on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.