Official agent skill

Create Skill

by dotnet in dotnet/skills

Scaffolds new agent skills for the dotnet/skills repository.

OfficialMITAuto-check passedDevelopment

Install Create Skill

skills CLI
$ npx skills add dotnet/skills --skill create-skill -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/skills create-skill --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-skill .claude/skills/create-skill && rm -rf skills-src

Use ~/.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/

Facts

Skill name
create-skill
GitHub stars
5.6k
Used in
1 other repo
Token cost
~2.7k tokens
SKILL.md length
1,215 words
Files
1
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Scaffolds new agent skills for the dotnet/skills repository.

  • Works in 10 steps: Validate the skill name → Write the description — it is the router → Write for delta over the baseline model → …
  • Creating a new skill
  • SKILL.md covers When to Use, When Not to Use, Inputs and Workflow, plus 4 more sections
  • Calls dotnet

What it does

Create Skill is an agent skill from dotnet/skills, published by the product's own GitHub organization. Scaffolds new agent skills for the dotnet/skills repository. Use when creating a new skill, generating SKILL.md files, writing a skill description that the runtime will actually route to, or setting up skill directory structures. Handles frontmatter generation, section templates, and validation guidance. Do not use for fixing a skill that already fails its evaluation (use improve-skill-quality) or for writing eval.yaml (use create-skill-test).

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Skill authoring and Project scaffolding. It works with .NET. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.

When your agent uses it

  • Creating a new skill
  • Generating SKILL.md files
  • Writing a skill description that the runtime will actually route to
  • Setting up skill directory structures

Example prompts

  • “Use the create-skill skill to scaffold new agent skills for the dotnet/skills repository”
  • “/create-skill”

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Validate the skill name
  2. Write the description — it is the router
  3. Write for delta over the baseline model
  4. Create the skill directory
  5. Generate SKILL.md with frontmatter
  6. Add body content sections
  7. Add optional directories (if needed)
  8. Update CODEOWNERS
  9. Validate the skill
  10. Add the eval

What it can do on your machine

Read from SKILL.md and the folder at commit 8d670fa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • agentskills.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create Skill loads about 2.7k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 1,215 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from dotnet/skills at commit 8d670fa, republished under its MIT licence (© dotnet). 1,215 words, ~2,733 tokens.

