.github/skills/tsh-creating-agents/SKILL.md
Create custom agents (.agent.md) for GitHub Copilot in VS Code. Provides templates, guidelines, and a structured process for building agent definitions that describe behavior, personality, responsibilities, and problem-solving approaches. Use when creating, reviewing, or updating .agent.md files.
npx skillsauth add thesoftwarehouse/copilot-collections tsh-creating-agentsInstall 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.
Creates well-structured custom agents for GitHub Copilot in VS Code. Enforces a consistent pattern across all agents and ensures clear separation between agent definitions, skills, and prompts.
Every agent is designed to be extendable with skills and prompts. The agent itself provides the foundation; skills and prompts layer on top for specific workflows. </separation-of-concerns>
<xml-syntax> All structured content inside the agent body MUST use XML-like tags for explicit structure. This ensures reliable parsing across all LLM model tiers.Use Markdown only for inline formatting (bold, code blocks, tables, lists) within XML sections. </xml-syntax>
<minimal-scope> An agent should only describe what is necessary for its specific role. Avoid duplicating instructions that belong in skills or project-level instruction files (.instructions.md). </minimal-scope> </principles>Use the checklist below and track your progress:
Creation progress:
- [ ] Step 1: Define the agent's purpose
- [ ] Step 2: Write the agent role and responsibilities
- [ ] Step 3: Determine tools and write tool usage guidelines
- [ ] Step 4: Determine skills and write skills usage guidelines
- [ ] Step 5: Configure handoffs (if applicable)
- [ ] Step 6: Add domain standards (if applicable)
- [ ] Step 7: Add constraints (if applicable)
- [ ] Step 8: Assemble the agent file using the template
- [ ] Step 9: Validate the agent file
Step 1: Define the agent's purpose
Answer these questions before writing anything:
Step 2: Write the agent role and responsibilities
Write the <agent-role> section. This is the core of the agent. It must describe:
Follow the pattern from existing agents. Keep the role focused. Do not include workflow-specific steps — those belong in skills.
Step 3: Determine tools and write tool usage guidelines
Review available tools and select only those relevant to the agent's role:
tools array<tool> entry in the <tool-usage> section describing:
Match tool selection to the agent's responsibilities. Read-only agents should not get edit tools. Implementation agents need execution tools.
Step 4: Determine skills and write skills usage guidelines
Review available skills and select those the agent should load:
skill-name - brief description of when to use itDo not duplicate skill content in the agent file. The agent only references skills.
Step 5: Configure handoffs (if applicable)
If the agent participates in multi-step workflows:
label, agent, prompt, and send (typically false for user approval)model for the target agentStep 6: Add domain standards (if applicable)
If the agent's role requires enforcing domain-specific standards (e.g., testing conventions, security rules, UI patterns), add a <domain-standards> section. This section is optional and should only appear when the agent genuinely needs domain-specific rules that are NOT covered by skills.
Step 7: Add constraints (if applicable)
If the agent has specific limitations or anti-patterns to avoid, add a <constraints> section. Common constraints include:
Step 8: Assemble the agent file using the template
Use the ./agent.template.md template to assemble the final .agent.md file. Place the file in .github/agents/ with the naming convention <agent-name>.agent.md.
Step 9: Validate the agent file
Verify the agent file against this checklist:
description is present and concisetools array includes only relevant tools<tool> entries in <tool-usage><skills-usage> are existing skills in the project| Field | Required | Description |
|---|---|---|
| description | Yes | Brief description of the agent, shown as placeholder text in chat input. |
| tools | Yes | Array of tool/tool-set names available to the agent. Use <server>/* for all MCP server tools. |
| handoffs | No | Array of handoff configurations for multi-step workflows. |
| agents | No | Array of agent names available as subagents. Use * for all, [] for none. |
| name | No | Override display name (defaults to filename). |
| argument-hint | No | Hint text shown in chat input to guide user interaction. |
| model | No | Preferred AI model (string or prioritized array). |
| user-invokable | No | Boolean, controls visibility in agents dropdown (default: true). |
| disable-model-invocation | No | Boolean, prevents auto-invocation as subagent (default: false). |
| Section | Required | Purpose |
|---|---|---|
| <agent-role> | Yes | Role definition, responsibilities, behavioral guidelines. |
| <skills-usage> | Yes | List of skills the agent uses with guidance for each. |
| <tool-usage> | Yes | Tool access rules and usage guidelines per tool. |
| <domain-standards> | No | Domain-specific standards and rules the agent enforces. |
| <collaboration> | No | Interaction patterns with other agents or team members. |
| <constraints> | No | Explicit limitations and anti-patterns for the agent. |
| <output-format> | No | Expected structure or format of the agent's deliverables. |
All body content in the agent file must use XML-like tags for structure. Rules:
<section-name> ... </section-name><tool> inside <tool-usage><tool name="...">) are acceptable when they improve readability.Example structure:
<agent-role>
Role: You are a...
</agent-role>
<tool-usage>
<tool name="context7">
- **MUST use when**: ...
- **SHOULD NOT use for**: ...
</tool>
</tool-usage>
tsh-creating-prompts - to understand how prompts reference agents and ensure agents don't overlap with prompt responsibilitiestsh-creating-skills - to ensure this skill's own structure follows the canonical skill creation requirementstsh-technical-context-discovering - to understand existing agent patterns in the project before creating a new onetsh-codebase-analysing - to analyze existing agents and identify patterns to followtsh-creating-instructions - to understand when coding standards and project conventions belong in instruction files rather than agent definitionsdevelopment
Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies. Use when writing reusable logic units (React hooks, Vue composables), refactoring logic into hooks, debugging hook behavior, or reviewing hook implementations.
testing
UI verification criteria, structure checklists, severity definitions, and tolerance rules for comparing implementations against Figma designs. Use for verifying UI matches design, understanding what to check, and determining acceptable differences.
development
Clean raw workshop or meeting transcripts from small talk, filler words, and off-topic tangents. Extract and structure business-relevant content into a standardized format with discussion topics, key decisions, action items, and open questions.
development
Discover and establish technical context before implementing any feature. Prioritize project instructions, existing codebase patterns, and external documentation in that order. Use for any task requiring understanding of project conventions, coding standards, architecture patterns, and established practices before writing code.