[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699D9SZN6V1PDTSHZWAC5XY":3,"skill-same:01M699D9SZN6V1PDTSHZWAC5XY":108},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M699D9SZN6V1PDTSHZWAC5XY","coverage-analysis",null,"Activation requires either supplied .NET coverage reports\u002Fpercentages\u002Fline, branch, or condition metrics, or an explicit request to collect .NET coverage for analysis. USE FOR: interpreting that evidence, including Cobertura data, partial conditions, plateaus, target arithmetic, project-wide coverage-backed CRAP, and coverage-backed refactoring safety. Analyze supplied reports directly without rerunning tests or installing tools. DO NOT USE FOR: requests with neither coverage evidence nor explicit coverage-collection intent, including hypothetical change-survival questions (use test-gap-analysis); CRAP or refactoring safety for one named target (use crap-score); or requests owned by test-tagging, find-untested-sources, test-anti-patterns, run-tests, or code-testing.","microsoft\u002Ftestfx","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699C71CJ91B5WZ3AXG3GG2M",1059,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"coverage analysis","analysis","coverage","analyze","tagging","neither","sources","condition","project","either","intent","reports","branch","testing","refactoring","collection","gap-analysis","code","run","change","test","2026-11-10 10:12:30",false,"---\nname: coverage-analysis\ndescription: >\n  Activation requires either supplied .NET coverage reports\u002Fpercentages\u002Fline,\n  branch, or condition metrics, or an explicit request to collect .NET coverage\n  for analysis. USE FOR: interpreting that evidence, including Cobertura data,\n  partial conditions, plateaus, target arithmetic,\n  project-wide coverage-backed CRAP, and coverage-backed refactoring safety.\n  Analyze supplied reports directly without rerunning tests or installing\n  tools. DO NOT USE FOR: requests with neither coverage evidence nor explicit\n  coverage-collection intent, including hypothetical change-survival questions\n  (use test-gap-analysis); CRAP or refactoring safety for one named target (use\n  crap-score); or requests owned by test-tagging, find-untested-sources,\n  test-anti-patterns, run-tests, or code-testing.\nlicense: MIT\n---\n\n# Coverage Analysis\n\n## Purpose\n\nExplain what .NET coverage evidence proves, reconcile target arithmetic, and\nidentify the code blocking progress. Add complexity\u002FCRAP ranking only when the\nuser explicitly asks for risk hotspots, CRAP, priorities by risk, or refactoring\nsafety.\n\n## When to Use\n\nUse this skill for interpreting supplied .NET line\u002Fbranch\u002Fcondition evidence,\ncoverage gaps and plateaus, target arithmetic, or explicit project-wide\ncoverage-backed risk analysis.\n\n## When Not to Use\n\n- **Named method, class, or file CRAP\u002Frefactoring-safety analysis** — use the `crap-score` skill instead\n- **Static source-to-test pairing or listing files with no tests** — use `find-untested-sources`\n- **Behavioral or pseudo-mutation gaps in existing tests** — use `test-gap-analysis`\n- **Test trait\u002Fcategory distributions or coverage shape by test type** — use `test-tagging`\n- **Writing or generating tests** — this skill identifies where tests are needed, not write them\n- **General test execution** unrelated to coverage or CRAP analysis\n- **Only collecting .NET coverage or printing a raw percentage with no diagnosis** — use `run-tests`; use native tooling for non-.NET coverage collection or analysis. Interpreting .NET line\u002Fbranch gaps remains in scope here\n\n## Inputs\n\n| Input | Required | Default | Description |\n|-------|----------|---------|-------------|\n| Project\u002Fsolution path | No | Current directory | Path to the .NET solution or project |\n| Line coverage threshold | No | 80% | Minimum acceptable line coverage |\n| Branch coverage threshold | No | 70% | Minimum acceptable branch coverage |\n| Existing Cobertura path | No | Discover only if not supplied | Preferred input; never rerun tests when usable |\n| CRAP threshold | No | 30 | Used only for explicit risk\u002FCRAP requests |\n| Hotspot count | No | 3 | Explicit risk requests only; cap at 10 unless the user asks for more |\n\nDiscover optional inputs from the workspace. Do not ask for a project path when\nthe current directory or a supplied report is sufficient.\n\n## Choose the smallest matching path\n\n| User intent | Required work | Do not do |\n|-------------|---------------|-----------|\n| Explain a supplied excerpt, condition, or summary | Answer directly from the supplied evidence | Tools, CRAP, discovery, report files |\n| Interpret a supplied Cobertura path or diagnose a plateau | Read that report, reconcile totals, name all material gaps, answer directly | Rerun tests, install tools, compute CRAP, or generate files unless explicitly requested |\n| Rank risk hotspots, compute project-wide CRAP, or assess refactoring safety | Use the supplied\u002Fexisting report, read `references\u002Fguidelines.md`, and compute CRAP before ranking | Coverage-only ranking or a full report template unless requested |\n| Analyze coverage when no report exists | Invoke `run-tests` to collect coverage with the repository-compatible runner, then analyze the generated report | Choose or execute a test command independently; CRAP unless risk was requested |\n| Produce a full markdown\u002FHTML\u002FCSV report | First deliver the direct answer; then read `references\u002Foutput-format.md` or `references\u002Freport-generation.md` | Report generation before the answer |\n\nWords such as **analyze coverage**, **what is blocking coverage**, or **why is\ncoverage stuck** do not by themselves request CRAP. Explicit signals include\n**risk hotspot**, **CRAP**, **complexity-weighted priority**, **safe to refactor**,\nor an equivalent request to combine complexity with coverage.\n\n## Existing-data fast path\n\nWhen the user supplies a coverage excerpt, summary, or valid Cobertura path:\n\n- Treat it as authoritative input and start there.\n- Do not discover the solution or test projects unless source mapping is necessary.\n- Do not run `dotnet test`, install ReportGenerator, add a coverage package, or\n  read `references\u002Fsetup-discovery.md` or `references\u002Freport-generation.md`.\n- Do not write `coverage-analysis.md` or create a report directory unless the user\n  requested a saved\u002Ffull report.\n- For interpretation and plateau questions, parse only the evidence needed to\n  answer. For explicit project-wide risk requests, use the bundled scripts as\n  described in `references\u002Fguidelines.md`.\n\nA failed read\u002Fview operation is not proof that a named path does not exist.\nClassify the failure, then make one targeted existence probe and use a normalized\npath or alternate reader only for confirmed tool availability, transport, or\npath-normalization failures and only after verifying the canonical path remains\ninside the workspace. Stop on content-exclusion, permission\u002Fpolicy,\nworkspace-boundary, or unknown failures. Report a missing path only when the\nindependent probe also fails; do not broaden the search or substitute another\nartifact.\n\n## Collection path\n\nUse this path only when no usable coverage evidence exists and the user asked for\nanalysis that requires it.\n\n1. Read `references\u002Fsetup-discovery.md`.\n2. Prefer existing Cobertura discovered under the requested root.\n3. If none exists, invoke `run-tests` for repository overlay, platform, runner,\n   and command selection, and have it collect Cobertura once per entry point.\n4. Analyze the resulting Cobertura. Compute CRAP only if risk analysis was\n   explicitly requested.\n\nWhen the workspace contains the project\u002Ftest manifests needed by this path,\nperform discovery directly and delegate collection to `run-tests`. Do not ask\nthe user to attach files or pre-run coverage that the current workspace lets\nyou inspect and generate.\n\nDo not modify production code. Any incidental test-project change needed for\ncollection is owned by `run-tests`; include that change and its revert command\nin the final analysis.\n\nThe automatic collection path is for SDK-style projects. For classic non-SDK or\n`packages.config` projects, use only a repository-owned coverage command. If none\nexists, stop and request Cobertura XML. Never migrate the project, inject an\nSDK-style provider, create a wrapper project, or report substitute coverage from\nanother assembly.\n\n## Interpretation and arithmetic invariants\n\n- A line hit proves execution, not both decision outcomes.\n- `condition-coverage=\"50% (1\u002F2)\"` proves one reported outcome ran, but not which\n  one. Recommend forcing the opposite outcome. Without source, never invent likely\n  predicates or claim whether true or false is missing. State that compound\n  predicates need independently exercised operands and short-circuit combinations\n  when applicable; do not infer the exact combinations without source or fuller XML.\n- Derive overall totals from Cobertura's covered\u002Fvalid line counts. For target\n  `T`, required covered lines are `ceiling(valid lines × T)`.\n- Projected coverage is `(current covered lines + newly covered distinct lines) \u002F\n  valid lines`. State assumptions such as fully covering a method.\n- When asked whether one member can reach a target, show its maximum projected\n  total and at least one concrete sufficient combination of supplied members or\n  line gains. If no supplied combination is sufficient, say so.\n- For a multi-member target, name the exact combination and resulting covered \u002F\n  valid total; saying only \"combine it with another member\" is incomplete.\n- Reconcile member gaps against project totals. Method line ranges can overlap or\n  omit class-level lines, so do not sum method counts as project truth.\n- Never call one member the **sole**, **entire**, or **all** remaining gap unless\n  its distinct uncovered lines exactly reconcile with the project total and no\n  other below-threshold member remains.\n- Name every supplied or extracted below-threshold member, but keep detail\n  proportional: lead with the blockers, summarize the remainder in one sentence\n  or a compact table.\n\n## Response contract\n\nAnswer the user's question in the first 2–4 sentences.\n\n- **Excerpt or arithmetic question:** one explanation plus the next test or member\n  priority. No dashboard.\n- **Existing-report interpretation or plateau:** overall line\u002Fbranch coverage,\n  blocking members, reconciled target impact, and 1–3 recommendations. Use at\n  most one compact table.\n- **Explicit risk\u002FCRAP request:** top 3 actual hotspots by default, supporting\n  complexity\u002Fcoverage\u002FCRAP values, remaining flagged count, and 1–3 priorities.\n  Exclude fully covered low-risk methods from the hotspot table. Never exceed 10\n  rows unless the user requests a larger count. For refactoring safety, rank risky\n  methods by CRAP rather than raw coverage alone, then name comparatively safe\n  well-covered methods separately.\n- **Explicit full report request:** read `references\u002Foutput-format.md`. Save the\n  report only then.\n\nReport only artifacts that exist. Do not announce inaccessible output paths or\nfailed optional file writes when no file was requested.\n\n## Optional reports\n\nHTML\u002FCSV\u002Fmarkdown files are not part of normal analysis. Generate them only when\nthe user explicitly requests report files or a CI artifact.\n\n1. Deliver the direct coverage\u002Frisk answer first.\n2. For a full markdown report, read `references\u002Foutput-format.md` and save it.\n3. For HTML\u002FCSV, then read `references\u002Freport-generation.md`. Do not install\n   ReportGenerator before the direct answer, and do not retry a failed install.\n\n## Validation\n\n- Confirm a supplied report was used without test execution or tool installation.\n- Reconcile covered, valid, and uncovered line totals before projecting impact.\n- Confirm every stated blocker comes from supplied or extracted evidence.\n- If CRAP was requested, spot-check one score using `references\u002Fguidelines.md`.\n- If files were requested, verify they exist before reporting their paths.\n\n## Common Pitfalls\n\n- **Existing report triggers setup work** — stop. Analyze the named artifact first.\n- **Generic analysis triggers CRAP** — stop. CRAP requires explicit risk intent.\n- **One method is called the entire gap** — reconcile distinct uncovered lines and\n  the full below-threshold set first.\n- **A small request gets a dashboard** — scale down to a direct answer or one table.\n- **No Cobertura from collection** — report the collection failure; do not invent\n  substitute coverage.\n- **Compiler-generated method names** — verify suspicious async, lambda, or local\n  function names against source before presenting them as user-authored members.\n- **Test exit code 1** — coverage may still exist; proceed with a warning. Other\n  nonzero build failures stop the collection path.\n","# Coverage Analysis\n\n## Purpose\n\nExplain what .NET coverage evidence proves, reconcile target arithmetic, and\nidentify the code blocking progress. Add complexity\u002FCRAP ranking only when the\nuser explicitly asks for risk hotspots, CRAP, priorities by risk, or refactoring\nsafety.\n\n## When to Use\n\nUse this skill for interpreting supplied .NET line\u002Fbranch\u002Fcondition evidence,\ncoverage gaps and plateaus, target arithmetic, or explicit project-wide\ncoverage-backed risk analysis.\n\n## When Not to Use\n\n- **Named method, class, or file CRAP\u002Frefactoring-safety analysis** — use the `crap-score` skill instead\n- **Static source-to-test pairing or listing files with no tests** — use `find-untested-sources`\n- **Behavioral or pseudo-mutation gaps in existing tests** — use `test-gap-analysis`\n- **Test trait\u002Fcategory distributions or coverage shape by test type** — use `test-tagging`\n- **Writing or generating tests** — this skill identifies where tests are needed, not write them\n- **General test execution** unrelated to coverage or CRAP analysis\n- **Only collecting .NET coverage or printing a raw percentage with no diagnosis** — use `run-tests`; use native tooling for non-.NET coverage collection or analysis. Interpreting .NET line\u002Fbranch gaps remains in scope here\n\n## Inputs\n\n| Input | Required | Default | Description |\n|-------|----------|---------|-------------|\n| Project\u002Fsolution path | No | Current directory | Path to the .NET solution or project |\n| Line coverage threshold | No | 80% | Minimum acceptable line coverage |\n| Branch coverage threshold | No | 70% | Minimum acceptable branch coverage |\n| Existing Cobertura path | No | Discover only if not supplied | Preferred input; never rerun tests when usable |\n| CRAP threshold | No | 30 | Used only for explicit risk\u002FCRAP requests |\n| Hotspot count | No | 3 | Explicit risk requests only; cap at 10 unless the user asks for more |\n\nDiscover optional inputs from the workspace. Do not ask for a project path when\nthe current directory or a supplied report is sufficient.\n\n## Choose the smallest matching path\n\n| User intent | Required work | Do not do |\n|-------------|---------------|-----------|\n| Explain a supplied excerpt, condition, or summary | Answer directly from the supplied evidence | Tools, CRAP, discovery, report files |\n| Interpret a supplied Cobertura path or diagnose a plateau | Read that report, reconcile totals, name all material gaps, answer directly | Rerun tests, install tools, compute CRAP, or generate files unless explicitly requested |\n| Rank risk hotspots, compute project-wide CRAP, or assess refactoring safety | Use the supplied\u002Fexisting report, read `references\u002Fguidelines.md`, and compute CRAP before ranking | Coverage-only ranking or a full report template unless requested |\n| Analyze coverage when no report exists | Invoke `run-tests` to collect coverage with the repository-compatible runner, then analyze the generated report | Choose or execute a test command independently; CRAP unless risk was requested |\n| Produce a full markdown\u002FHTML\u002FCSV report | First deliver the direct answer; then read `references\u002Foutput-format.md` or `references\u002Freport-generation.md` | Report generation before the answer |\n\nWords such as **analyze coverage**, **what is blocking coverage**, or **why is\ncoverage stuck** do not by themselves request CRAP. Explicit signals include\n**risk hotspot**, **CRAP**, **complexity-weighted priority**, **safe to refactor**,\nor an equivalent request to combine complexity with coverage.\n\n## Existing-data fast path\n\nWhen the user supplies a coverage excerpt, summary, or valid Cobertura path:\n\n- Treat it as authoritative input and start there.\n- Do not discover the solution or test projects unless source mapping is necessary.\n- Do not run `dotnet test`, install ReportGenerator, add a coverage package, or\n  read `references\u002Fsetup-discovery.md` or `references\u002Freport-generation.md`.\n- Do not write `coverage-analysis.md` or create a report directory unless the user\n  requested a saved\u002Ffull report.\n- For interpretation and plateau questions, parse only the evidence needed to\n  answer. For explicit project-wide risk requests, use the bundled scripts as\n  described in `references\u002Fguidelines.md`.\n\nA failed read\u002Fview operation is not proof that a named path does not exist.\nClassify the failure, then make one targeted existence probe and use a normalized\npath or alternate reader only for confirmed tool availability, transport, or\npath-normalization failures and only after verifying the canonical path remains\ninside the workspace. Stop on content-exclusion, permission\u002Fpolicy,\nworkspace-boundary, or unknown failures. Report a missing path only when the\nindependent probe also fails; do not broaden the search or substitute another\nartifact.\n\n## Collection path\n\nUse this path only when no usable coverage evidence exists and the user asked for\nanalysis that requires it.\n\n1. Read `references\u002Fsetup-discovery.md`.\n2. Prefer existing Cobertura discovered under the requested root.\n3. If none exists, invoke `run-tests` for repository overlay, platform, runner,\n   and command selection, and have it collect Cobertura once per entry point.\n4. Analyze the resulting Cobertura. Compute CRAP only if risk analysis was\n   explicitly requested.\n\nWhen the workspace contains the project\u002Ftest manifests needed by this path,\nperform discovery directly and delegate collection to `run-tests`. Do not ask\nthe user to attach files or pre-run coverage that the current workspace lets\nyou inspect and generate.\n\nDo not modify production code. Any incidental test-project change needed for\ncollection is owned by `run-tests`; include that change and its revert command\nin the final analysis.\n\nThe automatic collection path is for SDK-style projects. For classic non-SDK or\n`packages.config` projects, use only a repository-owned coverage command. If none\nexists, stop and request Cobertura XML. Never migrate the project, inject an\nSDK-style provider, create a wrapper project, or report substitute coverage from\nanother assembly.\n\n## Interpretation and arithmetic invariants\n\n- A line hit proves execution, not both decision outcomes.\n- `condition-coverage=\"50% (1\u002F2)\"` proves one reported outcome ran, but not which\n  one. Recommend forcing the opposite outcome. Without source, never invent likely\n  predicates or claim whether true or false is missing. State that compound\n  predicates need independently exercised operands and short-circuit combinations\n  when applicable; do not infer the exact combinations without source or fuller XML.\n- Derive overall totals from Cobertura's covered\u002Fvalid line counts. For target\n  `T`, required covered lines are `ceiling(valid lines × T)`.\n- Projected coverage is `(current covered lines + newly covered distinct lines) \u002F\n  valid lines`. State assumptions such as fully covering a method.\n- When asked whether one member can reach a target, show its maximum projected\n  total and at least one concrete sufficient combination of supplied members or\n  line gains. If no supplied combination is sufficient, say so.\n- For a multi-member target, name the exact combination and resulting covered \u002F\n  valid total; saying only \"combine it with another member\" is incomplete.\n- Reconcile member gaps against project totals. Method line ranges can overlap or\n  omit class-level lines, so do not sum method counts as project truth.\n- Never call one member the **sole**, **entire**, or **all** remaining gap unless\n  its distinct uncovered lines exactly reconcile with the project total and no\n  other below-threshold member remains.\n- Name every supplied or extracted below-threshold member, but keep detail\n  proportional: lead with the blockers, summarize the remainder in one sentence\n  or a compact table.\n\n## Response contract\n\nAnswer the user's question in the first 2–4 sentences.\n\n- **Excerpt or arithmetic question:** one explanation plus the next test or member\n  priority. No dashboard.\n- **Existing-report interpretation or plateau:** overall line\u002Fbranch coverage,\n  blocking members, reconciled target impact, and 1–3 recommendations. Use at\n  most one compact table.\n- **Explicit risk\u002FCRAP request:** top 3 actual hotspots by default, supporting\n  complexity\u002Fcoverage\u002FCRAP values, remaining flagged count, and 1–3 priorities.\n  Exclude fully covered low-risk methods from the hotspot table. Never exceed 10\n  rows unless the user requests a larger count. For refactoring safety, rank risky\n  methods by CRAP rather than raw coverage alone, then name comparatively safe\n  well-covered methods separately.\n- **Explicit full report request:** read `references\u002Foutput-format.md`. Save the\n  report only then.\n\nReport only artifacts that exist. Do not announce inaccessible output paths or\nfailed optional file writes when no file was requested.\n\n## Optional reports\n\nHTML\u002FCSV\u002Fmarkdown files are not part of normal analysis. Generate them only when\nthe user explicitly requests report files or a CI artifact.\n\n1. Deliver the direct coverage\u002Frisk answer first.\n2. For a full markdown report, read `references\u002Foutput-format.md` and save it.\n3. For HTML\u002FCSV, then read `references\u002Freport-generation.md`. Do not install\n   ReportGenerator before the direct answer, and do not retry a failed install.\n\n## Validation\n\n- Confirm a supplied report was used without test execution or tool installation.\n- Reconcile covered, valid, and uncovered line totals before projecting impact.\n- Confirm every stated blocker comes from supplied or extracted evidence.\n- If CRAP was requested, spot-check one score using `references\u002Fguidelines.md`.\n- If files were requested, verify they exist before reporting their paths.\n\n## Common Pitfalls\n\n- **Existing report triggers setup work** — stop. Analyze the named artifact first.\n- **Generic analysis triggers CRAP** — stop. CRAP requires explicit risk intent.\n- **One method is called the entire gap** — reconcile distinct uncovered lines and\n  the full below-threshold set first.\n- **A small request gets a dashboard** — scale down to a direct answer or one table.\n- **No Cobertura from collection** — report the collection failure; do not invent\n  substitute coverage.\n- **Compiler-generated method names** — verify suspicious async, lambda, or local\n  function names against source before presenting them as user-authored members.\n- **Test exit code 1** — coverage may still exist; proceed with a warning. Other\n  nonzero build failures stop the collection path.\n",{"name":5,"license":15,"description":50},"Activation requires either supplied .NET coverage reports\u002Fpercentages\u002Fline, branch, or condition metrics, or an explicit request to collect .NET coverage for analysis. USE FOR: interpreting that evidence, including Cobertura data, partial conditions, plateaus, target arithmetic, project-wide coverage-backed CRAP, and coverage-backed refactoring safety. Analyze supplied reports directly without rerunning tests or installing tools. DO NOT USE FOR: requests with neither coverage evidence nor explicit coverage-collection intent, including hypothetical change-survival questions (use test-gap-analysis); CRAP or refactoring safety for one named target (use crap-score); or requests owned by test-tagging, find-untested-sources, test-anti-patterns, run-tests, or code-testing.\n","main","f8f2bfd77819bb789d4736ce7db4a567a37fcf7e",".agents\u002Fskills\u002Fcoverage-analysis",315,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 00:25:22",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add microsoft\u002Ftestfx --skill coverage-analysis",{"tool":66,"command":67},"bunx","bunx skills add microsoft\u002Ftestfx --skill coverage-analysis",{"tool":69,"command":70},"pnpm","pnpm dlx skills add microsoft\u002Ftestfx --skill coverage-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002FSKILL.md",true,[74,80,86,90,94,98,104],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"methods.csv","ASSET","资产文件",9911,"https:\u002F\u002Fgithub.com\u002Fsherryswift1019-gif\u002FAI-DZHT\u002Fblob\u002Fmain\u002F_bmad\u002Fcore\u002Fbmad-advanced-elicitation\u002Fmethods.csv",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fguidelines.md","REFERENCE","参考文档",2634,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Freferences\u002Fguidelines.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Foutput-format.md",4220,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Freferences\u002Foutput-format.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Freport-generation.md",2089,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Freferences\u002Freport-generation.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fsetup-discovery.md",11915,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Freferences\u002Fsetup-discovery.md",{"path":99,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002FCompute-CrapScores.ps1","SCRIPT","脚本",6775,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Fscripts\u002FCompute-CrapScores.ps1",{"path":105,"resourceType":100,"resourceTypeDesc":101,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002FExtract-MethodCoverage.ps1",8077,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcoverage-analysis\u002Fscripts\u002FExtract-MethodCoverage.ps1",[109,133,159,180,200,225],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":45},"01M70GYY0AV0JGMTHE2CN6TNYK","dotnet-breaking-changes","Use before changing .NET\u002FC# code whose callers you do not control: a NuGet library, or a repo with PublicAPI.Shipped\u002FUnshipped.txt, ApiCompat, multiple TargetFrameworks, InternalsVisibleTo, or generated (.g.cs) partials. Green builds miss silent breaks from optional parameters, parameter names, sealing, const values, nullability, and #if. USE FOR: \"without breaking existing callers\"; adding a public method, overload, optional parameter, or interface member to a shipped library; renaming a public method or an internal helper a friend assembly uses; consolidating duplicated logic; changing a signature, nullability, default, or attribute; adding a target framework; RS0016\u002FRS0017 or ApiCompat errors; \"is this PR breaking?\". For a rename, extract, or merge, also invoke csharp-refactoring. DO NOT USE FOR: an executable whose callers all live in one project; renaming a local variable or private member, even in a shipped library; formatting; framework\u002FSDK\u002FNuGet upgrades (use dotnet-upgrade).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fdotnet-breaking-changes\u002FSKILL.md",[],[116,117,118,119,32,120,121,122,123,124,125,126,127,41,38,128,129,130,131,132],"dotnet","dotnet breaking changes","changes","green","default","local","errors","interface","generated","upgrade","invoke","you","merge","rename","library","live","assembly",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":45},"01M699HHE9DTZWAMPB1ZR7ZKSW","testfx-test-value-evidence","Apply the vendored test-value-evidence skill with TestFx toolchain, assertion, parallel-safety, packed-consumer, and review conventions. Use when implementing or reviewing behavior-changing TestFx PRs or commits, including source-only changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-test-value-evidence\u002FSKILL.md",[139],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[44,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,118,156,157,158],"testfx test value evidence","test value evidence","evidence","value","review","parallel","toolchain","commits","implementing","prs","only","use","when","apply","with","behavior","Safety","conventions",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":45},"01M699HEYWH1B9XGNBFY8J2FZS","testfx-parallel-safety-preflight","Check concurrency and isolation before implementing or refactoring TestFx tests, lifecycle code, helpers, shared-state declarations, or production paths those tests exercise. Use before narrowing DoNotParallelize or ResourceLock, changing parallelization settings, or introducing asynchronous workers; repeat against the final diff.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-parallel-safety-preflight\u002FSKILL.md",[],[166,157,167,146,168,169,149,170,41,171,38,172,173,174,175,176,177,178,152,179],"testfx parallel safety preflight","preflight","shared","asynchronous","exercise","concurrency","paths","isolation","helpers","diff","parallelization","lifecycle","tests","workers",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":45},"01M699HC61ZV9GJ2C8JV03951G","testfx-localization-validation","Validate generated TestFx localization catalogs, resource IDs, placeholders and locked tokens. Use for RESX\u002FXLF changes, OneLoc PRs, localization build failures, duplicate targets or units, and orphaned translation entries.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-localization-validation\u002FSKILL.md",[],[187,188,189,190,191,192,193,194,195,150,124,152,196,197,118,198,199],"testfx localization validation","validation","localization","validate","translation","ids","for","tokens","entries","units","duplicate","targets","build",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":207,"publishedAt":45},"01M699H9J2NWQXE4BDT6R0FH7S","testfx-acceptance-validation","Validate TestFx shipping paths and capable CI execution using packed consumers, package\u002Fcache provenance, exact exits and artifacts, and selected-versus-executed test evidence. Use for acceptance regressions, package\u002FMSBuild\u002Flauncher\u002Fprotocol changes, or skipped-only CI results; not for unrelated unit-only or documentation changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftestfx-acceptance-validation\u002FSKILL.md",[206],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[208,209,188,44,210,143,211,212,213,151,214,152,215,216,217,218,219,220,221,222,223,224,172,193],"testfx acceptance validation","acceptance","msbuild","launcher","ci","execution","package","cache","artifacts","provenance","documentation","unrelated","shipping","results","protocol","unit","ci results",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":231,"publishedAt":45},"01M699H70BB999BT4F627T1PHE","session-delivery-hygiene","Gate local-session scope, persistent delivery, live PR state, integration provenance, and owned cleanup. Use before implementing guidance changes, changing or pushing PR work, diagnosing package\u002Foutput mismatches, or handing off implementation.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ftestfx\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsession-delivery-hygiene\u002FSKILL.md",[],[232,233,234,235,236,149,121,237,238,131,239,214,152,217,240,241,118,242,243,244],"session delivery hygiene","delivery","session","hygiene","scope","cleanup","work","pr","output","state","integration","guidance","gate"]