Official agent skill

Triage

by dotnet in dotnet/efcore

A skill your agent uses to triage an incoming issue on the EF Core repo (bug report or feature request).

OfficialMITAuto-check passedTesting & QA

Install Triage

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

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

GitHub CLI
$ gh skill install dotnet/efcore triage --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/efcore.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/triage .claude/skills/triage && 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
triage
GitHub stars
15k
Token cost
~2.2k tokens
SKILL.md length
1,212 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses to triage an incoming issue on the EF Core repo (bug report or feature request).

  • Works in 7 steps: Read the issue in question and any… → Assess whether the issue involves any… → Determine whether the issue is a feature… → …
  • Triage an incoming issue on the EF Core repo (bug report
  • SKILL.md covers High-level steps, Area labels, Creating a minimal repro and Posting your findings
  • Calls gh

What it does

Triage is an agent skill from dotnet/efcore, published by the product's own GitHub organization. Use this skill to triage an incoming issue on the EF Core repo (bug report or feature request). Sets the issue type (bug/feature), assigns EF area labels, attempts to arrive at a minimal repro reproducing the bug, checks whether it represents a regression, finds possible duplicates, etc.

Its SKILL.md is about 2.2k 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 Testing & QA, covering QA and bug reports. The repository describes itself as: EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations. The licence is MIT.

When your agent uses it

  • Triage an incoming issue on the EF Core repo (bug report
  • Feature request)

Example prompts

  • “/triage”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Read the issue in question and any linked issues/code/resources.
  2. Assess whether the issue involves any sort of security concern. If it does, either because the reporting user claims so, or because you…
  3. Determine whether the issue is a feature or bug, and set the GitHub issue type accordingly.
  4. Determine what area of EF the issue relates to, and apply area labels to the GitHub issue accordingly (see below for more details).
  5. Produce a minimal repro
  6. Try to find possible duplicate issues - opened or closed - in the EF Core repo (https://github.com/dotnet/efcore), and include the likely…
  7. Post your final report as a comment on the issue being triaged.

What it can do on your machine

Read from SKILL.md and the folder at commit 7adff35. 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:

    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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

Triage loads about 2.2k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,212 words of instructions outside code blocks.

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

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/efcore at commit 7adff35, republished under its MIT licence (© dotnet). 1,212 words, ~2,174 tokens.

Download SKILL.mdSave it as .claude/skills/triage/SKILL.md (or your agent's skills folder).
name
triage
description
Use this skill to triage an incoming issue on the EF Core repo (bug report or feature request). Sets the issue type (bug/feature), assigns EF area labels, attempts to arrive at a minimal repro reproducing the bug, checks whether it represents a regression, finds possible duplicates, etc.

EF Issue Triage

This skill covers triaging and reproducing incoming issues on the Entity Framework Core repository. To do so, read the issue in question (provided as input in the prompt), as well as any linked issues/code/resources, apply appropriate classifications and assignments, and for alleged bugs, try to arrive at a minimal repro. User-submitted bug reports frequently provide only fragmentary information and code snippets, forcing you to try to fill in the missing information in the effort to create a minimal repro; valuable information is frequently provided in free-form text, which you need to integrate into the repro as code.

High-level steps

  1. Read the issue in question and any linked issues/code/resources.
  2. Assess whether the issue involves any sort of security concern. If it does, either because the reporting user claims so, or because you suspect there might be a security aspect that the reporting user hasn't mentioned, exit immediately. Do not continue processing or post anything on issues which may involve any sort of security aspect.
  3. Determine whether the issue is a feature or bug, and set the GitHub issue type accordingly.
  4. Determine what area of EF the issue relates to, and apply area labels to the GitHub issue accordingly (see below for more details).
  5. Produce a minimal repro
    1. If the issue was determined to be a feature request, skip the minimal repro in this step; continue with the remaining triage steps (duplicate search and final report).
    2. If, on the other hand, the issue was determined to be a bug report, attempt to produce a minimal repro as a console program which confirms that the bug is genuine. See "Creating a minimal repro" below for instructions.
    3. If you've managed to confirm a bug in your repro, test your repro on both the failing version and the previous working version. Provide clear feedback confirming or refuting the fact that the reported issue is a regression.
  6. Try to find possible duplicate issues - opened or closed - in the EF Core repo (https://github.com/dotnet/efcore), and include the likely candidates in your final report.
  7. Post your final report as a comment on the issue being triaged.

Area labels

The EF repo contains a set of "area" labels that express which part of EF is affected. Area labels always start with an area- prefix. You can see the canonical list of area labels at https://github.com/dotnet/efcore/labels?q=area-, or fetch them using the GitHub CLI with gh label list --search "area-" --repo dotnet/efcore.

  • If an issue affects only a specific provider, make sure to add the label corresponding to that provider (e.g. area-sqlserver, area-cosmos...). However, if an issue affects all providers, do not add provider labels.
  • The same issue can have multiple labels when relevant. For example, a Cosmos query bug should have both area-cosmos and area-query.

Creating a minimal repro

The minimal repro should be created as a completely separate console program, outside of the EF repo. Use the following as your starting point:

csharp
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;

await using var context = new TestContext();
await context.Database.EnsureDeletedAsync();
await context.Database.EnsureCreatedAsync();

public class TestContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder
            // Modify the following line to switch EF providers
            .UseSqlServer(Environment.GetEnvironmentVariable("Test__SqlServer__DefaultConnection"))
            .LogTo(Console.WriteLine, LogLevel.Information)
            .EnableSensitiveDataLogging();

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

public class Blog
{
    public int Id { get; set; }
    public string Name { get; set; }
}
  • Try to integrate the user's code into the minimal template, incorporating any textual instructions from the issue, or clues that you can glean.
  • At the end of the process, the minimal repro should compile and execute, and reproduce the user's reported error.
  • The program should use code that's as close as possible to the user-reported code, including type/property naming and things that seem irrelevant.
Database providers used in the bug report and repro
  • We're ideally looking for a repro using SQL Server (or, as a fallback, using SQLite), which are the built-in EF providers; these are easiest to investigate and reproduce. So reproducing on SQL Server should be your starting point.
  • However, if the bug isn't immediately reproducible on SQL Server/SQLite, it may require a different database; check the issue report for the reported database, or try to infer from the textual description what database the user is using. Then, attempt to reproduce the bug on that database. If you've managed to repro a problem on a provider other than SQL Server, please attempt to port the repro back to SQL Server, as that's the easiest built-in provider to diagnose/debug on. When doing this, you need to see the same error/exception on SQL Server as on the non-SQL Server provider, otherwise that may be showing a different issue. This would also confirm whether the bug is specific to e.g. the PostgreSQL provider, or a general EF Core bug.
  • Some databases (PostgreSQL, MySQL) should already be installed on the github runner image which you're running - but you may still need to bring them up. Others may require bringing in a testcontainer to run the repro against.
  • Pay attention to the EF provider version being used, as the bug may be specific to the version reported by the user. Once you have a working repro, try other, newer versions to confirm where the bug still occurs, and whether it has already been fixed.
  • Once you've pinned down a provider to repro on (ideally SQL Server), do not keep code for multiple providers - the repro should only have code to repro on a single provider.
Show full SKILL.md (365 more words)Show less
Make the repro as minimal as possible

Once you've managed to reproduce the bug, work to make the repro as minimal as possible, removing any code that isn't absolutely necessary to triggering the bug:

  • If the repro includes a LINQ query, try to remove any irrelevant LINQ operators from that query, as long as the error continues to reproduce.
  • If the repro makes use of AutoMapper, attempt to remove it, reproducing the raw LINQ query which Automapper produces.
  • If the repro is a query translation issue and does not actually require seed data to reproduce, remove any seeding as well, keeping only the query.
  • Do not include any non-necessary Console.WriteLine, banners, comments, summaries or other long-form text inside the code to explain what's going on. Add minimal one-line comments at most, and only where they're really necessary to follow a complicated flow or document results of calls; otherwise no comments are necessary.
  • Do not encapsulate code in functions unless really necessary - prefer a simple, minimal function-less program with only top-level statements.
  • Do not catch exceptions in order to convert them to a friendlier message; just allow them to bubble up and terminate the program.
  • However, leave the LogTo code that ensures that SQL gets logged to the console for diagnostics.
  • Do DbContext configuration within the OnConfiguring method of the DbContext type, rather than building the options externally and passing them to the constructor. Avoid any sort of DI unless it's necessary to reproducing the bug.
  • In general, the less lines of code, the better.

Posting your findings

  • Post your findings on the triaged issue as a comment.
  • The comment should begin with a first-level heading with the text "AI Triage", followed by the sentence "The below is an AI-generated analysis and may contain inaccuracies."
  • If there's a minimal repro, its source code should be contained within the posted comment, wrapped inside a collapsible HTML <details> block, to not take up too much space (the summary should be "minimal repro").
  • In your response, make sure that all links to issues, pull requests or source files are to the repo on github.com, and not local (e.g. file:// or vscode://) links, as your answer will be posted online.

© 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/triage of dotnet/efcore.

Open the folder on GitHubat commit 7adff35

Compare with similar skills

Triage 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.

Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Triage this skilldotnet/efcore15k—~2.2kAutomated safety check: PassMIT
Reproduce Chat Statesdifferent-ai/openwork24k—~673Automated safety check: PassCustom licence
Dynamo Jira TicketDynamoDS/Dynamo2k—~1.1kAutomated safety check: PassApache-2.0
Minimal Run And Auditlllllllama/RigorPilot-Skills4972 repos~691Automated safety check: PassMIT
Moav E2EMotherofallVPNs/MoaV448—~1.9kAutomated safety check: NotesMIT
Creating A Coral TaskHuman-Agent-Society/CORAL1k—~2.2kAutomated safety check: PassApache-2.0

Similar skills

  • Reproduce Chat States

    different-ai/openwork

    Fires known chat states in the running OpenWork desktop app, such as provider errors, retries and tool steps, so you can check how each renders.

    24k GitHub stars~673 tokensUpdated today
    Testing & QAAuto-check passed
  • Dynamo Jira Ticket

    DynamoDS/Dynamo

    Create structured Jira tickets for Dynamo from bug reports, failing tests, or feature requests.

    2k GitHub stars~1.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Minimal Run And Audit

    lllllllama/RigorPilot-Skills

    Rigor Run skill for README-first deep learning repo reproduction.

    497 GitHub starsUsed in 2 repos~691 tokens
    Testing & QAAuto-check passed
  • Moav E2E

    MotherofallVPNs/MoaV

    Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.

    448 GitHub stars~1.9k tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Creating A Coral Task

    Human-Agent-Society/CORAL

    Author a new CORAL task — the three pieces that must line up (task.yaml, seed/, a packaged grader/), the coral init → coral validate → smoke-test loop, and how to pick a grader pattern (stdout…

    1k GitHub stars~2.2k tokensUpdated 29 days ago
    Testing & QAAuto-check passed
  • Launch Rl

    marin-community/marin

    Define, validate, submit, or restart a Marin SkyRL experiment through its artifact main.

    3.9k GitHub stars~894 tokensUpdated today
    Testing & QAAuto-check passed

More from dotnet/efcore

All 17 skills in this repo
  • Make Skill

    dotnet/efcore

    Official

    Create and evaluate new Agent Skills for GitHub Copilot. An agent skill from dotnet/efcore.

    15k GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Make Custom Agent

    dotnet/efcore

    Official

    Create custom GitHub Copilot agents. An agent skill from dotnet/efcore.

    15k GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Official

    Create GitHub Actions workflows for CI, automation, or PR management.

    15k GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Make Instructions

    dotnet/efcore

    Official

    Create and evaluate VS Code file-based instructions (.instructions.md files).

    15k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Model Building

    dotnet/efcore

    Official

    Implementation details for EF Core model building. An agent skill from dotnet/efcore.

    15k GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Run Apichief

    dotnet/efcore

    Official

    Run ApiChief in the EF Core repo to emit baselines, summaries, deltas, review files, or breaking-change checks.

    15k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Triage

What does Triage do?

A skill your agent uses to triage an incoming issue on the EF Core repo (bug report or feature request). Triage is an agent skill from dotnet/efcore, published by the product's own GitHub organization. Use this skill to triage an incoming issue on the EF Core repo (bug report or feature request).

When should I use Triage?

Triage fits situations like: triage an incoming issue on the EF Core repo (bug report; feature request).

How do I install Triage in Claude Code?

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

How do I install Triage in Codex?

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

Can I use Triage 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/efcore --skill triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage, .gemini/skills/triage, .github/skills/triage and .opencode/skills/triage in your project.

What does Triage need to run?

Going by SKILL.md and its folder, Triage needs the command-line tools its instructions call (gh).

Does Triage access the network?

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

Is Triage 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 Triage use?

Triage 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 Triage use?

About 2.2k tokens (SKILL.md is roughly 8.7k 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 Triage?

Skills that share tags, products or a category with Triage: Reproduce Chat States (different-ai/openwork, 24k stars), Dynamo Jira Ticket (DynamoDS/Dynamo, 2k stars), Minimal Run And Audit (lllllllama/RigorPilot-Skills, 497 stars) and Moav E2E (MotherofallVPNs/MoaV, 448 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Triage?

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

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