[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-dotnet-code-testing-agent":3,"mdc--tpagvz-key":31,"related-repo-dotnet-code-testing-agent":988,"related-org-dotnet-code-testing-agent":1096},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":23,"topics":24,"repo":26,"sourceUrl":29,"mdContent":30},"code-testing-agent","generate unit tests and coverage configurations","MANDATORY ENTRY POINT for generating or writing tests. Invoke this skill before editing files whenever the user asks to generate tests, write\u002Fadd unit tests, scaffold a test project or suite, improve\u002Fachieve coverage, extend an existing suite to cover an untested method, or test an app, API, service, module, library, or package. Applies to a single function, method or file as much as to a whole project — scope changes how much of the workflow runs, never whether the skill applies. Invoke it when the workspace looks sparse, gutted or partially deleted — then test only the source that remains and never restore missing source. Polyglot: C#\u002F.NET, Python, TypeScript\u002FJavaScript, Go, Rust, Java, Ruby. DO NOT USE FOR: running existing tests (use run-tests); analyzing coverage reports (use coverage-analysis or crap-score); MSTest-specific test authoring or modernization (use writing-mstest-tests).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"dotnet",".NET (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdotnet.png",[12,16],{"name":13,"slug":14,"type":15},"QA","qa","tag",{"name":17,"slug":18,"type":15},"Testing","testing",4576,"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fskills","2026-08-01T05:42:12.223326","MIT",332,[25],"agent-skills",{"repoUrl":20,"stars":19,"forks":23,"topics":27,"description":28},[25],"Repository for skills to assist AI coding agents with .NET and C#","https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fdotnet-test\u002Fskills\u002Fcode-testing-agent","---\nname: code-testing-agent\ndescription: >-\n  MANDATORY ENTRY POINT for generating or writing tests. Invoke this skill\n  before editing files whenever the user asks to generate tests, write\u002Fadd unit\n  tests, scaffold a test project or suite, improve\u002Fachieve coverage, extend an\n  existing suite to cover an untested method, or test an app, API, service,\n  module, library, or package. Applies to a single function, method or file as\n  much as to a whole project — scope changes how much of the workflow runs,\n  never whether the skill applies. Invoke it when the workspace looks sparse,\n  gutted or partially deleted — then test only the source that remains and\n  never restore missing source.\n  Polyglot: C#\u002F.NET, Python, TypeScript\u002FJavaScript, Go, Rust, Java, Ruby.\n  DO NOT USE FOR: running existing tests (use run-tests); analyzing coverage\n  reports (use coverage-analysis or crap-score); MSTest-specific test authoring\n  or modernization (use writing-mstest-tests).\nlicense: MIT\n---\n\n# Code Testing Generation Skill\n\nAn AI-powered skill that generates comprehensive, workable unit tests for any programming language using a coordinated multi-agent pipeline.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n\n- Generate unit tests for an entire project or specific files\n- Improve test coverage for existing codebases\n- Create test files that follow project conventions\n- Write tests that actually compile and pass\n- Add tests for new features or untested code\n\n## When Not to Use\n\n- Running or executing existing tests (use the `run-tests` skill)\n- Migrating between test frameworks (use migration skills)\n- Writing tests specifically for MSTest patterns (use `writing-mstest-tests`)\n- Debugging failing test logic\n\n## How It Works\n\nThis skill coordinates multiple specialized agents in a **Research → Plan → Implement** pipeline:\n\n### Pipeline Overview\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│                     TEST GENERATOR                          │\n│  Coordinates the full pipeline and manages state            │\n└─────────────────────┬───────────────────────────────────────┘\n                      │\n        ┌─────────────┼─────────────┐\n        ▼             ▼             ▼\n┌───────────┐  ┌───────────┐  ┌───────────────┐\n│ RESEARCHER│  │  PLANNER  │  │  IMPLEMENTER  │\n│           │  │           │  │               │\n│ Analyzes  │  │ Creates   │  │ Writes tests  │\n│ codebase  │→ │ phased    │→ │ per phase     │\n│           │  │ plan      │  │               │\n└───────────┘  └───────────┘  └───────┬───────┘\n                                      │\n                    ┌─────────┬───────┼───────────┐\n                    ▼         ▼       ▼           ▼\n              ┌─────────┐ ┌───────┐ ┌───────┐ ┌───────┐\n              │ BUILDER │ │TESTER │ │ FIXER │ │LINTER │\n              │         │ │       │ │       │ │       │\n              │ Compiles│ │ Runs  │ │ Fixes │ │Formats│\n              │ code    │ │ tests │ │ errors│ │ code  │\n              └─────────┘ └───────┘ └───────┘ └───────┘\n```\n\n## Step-by-Step Instructions\n\n### Step 1: Determine the user request\n\nMake sure you understand what user is asking and for what scope.\nWhen the user does not express strong requirements for test style, coverage goals, or conventions, source the guidelines from [unit-test-generation.prompt.md](unit-test-generation.prompt.md). This prompt provides best practices for discovering conventions, parameterization strategies, coverage goals (aim for 80%), and language-specific patterns.\n\n### Step 2: Size the request before invoking anything\n\nMatch the machinery to the scope. Running the full pipeline on a one-file\nrequest costs turns and tool calls without improving the tests.\n\n| Scope | What it looks like | How to run it |\n| --- | --- | --- |\n| **Focused** | One function, class, or file; \"tests for X only\"; extending an existing suite with the missing cases | Skip the `.testagent\u002F` artifacts and the sub-agent fan-out. Keep the requirement checklist in your head (or in the final table), read only the target and one neighbouring test for conventions, write the tests, run the narrowest test command, review your own assertions inline. |\n| **Broad** | A project, package, or module set; \"comprehensive suite\"; a coverage threshold to clear across several files | Run the full Research → Plan → Implement pipeline in Step 3, with the `.testagent\u002F` artifacts and the completion contract below. |\n\nWhen in doubt, start focused and escalate only if the request turns out to span\nseveral files. Escalating costs one extra pass; running the broad pipeline on a\nfocused request costs several.\n\n### Step 3: Invoke the Test Generator (broad scope)\n\nStart by calling the `code-testing-generator` agent with your test generation request:\n\n```text\nGenerate unit tests for [path or description of what to test], following the [unit-test-generation.prompt.md](unit-test-generation.prompt.md) guidelines. Treat the current workspace as authoritative even when it is sparse, gutted-looking, synthetic, or missing tracked files; never restore or reconstruct it.\n```\n\nThe Test Generator will manage the entire pipeline automatically.\n\nIf `code-testing-generator` is unavailable, do not skip the workflow. Execute the\nsame Research → Plan → Implement sequence inline, create the `.testagent\u002F`\nartifacts described below, and apply the same completion contract.\n\n### Step 4: Execute with bounded context\n\nFor multi-file requests:\n\n1. Turn every explicit user requirement into a checklist before implementation. Include requested layers, collaborators to mock, boundary cases, integrations, coverage thresholds, and report artifacts. Copy multi-condition requirements verbatim — they must each map to one test that exercises the whole combination.\n2. Research only the requested module or project and write the checklist plus a compact target inventory to `.testagent\u002Fresearch.md`.\n3. Reuse manifests, symbol references, and deterministic pairing tools instead of reading every source and test file.\n4. For multi-file scopes in C#, Python, TypeScript\u002FJavaScript, Go, Java, Rust, or Ruby, run `find-untested-sources` once and consume its pairing and suggested-path output; do not repeat that discovery manually.\n5. Plan each target file once, then implement phases sequentially. Map every checklist item to at least one concrete test or explain why it is blocked.\n6. Build and test the narrow target during fix cycles; run workspace-level validation once at the end.\n7. Before reporting success, re-open the generated tests and verify every checklist item against concrete test names and assertions. Coverage alone is not evidence that a requested mock seam, boundary, state transition, or property combination was tested.\n8. Read a language example from `code-testing-extensions` only when the repository has no representative tests and the base extension is insufficient.\n\n### Completion contract\n\nEvery scope must satisfy points 3–5 below. Points 1 and 2 are the **broad-scope**\nartifacts: on a focused request the same reasoning happens inline and no\n`.testagent\u002F` files are written.\n\nDo not report completion until all of these are true:\n\n1. *(broad scope)* `.testagent\u002Fresearch.md` records the bounded target\n   inventory, existing test conventions, and the acceptance checklist.\n2. *(broad scope)* `.testagent\u002Fplan.md` maps each checklist item to a planned\n   test or an explicit blocker.\n3. Generated tests compile and pass with the narrowest relevant test command.\n4. Every explicit user requirement is backed by a concrete test and assertion.\n   Fix missing mock seams, boundary cases, state transitions, and property\n   combinations even when coverage already passes. In the final summary, cite\n   at least one generated test name for every checklist item so completion is\n   auditable; if an item has no test to cite, keep implementing or report it as\n   blocked. For non-behavioral requirements such as scaffolding, scope limits,\n   commands, or coverage artifacts, cite the relevant file, command, or report\n   instead of forcing a test-name mapping.\n5. Review the generated tests for behavior gaps and weak assertions. On a broad\n   scope, invoke `test-gap-analysis` and `assertion-quality` when available and\n   record the findings and fixes in `.testagent\u002Fstatus.md`. On a focused scope,\n   do the equivalent review inline — re-read each generated assertion against\n   the source — without spawning extra passes.\n\nThe final response MUST include a compact `Requirement | Evidence` table.\nBehavioral rows cite exact generated test names. Non-behavioral rows cite the\nrelevant project file, validation command, or coverage report. A generic list\nof tested areas is not a substitute for requirement-by-requirement evidence.\n\n**Quote the user's requirement verbatim in each row.** When the request names a\nspecific combination — \"a case where a composite discount, regional tax, and\nweight-based shipping all apply\", \"the difference between summed and chained\ndiscounts\", \"constructor validation for every class\" — the row must cite the one\ntest that demonstrates exactly that. A test that merely exercises the same\ncollaborators does not satisfy a requirement about their interaction, and\nper-class requirements need a citation per class.\n\n**Cite a clean run, not an attempt.** The commands behind the evidence table must\nhave finished successfully: quote the final passing test summary and, when\nthresholds were requested, the per-module coverage table from a run that exited\n0. If the last coverage run exited non-zero, fix it and re-run before reporting;\nnever infer threshold clearance from a failed or partial run.\n\n## State Management\n\nBroad-scope runs store pipeline state in the `.testagent\u002F` folder. A focused\nrequest does not create these files:\n\n| File                     | Purpose                      |\n| ------------------------ | ---------------------------- |\n| `.testagent\u002Fresearch.md` | Codebase analysis results    |\n| `.testagent\u002Fplan.md`     | Phased implementation plan   |\n| `.testagent\u002Fstatus.md`   | Progress tracking (optional) |\n\n## Agent Reference\n\n| Agent                      | Purpose              |\n| -------------------------- | -------------------- |\n| `code-testing-generator`   | Coordinates pipeline |\n| `code-testing-researcher`  | Analyzes codebase    |\n| `code-testing-planner`     | Creates test plan    |\n| `code-testing-implementer` | Writes test files    |\n| `code-testing-builder`     | Compiles code        |\n| `code-testing-tester`      | Runs tests           |\n| `code-testing-fixer`       | Fixes errors         |\n| `code-testing-linter`      | Formats code         |\n\n## Requirements\n\n- Project must have a build\u002Ftest system configured\n- Testing framework should be installed (or installable)\n- VS Code with GitHub Copilot extension\n\n## Troubleshooting\n\n### Tests don't compile\n\nThe `code-testing-fixer` agent will attempt to resolve compilation errors. Check `.testagent\u002Fplan.md` for the expected test structure. Call the `code-testing-extensions` skill and read the language-specific extension file for error code references (e.g., `dotnet.md` for .NET).\n\n### Tests fail\n\nMost failures in generated tests are caused by **wrong expected values in assertions**, not production code bugs:\n\n1. Read the actual test output\n2. Read the production code to understand correct behavior\n3. Fix the assertion, not the production code\n4. Never mark tests `[Ignore]` or `[Skip]` just to make them pass\n\n### Wrong testing framework detected\n\nSpecify your preferred framework in the initial request: \"Generate Jest tests for...\"\n\n### Environment-dependent tests fail\n\nTests that depend on external services, network endpoints, specific ports, or precise timing will fail in CI environments. Focus on unit tests with mocked dependencies instead.\n\n### Build fails on full solution\n\nDuring phase implementation, build only the specific test project for speed. After all phases, run a full non-incremental workspace build to catch cross-project errors.\n",{"data":32,"body":33},{"name":4,"description":6,"license":22},{"type":34,"children":35},"root",[36,45,51,58,63,93,99,139,145,158,165,177,183,189,202,208,213,303,308,314,327,336,341,360,366,371,439,445,464,469,545,558,568,578,584,596,666,672,828,834,852,858,864,898,904,916,955,961,966,972,977,983],{"type":37,"tag":38,"props":39,"children":41},"element","h1",{"id":40},"code-testing-generation-skill",[42],{"type":43,"value":44},"text","Code Testing Generation Skill",{"type":37,"tag":46,"props":47,"children":48},"p",{},[49],{"type":43,"value":50},"An AI-powered skill that generates comprehensive, workable unit tests for any programming language using a coordinated multi-agent pipeline.",{"type":37,"tag":52,"props":53,"children":55},"h2",{"id":54},"when-to-use-this-skill",[56],{"type":43,"value":57},"When to Use This Skill",{"type":37,"tag":46,"props":59,"children":60},{},[61],{"type":43,"value":62},"Use this skill when you need to:",{"type":37,"tag":64,"props":65,"children":66},"ul",{},[67,73,78,83,88],{"type":37,"tag":68,"props":69,"children":70},"li",{},[71],{"type":43,"value":72},"Generate unit tests for an entire project or specific files",{"type":37,"tag":68,"props":74,"children":75},{},[76],{"type":43,"value":77},"Improve test coverage for existing codebases",{"type":37,"tag":68,"props":79,"children":80},{},[81],{"type":43,"value":82},"Create test files that follow project conventions",{"type":37,"tag":68,"props":84,"children":85},{},[86],{"type":43,"value":87},"Write tests that actually compile and pass",{"type":37,"tag":68,"props":89,"children":90},{},[91],{"type":43,"value":92},"Add tests for new features or untested code",{"type":37,"tag":52,"props":94,"children":96},{"id":95},"when-not-to-use",[97],{"type":43,"value":98},"When Not to Use",{"type":37,"tag":64,"props":100,"children":101},{},[102,116,121,134],{"type":37,"tag":68,"props":103,"children":104},{},[105,107,114],{"type":43,"value":106},"Running or executing existing tests (use the ",{"type":37,"tag":108,"props":109,"children":111},"code",{"className":110},[],[112],{"type":43,"value":113},"run-tests",{"type":43,"value":115}," skill)",{"type":37,"tag":68,"props":117,"children":118},{},[119],{"type":43,"value":120},"Migrating between test frameworks (use migration skills)",{"type":37,"tag":68,"props":122,"children":123},{},[124,126,132],{"type":43,"value":125},"Writing tests specifically for MSTest patterns (use ",{"type":37,"tag":108,"props":127,"children":129},{"className":128},[],[130],{"type":43,"value":131},"writing-mstest-tests",{"type":43,"value":133},")",{"type":37,"tag":68,"props":135,"children":136},{},[137],{"type":43,"value":138},"Debugging failing test logic",{"type":37,"tag":52,"props":140,"children":142},{"id":141},"how-it-works",[143],{"type":43,"value":144},"How It Works",{"type":37,"tag":46,"props":146,"children":147},{},[148,150,156],{"type":43,"value":149},"This skill coordinates multiple specialized agents in a ",{"type":37,"tag":151,"props":152,"children":153},"strong",{},[154],{"type":43,"value":155},"Research → Plan → Implement",{"type":43,"value":157}," pipeline:",{"type":37,"tag":159,"props":160,"children":162},"h3",{"id":161},"pipeline-overview",[163],{"type":43,"value":164},"Pipeline Overview",{"type":37,"tag":166,"props":167,"children":172},"pre",{"className":168,"code":170,"language":43,"meta":171},[169],"language-text","┌─────────────────────────────────────────────────────────────┐\n│                     TEST GENERATOR                          │\n│  Coordinates the full pipeline and manages state            │\n└─────────────────────┬───────────────────────────────────────┘\n                      │\n        ┌─────────────┼─────────────┐\n        ▼             ▼             ▼\n┌───────────┐  ┌───────────┐  ┌───────────────┐\n│ RESEARCHER│  │  PLANNER  │  │  IMPLEMENTER  │\n│           │  │           │  │               │\n│ Analyzes  │  │ Creates   │  │ Writes tests  │\n│ codebase  │→ │ phased    │→ │ per phase     │\n│           │  │ plan      │  │               │\n└───────────┘  └───────────┘  └───────┬───────┘\n                                      │\n                    ┌─────────┬───────┼───────────┐\n                    ▼         ▼       ▼           ▼\n              ┌─────────┐ ┌───────┐ ┌───────┐ ┌───────┐\n              │ BUILDER │ │TESTER │ │ FIXER │ │LINTER │\n              │         │ │       │ │       │ │       │\n              │ Compiles│ │ Runs  │ │ Fixes │ │Formats│\n              │ code    │ │ tests │ │ errors│ │ code  │\n              └─────────┘ └───────┘ └───────┘ └───────┘\n","",[173],{"type":37,"tag":108,"props":174,"children":175},{"__ignoreMap":171},[176],{"type":43,"value":170},{"type":37,"tag":52,"props":178,"children":180},{"id":179},"step-by-step-instructions",[181],{"type":43,"value":182},"Step-by-Step Instructions",{"type":37,"tag":159,"props":184,"children":186},{"id":185},"step-1-determine-the-user-request",[187],{"type":43,"value":188},"Step 1: Determine the user request",{"type":37,"tag":46,"props":190,"children":191},{},[192,194,200],{"type":43,"value":193},"Make sure you understand what user is asking and for what scope.\nWhen the user does not express strong requirements for test style, coverage goals, or conventions, source the guidelines from ",{"type":37,"tag":195,"props":196,"children":198},"a",{"href":197},"unit-test-generation.prompt.md",[199],{"type":43,"value":197},{"type":43,"value":201},". This prompt provides best practices for discovering conventions, parameterization strategies, coverage goals (aim for 80%), and language-specific patterns.",{"type":37,"tag":159,"props":203,"children":205},{"id":204},"step-2-size-the-request-before-invoking-anything",[206],{"type":43,"value":207},"Step 2: Size the request before invoking anything",{"type":37,"tag":46,"props":209,"children":210},{},[211],{"type":43,"value":212},"Match the machinery to the scope. Running the full pipeline on a one-file\nrequest costs turns and tool calls without improving the tests.",{"type":37,"tag":214,"props":215,"children":216},"table",{},[217,241],{"type":37,"tag":218,"props":219,"children":220},"thead",{},[221],{"type":37,"tag":222,"props":223,"children":224},"tr",{},[225,231,236],{"type":37,"tag":226,"props":227,"children":228},"th",{},[229],{"type":43,"value":230},"Scope",{"type":37,"tag":226,"props":232,"children":233},{},[234],{"type":43,"value":235},"What it looks like",{"type":37,"tag":226,"props":237,"children":238},{},[239],{"type":43,"value":240},"How to run it",{"type":37,"tag":242,"props":243,"children":244},"tbody",{},[245,275],{"type":37,"tag":222,"props":246,"children":247},{},[248,257,262],{"type":37,"tag":249,"props":250,"children":251},"td",{},[252],{"type":37,"tag":151,"props":253,"children":254},{},[255],{"type":43,"value":256},"Focused",{"type":37,"tag":249,"props":258,"children":259},{},[260],{"type":43,"value":261},"One function, class, or file; \"tests for X only\"; extending an existing suite with the missing cases",{"type":37,"tag":249,"props":263,"children":264},{},[265,267,273],{"type":43,"value":266},"Skip the ",{"type":37,"tag":108,"props":268,"children":270},{"className":269},[],[271],{"type":43,"value":272},".testagent\u002F",{"type":43,"value":274}," artifacts and the sub-agent fan-out. Keep the requirement checklist in your head (or in the final table), read only the target and one neighbouring test for conventions, write the tests, run the narrowest test command, review your own assertions inline.",{"type":37,"tag":222,"props":276,"children":277},{},[278,286,291],{"type":37,"tag":249,"props":279,"children":280},{},[281],{"type":37,"tag":151,"props":282,"children":283},{},[284],{"type":43,"value":285},"Broad",{"type":37,"tag":249,"props":287,"children":288},{},[289],{"type":43,"value":290},"A project, package, or module set; \"comprehensive suite\"; a coverage threshold to clear across several files",{"type":37,"tag":249,"props":292,"children":293},{},[294,296,301],{"type":43,"value":295},"Run the full Research → Plan → Implement pipeline in Step 3, with the ",{"type":37,"tag":108,"props":297,"children":299},{"className":298},[],[300],{"type":43,"value":272},{"type":43,"value":302}," artifacts and the completion contract below.",{"type":37,"tag":46,"props":304,"children":305},{},[306],{"type":43,"value":307},"When in doubt, start focused and escalate only if the request turns out to span\nseveral files. Escalating costs one extra pass; running the broad pipeline on a\nfocused request costs several.",{"type":37,"tag":159,"props":309,"children":311},{"id":310},"step-3-invoke-the-test-generator-broad-scope",[312],{"type":43,"value":313},"Step 3: Invoke the Test Generator (broad scope)",{"type":37,"tag":46,"props":315,"children":316},{},[317,319,325],{"type":43,"value":318},"Start by calling the ",{"type":37,"tag":108,"props":320,"children":322},{"className":321},[],[323],{"type":43,"value":324},"code-testing-generator",{"type":43,"value":326}," agent with your test generation request:",{"type":37,"tag":166,"props":328,"children":331},{"className":329,"code":330,"language":43,"meta":171},[169],"Generate unit tests for [path or description of what to test], following the [unit-test-generation.prompt.md](unit-test-generation.prompt.md) guidelines. Treat the current workspace as authoritative even when it is sparse, gutted-looking, synthetic, or missing tracked files; never restore or reconstruct it.\n",[332],{"type":37,"tag":108,"props":333,"children":334},{"__ignoreMap":171},[335],{"type":43,"value":330},{"type":37,"tag":46,"props":337,"children":338},{},[339],{"type":43,"value":340},"The Test Generator will manage the entire pipeline automatically.",{"type":37,"tag":46,"props":342,"children":343},{},[344,346,351,353,358],{"type":43,"value":345},"If ",{"type":37,"tag":108,"props":347,"children":349},{"className":348},[],[350],{"type":43,"value":324},{"type":43,"value":352}," is unavailable, do not skip the workflow. Execute the\nsame Research → Plan → Implement sequence inline, create the ",{"type":37,"tag":108,"props":354,"children":356},{"className":355},[],[357],{"type":43,"value":272},{"type":43,"value":359},"\nartifacts described below, and apply the same completion contract.",{"type":37,"tag":159,"props":361,"children":363},{"id":362},"step-4-execute-with-bounded-context",[364],{"type":43,"value":365},"Step 4: Execute with bounded context",{"type":37,"tag":46,"props":367,"children":368},{},[369],{"type":43,"value":370},"For multi-file requests:",{"type":37,"tag":372,"props":373,"children":374},"ol",{},[375,380,393,398,411,416,421,426],{"type":37,"tag":68,"props":376,"children":377},{},[378],{"type":43,"value":379},"Turn every explicit user requirement into a checklist before implementation. Include requested layers, collaborators to mock, boundary cases, integrations, coverage thresholds, and report artifacts. Copy multi-condition requirements verbatim — they must each map to one test that exercises the whole combination.",{"type":37,"tag":68,"props":381,"children":382},{},[383,385,391],{"type":43,"value":384},"Research only the requested module or project and write the checklist plus a compact target inventory to ",{"type":37,"tag":108,"props":386,"children":388},{"className":387},[],[389],{"type":43,"value":390},".testagent\u002Fresearch.md",{"type":43,"value":392},".",{"type":37,"tag":68,"props":394,"children":395},{},[396],{"type":43,"value":397},"Reuse manifests, symbol references, and deterministic pairing tools instead of reading every source and test file.",{"type":37,"tag":68,"props":399,"children":400},{},[401,403,409],{"type":43,"value":402},"For multi-file scopes in C#, Python, TypeScript\u002FJavaScript, Go, Java, Rust, or Ruby, run ",{"type":37,"tag":108,"props":404,"children":406},{"className":405},[],[407],{"type":43,"value":408},"find-untested-sources",{"type":43,"value":410}," once and consume its pairing and suggested-path output; do not repeat that discovery manually.",{"type":37,"tag":68,"props":412,"children":413},{},[414],{"type":43,"value":415},"Plan each target file once, then implement phases sequentially. Map every checklist item to at least one concrete test or explain why it is blocked.",{"type":37,"tag":68,"props":417,"children":418},{},[419],{"type":43,"value":420},"Build and test the narrow target during fix cycles; run workspace-level validation once at the end.",{"type":37,"tag":68,"props":422,"children":423},{},[424],{"type":43,"value":425},"Before reporting success, re-open the generated tests and verify every checklist item against concrete test names and assertions. Coverage alone is not evidence that a requested mock seam, boundary, state transition, or property combination was tested.",{"type":37,"tag":68,"props":427,"children":428},{},[429,431,437],{"type":43,"value":430},"Read a language example from ",{"type":37,"tag":108,"props":432,"children":434},{"className":433},[],[435],{"type":43,"value":436},"code-testing-extensions",{"type":43,"value":438}," only when the repository has no representative tests and the base extension is insufficient.",{"type":37,"tag":159,"props":440,"children":442},{"id":441},"completion-contract",[443],{"type":43,"value":444},"Completion contract",{"type":37,"tag":46,"props":446,"children":447},{},[448,450,455,457,462],{"type":43,"value":449},"Every scope must satisfy points 3–5 below. Points 1 and 2 are the ",{"type":37,"tag":151,"props":451,"children":452},{},[453],{"type":43,"value":454},"broad-scope",{"type":43,"value":456},"\nartifacts: on a focused request the same reasoning happens inline and no\n",{"type":37,"tag":108,"props":458,"children":460},{"className":459},[],[461],{"type":43,"value":272},{"type":43,"value":463}," files are written.",{"type":37,"tag":46,"props":465,"children":466},{},[467],{"type":43,"value":468},"Do not report completion until all of these are true:",{"type":37,"tag":372,"props":470,"children":471},{},[472,490,506,511,516],{"type":37,"tag":68,"props":473,"children":474},{},[475,481,483,488],{"type":37,"tag":476,"props":477,"children":478},"em",{},[479],{"type":43,"value":480},"(broad scope)",{"type":43,"value":482}," ",{"type":37,"tag":108,"props":484,"children":486},{"className":485},[],[487],{"type":43,"value":390},{"type":43,"value":489}," records the bounded target\ninventory, existing test conventions, and the acceptance checklist.",{"type":37,"tag":68,"props":491,"children":492},{},[493,497,498,504],{"type":37,"tag":476,"props":494,"children":495},{},[496],{"type":43,"value":480},{"type":43,"value":482},{"type":37,"tag":108,"props":499,"children":501},{"className":500},[],[502],{"type":43,"value":503},".testagent\u002Fplan.md",{"type":43,"value":505}," maps each checklist item to a planned\ntest or an explicit blocker.",{"type":37,"tag":68,"props":507,"children":508},{},[509],{"type":43,"value":510},"Generated tests compile and pass with the narrowest relevant test command.",{"type":37,"tag":68,"props":512,"children":513},{},[514],{"type":43,"value":515},"Every explicit user requirement is backed by a concrete test and assertion.\nFix missing mock seams, boundary cases, state transitions, and property\ncombinations even when coverage already passes. In the final summary, cite\nat least one generated test name for every checklist item so completion is\nauditable; if an item has no test to cite, keep implementing or report it as\nblocked. For non-behavioral requirements such as scaffolding, scope limits,\ncommands, or coverage artifacts, cite the relevant file, command, or report\ninstead of forcing a test-name mapping.",{"type":37,"tag":68,"props":517,"children":518},{},[519,521,527,529,535,537,543],{"type":43,"value":520},"Review the generated tests for behavior gaps and weak assertions. On a broad\nscope, invoke ",{"type":37,"tag":108,"props":522,"children":524},{"className":523},[],[525],{"type":43,"value":526},"test-gap-analysis",{"type":43,"value":528}," and ",{"type":37,"tag":108,"props":530,"children":532},{"className":531},[],[533],{"type":43,"value":534},"assertion-quality",{"type":43,"value":536}," when available and\nrecord the findings and fixes in ",{"type":37,"tag":108,"props":538,"children":540},{"className":539},[],[541],{"type":43,"value":542},".testagent\u002Fstatus.md",{"type":43,"value":544},". On a focused scope,\ndo the equivalent review inline — re-read each generated assertion against\nthe source — without spawning extra passes.",{"type":37,"tag":46,"props":546,"children":547},{},[548,550,556],{"type":43,"value":549},"The final response MUST include a compact ",{"type":37,"tag":108,"props":551,"children":553},{"className":552},[],[554],{"type":43,"value":555},"Requirement | Evidence",{"type":43,"value":557}," table.\nBehavioral rows cite exact generated test names. Non-behavioral rows cite the\nrelevant project file, validation command, or coverage report. A generic list\nof tested areas is not a substitute for requirement-by-requirement evidence.",{"type":37,"tag":46,"props":559,"children":560},{},[561,566],{"type":37,"tag":151,"props":562,"children":563},{},[564],{"type":43,"value":565},"Quote the user's requirement verbatim in each row.",{"type":43,"value":567}," When the request names a\nspecific combination — \"a case where a composite discount, regional tax, and\nweight-based shipping all apply\", \"the difference between summed and chained\ndiscounts\", \"constructor validation for every class\" — the row must cite the one\ntest that demonstrates exactly that. A test that merely exercises the same\ncollaborators does not satisfy a requirement about their interaction, and\nper-class requirements need a citation per class.",{"type":37,"tag":46,"props":569,"children":570},{},[571,576],{"type":37,"tag":151,"props":572,"children":573},{},[574],{"type":43,"value":575},"Cite a clean run, not an attempt.",{"type":43,"value":577}," The commands behind the evidence table must\nhave finished successfully: quote the final passing test summary and, when\nthresholds were requested, the per-module coverage table from a run that exited\n0. If the last coverage run exited non-zero, fix it and re-run before reporting;\nnever infer threshold clearance from a failed or partial run.",{"type":37,"tag":52,"props":579,"children":581},{"id":580},"state-management",[582],{"type":43,"value":583},"State Management",{"type":37,"tag":46,"props":585,"children":586},{},[587,589,594],{"type":43,"value":588},"Broad-scope runs store pipeline state in the ",{"type":37,"tag":108,"props":590,"children":592},{"className":591},[],[593],{"type":43,"value":272},{"type":43,"value":595}," folder. A focused\nrequest does not create these files:",{"type":37,"tag":214,"props":597,"children":598},{},[599,615],{"type":37,"tag":218,"props":600,"children":601},{},[602],{"type":37,"tag":222,"props":603,"children":604},{},[605,610],{"type":37,"tag":226,"props":606,"children":607},{},[608],{"type":43,"value":609},"File",{"type":37,"tag":226,"props":611,"children":612},{},[613],{"type":43,"value":614},"Purpose",{"type":37,"tag":242,"props":616,"children":617},{},[618,634,650],{"type":37,"tag":222,"props":619,"children":620},{},[621,629],{"type":37,"tag":249,"props":622,"children":623},{},[624],{"type":37,"tag":108,"props":625,"children":627},{"className":626},[],[628],{"type":43,"value":390},{"type":37,"tag":249,"props":630,"children":631},{},[632],{"type":43,"value":633},"Codebase analysis results",{"type":37,"tag":222,"props":635,"children":636},{},[637,645],{"type":37,"tag":249,"props":638,"children":639},{},[640],{"type":37,"tag":108,"props":641,"children":643},{"className":642},[],[644],{"type":43,"value":503},{"type":37,"tag":249,"props":646,"children":647},{},[648],{"type":43,"value":649},"Phased implementation plan",{"type":37,"tag":222,"props":651,"children":652},{},[653,661],{"type":37,"tag":249,"props":654,"children":655},{},[656],{"type":37,"tag":108,"props":657,"children":659},{"className":658},[],[660],{"type":43,"value":542},{"type":37,"tag":249,"props":662,"children":663},{},[664],{"type":43,"value":665},"Progress tracking (optional)",{"type":37,"tag":52,"props":667,"children":669},{"id":668},"agent-reference",[670],{"type":43,"value":671},"Agent Reference",{"type":37,"tag":214,"props":673,"children":674},{},[675,690],{"type":37,"tag":218,"props":676,"children":677},{},[678],{"type":37,"tag":222,"props":679,"children":680},{},[681,686],{"type":37,"tag":226,"props":682,"children":683},{},[684],{"type":43,"value":685},"Agent",{"type":37,"tag":226,"props":687,"children":688},{},[689],{"type":43,"value":614},{"type":37,"tag":242,"props":691,"children":692},{},[693,709,726,743,760,777,794,811],{"type":37,"tag":222,"props":694,"children":695},{},[696,704],{"type":37,"tag":249,"props":697,"children":698},{},[699],{"type":37,"tag":108,"props":700,"children":702},{"className":701},[],[703],{"type":43,"value":324},{"type":37,"tag":249,"props":705,"children":706},{},[707],{"type":43,"value":708},"Coordinates pipeline",{"type":37,"tag":222,"props":710,"children":711},{},[712,721],{"type":37,"tag":249,"props":713,"children":714},{},[715],{"type":37,"tag":108,"props":716,"children":718},{"className":717},[],[719],{"type":43,"value":720},"code-testing-researcher",{"type":37,"tag":249,"props":722,"children":723},{},[724],{"type":43,"value":725},"Analyzes codebase",{"type":37,"tag":222,"props":727,"children":728},{},[729,738],{"type":37,"tag":249,"props":730,"children":731},{},[732],{"type":37,"tag":108,"props":733,"children":735},{"className":734},[],[736],{"type":43,"value":737},"code-testing-planner",{"type":37,"tag":249,"props":739,"children":740},{},[741],{"type":43,"value":742},"Creates test plan",{"type":37,"tag":222,"props":744,"children":745},{},[746,755],{"type":37,"tag":249,"props":747,"children":748},{},[749],{"type":37,"tag":108,"props":750,"children":752},{"className":751},[],[753],{"type":43,"value":754},"code-testing-implementer",{"type":37,"tag":249,"props":756,"children":757},{},[758],{"type":43,"value":759},"Writes test files",{"type":37,"tag":222,"props":761,"children":762},{},[763,772],{"type":37,"tag":249,"props":764,"children":765},{},[766],{"type":37,"tag":108,"props":767,"children":769},{"className":768},[],[770],{"type":43,"value":771},"code-testing-builder",{"type":37,"tag":249,"props":773,"children":774},{},[775],{"type":43,"value":776},"Compiles code",{"type":37,"tag":222,"props":778,"children":779},{},[780,789],{"type":37,"tag":249,"props":781,"children":782},{},[783],{"type":37,"tag":108,"props":784,"children":786},{"className":785},[],[787],{"type":43,"value":788},"code-testing-tester",{"type":37,"tag":249,"props":790,"children":791},{},[792],{"type":43,"value":793},"Runs tests",{"type":37,"tag":222,"props":795,"children":796},{},[797,806],{"type":37,"tag":249,"props":798,"children":799},{},[800],{"type":37,"tag":108,"props":801,"children":803},{"className":802},[],[804],{"type":43,"value":805},"code-testing-fixer",{"type":37,"tag":249,"props":807,"children":808},{},[809],{"type":43,"value":810},"Fixes errors",{"type":37,"tag":222,"props":812,"children":813},{},[814,823],{"type":37,"tag":249,"props":815,"children":816},{},[817],{"type":37,"tag":108,"props":818,"children":820},{"className":819},[],[821],{"type":43,"value":822},"code-testing-linter",{"type":37,"tag":249,"props":824,"children":825},{},[826],{"type":43,"value":827},"Formats code",{"type":37,"tag":52,"props":829,"children":831},{"id":830},"requirements",[832],{"type":43,"value":833},"Requirements",{"type":37,"tag":64,"props":835,"children":836},{},[837,842,847],{"type":37,"tag":68,"props":838,"children":839},{},[840],{"type":43,"value":841},"Project must have a build\u002Ftest system configured",{"type":37,"tag":68,"props":843,"children":844},{},[845],{"type":43,"value":846},"Testing framework should be installed (or installable)",{"type":37,"tag":68,"props":848,"children":849},{},[850],{"type":43,"value":851},"VS Code with GitHub Copilot extension",{"type":37,"tag":52,"props":853,"children":855},{"id":854},"troubleshooting",[856],{"type":43,"value":857},"Troubleshooting",{"type":37,"tag":159,"props":859,"children":861},{"id":860},"tests-dont-compile",[862],{"type":43,"value":863},"Tests don't compile",{"type":37,"tag":46,"props":865,"children":866},{},[867,869,874,876,881,883,888,890,896],{"type":43,"value":868},"The ",{"type":37,"tag":108,"props":870,"children":872},{"className":871},[],[873],{"type":43,"value":805},{"type":43,"value":875}," agent will attempt to resolve compilation errors. Check ",{"type":37,"tag":108,"props":877,"children":879},{"className":878},[],[880],{"type":43,"value":503},{"type":43,"value":882}," for the expected test structure. Call the ",{"type":37,"tag":108,"props":884,"children":886},{"className":885},[],[887],{"type":43,"value":436},{"type":43,"value":889}," skill and read the language-specific extension file for error code references (e.g., ",{"type":37,"tag":108,"props":891,"children":893},{"className":892},[],[894],{"type":43,"value":895},"dotnet.md",{"type":43,"value":897}," for .NET).",{"type":37,"tag":159,"props":899,"children":901},{"id":900},"tests-fail",[902],{"type":43,"value":903},"Tests fail",{"type":37,"tag":46,"props":905,"children":906},{},[907,909,914],{"type":43,"value":908},"Most failures in generated tests are caused by ",{"type":37,"tag":151,"props":910,"children":911},{},[912],{"type":43,"value":913},"wrong expected values in assertions",{"type":43,"value":915},", not production code bugs:",{"type":37,"tag":372,"props":917,"children":918},{},[919,924,929,934],{"type":37,"tag":68,"props":920,"children":921},{},[922],{"type":43,"value":923},"Read the actual test output",{"type":37,"tag":68,"props":925,"children":926},{},[927],{"type":43,"value":928},"Read the production code to understand correct behavior",{"type":37,"tag":68,"props":930,"children":931},{},[932],{"type":43,"value":933},"Fix the assertion, not the production code",{"type":37,"tag":68,"props":935,"children":936},{},[937,939,945,947,953],{"type":43,"value":938},"Never mark tests ",{"type":37,"tag":108,"props":940,"children":942},{"className":941},[],[943],{"type":43,"value":944},"[Ignore]",{"type":43,"value":946}," or ",{"type":37,"tag":108,"props":948,"children":950},{"className":949},[],[951],{"type":43,"value":952},"[Skip]",{"type":43,"value":954}," just to make them pass",{"type":37,"tag":159,"props":956,"children":958},{"id":957},"wrong-testing-framework-detected",[959],{"type":43,"value":960},"Wrong testing framework detected",{"type":37,"tag":46,"props":962,"children":963},{},[964],{"type":43,"value":965},"Specify your preferred framework in the initial request: \"Generate Jest tests for...\"",{"type":37,"tag":159,"props":967,"children":969},{"id":968},"environment-dependent-tests-fail",[970],{"type":43,"value":971},"Environment-dependent tests fail",{"type":37,"tag":46,"props":973,"children":974},{},[975],{"type":43,"value":976},"Tests that depend on external services, network endpoints, specific ports, or precise timing will fail in CI environments. Focus on unit tests with mocked dependencies instead.",{"type":37,"tag":159,"props":978,"children":980},{"id":979},"build-fails-on-full-solution",[981],{"type":43,"value":982},"Build fails on full solution",{"type":37,"tag":46,"props":984,"children":985},{},[986],{"type":43,"value":987},"During phase implementation, build only the specific test project for speed. After all phases, run a full non-incremental workspace build to catch cross-project errors.",{"items":989,"total":1095},[990,1009,1024,1042,1051,1071,1081],{"slug":991,"name":991,"fn":992,"description":993,"org":994,"tags":995,"stars":19,"repoUrl":20,"updatedAt":1008},"analyzing-dotnet-performance","analyze .NET code for performance anti-patterns","Scans .NET code for ~50 performance anti-patterns across async, memory, strings, collections, LINQ, regex, serialization, and I\u002FO with tiered severity classification. Use when analyzing .NET code for optimization opportunities, reviewing hot paths, or auditing allocation-heavy patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[996,999,1002,1005],{"name":997,"slug":998,"type":15},".NET","net",{"name":1000,"slug":1001,"type":15},"Code Analysis","code-analysis",{"name":1003,"slug":1004,"type":15},"Debugging","debugging",{"name":1006,"slug":1007,"type":15},"Performance","performance","2026-07-12T08:23:25.400375",{"slug":1010,"name":1010,"fn":1011,"description":1012,"org":1013,"tags":1014,"stars":19,"repoUrl":20,"updatedAt":1023},"android-tombstone-symbolication","symbolicate .NET runtime frames in Android tombstones","Symbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI or Mono Android app crash from a tombstone, resolving native backtrace frames in libmonosgen-2.0.so or libcoreclr.so to .NET runtime source code, or investigating SIGABRT, SIGSEGV, or other native signals originating from the .NET runtime on Android. DO NOT USE FOR pure Java\u002FKotlin crashes, managed .NET exceptions that are already captured in logcat, or iOS crash logs. INVOKES Symbolicate-Tombstone.ps1 script, llvm-symbolizer, Microsoft symbol server.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1015,1016,1019,1020],{"name":997,"slug":998,"type":15},{"name":1017,"slug":1018,"type":15},"Android","android",{"name":1003,"slug":1004,"type":15},{"name":1021,"slug":1022,"type":15},"Microsoft","microsoft","2026-07-12T08:23:21.595572",{"slug":1025,"name":1025,"fn":1026,"description":1027,"org":1028,"tags":1029,"stars":19,"repoUrl":20,"updatedAt":1041},"apple-crash-symbolication","symbolicate .NET runtime frames in crash logs","Symbolicate .NET runtime frames in Apple platform .ips crash logs (iOS, tvOS, Mac Catalyst, macOS). Extracts UUIDs and addresses from the native backtrace, locates dSYM debug symbols, and runs atos to produce function names with source file and line numbers. Automatically downloads .dwarf symbols from the Microsoft symbol server using Mach-O UUIDs. USE FOR triaging a .NET MAUI or Mono app crash from an .ips file on any Apple platform, resolving native backtrace frames in libcoreclr or libmonosgen-2.0 to .NET runtime source code, retrieving .ips crash logs from a connected iOS device or iPhone, or investigating EXC_CRASH, EXC_BAD_ACCESS, SIGABRT, or SIGSEGV originating from the .NET runtime. DO NOT USE FOR pure Swift\u002FObjective-C crashes with no .NET components, or Android tombstone files. INVOKES Symbolicate-Crash.ps1 script, atos, dwarfdump, idevicecrashreport.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1030,1031,1032,1035,1038],{"name":997,"slug":998,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1033,"slug":1034,"type":15},"iOS","ios",{"name":1036,"slug":1037,"type":15},"macOS","macos",{"name":1039,"slug":1040,"type":15},"Observability","observability","2026-07-12T08:23:20.369986",{"slug":534,"name":534,"fn":1043,"description":1044,"org":1045,"tags":1046,"stars":19,"repoUrl":20,"updatedAt":1050},"evaluate assertion quality in test suites","Analyzes the variety and depth of assertions across test suites in any language. Use when the user asks to evaluate assertion quality, find shallow tests, identify assertion-free tests (no assertions or only trivial ones like Assert.IsNotNull \u002F toBeTruthy()), flag self-referential or tautological assertions, measure assertion diversity, or audit whether tests verify different facets of behavior. Polyglot: .NET, Python, TS\u002FJS, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell, C++. DO NOT USE FOR: writing new tests (use code-testing-agent \u002F writing-mstest-tests), mutation reasoning about whether tests would catch a bug (use test-gap-analysis), or a general severity-ranked anti-pattern audit (use test-anti-patterns), fixing or rewriting assertions, or writing, fixing, or modernizing MSTest tests, assertions, or attributes (use writing-mstest-tests).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1047,1048,1049],{"name":1000,"slug":1001,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T08:23:51.277743",{"slug":1052,"name":1052,"fn":1053,"description":1054,"org":1055,"tags":1056,"stars":19,"repoUrl":20,"updatedAt":1070},"author-component","create and review Blazor components","Create or review Blazor components (.razor files) with correct architecture. USE FOR: writing new Blazor components that do NOT involve JavaScript interop, implementing parameters and EventCallback, RenderFragment slots, component lifecycle (OnInitializedAsync, OnParametersSet), async patterns, IAsyncDisposable, CancellationToken, CSS isolation, code-behind. DO NOT USE FOR: creating new projects (use create-blazor-project), JavaScript interop or calling browser APIs from Blazor (use use-js-interop), forms and validation (use collect-user-input), prerendering issues (use support-prerendering), HTTP data fetching patterns (use fetch-and-send-data), coordinating state between unrelated components (use coordinate-components).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1057,1058,1061,1064,1067],{"name":997,"slug":998,"type":15},{"name":1059,"slug":1060,"type":15},"Blazor","blazor",{"name":1062,"slug":1063,"type":15},"C#","csharp",{"name":1065,"slug":1066,"type":15},"UI Components","ui-components",{"name":1068,"slug":1069,"type":15},"Web Development","web-development","2026-07-15T06:03:29.216359",{"slug":1072,"name":1072,"fn":1073,"description":1074,"org":1075,"tags":1076,"stars":19,"repoUrl":20,"updatedAt":1080},"binlog-failure-analysis","analyze MSBuild binary logs","Analyze MSBuild binary logs to diagnose build failures. USE FOR: build errors that are unclear from console output, diagnosing cascading failures across multi-project builds, tracing MSBuild target execution order, and generally any MSBuild build issues. Requires an existing .binlog file. DO NOT USE FOR: generating binlogs (use binlog-generation), non-MSBuild build systems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1077,1078,1079],{"name":1000,"slug":1001,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1021,"slug":1022,"type":15},"2026-07-12T08:21:34.637923",{"slug":1082,"name":1082,"fn":1083,"description":1084,"org":1085,"tags":1086,"stars":19,"repoUrl":20,"updatedAt":1094},"binlog-generation","generate MSBuild binary logs for diagnostics","Generate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding \u002Fbl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build investigation of errors or performance. Requires MSBuild 17.8+ \u002F .NET 8 SDK+ for {} placeholder; PowerShell needs -bl:{{}}. DO NOT USE FOR: non-MSBuild build systems (npm, Maven, CMake), analyzing an existing binlog (use binlog-failure-analysis instead).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1087,1090,1091],{"name":1088,"slug":1089,"type":15},"Build","build",{"name":1003,"slug":1004,"type":15},{"name":1092,"slug":1093,"type":15},"Engineering","engineering","2026-07-19T05:38:19.340791",96,{"items":1097,"total":1202},[1098,1110,1117,1124,1132,1138,1146,1152,1158,1168,1181,1192],{"slug":1099,"name":1099,"fn":1100,"description":1101,"org":1102,"tags":1103,"stars":1107,"repoUrl":1108,"updatedAt":1109},"multithreaded-task-migration","migrate MSBuild tasks to multithreaded mode","Guide for migrating MSBuild tasks to multithreaded mode support, including compatibility red-team review. Use this when converting tasks to thread-safe versions, implementing IMultiThreadableTask, adding TaskEnvironment support, or auditing migrations for behavioral compatibility.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1104,1105,1106],{"name":997,"slug":998,"type":15},{"name":1092,"slug":1093,"type":15},{"name":1006,"slug":1007,"type":15},5535,"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fmsbuild","2026-07-22T05:37:33.965588",{"slug":991,"name":991,"fn":992,"description":993,"org":1111,"tags":1112,"stars":19,"repoUrl":20,"updatedAt":1008},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1113,1114,1115,1116],{"name":997,"slug":998,"type":15},{"name":1000,"slug":1001,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1006,"slug":1007,"type":15},{"slug":1010,"name":1010,"fn":1011,"description":1012,"org":1118,"tags":1119,"stars":19,"repoUrl":20,"updatedAt":1023},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1120,1121,1122,1123],{"name":997,"slug":998,"type":15},{"name":1017,"slug":1018,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1021,"slug":1022,"type":15},{"slug":1025,"name":1025,"fn":1026,"description":1027,"org":1125,"tags":1126,"stars":19,"repoUrl":20,"updatedAt":1041},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1127,1128,1129,1130,1131],{"name":997,"slug":998,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1033,"slug":1034,"type":15},{"name":1036,"slug":1037,"type":15},{"name":1039,"slug":1040,"type":15},{"slug":534,"name":534,"fn":1043,"description":1044,"org":1133,"tags":1134,"stars":19,"repoUrl":20,"updatedAt":1050},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1135,1136,1137],{"name":1000,"slug":1001,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":1052,"name":1052,"fn":1053,"description":1054,"org":1139,"tags":1140,"stars":19,"repoUrl":20,"updatedAt":1070},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1141,1142,1143,1144,1145],{"name":997,"slug":998,"type":15},{"name":1059,"slug":1060,"type":15},{"name":1062,"slug":1063,"type":15},{"name":1065,"slug":1066,"type":15},{"name":1068,"slug":1069,"type":15},{"slug":1072,"name":1072,"fn":1073,"description":1074,"org":1147,"tags":1148,"stars":19,"repoUrl":20,"updatedAt":1080},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1149,1150,1151],{"name":1000,"slug":1001,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1021,"slug":1022,"type":15},{"slug":1082,"name":1082,"fn":1083,"description":1084,"org":1153,"tags":1154,"stars":19,"repoUrl":20,"updatedAt":1094},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1155,1156,1157],{"name":1088,"slug":1089,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1092,"slug":1093,"type":15},{"slug":1159,"name":1159,"fn":1160,"description":1161,"org":1162,"tags":1163,"stars":19,"repoUrl":20,"updatedAt":1167},"build-parallelism","optimize MSBuild build parallelism","Diagnose and fix under-parallelized MSBuild builds. USE WHEN a multi-project solution build is slower than expected, doesn't speed up when you add cores, pegs a single core while others idle, or you want to know why `-m` isn't helping. Note: `\u002Fmaxcpucount` default is 1 (sequential) — always pass `-m` for parallel builds. Covers finding the critical path (longest serial ProjectReference chain), graph build (`\u002Fgraph`), BuildInParallel, and solution filters (`.slnf`). DO NOT USE FOR: single-project builds, incremental issues (use incremental-build), compilation slowness inside one project (use build-perf-diagnostics), non-MSBuild build systems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1164,1165,1166],{"name":997,"slug":998,"type":15},{"name":1092,"slug":1093,"type":15},{"name":1006,"slug":1007,"type":15},"2026-07-19T05:38:18.364937",{"slug":1169,"name":1169,"fn":1170,"description":1171,"org":1172,"tags":1173,"stars":19,"repoUrl":20,"updatedAt":1180},"build-perf-baseline","establish and optimize build performance baselines","Establish build performance baselines and apply systematic optimization techniques. USE FOR: diagnosing slow builds, establishing before\u002Fafter measurements (cold, warm, no-op scenarios), applying optimization strategies like MSBuild Server, static graph builds, artifacts output, and dependency graph trimming. Start here before diving into build-perf-diagnostics, incremental-build, or build-parallelism. DO NOT USE FOR: non-MSBuild build systems, detailed bottleneck analysis (use build-perf-diagnostics after baselining).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1174,1175,1178,1179],{"name":1092,"slug":1093,"type":15},{"name":1176,"slug":1177,"type":15},"Monitoring","monitoring",{"name":1006,"slug":1007,"type":15},{"name":17,"slug":18,"type":15},"2026-07-12T08:21:35.865649",{"slug":1182,"name":1182,"fn":1183,"description":1184,"org":1185,"tags":1186,"stars":19,"repoUrl":20,"updatedAt":1191},"build-perf-diagnostics","diagnose MSBuild build performance bottlenecks","Diagnose MSBuild build performance bottlenecks using binary log analysis. USE FOR: identifying why builds are slow by analyzing binlog performance summaries, detecting ResolveAssemblyReference (RAR) taking >5s, Roslyn analyzers consuming >30% of Csc time, single targets dominating >50% of build time, node utilization below 80%, excessive Copy tasks, NuGet restore running every build. Covers timeline analysis, Target\u002FTask Performance Summary interpretation, and 7 common bottleneck categories. Use after build-perf-baseline has established measurements. DO NOT USE FOR: establishing initial baselines (use build-perf-baseline first), fixing incremental build issues (use incremental-build), parallelism tuning (use build-parallelism), non-MSBuild build systems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1187,1188,1189,1190],{"name":997,"slug":998,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1092,"slug":1093,"type":15},{"name":1006,"slug":1007,"type":15},"2026-07-12T08:21:40.961722",{"slug":1193,"name":1193,"fn":1194,"description":1195,"org":1196,"tags":1197,"stars":19,"repoUrl":20,"updatedAt":1201},"check-bin-obj-clash","detect MSBuild output path conflicts","Detects MSBuild projects with conflicting OutputPath or IntermediateOutputPath. USE FOR: builds failing with 'Cannot create a file when that file already exists', 'The process cannot access the file because it is being used by another process', intermittent build failures that succeed on retry, or missing\u002Foverwritten outputs in multi-project or multi-targeting builds where bin\u002Fobj (or project.assets.json) collide. Common causes: shared OutputPath, missing AppendTargetFrameworkToOutputPath, extra global properties (e.g. PublishReadyToRun), or SetTargetFramework on a ProjectReference to a single-targeting project. DO NOT USE FOR: file access errors unrelated to MSBuild (OS-level locking), single-project single-TFM builds, non-MSBuild build systems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1198,1199,1200],{"name":1003,"slug":1004,"type":15},{"name":1092,"slug":1093,"type":15},{"name":13,"slug":14,"type":15},"2026-07-19T05:38:14.336279",144]