agentleFS
MicrosoftKnown publishermicrosoft/vstest/.github/skills/creating-skills/SKILL.md

creating-skills

Skill976 starsChanged 6 months agoMITView on GitHub

Create custom agent capabilities when discovering novel tools, receiving task-agnostic tips from reviewers, or after researching specialized workflows not covered in existing instructions. Teaches structure, YAML optimization for LLM discoverability, and token efficiency.

30 other projects use a version of this, 1 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use building-chatgpt-apps, building-chat-interfaces and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • mjunaidcaSkill

    building-chatgpt-apps

    Guides creation of ChatGPT Apps with interactive widgets using OpenAI Apps SDK and MCP servers. Use when building ChatGPT custom apps with visual UI components, embedded widgets, or rich interactive experiences. Covers widget architecture, MCP server setup with FastMCP, response metadata, and Developer Mode configuration. NOT when building standard MCP servers without widgets (use building-mcp-servers skill instead).

    Also in 4 projects that use this

  • mjunaidcaSkill

    building-chat-interfaces

    Build AI chat interfaces with custom backends, authentication, and context injection. Use when integrating chat UI with AI agents, adding auth to chat, injecting user/page context, or implementing httpOnly cookie proxies. Covers ChatKitServer, useChatKit, and MCP auth patterns. NOT when building simple chatbots without persistence or custom agent integration.

    Also in 4 projects that use this

  • +10 more from mjunaidca

The file

Show its rules and text

We split this skill into the rules it gives an agent

22 rules. 0 are common, 21 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 28 edited versions we read keep these.

  • 21

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read existing skill frontmatter and content

    line 16
  2. Distinctive:

    If semantically similar skill exists, STOP

    line 17
  3. Distinctive:

    If frontmatter semantically matches your use case → Update existing skill's description

    line 20
  4. Distinctive:

    Add keywords to improve discoverability rather than creating duplicate

    line 21
  5. Distinctive:

    If frontmatter matches but content incomplete → Add section to existing skill

    line 24
  6. Distinctive:

    Update frontmatter only if significantly broadening scope

    line 26
  7. Distinctive:

    No semantic overlap with existing skills

    line 29
  8. Very specific:

    Every skill directory must contain a SKILL.md file (case-sensitive) with:

    line 44
  9. Distinctive:

    Must match the directory name

    line 65
  10. Distinctive:

    Should be descriptive but concise

    line 66
  11. Distinctive:

    Keep instructions focused and relevant

    line 96
  12. Distinctive:

    Use bullet points and numbered lists

    line 97
  13. Distinctive:

    Use imperative mood ("Run the test", not "You should run the test")

    line 116
  14. Distinctive:

    Use code blocks with language identifiers

    line 119
  15. Distinctive:

    Always include concrete examples:

    line 125
  16. Distinctive:

    After creating a skill:

    line 133
  17. Distinctive:

    Verify the file structure:

    line 135
  18. Distinctive:

    Ensure proper YAML syntax

    line 142
  19. Distinctive:

    Ask Copilot a question that should trigger the skill

    line 147
  20. Distinctive:

    Verify the skill is loaded (check response for skill-specific guidance)

    line 148
  21. Distinctive:

    Ensure instructions are clear and actionable

    line 149
  22. Distinctive:

    Update instructions based on feedback

    line 154

“Common” is measured: kept by at least 6 in 10 of the 28 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Creating GitHub Copilot Agent Skills

This skill teaches you how to create effective GitHub Copilot Agent Skills for this repository.

Pre-Check: Avoid Duplication

STOP and check before creating a new skill:

  1. Does it exist already?
    • List all skills: ls -la .github/skills/
    • Read existing skill frontmatter and content
    • If semantically similar skill exists, STOP
  2. Should an existing skill be expanded?
    • If frontmatter semantically matches your use case → Update existing skill's description
    • Add keywords to improve discoverability rather than creating duplicate
  3. Should existing skill content change?
    • If frontmatter matches but content incomplete → Add section to existing skill
    • Enhance with additional examples, procedures, or troubleshooting
    • Update frontmatter only if significantly broadening scope