Download SKILL.mdSave it as .claude/skills/create-skill/SKILL.md (or your agent's skills folder).
name
create-skill
description
Scaffolds new agent skills for the dotnet/skills repository. Use when creating a new skill, generating SKILL.md files, writing a skill description that the runtime will actually route to, or setting up skill directory structures. Handles frontmatter generation, section templates, and validation guidance. Do not use for fixing a skill that already fails its evaluation (use improve-skill-quality) or for writing eval.yaml (use create-skill-test).

Create Skill

This skill helps you scaffold new agent skills that conform to the Agent Skills specification and the dotnet/skills repository conventions.

When to Use

  • Creating a new skill from scratch
  • Generating a SKILL.md file with proper frontmatter
  • Setting up the skill directory structure with optional folders
  • Ensuring compliance with agentskills.io specification

When Not to Use

  • Modifying existing skills (edit directly instead)
  • Diagnosing or fixing a skill that fails its evaluation (use improve-skill-quality)
  • Writing the skill's eval.yaml (use create-skill-test)
  • Creating custom agents (use the agents/ directory pattern)

Inputs

InputRequiredDescription
Skill nameYesLowercase, alphanumeric, hyphens only (e.g., code-review, ci-triage)
DescriptionYesWhat the skill does and when agents should use it (1-1024 chars)
PurposeYesOne paragraph describing the outcome
Workflow stepsRecommendedNumbered steps the agent should follow

Workflow

Step 1: Validate the skill name

Ensure the name:

  • Contains only lowercase letters, numbers, and hyphens
  • Does not start or end with a hyphen
  • Does not contain consecutive hyphens
  • Is between 1-64 characters
Step 2: Write the description — it is the router

The description is the only text the runtime sees when deciding whether to load the skill. A perfect body behind a weak description never runs.

yaml
---
name: <skill-name>
description: <what it does>. USE FOR: <symptoms, error codes, artifact names, quoted user requests>. DO NOT USE FOR: <nearby-but-wrong intents, with the skill that owns them>.
---
  • Lead with an action verb and use the user's own words: symptoms, error codes (CS1501, MSTEST0014), artifact names (.testsettings, binlog), and requests phrased as a developer would type them.
  • Partition against sibling skills on the real discriminator, not the topic. "Does the abstraction already exist?" separates two skills; "testing" does not. Add the matching exclusion to both siblings.
  • Claim the ambiguous words that would otherwise route to a sibling. If prompts say "review my tests" and a sibling owns "review", say so explicitly.
  • Check every DO NOT USE FOR clause against the scenarios the skill exists to serve — an exclusion like "already on v3" can lock out the post-upgrade fixes that are the skill's purpose.
  • Budget: 1,024 characters per description, and the whole plugin's rendered skill menu is also budgeted. A helper skill users should never invoke directly can set disable-model-invocation: true to free menu space while staying invocable by name.
  • No XML tags. Claude (claude.ai and Claude Code marketplace sync) rejects descriptions containing tag-like text such as Vector<T> or <Import>. Spell it out in words ("generic Vector type", "Import element"); skill-validator check fails on it.
Step 3: Write for delta over the baseline model

Every skill is scored head-to-head against the same model with no skill loaded. Content the model already produces unaided is worth zero; content that makes it slower or more hedged is worth less than zero. See improve-skill-quality/references/writing-for-baseline-delta.md for the full evidence.

DoInstead of
Encode the decision the model would otherwise get wrongRestating API signatures it already reproduces
"When A, do B, never C, verify D" tablesLists of plausible alternatives
A concrete output contract (exact command, verdict line, findings table)"Consider…", "you may want to…"
Scale output structure to input sizeA 12-section dashboard for an 8-test suite
Stop-conditions that prevent over-applyingActing before measuring, rewriting working code
Instructing the agent to discover repo pathsMarking discoverable paths as required inputs
Reporting restore/build/test failures truthfullyClaiming success after a failed command
Verifying load-bearing API claims by compiling or probingTrusting a source read
Gating rare or expensive paths behind references/One large SKILL.md carrying every path

Do not over-correct: a skilled answer shorter and less actionable than the baseline's still loses.

Step 4: Create the skill directory
plugins/<plugin>/skills/<skill-name>/
└── SKILL.md
Step 5: Generate SKILL.md with frontmatter

Create the file with the frontmatter drafted in Step 2.

Step 6: Add body content sections

Include these recommended sections:

  1. Purpose: One paragraph describing the outcome
  2. When to Use: Bullet list of appropriate scenarios
  3. When Not to Use: Boundaries and exclusions
  4. Inputs: Table of required and optional inputs
  5. Workflow: Numbered steps with checkpoints
  6. Validation: How to confirm the skill worked correctly
  7. Common Pitfalls: Known traps and how to avoid them
Step 7: Add optional directories (if needed)
plugins/<plugin>/skills/<skill-name>/
├── SKILL.md
├── scripts/       # Executable code agents can run
├── references/    # Additional documentation loaded on demand
└── assets/        # Templates, images, data files

Reference bundled files with paths relative to the directory that contains SKILL.md, such as references/details.md or scripts/validate.ps1. Do not tell the agent to search for the skill's installation directory. If a missing bundled file reduces the result quality, allow one listing of the known bundled-file directory and require the agent to report the reduced coverage.

Show full SKILL.md (497 more words)Show less
Step 8: Update CODEOWNERS

Add entries in .github/CODEOWNERS for the new skill and its test directory:

/plugins/<plugin>/skills/<skill-name>/  @owner-team
/tests/<plugin>/<skill-name>/           @owner-team

Match the owner pattern used by sibling skills in the same plugin.

Step 9: Validate the skill
  • Confirm frontmatter fields are valid
  • Ensure SKILL.md is under 500 lines
  • Check that file references use relative paths
  • Verify instructions are actionable and specific
  • Run dotnet run --project eng/skill-validator/src/SkillValidator.csproj -- check --plugin ./plugins/<plugin>
Step 10: Add the eval

A skill without an eval.yaml has no evidence that it improves on the baseline. Use create-skill-test to add one in the same pull request, and size it for statistical power — an eval below five distinct stimuli can never return a passing verdict.

The exception is a helper skill with disable-model-invocation: true: the model cannot self-activate it, so an activation-graded eval compares two identical arms. Cover it through the evals of the skills that load it instead.

SKILL.md Template

Use this template when creating a new skill:

markdown
---
name: <skill-name>
description: <1-1024 char description of what the skill does and when to use it>
---

# <Skill Title>

<One paragraph describing the skill's purpose and outcome.>

## When to Use

- <Scenario 1>
- <Scenario 2>

## When Not to Use

- <Exclusion 1>
- <Exclusion 2>

## Inputs

| Input | Required | Description |
|-------|----------|-------------|
| <input-name> | Yes/No | <description> |

## Workflow

### Step 1: <Action>

<Instructions for this step>

### Step 2: <Action>

<Instructions for this step>

## Validation

- [ ] <Verification step 1>
- [ ] <Verification step 2>

## Common Pitfalls

| Pitfall | Solution |
|---------|----------|
| <Problem> | <How to avoid or fix> |

Validation Checklist

After creating a skill, verify:

  • Skill name matches directory name exactly
  • Skill name is lowercase with hyphens only
  • Description is non-empty and under 1024 characters
  • Description contains no XML-like tags (for example Vector<T>)
  • SKILL.md body is under 500 lines
  • Instructions are specific and actionable
  • Bundled-file paths are relative to the directory that contains SKILL.md
  • Missing bundled files cannot cause silent degradation
  • Workflow has numbered steps with clear checkpoints
  • Validation section exists with observable success criteria
  • No secrets, tokens, or internal URLs included
  • .github/CODEOWNERS has entries for the new skill and its test directory
  • The description names concrete triggers and excludes the nearest sibling skills
  • Every section changes a decision the unskilled model would otherwise get wrong
  • The skill states when not to act, and what a truthful failure report looks like
  • An eval.yaml exists and clears the distinct-stimulus floor (or the skill is disable-model-invocation: true and covered through its consumers)

Common Pitfalls

PitfallSolution
Name contains uppercase lettersUse only lowercase: code-review not Code-Review
Description is vagueInclude what it does AND when to use it
Instructions are ambiguousUse numbered steps with concrete actions
Missing validation stepsAdd checkpoints that verify success
SKILL.md too longMove detailed content to references/ files
Hardcoded environment assumptionsDocument requirements in compatibility field
Missing CODEOWNERS entryAdd entries for both /plugins/<plugin>/skills/<skill-name>/ and /tests/<plugin>/<skill-name>/ matching sibling skills' owner pattern
Skill restates what the model already knowsCut it; a skill is scored as a delta over the unskilled model
Discoverable paths listed as required inputsTell the agent to discover them, or it will stop and ask the user
Description partitioned by topic against a siblingPartition on the real discriminator and exclude on both sides
Exclusion clause blocks the skill's own use casesRe-read every "do not use for" clause against real workflow phases
Skill added without an evalAdd eval.yaml in the same PR; unevaluated skills carry no evidence

References

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/create-skill of dotnet/skills.

Open the folder on GitHubat commit 8d670fa

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dotnet/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Create Skill 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.

Create Skill compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Skill this skilldotnet/skills5.6k1 repos~2.7kAutomated safety check: PassMIT
CLI-Anything for CodexHKUDS/CLI-Anything52k—~1.5kAutomated safety check: PassApache-2.0
Bmad Builderaj-geddes/claude-code-bmad-skills487—~1.9kAutomated safety check: NotesCustom licence
Claude Code Plugin Structureanthropics/claude-plugins-official37k10 repos~3.4kAutomated safety check: PassApache-2.0
Scaffoldcodewithmukesh/dotnet-claude-kit751—~1.7kAutomated safety check: PassMIT
Revit Toolkit AnalyzersNice3point/RevitToolkit176—~3.8kAutomated safety check: PassMIT

Similar skills

  • CLI-Anything for Codex

    HKUDS/CLI-Anything

    Lets Codex build, refine, test, validate and list CLI-Anything harnesses for GUI applications or source repositories, following the project's full methodology.

    52k GitHub stars~1.5k tokensUpdated 15 days ago
    DevelopmentAuto-check passed
  • Bmad Builder

    aj-geddes/claude-code-bmad-skills

    Meta-skill for scaffolding and validating custom PLANNING/ORCHESTRATION skills within the BMAD Planning & Orchestrator plugin.

    487 GitHub stars~1.9k tokensUpdated 3 mo ago
    DevelopmentAuto-check: notes
  • Claude Code Plugin Structure

    anthropics/claude-plugins-official

    Official

    Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.

    37k GitHub starsUsed in 10 repos~3.4k tokens
    Agent WorkflowsAuto-check passed
  • Scaffold

    codewithmukesh/dotnet-claude-kit

    Architecture-aware feature scaffolding for .NET 10 projects.

    751 GitHub stars~1.7k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Revit Toolkit Analyzers

    Nice3point/RevitToolkit

    Author and extend the Roslyn tooling bundled in the Nice3point.Revit.Toolkit package: the incremental source generator that emits external-event boilerplate, the analyzers and code fixers that…

    176 GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Revit Toolkit Internals

    Nice3point/RevitToolkit

    Uphold the design contract of the Nice3point.Revit.Toolkit runtime library, that wraps the raw Revit add-in API.

    176 GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed

More from dotnet/skills

All 91 skills in this repo
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Official

    Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.

    5.6k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Official

    Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.

    5.6k GitHub starsUsed in 3 repos~3.1k tokens
    Auto-check passed
  • Official

    Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.

    5.6k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Microbenchmarking

    dotnet/skills

    Official

    Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.

    5.6k GitHub starsUsed in 3 repos~3.3k tokens
    Auto-check passed
  • Official

    Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.

    5.6k GitHub starsUsed in 2 repos~4.2k tokens
    Auto-check passed

Works with

Questions about Create Skill

What does Create Skill do?

Scaffolds new agent skills for the dotnet/skills repository. Create Skill is an agent skill from dotnet/skills, published by the product's own GitHub organization. Scaffolds new agent skills for the dotnet/skills repository.

When should I use Create Skill?

Create Skill fits situations like: creating a new skill; generating SKILL.md files; writing a skill description that the runtime will actually route to; setting up skill directory structures.

How do I install Create Skill in Claude Code?

Run `npx skills add dotnet/skills --skill create-skill -a claude-code`. Or copy the skill folder (.agents/skills/create-skill in dotnet/skills) into .claude/skills/create-skill in your project. Claude Code loads it when a task matches its description.

How do I install Create Skill in Codex?

Run `npx skills add dotnet/skills --skill create-skill -a codex`. Or copy the skill folder (.agents/skills/create-skill in dotnet/skills) into .agents/skills/create-skill in your project. Codex loads it when a task matches its description.

Can I use Create Skill in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill create-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-skill, .gemini/skills/create-skill, .github/skills/create-skill and .opencode/skills/create-skill in your project.

What does Create Skill need to run?

Going by SKILL.md and its folder, Create Skill needs the command-line tools its instructions call (dotnet).

Does Create Skill access the network?

SKILL.md names 1 domain. As links in the text: agentskills.io. This is read from the text; nothing was executed.

Is Create Skill safe to install?

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.

What licence does Create Skill use?

Create Skill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Skill use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Skill?

Skills that share tags, products or a category with Create Skill: CLI-Anything for Codex (HKUDS/CLI-Anything, 52k stars), Bmad Builder (aj-geddes/claude-code-bmad-skills, 487 stars), Claude Code Plugin Structure (anthropics/claude-plugins-official, 37k stars) and Scaffold (codewithmukesh/dotnet-claude-kit, 751 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Skill?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,568 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on October 7, 2026.

Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.