[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BTBAEM06H6DVPXDBRAZM0B":3,"skill-same:01M6BTBAEM06H6DVPXDBRAZM0B":138},{"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":18,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6BTBAEM06H6DVPXDBRAZM0B","auto-build-repair",null,"Repair custom-code build failures in generated Azure SDK pull requests with one bounded customized-update invocation. WHEN: an eligible release-planner Auto SDK PR labeled auto-sdk-build-fix needs repair, or requests mention auto build repair, custom-code build repair, or fixing the SDK PR build. Not for migrations, TypeSpec authoring, or API review.","Azure\u002Fazure-sdk-for-net","Azure","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6844498?v=4","01M6BT15ZBDTV4D9RM7HCC4D8A","Microsoft Azure","01M6BT163EEHB7Y52MKZJ322Q8",6073,"MIT","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"repair","build","auto","auto build repair","azure sdk","when","custom","build-fix","for","with","fix","generated","planner","review","api","pull","release","code","update","typespec","pr","azure","pull requests","api review","sdk","2026-11-10 10:12:30",false,"---\nname: auto-build-repair\ndescription: \"Repair custom-code build failures in generated Azure SDK pull requests with one bounded customized-update invocation. WHEN: an eligible release-planner Auto SDK PR labeled auto-sdk-build-fix needs repair, or requests mention auto build repair, custom-code build repair, or fixing the SDK PR build. Not for migrations, TypeSpec authoring, or API review.\"\n---\n# Auto Build Repair\n\nRepair an already-generated, eligible Auto SDK PR **headlessly**. Use only the\nshared `azsdk tsp client customized-update` engine, also exposed as\n`azure-sdk-mcp:azsdk_customized_code_update`. Never hand-edit source, prompt for\ninput, switch repair engines, or auto-merge.\n\n## Configuration and capability\n\nRead the co-located [repair-config.yml](repair-config.yml). Its `maxIterations`\nvalue is the bound passed into the engine, **not a number of tool invocations**.\nPreserve the cross-language default of 3 when the file or key is absent; reject\nvalues outside the engine's integer range 1..10.\n\nThe CLI must advertise `--max-attempts` in\n`azsdk tsp client customized-update --help`. For MCP, the tool must expose the\ntyped `maxAttempts` parameter. If unavailable, stop and report the unsupported\ncapability; do not fall back to an outer retry loop.\n\nThis requires the engine change in\n[Azure\u002Fazure-sdk-tools#17068](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Fpull\u002F17068),\navailable in [azsdk_0.6.50](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Freleases\u002Ftag\u002Fazsdk_0.6.50).\nThe latest-release installer alone does not prove the capability exists; still\ncheck the installed CLI or MCP tool as described above.\n\n## Invoke once\n\nIdentify the single failing package and collect its build-error output. Preserve\nthat raw output as `pre-repair-errors.txt` for reporting. If the package is\nalready green, skip the engine and report `skipped_already_green`.\n\nInvoke **exactly once**, passing the configured bound:\n\n```text\nazsdk -o json tsp client customized-update\n  --edit-scope CustomCode\n  --package-path \u003Csingle failing SDK package directory>\n  --customization-request \u003Cbuild errors and failure context>\n  --max-attempts \u003CmaxIterations from repair-config.yml>\n```\n\nThe equivalent MCP arguments are `editScope: \"CustomCode\"`, `packagePath`,\n`customizationRequest`, and `maxAttempts: \u003Cconfigured maxIterations>`.\n**Omit `tspProjectPath`** so regeneration uses the pinned `tsp-location.yaml`.\nDo not introduce a repair-mode, timeout, or artifact option.\n\nThe engine owns patching, regeneration\u002Fbuild validation, and retries. Its\niterations reuse one conversation with validation feedback and retain earlier\nsource edits. Separate CLI\u002FMCP invocations do not retain that conversation.\n**There is no outer retry loop**, even if errors shrink or attempts remain.\n\nCapture the complete final JSON response as `result.json` in the results\ndirectory. Do not manufacture responses, diagnostics, or build evidence. If the\nprocess fails, retain its actual output\u002Ferror for the failure report; do not\nsubstitute an earlier successful result.\n\nFor CLI invocations, execute a Bash argument array and record that same array,\nserialized per argument with `LC_ALL=C printf '%q'`, as `engine-command.txt` in\nthe results directory. Within ANSI-C-quoted arguments (`$'...'`), replace literal\nampersands with `\\x26` before joining the serialized arguments with spaces; this\nprevents the comment sanitizer's global HTML-entity decoding from changing values.\nLeave ordinary shell-escaped arguments unchanged. Scope the C locale to this\nserialization only, not the engine process: it encodes non-ASCII bytes as ASCII\nshell escapes that survive comment sanitization.\nInclude every argument and its actual value, including `-o json`, the package\npath, customization request, and `--max-attempts`; never reconstruct or\nabbreviate the command for reporting.\nRecord stdout as `engine-stdout.txt`, stderr as\n`engine-stderr.txt`, and the process exit code as `engine-exit-code.txt`. Run\n[capture-engine-result.ps1](capture-engine-result.ps1) with `-ResultsDir` and\n`-MaxIterations` to capture the actual response. azsdk can write failed JSON to\nstderr after process diagnostics; redirecting stdout alone loses that response.\nThe helper preserves both raw streams, consolidates `engine-errors.txt`, removes\nstale results, and rejects missing, malformed, ambiguous, or contradictory\nresponses. Only standalone response objects are candidates; objects nested in\narrays or other objects are never promoted to the final response.\nIts exit code retains the engine failure; capture never authorizes\npublishing a failed repair. Do not merge diagnostics into JSON or manually\nreconstruct a response.\n\n## Scope and stopping\n\nOnly the selected package's custom code may be patched. Only the generator may\nupdate `Generated\u002F`, from unchanged pinned inputs. Never change TypeSpec,\n`tsp-location.yaml`, package metadata, tests, other packages, `.github`, `eng`,\nshared build files, dependencies, or secrets.\n\nStop when the single invocation finishes. Surface its final build diagnostics\nand guidance for spec changes, manual intervention, regeneration\u002Fbuild failure,\nexhausted iterations, cancellation, or infrastructure failure. Do not retry the\ncommand or finish the repair manually.\n\nCommit custom-code edits and regenerated output through the workflow's existing\nsafe output **only after the final package build is green** and the final\nresponse has Boolean `success: true`. Tool completion, applied patches, fewer\nerrors, or reaching the bound do not establish a green build. Missing,\nmalformed, or failing final results never authorize a push. Failed changes stay\nuncommitted; successful changes still require human review.\n\n## Deterministic reporting\n\nRun [emit-repair-report.ps1](emit-repair-report.ps1), then post its output\nverbatim through the existing `add-comment` safe output. Do not author the\ncomment or telemetry yourself.\n\n- Pass `-ResultsDir` containing the single `result.json`, the captured\n  `-PreRepairErrorsFile`, package\u002FPR identity, and configured `-MaxIterations`.\n- The engine command comes only from `engine-command.txt`, displayed verbatim in\n  a Bash code block. Missing capture is explicitly unavailable, not a guessed\n  invocation. Already-green and ineligible outcomes must not display a stale command.\n- Pass `-CommandArtifactDir` pointing to the workflow's existing uploaded,\n  secret-redacted agent log directory. If the complete report exceeds the\n  65,000-character safe-output limit, the emitter saves the full command and report\n  there and emits a compact summary with telemetry and a workflow-artifacts link.\n  Do not truncate the recorded command or actual engine arguments to fit the comment.\n- Iterations come from `attemptsUsed`: completed patch proposals reaching host\n  validation, including a no-progress proposal. Baseline\u002Fclassifier-only builds\n  and tool\u002FExit reminders do not count. Never count JSON files or infer attempts\n  from patches or prose; a missing count is unknown, not a fabricated number.\n- Explain **why** repair failed using final `buildResult`, `response_error`,\n  `errorCode`, and available spec\u002Fmanual guidance. Include attempted file\n  changes, the stop reason\u002Fcount, next action, and workflow logs—not just exit 1.\n- Preserve the existing generated\u002Fcustom file attribution and eight telemetry\n  fields in [telemetry-schema.v1.json](telemetry-schema.v1.json).\n- Use `-Eligible:$false` only when the PR fails eligibility checks.\n- Use `-ForcedStatus skipped_already_green` only when the baseline\n  package build was green and no engine attempt ran.\n- For capability or process failures, do not pass either override. Pass\n  `-EngineErrorsFile` with the captured stderr and retain `-PreRepairErrorsFile`;\n  a missing result must render as `failed`\u002F`NoEngineResult`, not a skipped run.\n\nThe renderer appends `--generated by Copilot`. Request a report on every terminal\noutcome; infrastructure failures that prevent reporting remain visible in\nActions status\u002Flogs.\n\n## Existing workflow environment\n\nWork in the existing checkout at `$GITHUB_WORKSPACE`; do not clone or create a\nsecond working copy. Keep scratch under `$RUNNER_TEMP` as prescribed by the\nworkflow. Preserve its eligibility checks, authentication, network restrictions,\nprotected-file rules, and existing success-only safe-output publisher.\n","# Auto Build Repair\n\nRepair an already-generated, eligible Auto SDK PR **headlessly**. Use only the\nshared `azsdk tsp client customized-update` engine, also exposed as\n`azure-sdk-mcp:azsdk_customized_code_update`. Never hand-edit source, prompt for\ninput, switch repair engines, or auto-merge.\n\n## Configuration and capability\n\nRead the co-located [repair-config.yml](repair-config.yml). Its `maxIterations`\nvalue is the bound passed into the engine, **not a number of tool invocations**.\nPreserve the cross-language default of 3 when the file or key is absent; reject\nvalues outside the engine's integer range 1..10.\n\nThe CLI must advertise `--max-attempts` in\n`azsdk tsp client customized-update --help`. For MCP, the tool must expose the\ntyped `maxAttempts` parameter. If unavailable, stop and report the unsupported\ncapability; do not fall back to an outer retry loop.\n\nThis requires the engine change in\n[Azure\u002Fazure-sdk-tools#17068](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Fpull\u002F17068),\navailable in [azsdk_0.6.50](https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Freleases\u002Ftag\u002Fazsdk_0.6.50).\nThe latest-release installer alone does not prove the capability exists; still\ncheck the installed CLI or MCP tool as described above.\n\n## Invoke once\n\nIdentify the single failing package and collect its build-error output. Preserve\nthat raw output as `pre-repair-errors.txt` for reporting. If the package is\nalready green, skip the engine and report `skipped_already_green`.\n\nInvoke **exactly once**, passing the configured bound:\n\n```text\nazsdk -o json tsp client customized-update\n  --edit-scope CustomCode\n  --package-path \u003Csingle failing SDK package directory>\n  --customization-request \u003Cbuild errors and failure context>\n  --max-attempts \u003CmaxIterations from repair-config.yml>\n```\n\nThe equivalent MCP arguments are `editScope: \"CustomCode\"`, `packagePath`,\n`customizationRequest`, and `maxAttempts: \u003Cconfigured maxIterations>`.\n**Omit `tspProjectPath`** so regeneration uses the pinned `tsp-location.yaml`.\nDo not introduce a repair-mode, timeout, or artifact option.\n\nThe engine owns patching, regeneration\u002Fbuild validation, and retries. Its\niterations reuse one conversation with validation feedback and retain earlier\nsource edits. Separate CLI\u002FMCP invocations do not retain that conversation.\n**There is no outer retry loop**, even if errors shrink or attempts remain.\n\nCapture the complete final JSON response as `result.json` in the results\ndirectory. Do not manufacture responses, diagnostics, or build evidence. If the\nprocess fails, retain its actual output\u002Ferror for the failure report; do not\nsubstitute an earlier successful result.\n\nFor CLI invocations, execute a Bash argument array and record that same array,\nserialized per argument with `LC_ALL=C printf '%q'`, as `engine-command.txt` in\nthe results directory. Within ANSI-C-quoted arguments (`$'...'`), replace literal\nampersands with `\\x26` before joining the serialized arguments with spaces; this\nprevents the comment sanitizer's global HTML-entity decoding from changing values.\nLeave ordinary shell-escaped arguments unchanged. Scope the C locale to this\nserialization only, not the engine process: it encodes non-ASCII bytes as ASCII\nshell escapes that survive comment sanitization.\nInclude every argument and its actual value, including `-o json`, the package\npath, customization request, and `--max-attempts`; never reconstruct or\nabbreviate the command for reporting.\nRecord stdout as `engine-stdout.txt`, stderr as\n`engine-stderr.txt`, and the process exit code as `engine-exit-code.txt`. Run\n[capture-engine-result.ps1](capture-engine-result.ps1) with `-ResultsDir` and\n`-MaxIterations` to capture the actual response. azsdk can write failed JSON to\nstderr after process diagnostics; redirecting stdout alone loses that response.\nThe helper preserves both raw streams, consolidates `engine-errors.txt`, removes\nstale results, and rejects missing, malformed, ambiguous, or contradictory\nresponses. Only standalone response objects are candidates; objects nested in\narrays or other objects are never promoted to the final response.\nIts exit code retains the engine failure; capture never authorizes\npublishing a failed repair. Do not merge diagnostics into JSON or manually\nreconstruct a response.\n\n## Scope and stopping\n\nOnly the selected package's custom code may be patched. Only the generator may\nupdate `Generated\u002F`, from unchanged pinned inputs. Never change TypeSpec,\n`tsp-location.yaml`, package metadata, tests, other packages, `.github`, `eng`,\nshared build files, dependencies, or secrets.\n\nStop when the single invocation finishes. Surface its final build diagnostics\nand guidance for spec changes, manual intervention, regeneration\u002Fbuild failure,\nexhausted iterations, cancellation, or infrastructure failure. Do not retry the\ncommand or finish the repair manually.\n\nCommit custom-code edits and regenerated output through the workflow's existing\nsafe output **only after the final package build is green** and the final\nresponse has Boolean `success: true`. Tool completion, applied patches, fewer\nerrors, or reaching the bound do not establish a green build. Missing,\nmalformed, or failing final results never authorize a push. Failed changes stay\nuncommitted; successful changes still require human review.\n\n## Deterministic reporting\n\nRun [emit-repair-report.ps1](emit-repair-report.ps1), then post its output\nverbatim through the existing `add-comment` safe output. Do not author the\ncomment or telemetry yourself.\n\n- Pass `-ResultsDir` containing the single `result.json`, the captured\n  `-PreRepairErrorsFile`, package\u002FPR identity, and configured `-MaxIterations`.\n- The engine command comes only from `engine-command.txt`, displayed verbatim in\n  a Bash code block. Missing capture is explicitly unavailable, not a guessed\n  invocation. Already-green and ineligible outcomes must not display a stale command.\n- Pass `-CommandArtifactDir` pointing to the workflow's existing uploaded,\n  secret-redacted agent log directory. If the complete report exceeds the\n  65,000-character safe-output limit, the emitter saves the full command and report\n  there and emits a compact summary with telemetry and a workflow-artifacts link.\n  Do not truncate the recorded command or actual engine arguments to fit the comment.\n- Iterations come from `attemptsUsed`: completed patch proposals reaching host\n  validation, including a no-progress proposal. Baseline\u002Fclassifier-only builds\n  and tool\u002FExit reminders do not count. Never count JSON files or infer attempts\n  from patches or prose; a missing count is unknown, not a fabricated number.\n- Explain **why** repair failed using final `buildResult`, `response_error`,\n  `errorCode`, and available spec\u002Fmanual guidance. Include attempted file\n  changes, the stop reason\u002Fcount, next action, and workflow logs—not just exit 1.\n- Preserve the existing generated\u002Fcustom file attribution and eight telemetry\n  fields in [telemetry-schema.v1.json](telemetry-schema.v1.json).\n- Use `-Eligible:$false` only when the PR fails eligibility checks.\n- Use `-ForcedStatus skipped_already_green` only when the baseline\n  package build was green and no engine attempt ran.\n- For capability or process failures, do not pass either override. Pass\n  `-EngineErrorsFile` with the captured stderr and retain `-PreRepairErrorsFile`;\n  a missing result must render as `failed`\u002F`NoEngineResult`, not a skipped run.\n\nThe renderer appends `--generated by Copilot`. Request a report on every terminal\noutcome; infrastructure failures that prevent reporting remain visible in\nActions status\u002Flogs.\n\n## Existing workflow environment\n\nWork in the existing checkout at `$GITHUB_WORKSPACE`; do not clone or create a\nsecond working copy. Keep scratch under `$RUNNER_TEMP` as prescribed by the\nworkflow. Preserve its eligibility checks, authentication, network restrictions,\nprotected-file rules, and existing success-only safe-output publisher.\n",{"name":5,"description":7},"main","dbc5eb654c3492137a4fbeeb6776c804f0042063",".github\u002Fskills\u002Fauto-build-repair",5228,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net","https:\u002F\u002Fgithub.com\u002FAzure","https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002F","APIs, SDKs and open source projects from Microsoft Azure","2026-11-11 08:47:33",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add Azure\u002Fazure-sdk-for-net --skill auto-build-repair",{"tool":64,"command":65},"bunx","bunx skills add Azure\u002Fazure-sdk-for-net --skill auto-build-repair",{"tool":67,"command":68},"pnpm","pnpm dlx skills add Azure\u002Fazure-sdk-for-net --skill auto-build-repair","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002FSKILL.md",true,[72,78,82,88,94,98,102,106,110,114,118,122,126,130,134],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"capture-engine-result.ps1","SCRIPT","脚本",6715,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Fcapture-engine-result.ps1",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"emit-repair-report.ps1",29915,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Femit-repair-report.ps1",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"evals\u002Ffixtures\u002Fpackage\u002Fsrc\u002FCustomWidget.cs","OTHER","其他",71,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Fevals\u002Ffixtures\u002Fpackage\u002Fsrc\u002FCustomWidget.cs",{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"evals\u002Ffixtures\u002Fpackage\u002Ftsp-location.yaml","REFERENCE","参考文档",106,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Fevals\u002Ffixtures\u002Fpackage\u002Ftsp-location.yaml",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"evals\u002Frepair.eval.yaml",11161,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Fevals\u002Frepair.eval.yaml",{"path":99,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":100,"sourceHtmlUrl":101},"evals\u002Ftrigger.eval.yaml",2564,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Fevals\u002Ftrigger.eval.yaml",{"path":103,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":104,"sourceHtmlUrl":105},"repair-config.yml",708,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Frepair-config.yml",{"path":107,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":108,"sourceHtmlUrl":109},"telemetry-schema.v1.json",2537,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftelemetry-schema.v1.json",{"path":111,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":112,"sourceHtmlUrl":113},"test\u002Fbounded-invocation.test.cjs",19411,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fbounded-invocation.test.cjs",{"path":115,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":116,"sourceHtmlUrl":117},"test\u002Fcapture-engine-result.tests.ps1",16184,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fcapture-engine-result.tests.ps1",{"path":119,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":120,"sourceHtmlUrl":121},"test\u002Femit-repair-report.tests.ps1",54216,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Femit-repair-report.tests.ps1",{"path":123,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":124,"sourceHtmlUrl":125},"test\u002Fsdk-build-repair-checkout.tests.cjs",7148,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fsdk-build-repair-checkout.tests.cjs",{"path":127,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":128,"sourceHtmlUrl":129},"test\u002Fsdk-build-repair-network.tests.ps1",4636,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fsdk-build-repair-network.tests.ps1",{"path":131,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":132,"sourceHtmlUrl":133},"test\u002Fsdk-build-repair-push-gate.tests.ps1",8505,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fsdk-build-repair-push-gate.tests.ps1",{"path":135,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":136,"sourceHtmlUrl":137},"test\u002Fsdk-build-repair-trigger.tests.ps1",3339,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fauto-build-repair\u002Ftest\u002Fsdk-build-repair-trigger.tests.ps1",[139,164,196,219,242,258],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":155,"publishedAt":44},"01M6BTE1QTJPYDAN115GS2EHDQ","update-chat-api","Use when: updating, exporting, refreshing, or validating the public API baseline for Azure.Messaging.WebPubSub.Chat after a public API change.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fwebpubsub\u002F.github\u002Fskills\u002Fupdate-chat-api\u002FSKILL.md",[145,150],{"categoryNo":146,"categoryName":147,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":151,"categoryName":152,"taxonomyType":153,"taxonomyTypeDesc":154},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[37,33,156,157,158,40,159,160,161,162,163,27,24],"update chat api","chat","change","messaging","baseline","public","use","public api",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":177,"publishedAt":44},"01M6BTDYJS2RSGZR2T2BTJJ6YC","search-documents","E2E workflow skill for Azure.Search.Documents SDK (TypeSpec + heavy customization). Handles full release cycles and partial updates: SHA update; code generation; build; customization fixes; ServiceVersion sync; testing; API export; changelog; version; samples; formatting; release metadata. WHEN: create new package version for Azure.Search.Documents; regenerate Azure.Search.Documents; fix Azure.Search.Documents bug; release Azure.Search.Documents; update Azure.Search.Documents spec. Do not use for Azure.ResourceManager.Search or Azure.Provisioning.Search.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fsearch\u002FAzure.Search.Documents\u002F.github\u002Fskills\u002Fsearch-documents\u002FSKILL.md",[170,173,176],{"categoryNo":171,"categoryName":172,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":174,"categoryName":175,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":151,"categoryName":152,"taxonomyType":153,"taxonomyTypeDesc":154},[178,179,180,181,182,43,183,184,40,38,185,37,36,35,186,187,188,189,190,33,29,191,192,193,194,24,195],"documents","search","search documents","testing","spec","workflow","sync","create","changelog","package","Code Generation","e2e","provisioning","bug","workflow skill","updates","new package","new",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":202,"publishedAt":44},"01M6BTDVJGZ0N7F7DXR5Z7E0QH","search-documents-version-diff","Diff the current Azure.Search.Documents public API surface against a previous published version and detect preview-to-preview regressions where the SDK customization layer was not bubbled up after a TypeSpec change. Use whenever the user asks to compare Azure.Search.Documents betas, verify no Azure.Search.Documents preview features dropped, regression audit between Azure.Search.Documents versions, sanity-check a release branch for Azure.Search.Documents, or investigate a missing Azure.Search.Documents preview feature — even if they don't say the word \"diff\". Specifically catches dropped wrappers (QueryAnswer\u002FQueryCaption\u002FQueryRewrites style), lost SearchOptions aggregator redirectors, `@@access(\"internal\")` flips, deleted-instead-of-gated `#if AZURE_SEARCH_PREVIEW` blocks, dropped `ServiceVersion` enum values, and convenience-to-protocol downgrades.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fsearch\u002FAzure.Search.Documents\u002F.github\u002Fskills\u002Fsearch-documents-version-diff\u002FSKILL.md",[],[178,179,203,180,204,205,43,158,40,38,35,206,207,33,208,209,210,211,212,213,214,215,163,216,217,218],"search documents version diff","version","diff","protocol","audit","verify","investigate","access","regression","branch","up","preview","aggregator","sanity","layer","features",{"skillNo":220,"name":221,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":226,"publishedAt":44},"01M6BTDRCG0SXKPKCFWR75FY8T","search-documents-typespec-validation","TypeSpec validation skill for Azure.Search.Documents SDK. Performs a COMPLETE validation of ALL operations, ALL models, ALL enums, and ALL properties against the TypeSpec definition at any pinned commit. Works for any API version. Generates a full gap report: missing features, extra features, naming mismatches, and recommended fix location. WHEN: \"validate Azure.Search.Documents SDK against TypeSpec\", \"detect Azure.Search.Documents typespec feature gaps\", \"what is missing from the Azure.Search.Documents SDK\", \"compare Azure.Search.Documents SDK to spec\", \"full spec coverage audit for Azure.Search.Documents\". Do NOT use for version-to-version diff or regression detection — use search-documents-version-diff instead.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fsearch\u002FAzure.Search.Documents\u002F.github\u002Fskills\u002Fsearch-documents-typespec-validation\u002FSKILL.md",[225],{"categoryNo":174,"categoryName":175,"taxonomyType":148,"taxonomyTypeDesc":149},[178,38,227,179,228,180,182,43,229,230,231,232,40,233,207,234,33,211,235,236,29,237,238,239,218,240,241,24],"validation","search documents typespec validation","to spec","commit","validate","gap report","report","detection","extra","coverage","do","full","at","api version","definition",{"skillNo":243,"name":244,"nameZh":6,"description":245,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":246,"categories":247,"keywords":248,"publishedAt":44},"01M6BTDP9JS9KNT1H9ED8AGZF5","test-skill_file","Roll dice using a random number generator.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fai\u002FAzure.AI.Projects.Agents\u002Ftests\u002FTestData\u002Froll-dice\u002FSKILL.md",[],[249,250,251,252,253,254,255,256,257],"test","Test Skill","file","test skill file","roll dice","dice","random","generator","number",{"skillNo":259,"name":260,"nameZh":6,"description":261,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":262,"categories":263,"keywords":264,"publishedAt":44},"01M6BTDMF2VK2CM53SSHZNWX7T","roll-dice","Roll dice using a random number generator. Use when asked to roll a die (d6, d20, etc.), roll dice, or generate a random dice roll.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Fblob\u002Fmain\u002Fsdk\u002Fai\u002FAzure.AI.Projects.Agents\u002Ftests\u002FSamples\u002Froll-dice\u002FSKILL.md",[],[253,254,265,162,255,256,257,24],"generate"]