platform/plugin-development/agent-development/SKILL.md
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
npx skillsauth add harsh040506/claude-code-unified-skill-plugin-library agent-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Agents are autonomous subprocesses that handle complex, multi-step tasks independently. Understanding agent structure, triggering conditions, and system prompt design enables creating powerful autonomous capabilities.
Key concepts:
---
name: agent-identifier
description: Use this agent when [triggering conditions]. Examples:
<example>
Context: [Situation description]
user: "[User request]"
assistant: "[How assistant should respond and use this agent]"
<commentary>
[Why this agent should be triggered]
</commentary>
</example>
<example>
[Additional example...]
</example>
model: inherit
color: blue
tools: ["Read", "Write", "Grep"]
---
You are [agent role description]...
**Your Core Responsibilities:**
1. [Responsibility 1]
2. [Responsibility 2]
**Analysis Process:**
[Step-by-step workflow]
**Output Format:**
[What to return]
Agent identifier used for namespacing and invocation.
Format: lowercase, numbers, hyphens only Length: 3-50 characters Pattern: Must start and end with alphanumeric
Good examples:
code-reviewertest-generatorapi-docs-writersecurity-analyzerBad examples:
helper (too generic)-agent- (starts/ends with hyphen)my_agent (underscores not allowed)ag (too short, < 3 chars)Defines when Claude should trigger this agent. This is the most critical field because it is the only mechanism by which Claude decides to spawn rather than respond directly. Claude compares the current conversation context against all agent descriptions simultaneously; the agent whose description best matches the situation wins.
This means the description field is not documentation — it is a selector. It needs to be precise enough to distinguish this agent from adjacent agents and general-purpose responses, and broad enough to match different phrasings of the same intent.
Must include:
<example> blocks showing usage<commentary> explaining why agent triggersFormat:
Use this agent when [conditions]. Examples:
<example>
Context: [Scenario description]
user: "[What user says]"
assistant: "[How Claude should respond]"
<commentary>
[Why this agent is appropriate]
</commentary>
</example>
[More examples...]
Why the <example> format works mechanistically:
Examples are more powerful than trigger keywords because they demonstrate conversational context, not just surface vocabulary. The commentary block matters disproportionately — it teaches Claude the reasoning behind the trigger, which generalizes to phrasings and contexts the examples don't explicitly cover.
A weak commentary just restates the obvious: "This agent handles code review." A strong commentary explains the discrimination: "The user completed a feature and wants validation before committing — use this agent rather than responding inline, because the agent has the full review rubric from CLAUDE.md in its system prompt and applies it systematically, whereas an inline response would assess quality subjectively."
Best practices:
Which model the agent should use.
Options:
inherit - Use same model as parent (recommended)sonnet - Claude Sonnet (balanced)opus - Claude Opus (most capable, expensive)haiku - Claude Haiku (fast, cheap)Recommendation: Use inherit unless agent needs specific model capabilities.
Visual identifier for agent in UI.
Options: blue, cyan, green, yellow, magenta, red
Guidelines:
Restrict agent to specific tools.
Format: Array of tool names
tools: ["Read", "Write", "Grep", "Bash"]
Default: If omitted, agent has access to all tools
Best practice: Limit tools to minimum needed (principle of least privilege)
Common tool sets:
["Read", "Grep", "Glob"]["Read", "Write", "Grep"]["Read", "Bash", "Grep"]["*"]The markdown body becomes the agent's system prompt. Write in second person, addressing the agent directly.
Why second person matters: The system prompt establishes the agent's identity and behavioral frame before any task arrives. Writing in second person ("You are...", "You will...") activates the model's capacity to adopt a consistent persona and apply that persona's judgment across varying inputs. First-person or third-person framing diffuses this — the model treats it as information about an external entity rather than a self-definition to embody.
Standard template:
You are [role] specializing in [domain].
**Your Core Responsibilities:**
1. [Primary responsibility]
2. [Secondary responsibility]
3. [Additional responsibilities...]
**Analysis Process:**
1. [Step one]
2. [Step two]
3. [Step three]
[...]
**Quality Standards:**
- [Standard 1]
- [Standard 2]
**Output Format:**
Provide results in this format:
- [What to include]
- [How to structure]
**Edge Cases:**
Handle these situations:
- [Edge case 1]: [How to handle]
- [Edge case 2]: [How to handle]
✅ DO:
❌ DON'T:
Before finalizing a system prompt, verify each structural section meets its depth standard:
| Section | Shallow version | Adequate version | |---------|----------------|------------------| | Role definition | "You are a code reviewer." | "You are an expert code reviewer specializing in TypeScript and React, with emphasis on catching type safety violations and accessibility regressions." | | Process steps | "1. Review the code. 2. Report issues." | "1. Read the full diff before forming opinions — early lines often get clarified by later context. 2. Score each issue 0–100; only surface those ≥ 80. 3. Group by severity..." | | Output format | "Provide a summary." | "Start with a one-line verdict (Pass / Needs Work). Then list issues grouped into Critical (90–100) and Important (80–89), each with: file path, line number, rule violated, fix suggestion." | | Edge cases | (absent) | "If no high-confidence issues exist, confirm the code meets standards with a brief summary. Do not invent issues to fill the report." |
Use this prompt pattern (extracted from Claude Code):
Create an agent configuration based on this request: "[YOUR DESCRIPTION]"
Requirements:
1. Extract core intent and responsibilities
2. Design expert persona for the domain
3. Create comprehensive system prompt with:
- Clear behavioral boundaries
- Specific methodologies
- Edge case handling
- Output format
4. Create identifier (lowercase, hyphens, 3-50 chars)
5. Write description with triggering conditions
6. Include 2-3 <example> blocks showing when to use
Return JSON with:
{
"identifier": "agent-name",
"whenToUse": "Use this agent when... Examples: <example>...</example>",
"systemPrompt": "You are..."
}
Then convert to agent file format with frontmatter.
See examples/agent-creation-prompt.md for complete template.
inherit)agents/agent-name.md✅ Valid: code-reviewer, test-gen, api-analyzer-v2
❌ Invalid: ag (too short), -start (starts with hyphen), my_agent (underscore)
Rules:
Length: 10-5,000 characters Must include: Triggering conditions and examples Best: 200-1,000 characters with 2-4 examples
Length: 20-10,000 characters Best: 500-3,000 characters Structure: Clear responsibilities, process, output format
plugin-name/
└── agents/
├── analyzer.md
├── reviewer.md
└── generator.md
All .md files in agents/ are auto-discovered.
Agents are namespaced automatically:
agent-nameplugin:subdir:agent-nameCreate test scenarios to verify agent triggers correctly:
Ensure system prompt is complete:
---
name: simple-agent
description: Use this agent when... Examples: <example>...</example>
model: inherit
color: blue
---
You are an agent that [does X].
Process:
1. [Step 1]
2. [Step 2]
Output: [What to provide]
| Field | Required | Format | Example | |-------|----------|--------|---------| | name | Yes | lowercase-hyphens | code-reviewer | | description | Yes | Text + examples | Use when... <example>... | | model | Yes | inherit/sonnet/opus/haiku | inherit | | color | Yes | Color name | blue | | tools | No | Array of tool names | ["Read", "Grep"] |
DO:
inherit for model unless specific needDON'T:
For detailed guidance, consult:
references/system-prompt-design.md - Complete system prompt patternsreferences/triggering-examples.md - Example formats and best practicesreferences/agent-creation-system-prompt.md - The exact prompt from Claude CodeWorking examples in examples/:
agent-creation-prompt.md - AI-assisted agent generation templatecomplete-agent-examples.md - Full agent examples for different use casesDevelopment tools in scripts/:
validate-agent.sh - Validate agent file structuretest-agent-trigger.sh - Test if agent triggers correctlyTo create an agent for a plugin:
agents/agent-name.md filescripts/validate-agent.shFocus on clear triggering conditions and comprehensive system prompts for autonomous operation.
testing
Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations. Use when users request QC analysis, filtering low-quality cells, assessing data quality, or following scverse/scanpy best practices for single-cell analysis.
tools
Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI, (2) ATAC-seq analysis with PeakVI, (3) CITE-seq multi-modal analysis with totalVI, (4) multiome RNA+ATAC analysis with MultiVI, (5) spatial transcriptomics deconvolution with DestVI, (6) label transfer and reference mapping with scANVI/scArches, (7) RNA velocity with veloVI, or (8) any deep learning-based single-cell method. Triggers include mentions of scVI, scANVI, totalVI, PeakVI, MultiVI, DestVI, veloVI, sysVI, scArches, variational autoencoder, VAE, batch correction, data integration, multi-modal, CITE-seq, multiome, reference mapping, latent space.
testing
This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include "I have an idea for a project", "I'm stuck on my research", "help me evaluate this project", "what should I work on", or "I need strategic advice about my research".
development
Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation.