Official agent skill

Create Skill Test

by dotnet in dotnet/skills

Scaffolds eval.yaml evaluation specs for agent skills in the dotnet/skills repository.

OfficialMITAuto-check passedEducation

Install Create Skill Test

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

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

GitHub CLI
$ gh skill install dotnet/skills create-skill-test --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-test .claude/skills/create-skill-test && 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-test
GitHub stars
5.6k
Used in
1 other repo
Token cost
~5.7k tokens
SKILL.md length
2,710 words
Files
1
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Scaffolds eval.yaml evaluation specs for agent skills in the dotnet/skills repository.

  • Works in 10 steps: Prove the eval belongs to the target → Write the spec skeleton → Size the eval for power before writing… → …
  • Creating skill tests
  • SKILL.md covers When to Use, When Not to Use, Inputs and Workflow, plus 2 more sections
  • Calls dotnet, git and python

What it does

Create Skill Test is an agent skill from dotnet/skills, published by the product's own GitHub organization. Scaffolds eval.yaml evaluation specs for agent skills in the dotnet/skills repository. Use when creating skill tests, writing evaluation stimuli, defining graders and rubrics, sizing an eval for statistical power, or setting up test fixture files. Handles the Vally eval.yaml schema, fixture organization, and overfitting avoidance. Do not use for running or debugging existing evals (use improve-skill-quality) nor for skills authoring (use create-skill).

Its SKILL.md is about 5.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 Education, covering Quizzes and assessments, Project scaffolding and Test data and fixtures. 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 skill tests
  • Writing evaluation stimuli
  • Defining graders and rubrics
  • Sizing an eval for statistical power

Example prompts

  • “Use the create-skill-test skill to scaffold eval.yaml evaluation specs for agent skills in the dotnet/skills repository”
  • “/create-skill-test”

Workflow steps

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

  1. Prove the eval belongs to the target
  2. Write the spec skeleton
  3. Size the eval for power before writing content
  4. Write stimuli
  5. Configure the environment
  6. Write graders
  7. Write rubric items
  8. Add constraints sparingly
  9. Add dormancy guards
  10. Validate

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
    • git
    • python

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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 Test loads about 5.7k tokens when it runs. Until then it costs about 119 tokens; SKILL.md has 2,710 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~119
When it runs · the whole SKILL.md, loaded when a task matches
~5.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). 2,710 words, ~5,704 tokens.

Download SKILL.mdSave it as .claude/skills/create-skill-test/SKILL.md (or your agent's skills folder).
name
create-skill-test
description
Scaffolds eval.yaml evaluation specs for agent skills in the dotnet/skills repository. Use when creating skill tests, writing evaluation stimuli, defining graders and rubrics, sizing an eval for statistical power, or setting up test fixture files. Handles the Vally eval.yaml schema, fixture organization, and overfitting avoidance. Do not use for running or debugging existing evals (use improve-skill-quality) nor for skills authoring (use create-skill).

Create Skill Test

Scaffold an evaluation spec (eval.yaml) for a skill or agent so it conforms to the Vally schema, passes skill-validator check and check_eval_quality.py, is powerful enough to return a verdict, and does not overfit to the skill's own wording.

When to Use

  • Creating a new eval.yaml for a skill or agent
  • Adding stimuli to an existing eval
  • Sizing an eval so the pass gate can actually be reached
  • Setting up or repairing fixture files alongside an eval
  • Reviewing whether rubric items and graders risk overfitting

When Not to Use

  • Diagnosing a failing or regressed eval — use improve-skill-quality
  • Modifying the skill-validator or the evaluation workflows
  • Creating or editing SKILL.md files — use create-skill

Inputs

InputRequiredDescription
Skill or agent nameYesMust exist under plugins/<plugin>/skills/ or plugins/<plugin>/agents/
Plugin nameYese.g. dotnet-msbuild
Skill contentYesRead it — you cannot write non-overfitted rubric items without it
Scenario hypothesisYesState the expected improvement for a preference case, or the invariant protected by a guard
Failure modes to discriminateRecommendedEach becomes one distinct stimulus

Workflow

Step 1: Prove the eval belongs to the target

Before writing YAML, state what the stimulus proves. A preference stimulus is necessary when the target should improve the answer, action, restraint, or validation result compared with the same model without the target. A non-voting activation contract or no-op guard is necessary when it protects a meaningful invariant, even if correct behavior is baseline-equivalent.

Do not add a stimulus when it measures:

  • generic knowledge the base model already has;
  • path recall for a skill that only points to reference files;
  • output volume rather than correctness;
  • a renamed or lightly reworded copy of an existing case; or
  • a disable-model-invocation: true reference skill in isolation.

Map each proposed case to capability, risk, and customer journey tags. Preference cases must add distinct voting value. Activation contracts and no-op guards may share a capability when they protect a separate routing or preservation invariant. If two cases have the same inputs, expected outcome, failure mode, and grader path, keep the stronger one. The five-stimulus floor never justifies padding.

Then locate the target and test directory:

text
tests/<plugin>/<skill-name>/eval.yaml          # skills
tests/<plugin>/agent.<agent-name>/eval.yaml    # agents (the agent. prefix disambiguates)

Verify the target exists at plugins/<plugin>/skills/<skill-name>/SKILL.md or plugins/<plugin>/agents/<agent-name>.agent.md, and read it.

Agent evals use the native SDK agent lane. Vally 0.14 cannot register custom agents, so agent.* specs do not run through the skill experiment. The evaluation workflow discovers them separately, runs the target agent through skill-validator evaluate, and adapts that evidence into the same schema-versioned result and dashboard pipeline. The distinct-stimulus floor applies to both skill and agent evals.

Be careful with a skill that sets disable-model-invocation: true. The model cannot invoke it, so the skill is absent from the model-facing skilled arm and any direct eval compares two identical arms. Answer-content graders do not create a difference between those arms. The honest coverage for such skills is dependency-level — through the outcome evals of the skills that load them, and through the plugin arm. For example, filter-syntax is covered by the filtered-command scenarios in tests/dotnet-test/run-tests/eval.yaml.

Step 2: Write the spec skeleton

The spec is Vally format. Every eval in this repo uses stimuli: and graders:; scenarios: and assertions: are a pre-Vally format that no longer loads.

yaml
name: <skill-name>
description: Evaluates the <plugin>/<skill-name> skill
type: capability
defaults:
  timeout: 5m
  runs: 1
stimuli:
  - name: <what the agent must accomplish>
    prompt: <natural developer request>
    tags:
      capability: <distinct-capability>
      risk: <failure-being-prevented>
      journey: <customer-task>
    environment:
      files:
        - src: fixtures/<case>/Project.csproj
          dest: Project.csproj
    graders:
      - type: output-matches
        config:
          pattern: (root cause|underlying issue)
      - type: exit-success
      - type: prompt
    rubric:
      - <outcome the agent should have reached>

Use defaults: only. config: is a deprecated alias that the repository gate rejects. Vally warns when the alias appears alone and throws when a spec declares both keys. Replace config: with one defaults: block and preserve its settings.

Step 3: Size the eval for power before writing content

The gate gives each distinct stimulus one vote. Repeated runs for one stimulus collapse to one majority-direction vote and remain available as reliability evidence.

  1. Distinct stimuli ≥ 5, else the verdict is underpowered — never a pass, never a regression.
  2. p ≤ 0.05 on an exact one-sided sign test over discordant (non-tie) stimulus votes. Ties are not discarded; they hold the discordant count down.
discordant stimulus votesrecords that passp
≤ 4none≥ 0.0625
5–7zero losses only (5W/0L)0.031
8one loss survivable (7W/1L)0.035

At exactly 5 stimuli, one tie is fatal because it leaves 4 discordant votes. At 6 stimuli one tie is survivable; at 7, up to two are. A loss is not. Five is an eligibility floor, not adequate power. For example, 80% power needs 8 discordant votes only for a true 90% conditional win rate; it needs 18 at 80%, 37 at 70%, and 158 at 60%. Size for the effect and tie rate you need to detect.

Use runs for reliability, not task breadth. Vally recommends 3 runs in CI and 5–10 nightly for pass rate, pass@k, pass^k, and flakiness. Extra runs never clear the five-stimulus floor.

Do not set runs in dotnet-skills.experiment.yaml; experiment overrides overwrite every eval's own value rather than defaulting it.

Step 4: Write stimuli
  • Name describes what is tested, not how.
  • Prompt is a natural developer request. Never mention the skill, the agent, or its vocabulary — cued prompts inflate the overfit score and bias the baseline.
  • Each stimulus should discriminate a different property of the skill. Five stimuli covering one property give arithmetic, not evidence.
  • Give every capability stimulus non-empty capability, risk, and journey tags. Use stable lowercase kebab-case values. A useful portfolio crosses distinct rows or columns in that matrix; it does not repeat one journey with cosmetic wording changes.
  • Give every stimulus a stable, unique name. Vally pairs comparison trajectories by (stimulus name, trial index); duplicate names make slot identity ambiguous.
  • Include a boundary / no-op stimulus for any skill that migrates or rewrites code, proving it leaves already-correct input alone.
  • Add a dormancy stimulus for each real routing boundary. No-op proves restraint on an on-target, already-correct input; dormancy proves the target stays inactive on an off-target request.
Step 5: Configure the environment
yaml
environment:
  files:
    - src: fixtures/broken-build/App.csproj      # path relative to eval.yaml
      dest: App.csproj                           # path in the agent's working directory
    - src: fixtures/broken-build                 # a directory
      dest: .
  commands:
    - dotnet build -bl || exit 0                 # guard intentional failures

Do not set environment.skills in a skill eval. The experiment declares vary: /environment/skills and supplies the value itself — [] for the baseline arm and plugins/<plugin>/skills/<skill> for the skilled arm — so anything the eval declares is replaced, in every arm. It cannot add a skill to one arm only. environment.skills is meaningful in an agent.* eval; the native agent lane loads those entries only in the isolated target run, while the plugin run loads the production plugin's complete skill surface. Copy the shape from an existing agent eval such as tests/dotnet-test/agent.test-quality-auditor/eval.yaml rather than reproducing a remembered form — the specs in this repo are not consistent about how they spell those entries.

Fixture rules — each one has already cost a real result:

  • Every referenced fixture must be tracked by git. .gitignore (e.g. coverage*.xml) has silently swallowed a committed fixture: the eval passed locally and failed at setup in CI. Verify with git ls-files, not by looking at the working tree.
  • Every fixture must behave as its stimulus assumes. A fixture meant to be healthy must build; a fixture meant to be broken must fail for the exact reason the stimulus is about, and no other. Judges penalize agents for unrelated "pre-existing build issues" that the fixture author introduced.
  • Every fixture must reproduce the bug its stimulus is named for. If it does not, the baseline scores well and the skill has nothing to add.
  • Coverage fixtures must be internally consistent. A Cobertura report whose declared line-rate, summary totals (lines-covered/lines-valid), and <line> elements disagree lets the two arms read different truths, and the loss is the fixture's fault. Update any rubric item or prompt that quotes a figure in the same change.
  • Do not wire duplicate fixtures to raise n; rename leftovers add trials without evidence.
  • A setup command that is expected to fail while still producing its artifact must be guarded (|| exit 0), or vally drops the trial.
  • A cleanup command that strips sources must skip directories containing SKILL.md — the staged skill lives there, and deleting it aborts only the skilled arm.
  • Preserve the complete file set. When the prompt limits edits or requires source/test preservation, snapshot or compare every in-scope file, not one representative file. A grader that checks only the main output can miss deletion, truncation, or edits to sibling files.
Step 6: Write graders

Graders are hard pass/fail checks evaluated on every arm.

TypeRequired configPurpose
output-matches / output-not-matchespatternRegex over agent output
output-contains / output-not-containssubstringLiteral text in output
file-exists / file-not-existspathGlob against the work directory
file-contains / file-not-containspath, valueContent of a produced file
run-commandcommand (plus optional expected_exit_code, timeout, stdout_matches)Verify produced code actually builds/runs
exit-success—Agent produced non-empty output
prompt—Runs the LLM judge against the rubric

Rules:

  • A grader whose config is absent or missing its required key parses fine and enforces nothing. The usual cause is an indentation slip during an edit; check_eval_quality.py blocks it.
  • Prefer broad patterns that several valid approaches satisfy: (root cause|primary error|underlying issue).
  • If the skill mandates an output shape, assert on it. A skill required to emit a decisive Recommendation: line can silently stop doing so while the eval still passes.
  • Use file-not-contains / file-not-exists to prove the agent avoided an incorrect action.

Define the deterministic contract before writing the prompt grader:

  1. Golden acceptance: materialize the fixture and apply the golden_patch, if any. The golden workspace and final golden_trajectory response must pass every deterministic grader that applies to them.
  2. Mutation rejection: make one realistic defect that the eval exists to catch, such as a missing file, zero discovered tests, an out-of-scope edit, or a changed semantic value. The relevant deterministic grader must fail.
  3. Complete-state check: cover all files and artifacts named by the request. Do not accept a partial artifact because one positive substring exists.

Use golden_patch for replayable workspace state and golden_trajectory for the expected final response. A narrated edit, build, or test is not proof: completion claims need a patch or a run-command grader that replays the evidence.

Show full SKILL.md (1,092 more words)Show less
Step 7: Write rubric items

Rubric items are judged pairwise (baseline vs. skilled). The overfitting judge classifies each item:

ClassificationDescriptionGoal
outcomeWhether the agent reached a correct result — WHAT, not HOWTarget this
techniqueWhether the agent used a skill-specific procedureMinimize
vocabularyWhether the agent used the skill's terminologyAvoid
  1. Test outcomes, not methods: "Identified the root cause of the build failure", not "Replayed the binlog using dotnet build /flp".
  2. Accept any valid approach.
  3. Never reference the skill by name, and never reuse SKILL.md phrasing.
  4. Never reward using the skill — the harness reports activation separately, so a rubric item that does this measures nothing and inflates the overfit score.
  5. Do not test knowledge the model already has; it adds no delta.
  6. Keep each item independently evaluable.
  7. Do not reward raw volume (test count, report length); judges will compare it when both arms act.

Good:

yaml
rubric:
  - Correctly identified the missing NuGet package as the root cause of the build failure
  - Recognized that downstream failures cascaded from that root cause
  - Suggested a concrete fix that resolves it

Overfitted:

yaml
rubric:
  - Replayed the binary log using 'dotnet build /flp:v=diag'   # technique
  - Measured cold, warm, and no-op build scenarios             # vocabulary
  - Used the template-comparison skill                         # rewards activation
Step 8: Add constraints sparingly
yaml
constraints:
  expect_tools: [bash]
  reject_tools: [edit, create]
  reject_skills: [some-skill]
  • expect_tools: [bash] on an advisory question forces a restore or build and converts an answer into a timeout with no quality benefit. Only require tools when the task genuinely needs them.
  • reject_tools is the right way to keep a read-only stimulus read-only.
Step 9: Add dormancy guards

A dormancy guard proves the skill stays dormant on an off-target request that superficially matches it. Add one per real "when not to use" boundary: wrong input format, out-of-scope request, incompatible project type, wrong framework version, prerequisite absent.

yaml
  - name: Decline dump analysis request
    prompt: |
      I already have a .dmp crash dump from my .NET app. Can you help me
      analyze it to find the root cause of the crash?
    expect_activation: false
    graders:
      - type: output-matches
        config:
          pattern: (out of scope|not cover|does not|cannot|only.*collect)
      - type: prompt
    rubric:
      - Stated that dump analysis is out of scope
      - Did not open or analyze the dump file
      - Did not install analysis tools such as dotnet-dump analyze, lldb, or windbg
      - Suggested the correct alternative

Never combine expect_activation: false with constraints.reject_skills. That forces the skilled arm to run skill-free, so the harness cannot observe whether the target skill hijacks the request. The comparison remains visible as report-only evidence but does not vote in preference; unexpected isolated activation blocks a pass. expect_activation: false alone is the repo convention.

Guard rubrics verify three things: recognition (why it does not apply), restraint (no workflow, no file changes, no installs), redirection (the correct next step).

Step 10: Validate
bash
dotnet run --project eng/skill-validator/src/SkillValidator.csproj -- check --plugin ./plugins/<plugin>
python eng/eval-quality/check_eval_quality.py
./eng/run-skill-evals.sh <plugin> <skill-name>

For an agent eval, exercise the native lane directly:

bash
dotnet run --project eng/skill-validator/src/SkillValidator.csproj -- evaluate \
  plugins/<plugin>/agents/<agent>.agent.md \
  --tests-dir tests/<plugin> \
  --runs 1 \
  --verdict-warn-only

CI adapts this result through eng/vally-adapter/adapt-agent-results.mjs, which applies the same distinct-stimulus sign-test policy used by skill results.

Validation must cover four layers:

  1. Deterministic structure: run check_eval_quality.py and the relevant checker self-tests when the checker changes.
  2. Production parsing and golden replay: run skill evals through the repository's Vally entry point. For agent evals, run skill-validator evaluate to prove the native SDK lane accepts the executable scenario fields. That parser does not read golden_trajectory or golden_patch, so validate the references separately: run check_eval_quality.py, then materialize the fixture, apply the golden patch, and run every applicable deterministic file and command grader against the golden workspace. Confirm the final golden response passes its output graders.
  3. Normal execution: use the normal worker concurrency and the declared defaults.timeout. Do not certify an eval only with one worker or a larger ad hoc time budget. If normal concurrency exposes a race or timeout, classify it as reliability evidence.
  4. Cross-family sensitivity: for broad routing or behavior changes, evaluate at least one GPT family and one Claude family executor. Report each result separately. Different executor or judge families do not increase the independent stimulus count.

check_eval_quality.py blocks 22 structural defect classes that can corrupt a result: missing or untracked fixtures, self-contradicting coverage fixtures, empty grader configs, dormancy guards with reject_skills, sub-floor stimulus counts, duplicate YAML keys or stimulus names, and invalid defaults, tags, golden evidence, test commands, or ATIF trajectories. See eng/eval-quality/README.md for the complete list. Do not add a new eval to eng/eval-quality/underpowered-allowlist.txt — the gate rejects allowlist entries that are new relative to the base branch.

For the official run, submit a PR review containing /evaluate so it binds to the reviewed commit.

Validation Checklist

  • Directory is tests/<plugin>/<skill-name>/ or tests/<plugin>/agent.<agent-name>/
  • Spec uses stimuli: / graders: and the current defaults: settings block
  • At least 5 preference-eligible distinct stimuli exist; dormancy contracts do not count toward this floor
  • Every stimulus is necessary and fits the target; each preference case adds distinct voting value
  • Each capability stimulus has stable capability, risk, and journey tags and a unique name
  • Prompts never name the skill, the agent, or its vocabulary
  • Every referenced fixture exists and is tracked by git ls-files
  • Every fixture behaves as its stimulus assumes — healthy ones build, deliberately broken ones fail only for the stated reason
  • Preservation and scope graders cover the complete in-scope file set
  • Every grader has its required config key
  • Any output shape the skill mandates has a grader
  • Golden evidence passes deterministic graders, and a realistic mutation fails them
  • Rubric items are outcome-shaped and never reward using the skill
  • Rewrite skills have a no-op case; routing boundaries use expect_activation: false alone
  • The production runner accepts the executable spec and completes under normal concurrency and time limits
  • Golden references pass the standalone checker and deterministic replay
  • Broad routing or behavior changes have separate GPT-family and Claude-family evidence
  • skill-validator check and check_eval_quality.py pass

Common Pitfalls

PitfallSolution
Writing scenarios: / assertions:That format no longer loads; use stimuli: / graders:
Using the deprecated top-level config: aliasRename it to defaults: and preserve its settings
Landing an eval at exactly 5 stimuliA single tie makes a pass unreachable; size for the effect and tie rate
Raising runs to clear the floorRepeats measure reliability for one task; add stimuli
Prompt mentions the skill or agent by nameRewrite as a natural developer request
Rubric rewards using the skillDrop the item — the harness reports activation separately; rubrics measure outcomes
Fixture present but ignored by gitVerify with git ls-files; CI setup will fail otherwise
Fixture that does not build, or breaks for the wrong reasonFix the fixture before blaming the skill
Dormancy guard with reject_skillsUse expect_activation: false alone
expect_tools: [bash] on an advisory questionDrop it; it causes timeouts, not quality
Timeout too short for code generationUse ~360s; empty output fails every grader
Duplicate YAML key left behind by an editIt overwrites the next stimulus field by field — delete the stray block
Duplicate stimulus namesVally uses names as comparison identity — give every stimulus a stable, unique name
Direct eval for a disable-model-invocation: true skillRemove it and cover the reference through consumer outcomes
Agent eval below the stimulus floorThe native agent adapter uses the same sign-test gate; add independent preference-eligible stimuli
Agent eval "run" with ./eng/run-skill-evals.shThat helper remains skill-only; use skill-validator evaluate
Agent eval missing environment.skillsDeclare the skills the agent routes to, or it cannot invoke them
environment.skills set in a skill evalThe experiment varies that key and replaces it in every arm; the declaration does nothing

© 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-test 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 Test 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 Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Skill Test this skilldotnet/skills5.6k1 repos~5.7kAutomated safety check: PassMIT
Comment Judgefmflurry/settings-opencode171—~2.5kAutomated safety check: PassMIT
Woo AI Smokewoocommerce/woocommerce-ios3581 repos~7.4kAutomated safety check: NotesGPL-2.0
Scaffolding Oracle To Postgres Migration Test Projectgithub/awesome-copilot40k—~687Automated safety check: PassMIT
Scaffolding Oracle To Postgres Migration Test Projectboshi-xixixi/TraeSkill274—~632Automated safety check: PassMIT
Task Creatorbenchflow-ai/benchflow353—~4.5kAutomated safety check: PassApache-2.0

Similar skills

  • Comment Judge

    fmflurry/settings-opencode

    LLM-as-a-judge rubric for code comments (forbidden, false, stale, narration, noise, keep).

    171 GitHub stars~2.5k tokensUpdated 2 days ago
    EducationAuto-check passed
  • Woo AI Smoke

    woocommerce/woocommerce-ios

    Evaluate WooAIAssistant against a structured scenario suite with hard invariants + LLM-as-judge rubric scoring.

    358 GitHub starsUsed in 1 repo~7.4k tokens
    EducationAuto-check: notes
  • Scaffolds an xUnit integration test project for validating Oracle-to-PostgreSQL database migration behavior in .NET solutions.

    274 GitHub stars~632 tokensUpdated 4 mo ago
    Testing & QAAuto-check passed
  • Task Creator

    benchflow-ai/benchflow

    SkillsBench task authoring — walk a contributor from idea to submission-ready task following CONTRIBUTING.md and the task-implementation rubric.

    353 GitHub stars~4.5k tokensUpdated yesterday
    EducationAuto-check passed
  • Create Custom Grader

    NVIDIA/SkillEvaluator

    Official

    A skill your agent uses when converting an existing benchmark, rubric, verifier, task YAML/JSON, or domain check into SkillEvaluator BYOG/BYOT custom evaluation.

    544 GitHub stars~2.1k tokensUpdated today
    EducationAuto-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 Test

What does Create Skill Test do?

Scaffolds eval.yaml evaluation specs for agent skills in the dotnet/skills repository. Create Skill Test is an agent skill from dotnet/skills, published by the product's own GitHub organization.yaml evaluation specs for agent skills in the dotnet/skills repository.

When should I use Create Skill Test?

Create Skill Test fits situations like: creating skill tests; writing evaluation stimuli; defining graders and rubrics; sizing an eval for statistical power.

How do I install Create Skill Test in Claude Code?

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

How do I install Create Skill Test in Codex?

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

Can I use Create Skill Test 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-test -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-test, .gemini/skills/create-skill-test, .github/skills/create-skill-test and .opencode/skills/create-skill-test in your project.

What does Create Skill Test need to run?

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

Does Create Skill Test access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Create Skill Test 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 Test use?

Create Skill Test 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 Test use?

About 5.7k tokens (SKILL.md is roughly 23k 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 Test?

Skills that share tags, products or a category with Create Skill Test: Comment Judge (fmflurry/settings-opencode, 171 stars), Woo AI Smoke (woocommerce/woocommerce-ios, 358 stars), Scaffolding Oracle To Postgres Migration Test Project (github/awesome-copilot, 40k stars) and Scaffolding Oracle To Postgres Migration Test Project (boshi-xixixi/TraeSkill, 274 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Skill Test?

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.