Only create new skill if:

  • No semantic overlap with existing skills
  • Addresses distinct problem domain
  • Has unique triggering conditions

Skill Structure

Directory Placement

Skills should be placed in .github/skills/ directory:

  • Project skills (repository-specific): .github/skills/skill-name/

Each skill must have its own subdirectory with a lowercase, hyphenated name that matches the name field in the frontmatter.

File Requirements

Every skill directory must contain a SKILL.md file (case-sensitive) with:

  1. YAML Frontmatter (required):
  2. Markdown Body with clear instructions, examples, procedures, guidelines, and references

Additional Resources

Skills can include:

  • Scripts (e.g., .sh, .fsx, .ps1)
  • Example files
  • Templates
  • Reference documentation

YAML Frontmatter Best Practices

The frontmatter is critical for skill discoverability and token efficiency:

Required Fields

  • name (string): Unique identifier, lowercase with hyphens
    • Must match the directory name
    • Should be descriptive but concise
    • Example: hypothesis-driven-debugging, github-actions-failure-debugging
  • description (string): When and why to use this skill
    • Should be 1-2 sentences
    • Include trigger keywords that help the AI recognize when to load the skill
    • Example: "Guide for debugging failing GitHub Actions workflows. Use this when asked to debug failing GitHub Actions workflows."
    • SEO-like optimization for LLMs: Include key terms that would appear in user requests

Optional Fields

  • license (string): License for the skill (e.g., MIT, Apache-2.0)

Description Guidelines

The description is crucial for skill discoverability. Think of it like SEO for LLMs:

✅ Good descriptions (specific, actionable, keyword-rich):

  • "Guide for debugging failing GitHub Actions workflows. Use this when asked to debug failing GitHub Actions workflows."
  • "Systematic approach to investigating F# compiler performance issues using traces, dumps, and benchmarks."
  • "Step-by-step process for analyzing test failures using hypothesis-driven debugging."

❌ Poor descriptions (vague, generic):

  • "Helps with debugging"
  • "Tool for testing"
  • "Useful utility"

Token Efficiency

Skills should be concise to avoid wasting context tokens:

  • Keep instructions focused and relevant
  • Use bullet points and numbered lists
  • Avoid redundant information
  • Reference external resources rather than duplicating content
  • The agent will only load skills when relevant, so clear descriptions help prevent unnecessary loading

Skill Content Best Practices

Structure

  1. Title and Overview: Brief introduction
  2. When to Use: Clear triggering conditions
  3. Prerequisites: Required tools, setup, or knowledge
  4. Step-by-Step Instructions: Numbered procedures
  5. Examples: Concrete use cases
  6. Troubleshooting: Common issues
  7. References: Links to related documentation

Writing Style

  • Use imperative mood ("Run the test", not "You should run the test")
  • Be specific and actionable
  • Include command examples with expected output
  • Use code blocks with language identifiers
  • Highlight warnings and critical information
  • Reference tools and APIs that the agent has access to

Examples

Always include concrete examples:

  • Command invocations with flags and arguments
  • Expected output and how to interpret it
  • Common variations and edge cases
  • Links to real-world usage in the repository

Testing Your Skill

After creating a skill:

  1. Verify the file structure:
    ls -la .github/skills/your-skill-name/
    # Should show SKILL.md and any additional resources
  2. Validate YAML frontmatter:
    • Ensure proper YAML syntax
    • Required fields are present
    • Name matches directory name
  3. Test skill invocation:
    • Ask Copilot a question that should trigger the skill
    • Verify the skill is loaded (check response for skill-specific guidance)
    • Ensure instructions are clear and actionable
  4. Iterate based on usage:
    • Monitor how often the skill is used
    • Refine description for better discoverability
    • Update instructions based on feedback

Examples from This Repository

See existing skills in .github/skills/ for reference:

  • hypothesis-driven-debugging: Systematic failure investigation
  • Additional skills may be added over time

References

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.