thesoftwarehouse/copilot-collections/tsh-creating-skills
Claude Code and agent skill by thesoftwarehouse/copilot-collections
- community
Checking that the SKILL.md file is still in the repository.
Create new skills (SKILL.md) for GitHub Copilot. Provides naming conventions (gerund form), description guidelines, body structure, progressive disclosure patterns, templates, and validation checklists. Use when creating, reviewing, or updating SKILL.md files, or when discussing skill design and organization.
Install
npx vskill@latest install thesoftwarehouse/copilot-collections/tsh-creating-skillsSKILL.md
Creating Skills
Creates well-structured, reusable skills for GitHub Copilot. Enforces naming conventions, content structure, and progressive disclosure patterns based on the Agent Skills specification and best practices.
Core Design Principles
<principles>
<what-is-a-skill> A skill is a folder containing a SKILL.md file with YAML frontmatter and Markdown instructions. Skills provide procedural knowledge — step-by-step workflows, domain-specific context, templates, and reference materials that an agent loads on demand to perform specialized tasks.
- Skills = reusable workflows, domain knowledge, step-by-step processes, templates (SKILL.md files)
- Agents = behavior, personality, responsibilities, problem-solving approach (.agent.md files)
- Prompts = workflow triggers, task starters, reusable prompt templates (.prompt.md files)
A skill must NOT define who the agent is — that belongs in the agent file. A skill defines HOW to perform a specific task or workflow. </what-is-a-skill>
<conciseness> The context window is a shared resource. Every token in your skill competes with conversation history, other skills, and the user's actual request.
Default assumption: The LLM is already very smart. Only add context it doesn't already have.
Before adding any content, ask:
- "Does the LLM really need this explanation?"
- "Can I assume it already knows this?"
- "Does this paragraph justify its token cost?"
Write the minimum necessary to guide the agent effectively. Trim explanations of concepts the LLM already understands. </conciseness>
<xml-syntax> Use XML-like tags for structured content that requires explicit boundaries — principles, rules, specifications, or multi-part sections where nesting adds clarity. This ensures reliable parsing across all LLM model tiers.
Use plain Markdown for sequential content like step-by-step processes, guidelines, and reference tables where structure is already clear from headings and formatting.
When to use XML tags: Principles, rules, specifications, structured templates, sections with explicit open/close boundaries. When to use Markdown: Steps, checklists, tables, guidelines, reference lists, code examples. </xml-syntax>
<progressive-disclosure> Skills use a three-tier loading model:
- Discovery (~100 tokens): Only
nameanddescriptionare loaded at startup for all skills — this is how the agent decides which skills to activate. - Activation (< 5000 tokens recommended): The full
SKILL.mdbody is loaded when the skill is triggered. - Resources (as needed): Files in
scripts/,references/, andassets/are loaded only when required during execution.
Keep SKILL.md body under 500 lines. Move detailed reference material, examples, and templates to separate files. Reference those files from the SKILL.md body. </progressive-disclosure>
</principles>
Skill Directory Structure
A skill is a directory containing at minimum a SKILL.md file:
- The directory name MUST match the
namefield in the SKILL.md frontmatter. - Keep file references one level deep from SKILL.md — avoid deeply nested reference chains.
- Name files descriptively:
form-validation-rules.md, notdoc2.md.
Skill Creation Process
Use the checklist below and track your progress:
Step 1: Define the skill's purpose
Before writing anything, clarify the skill's purpose with the user. Use the vscode/askQuestions tool to gather answers to these questions in a single batch:
- What task does this skill perform? — The core activity (e.g., "analyze test coverage", "generate API documentation").
- What triggers activation? — When should the agent load this skill? What user requests or contexts should match?
- What does it produce? — Expected output: a document, code changes, a report, analysis, etc.
- What makes it distinct? — How is this different from existing skills? (List current skills for the user to compare against.)
If the user provided enough context in the conversation to answer these questions confidently, skip the clarification and proceed. Only ask about genuinely ambiguous or missing information.
Step 2: Create the skill name
<naming-conventions>
Naming Formula
Use gerund form (verb + -ing) followed by the object:
This format clearly describes the activity or capability the skill provides. It reads naturally as "this skill is about [doing something]."
Rules
| Rule | Requirement | |
|---|---|---|
| Format | Gerund form: {verb-ing}-{object} | |
| Characters | Lowercase letters, numbers, and hyphens only (a-z, 0-9, -) | |
| Length | 1–64 characters. Aim for under 20 characters (used as /slash-commands) | |
| Start/end | Must NOT start or end with a hyphen | |
| Consecutive hyphens | Must NOT contain -- | |
| Directory match | Must match the parent directory name exactly |
Naming Examples
Good names (gerund form — preferred):
| Name | Chars | Slash command | |
|---|---|---|---|
creating-agents | 15 | /creating-agents | |
reviewing-code | 14 | /reviewing-code | |
testing-e2e | 11 | /testing-e2e | |
analyzing-tasks | 15 | /analyzing-tasks | |
designing-architecture | 24 | /designing-architecture | |
gathering-context | 17 | /gathering-context | |
finding-gaps | 12 | /finding-gaps |
Avoid:
| Pattern | Example | Why | |
|---|---|---|---|
| Noun phrases | task-analysis | Passive — doesn't convey action | |
| Vague names | helper, utils, tools | Indiscoverable — agent can't match them to tasks | |
| Overly generic | documents, data, files | Too broad — will trigger on irrelevant tasks | |
| Inconsistent form | Mix of code-review and creating-agents | Breaks convention — confuses pattern recognition |
Shortening Long Names
When the gerund form gets too long (over ~20 chars), simplify the object — let the description field carry the specificity.
| Verbose | Shortened | Strategy | |
|---|---|---|---|
analyzing-implementation-gaps (30) | finding-gaps (12) | Simpler verb + shorter object | |
discovering-technical-context (30) | gathering-context (17) | Broader verb + drop qualifier |
Confirming the Name
When multiple valid names exist, use vscode/askQuestions to let the user choose. Present 2-3 candidates with character counts and /slash-command previews. Mark the shortest gerund-form option as recommended.
</naming-conventions>
Step 3: Write the skill description
<description-guidelines>
Purpose
The description field is the primary discovery mechanism. The agent reads all skill descriptions at startup to decide which skill to activate for a given task. Your description must provide enough detail for the agent to match it accurately from potentially 100+ available skills.
Rules
| Rule | Requirement | |
|---|---|---|
| Length | 1–1024 characters. Non-empty. | |
| Point of view | Always third person. Never use "I", "you", or "we". | |
| Content | Must describe both WHAT the skill does AND WHEN to use it. | |
| Keywords | Include specific trigger terms that help the agent identify relevant tasks. |
Formula
Good Examples
Bad Examples
</description-guidelines>
Step 4: Write the skill body
The Markdown body after the frontmatter contains the skill instructions. There are no strict format restrictions — write whatever helps the agent perform the task effectively.
Content Guidelines
<body-guidelines>
Line limit: Keep the SKILL.md body under 500 lines. If approaching this limit, split content into referenced files using progressive disclosure patterns.
Structure the body with these sections (see template at ./skill.template.md):
| Section | Required | Purpose | |
|---|---|---|---|
| Introduction | Yes | 1-2 sentences describing what the skill does. | |
| Principles | No | Core design principles using <principles> XML tags — when the skill has foundational rules that constrain all decisions. | |
| Process / Workflow | Yes | Step-by-step checklist and detailed instructions. The core of the skill. | |
| Reference tables | No | Quick-reference tables for rules, patterns, or conventions. | |
| Connected Skills | Yes | Links to related skills with brief rationale for each. |
Conciseness rules:
- Only add context the LLM doesn't already have.
- Use examples instead of explanations — they convey style and expectations more efficiently.
- See examples/reviewing-code.skill.md for a complete example demonstrating conciseness.
- Provide a default approach, not multiple options. Add alternatives only when a specific condition requires them.
- Don't explain concepts the LLM already knows (e.g., what PDFs are, how REST APIs work).
Consistent terminology: Choose one term for each concept and use it throughout the skill. Don't alternate between "API endpoint", "URL", "route", and "path" if they mean the same thing.
No time-sensitive information: Don't include dates or version-dependent guidance. If you must reference a deprecated approach, use an "Old patterns" section.
Use workflows for complex tasks: Break operations into clear, sequential steps. Provide a checklist the agent can copy and track progress against.
Implement feedback loops: For quality-critical tasks, include validation steps: run validator → fix errors → repeat.
</body-guidelines>
Degrees of Freedom
Match specificity to the task's fragility and variability:
| Freedom Level | When to use | Example | |
|---|---|---|---|
| High (text instructions) | Multiple valid approaches; decisions depend on context | Code review guidelines | |
| Medium (pseudocode / templates) | A preferred pattern exists but variation is acceptable | Report generation with customizable sections | |
| Low (exact scripts, no params) | Operations are fragile; consistency is critical | Database migrations, file format validation |
Step 5: Create supporting files (if needed)
When the SKILL.md body approaches 500 lines, or when the skill includes resources that should be loaded on demand:
<supporting-files>
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.github/skills/tsh-creating-skills/SKILL.md
Popularity
- Repository stars
- 266
- Repository forks
- 18
- 7-day trend score
- 28
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/thesoftwarehouse/copilot-collections/tsh-creating-skills)