[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69AHMHRARQMTS8PCVNF51KF":3,"skill-same:01M69AHMHRARQMTS8PCVNF51KF":82},{"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":26,"publishedAt":53,"linkOnly":54,"markdownContent":55,"markdownBody":56,"frontMatter":57,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M69AHMHRARQMTS8PCVNF51KF","ort-ci",null,"Trigger, re-run, and unblock ONNX Runtime CI checks on a GitHub pull request. Use this skill when a required check is stuck, missing, failed, or needs re-running. Nearly all ORT CI runs as GitHub Actions workflows; only the \"Linux Android Emulator QNN CI Pipeline\" remains on Azure Pipelines, plus the bot-driven \"license\u002Fcla\" and \"Python format\" lint checks. Triggers on: rerun CI, retrigger checks, stuck check, missing pipeline, failed CI, license\u002Fcla, Python format failure, Doc Gen CI failure, operator docs out of date, \u002Fazp run.","microsoft\u002Fonnxruntime","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69AGY0EW9AJXAH7HK223SQZ",22276,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fort-ci\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"ci","ort ci","doc","linux android","doc gen","request","rerun","when","re","trigger","runtime","as","pull","emulator","unblock","operator","run","only","github actions","actions","pipeline","bot","workflows","linux","onnx","azure pipelines","2026-11-10 10:12:30",false,"---\nname: ort-ci\ndescription: |\n  Trigger, re-run, and unblock ONNX Runtime CI checks on a GitHub pull request. Use this skill when a required check is stuck, missing, failed, or needs re-running. Nearly all ORT CI runs as GitHub Actions workflows; only the \"Linux Android Emulator QNN CI Pipeline\" remains on Azure Pipelines, plus the bot-driven \"license\u002Fcla\" and \"Python format\" lint checks. Triggers on: rerun CI, retrigger checks, stuck check, missing pipeline, failed CI, license\u002Fcla, Python format failure, Doc Gen CI failure, operator docs out of date, \u002Fazp run.\n---\n\n# ONNX Runtime CI Management\n\nWorkflows for triggering, re-running, and unblocking CI checks on an ONNX Runtime PR.\nThe repository is `microsoft\u002Fonnxruntime`. As of 2026-07, nearly all CI runs as **GitHub\nActions** workflows (~80+ checks per PR). Only **one** required check still runs on **Azure\nPipelines** — `Linux Android Emulator QNN CI Pipeline` (host `aiinfra.visualstudio.com`).\nThere is also the bot-driven `license\u002Fcla` status check.\n\n**Failures are not all the same.** Before touching anything, diagnose each failure (see\n[Triage: Diagnose Before Re-running](#triage-diagnose-before-re-running)): most failures need a\n**code change** and re-running them just fails again; only genuinely transient (network\u002Fdisk)\nfailures should be re-run via §1. §4 (Azure Pipelines) applies only to the single QNN pipeline.\n\nBefore doing anything, inspect current state so you do not queue duplicate runs.\n\n**If you make any change, commit and push it, then stop.** A push updates the PR head SHA and\nautomatically starts CI for the new commit. Do **not** manually re-run failures from the old SHA\nafter pushing a fix; that only queues redundant runs against stale code. Manual re-runs are only\nfor transient failures when the PR head has not changed.\n\n### Classify a check's provider\n\nGitHub Actions checks have a non-empty `workflowName` and a `detailsUrl` on `github.com`; the\nAzure Pipelines check has an empty `workflowName` and a `detailsUrl` on `aiinfra.visualstudio.com`:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '[.statusCheckRollup[] | {name, host:(.detailsUrl|split(\"\u002F\")[2])}]\n        | group_by(.host) | map({host:.[0].host, count:length})'\n```\n\n## Gather Context\n\n```bash\n# PR metadata + all checks grouped by state\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --json number,title,url,state,isDraft,headRefName,headRefOid,baseRefName,statusCheckRollup\n\n# Head \u002F merge SHAs for external CI\ngh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq '{head:.head.sha, merge:.merge_commit_sha}'\n```\n\nInspect `statusCheckRollup` and note, for each requested check, whether it is missing, queued,\nin progress, failed, canceled, skipped, or already successful. **Do not re-trigger a check\nthat is already `queued`\u002F`in_progress`\u002F`SUCCESS`** unless the user explicitly asks.\n\nQuickly list just the failed\u002Fpending checks:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup[]\n        | {name:(.name\u002F\u002F.context), status:(.status\u002F\u002F.state), conclusion:.conclusion}\n        | select(.conclusion!=\"SUCCESS\" and .status!=\"SUCCESS\")'\n```\n\n## Triage: Diagnose Before Re-running\n\n**Never blindly re-run failed CI.** Most failures need a code change and will fail again\nidentically on re-run. Only *transient* failures should be re-run. The process is: **download\nthe failed job's log, read the actual error, classify it, then fix or re-run case by case.**\n\n### Step 1 — Download the failed log\n\nFor a **GitHub Actions** check (the vast majority), get the run and read only the failed steps:\n\n```bash\nHEAD_SHA=$(gh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq .head.sha)\n\n# Map failed checks to their workflow run IDs\ngh run list --repo microsoft\u002Fonnxruntime --commit \"$HEAD_SHA\" --limit 100 \\\n  --json databaseId,workflowName,status,conclusion,url \\\n  --jq '.[] | select(.conclusion==\"failure\" or .conclusion==\"cancelled\")'  # cspell:ignore cancelled -- literal GitHub API value\n\n# Dump just the failed steps of a run (grep for the real error)\ngh run view \u003Crun_id> --repo microsoft\u002Fonnxruntime --log-failed > \u002Ftmp\u002Fci_\u003Crun_id>.log\ngrep -nE \"error:|FAILED|warning:|Traceback|fatal error|No space left|Could not resolve|timed out\" \\\n  \u002Ftmp\u002Fci_\u003Crun_id>.log | head -50\n```\n\nFor the **Azure Pipelines** QNN check, open its `detailsUrl` (a `dev.azure.com` \u002F\n`aiinfra.visualstudio.com` build page) and download the job log, or use the Azure DevOps\n`...\u002Fbuilds\u002F\u003CbuildId>\u002Ftimeline` + log APIs (see the `ci-failure-retrieval` skill for the exact\nrequests).\n\n### Step 2 — Classify the failure and act\n\n| # | Failure class | How to recognize it in the log | Action — **re-run or fix?** |\n|---|---|---|---|\n| 1 | **C\u002FC++ warning-as-error** | `error:` on a `-Werror`\u002F`\u002FWX` line — e.g. implicit type-cast\u002Fnarrowing (`-Werror=conversion`), `unused variable`\u002F`unused parameter` (`-Werror=unused-*`), sign-compare, maybe-uninitialized | **Fix code.** Re-run will not help. Remove\u002F`[[maybe_unused]]` the unused symbol, add an explicit `static_cast\u003CT>()` \u002F `gsl::narrow_cast\u003CT>()` for the cast, or fix the real logic. Rebuild locally to confirm the warning is gone. |\n| 2 | **Test failure** | `[  FAILED  ] Suite.Case` (gtest) or `FAILED test_*.py::... - AssertionError` (pytest); often only on some EPs | **Fix code\u002Ftest.** If a newly added op test fails only on EPs that don't support the op, restrict the test to supported EPs (e.g. gtest `OpTester::Run(..., {kCpuExecutionProvider, kCudaExecutionProvider})` \u002F `excluded_provider_types`, or skip via `SetUp`), or fix the kernel. Don't re-run unchanged. See the `ort-test` skill. |\n| 3 | **Transient \u002F infra failure** | `Could not resolve host`, `Connection timed out`, `429 Too Many Requests`, `No space left on device`, package\u002Fdownload 5xx, agent lost, submodule clone timeout — with **no** compile\u002Ftest error | **Re-run** (§1). This is the one class that a plain re-run fixes. If it recurs 2–3×, escalate — it may be a real infra\u002Fproxy issue, not noise. |\n| 4 | **Lint \u002F Python format** | `Python format` check fails; `lintrunner` reports diffs | **Fix code** with `lintrunner -a`, commit, push (§3). Re-run alone won't fix it. |\n\nRules of thumb:\n- A compile `error:` or a `[ FAILED ]`\u002F`FAILED` line means **fix the code** — re-running reruns\n  the same failing commit and fails identically.\n- Only re-run when the log shows a network\u002Fdisk\u002Fagent problem and **no** compile or assertion error.\n- When unsure, download the log and read it; do not guess from the check name alone.\n- After any code, test, lint, or generated-file fix, commit and push it. CI starts automatically\n  for the new head SHA. Do **not** use §1 after pushing a change; the failed runs belong to the old\n  SHA and re-running them would test stale code.\n\n## 1. Re-run Failed GitHub Actions (transient failures only)\n\nThe repo ships a helper that re-runs **only** the GitHub Actions workflows whose latest run\nfor the PR's current head commit failed\u002Fcanceled — and skips any workflow that already has a\nnewer run queued or in progress. Use it **only after triage** confirms the failures are\ntransient (network\u002Fdisk\u002Fagent) — see [Triage](#triage-diagnose-before-re-running). It is the\nsafest way to retry those without piling on duplicates. **Do not use this helper if you changed\nanything and pushed a new commit; the push already starts CI for the new head SHA.**\n\nScript: [tools\u002Fscripts\u002Frerun_failed_ci.sh](..\u002F..\u002F..\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh)\n\n```bash\n# Dry run first — shows what would be re-run, triggers nothing\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber> --dry-run\n\n# Actually re-run the failed\u002Fcanceled workflows for the PR's head commit\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber>\n\n# Explicit repo (auto-detected from cwd when omitted)\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber> microsoft\u002Fonnxruntime\n```\n\nIt prefers `gh run rerun \u003Cid> --failed` (retry only failed jobs) and falls back to a full\nrerun for fully canceled runs that have no discrete failed jobs. Requires an authenticated\n`gh`. Always run `--dry-run` first and confirm the list looks right before the real run.\n\nTo re-run one specific workflow manually:\n\n```bash\ngh run list --repo microsoft\u002Fonnxruntime --commit \u003Chead_sha> --limit 100 \\\n  --json databaseId,workflowName,status,conclusion,url\ngh run rerun \u003Crun_id> --repo microsoft\u002Fonnxruntime --failed   # only failed jobs\ngh run rerun \u003Crun_id> --repo microsoft\u002Fonnxruntime            # full rerun\n```\n\n## 2. Unblock `license\u002Fcla` (CLA bot)\n\nThe `license\u002Fcla` check is posted by Microsoft's CLA bot, **independent of the CI pipelines**.\nWhen it is stuck as *\"Expected — Waiting for status to be reported\"*, re-trigger only the bot —\nno CI jobs are re-run — by posting this comment on the PR:\n\n```bash\ngh pr comment \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --body \"@microsoft-github-policy-service rerun\"\n```\n\nThen verify it flips to success:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup[] | select((.name\u002F\u002F.context)==\"license\u002Fcla\")\n        | {status, conclusion}'\n```\n\nExpect `{\"status\":\"COMPLETED\",\"conclusion\":\"SUCCESS\"}`.\n\n## 3. Fix the \"Python format\" required check\n\nThe required **Python format** check (job `lint-python-format` in\n[.github\u002Fworkflows\u002Flint.yml](..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Flint.yml)) runs\n`lintrunner --all-files` and fails on any formatting\u002Flint violation. Re-running it will **not**\nhelp — you must fix the code, commit, and push. See\n[docs\u002FCoding_Conventions_and_Standards.md](..\u002F..\u002F..\u002Fdocs\u002FCoding_Conventions_and_Standards.md#linting)\nand the `ort-lint` skill.\n\n```bash\n# One-time setup (in an activated Python venv)\npip install -r requirements-lintrunner.txt\nlintrunner init\n\n# Auto-fix. Prefer changed files; use --all-files to match CI exactly.\nlintrunner -a                    # changed files only\nlintrunner -a --all-files        # everything (what CI checks)\n\n# Verify clean (no changes reported == pass)\nlintrunner --all-files\n```\n\nThen commit and push the formatting fixes; the check re-runs automatically on the new commit:\n\n```bash\ngit add -u && git commit -m \"Fix lint\" && git push\n```\n\nNotes:\n- CI runs `lintrunner --all-files`, so a local `lintrunner -a` on only changed files can miss a\n  pre-existing violation the CI reports. If the check still fails, run `--all-files` locally.\n- The same job also covers C++ clang-format and other adapters; the fix is the same\n  (`lintrunner -a`).\n\n## 4. Trigger the Azure Pipelines check (QNN Android Emulator only)\n\nAs of 2026-07, the **only** ORT check still on Azure Pipelines is\n`Linux Android Emulator QNN CI Pipeline`. Everything else is GitHub Actions (use §1). Trigger\nit through the PR comment integration:\n\n```bash\ngh pr comment \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --body \"\u002Fazp run Linux Android Emulator QNN CI Pipeline\"\n```\n\nThen wait briefly and check for a reply from `azure-pipelines[bot]`:\n\n```bash\n# Note: through the GraphQL `comments` field (what `gh pr view --json comments`\n# uses), the bot's author.login is `azure-pipelines` (no `[bot]` suffix), even\n# though it surfaces as azure-pipelines[bot] in the UI and the REST API.\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json comments \\\n  --jq '.comments[] | select(.author.login==\"azure-pipelines\")\n        | {createdAt, body}' | tail\n```\n\n- If the bot replies *\"No pipelines are associated with this pull request\"*, the pipeline is not\n  wired to the comment app — use the direct Azure DevOps API fallback (see the\n  `Trigger CI Pipelines` section of the private `gh-pr-management` skill for the\n  `dev.azure.com` project\u002Fdefinition discovery and `POST ...\u002Fruns` payload using\n  `refName: refs\u002Fpull\u002F\u003Cnumber>\u002Fmerge` and the PR `merge_commit_sha`).\n- Keep it to **one batch `\u002Fazp run` comment per attempt**; do not spam repeated comments.\n\n## 5. Fix the \"Windows GPU Doc Gen CI\" check (operator docs out of date)\n\nThe **ONNX Runtime Windows GPU Doc Gen CI** check (workflow\n[.github\u002Fworkflows\u002Fwindows_gpu_doc_gen.yml](..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fwindows_gpu_doc_gen.yml))\nbuilds ORT and runs `build.py --gen_doc validate`. It **fails when the generated operator docs\nno longer match what's committed** — typically after you add\u002Fmodify an operator or its kernel\nregistrations but forget to regenerate `docs\u002FContribOperators.md` \u002F `docs\u002FOperatorKernels.md`.\nRe-running will **not** help; you must update the docs.\n\nThe easiest fix is to download the regenerated docs the failed validation already produced.\nAfter successful generation, the workflow uploads a **single artifact named `updated-docs`**\nwhether validation passes or finds stale docs. It contains `OperatorKernels.md`,\n`ContribOperators.md`, and `generation-metadata.json` at its top level. Build or plugin-query\nfailures do not produce a new artifact.\n\n```bash\nHEAD_SHA=$(gh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq .head.sha)\n\n# Find the failed Doc Gen run\nrun_id=$(gh run list --repo microsoft\u002Fonnxruntime --commit \"$HEAD_SHA\" --limit 100 \\\n  --json databaseId,workflowName,conclusion \\\n  --jq '.[] | select(.workflowName|test(\"Doc Gen\")) | select(.conclusion==\"failure\") | .databaseId' | head -1)\n\n# Confirm the artifact is present (expect: updated-docs)\ngh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Factions\u002Fruns\u002F$run_id\u002Fartifacts --jq '.artifacts[].name'\n\n# Download separately so provenance stays out of the source docs directory.\nartifact_dir=$(mktemp -d)\ngh run download \"$run_id\" --repo microsoft\u002Fonnxruntime -n updated-docs --dir \"$artifact_dir\"\ncp \"$artifact_dir\u002FOperatorKernels.md\" \"$artifact_dir\u002FContribOperators.md\" docs\u002F\n```\n\nThen review, commit, and push — the check re-runs on the new commit:\n\n```bash\ngit diff --stat docs\u002FContribOperators.md docs\u002FOperatorKernels.md\ngit add docs\u002FContribOperators.md docs\u002FOperatorKernels.md\ngit commit -m \"Update operator docs\" && git push\n```\n\nNotes:\n- The `updated-docs` artifact always contains **both** `OperatorKernels.md` and\n  `ContribOperators.md`. Copy both; only changed content will appear in `git diff`.\n  `generation-metadata.json` records the source commit, runtime\u002Fplugin versions, options, and\n  hashes. Keep it with the downloaded artifact; do not commit it under `docs\u002F`.\n- Canonical generation requires CPU, CUDA, DirectML, and the native WebGPU plugin from the\n  same source checkout. For the matching Windows build and regeneration commands, see\n  [How To Update ONNX](..\u002F..\u002F..\u002Fdocs\u002FHow_To_Update_ONNX_Dev_Notes.md).\n  Downloading the CI artifact avoids this full build.\n\n## Special-Case Check Handling\n\n| Check \u002F job name | Owner | How to unblock |\n|---|---|---|\n| `license\u002Fcla` | CLA bot | Comment `@microsoft-github-policy-service rerun` (§2) |\n| `Python format` (`lint-python-format`) | GitHub Actions | Fix with `lintrunner -a`, commit, push (§3) — rerun alone won't fix |\n| `ONNX Runtime Windows GPU Doc Gen CI` | GitHub Actions | Copy the Markdown files from `updated-docs` into `docs\u002F`, commit, push (§5) — rerun alone won't fix |\n| `Optional Lint`, `Optional Lint C++` | GitHub Actions | Non-required reviewdog checks; fix warnings or ignore |\n| Most CI (Linux\u002FWindows\u002FMac\u002FCUDA\u002FTensorRT\u002FWebGPU\u002FWeb\u002FAndroid\u002FiOS, `windows_x64_*`, Builds, PR Checks) | GitHub Actions | `rerun_failed_ci.sh \u003Cnumber>` (§1) |\n| `Linux Android Emulator QNN CI Pipeline` | Azure DevOps | `\u002Fazp run Linux Android Emulator QNN CI Pipeline` (§4), then API fallback |\n\n## Safety Rules\n\n- **Never** trigger release, publish, official, nightly, signing (`ESRP`), deployment, or\n  package-upload pipelines unless the user explicitly asks for that class of pipeline. Treat\n  names containing `release`, `publish`, `official`, `nightly`, `sign`, `ESRP`, `production`, or\n  `deploy` as high-risk and confirm first.\n- Always `--dry-run` the rerun script before the real run.\n- Do not re-run green checks or dispatch unrelated workflows.\n- Prefer PR merge refs (`refs\u002Fpull\u002F\u003Cnumber>\u002Fmerge`) over branch refs for external CI so the run\n  validates the merge result.\n- Do not claim success until the provider returns a queued\u002Fin-progress\u002Fcompleted run ID or URL,\n  or the check flips state in `statusCheckRollup`.\n\n## Verify After Triggering\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup | group_by(.status\u002F\u002F.state)\n        | map({state:(.[0].status\u002F\u002F.[0].state), count:length})'\n```\n\nConfirm the previously stuck\u002Ffailed check moved to `queued`\u002F`in_progress` (or `SUCCESS` for the\nCLA bot), and that no duplicate runs were created for the same head SHA.\n","# ONNX Runtime CI Management\n\nWorkflows for triggering, re-running, and unblocking CI checks on an ONNX Runtime PR.\nThe repository is `microsoft\u002Fonnxruntime`. As of 2026-07, nearly all CI runs as **GitHub\nActions** workflows (~80+ checks per PR). Only **one** required check still runs on **Azure\nPipelines** — `Linux Android Emulator QNN CI Pipeline` (host `aiinfra.visualstudio.com`).\nThere is also the bot-driven `license\u002Fcla` status check.\n\n**Failures are not all the same.** Before touching anything, diagnose each failure (see\n[Triage: Diagnose Before Re-running](#triage-diagnose-before-re-running)): most failures need a\n**code change** and re-running them just fails again; only genuinely transient (network\u002Fdisk)\nfailures should be re-run via §1. §4 (Azure Pipelines) applies only to the single QNN pipeline.\n\nBefore doing anything, inspect current state so you do not queue duplicate runs.\n\n**If you make any change, commit and push it, then stop.** A push updates the PR head SHA and\nautomatically starts CI for the new commit. Do **not** manually re-run failures from the old SHA\nafter pushing a fix; that only queues redundant runs against stale code. Manual re-runs are only\nfor transient failures when the PR head has not changed.\n\n### Classify a check's provider\n\nGitHub Actions checks have a non-empty `workflowName` and a `detailsUrl` on `github.com`; the\nAzure Pipelines check has an empty `workflowName` and a `detailsUrl` on `aiinfra.visualstudio.com`:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '[.statusCheckRollup[] | {name, host:(.detailsUrl|split(\"\u002F\")[2])}]\n        | group_by(.host) | map({host:.[0].host, count:length})'\n```\n\n## Gather Context\n\n```bash\n# PR metadata + all checks grouped by state\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --json number,title,url,state,isDraft,headRefName,headRefOid,baseRefName,statusCheckRollup\n\n# Head \u002F merge SHAs for external CI\ngh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq '{head:.head.sha, merge:.merge_commit_sha}'\n```\n\nInspect `statusCheckRollup` and note, for each requested check, whether it is missing, queued,\nin progress, failed, canceled, skipped, or already successful. **Do not re-trigger a check\nthat is already `queued`\u002F`in_progress`\u002F`SUCCESS`** unless the user explicitly asks.\n\nQuickly list just the failed\u002Fpending checks:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup[]\n        | {name:(.name\u002F\u002F.context), status:(.status\u002F\u002F.state), conclusion:.conclusion}\n        | select(.conclusion!=\"SUCCESS\" and .status!=\"SUCCESS\")'\n```\n\n## Triage: Diagnose Before Re-running\n\n**Never blindly re-run failed CI.** Most failures need a code change and will fail again\nidentically on re-run. Only *transient* failures should be re-run. The process is: **download\nthe failed job's log, read the actual error, classify it, then fix or re-run case by case.**\n\n### Step 1 — Download the failed log\n\nFor a **GitHub Actions** check (the vast majority), get the run and read only the failed steps:\n\n```bash\nHEAD_SHA=$(gh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq .head.sha)\n\n# Map failed checks to their workflow run IDs\ngh run list --repo microsoft\u002Fonnxruntime --commit \"$HEAD_SHA\" --limit 100 \\\n  --json databaseId,workflowName,status,conclusion,url \\\n  --jq '.[] | select(.conclusion==\"failure\" or .conclusion==\"cancelled\")'  # cspell:ignore cancelled -- literal GitHub API value\n\n# Dump just the failed steps of a run (grep for the real error)\ngh run view \u003Crun_id> --repo microsoft\u002Fonnxruntime --log-failed > \u002Ftmp\u002Fci_\u003Crun_id>.log\ngrep -nE \"error:|FAILED|warning:|Traceback|fatal error|No space left|Could not resolve|timed out\" \\\n  \u002Ftmp\u002Fci_\u003Crun_id>.log | head -50\n```\n\nFor the **Azure Pipelines** QNN check, open its `detailsUrl` (a `dev.azure.com` \u002F\n`aiinfra.visualstudio.com` build page) and download the job log, or use the Azure DevOps\n`...\u002Fbuilds\u002F\u003CbuildId>\u002Ftimeline` + log APIs (see the `ci-failure-retrieval` skill for the exact\nrequests).\n\n### Step 2 — Classify the failure and act\n\n| # | Failure class | How to recognize it in the log | Action — **re-run or fix?** |\n|---|---|---|---|\n| 1 | **C\u002FC++ warning-as-error** | `error:` on a `-Werror`\u002F`\u002FWX` line — e.g. implicit type-cast\u002Fnarrowing (`-Werror=conversion`), `unused variable`\u002F`unused parameter` (`-Werror=unused-*`), sign-compare, maybe-uninitialized | **Fix code.** Re-run will not help. Remove\u002F`[[maybe_unused]]` the unused symbol, add an explicit `static_cast\u003CT>()` \u002F `gsl::narrow_cast\u003CT>()` for the cast, or fix the real logic. Rebuild locally to confirm the warning is gone. |\n| 2 | **Test failure** | `[  FAILED  ] Suite.Case` (gtest) or `FAILED test_*.py::... - AssertionError` (pytest); often only on some EPs | **Fix code\u002Ftest.** If a newly added op test fails only on EPs that don't support the op, restrict the test to supported EPs (e.g. gtest `OpTester::Run(..., {kCpuExecutionProvider, kCudaExecutionProvider})` \u002F `excluded_provider_types`, or skip via `SetUp`), or fix the kernel. Don't re-run unchanged. See the `ort-test` skill. |\n| 3 | **Transient \u002F infra failure** | `Could not resolve host`, `Connection timed out`, `429 Too Many Requests`, `No space left on device`, package\u002Fdownload 5xx, agent lost, submodule clone timeout — with **no** compile\u002Ftest error | **Re-run** (§1). This is the one class that a plain re-run fixes. If it recurs 2–3×, escalate — it may be a real infra\u002Fproxy issue, not noise. |\n| 4 | **Lint \u002F Python format** | `Python format` check fails; `lintrunner` reports diffs | **Fix code** with `lintrunner -a`, commit, push (§3). Re-run alone won't fix it. |\n\nRules of thumb:\n- A compile `error:` or a `[ FAILED ]`\u002F`FAILED` line means **fix the code** — re-running reruns\n  the same failing commit and fails identically.\n- Only re-run when the log shows a network\u002Fdisk\u002Fagent problem and **no** compile or assertion error.\n- When unsure, download the log and read it; do not guess from the check name alone.\n- After any code, test, lint, or generated-file fix, commit and push it. CI starts automatically\n  for the new head SHA. Do **not** use §1 after pushing a change; the failed runs belong to the old\n  SHA and re-running them would test stale code.\n\n## 1. Re-run Failed GitHub Actions (transient failures only)\n\nThe repo ships a helper that re-runs **only** the GitHub Actions workflows whose latest run\nfor the PR's current head commit failed\u002Fcanceled — and skips any workflow that already has a\nnewer run queued or in progress. Use it **only after triage** confirms the failures are\ntransient (network\u002Fdisk\u002Fagent) — see [Triage](#triage-diagnose-before-re-running). It is the\nsafest way to retry those without piling on duplicates. **Do not use this helper if you changed\nanything and pushed a new commit; the push already starts CI for the new head SHA.**\n\nScript: [tools\u002Fscripts\u002Frerun_failed_ci.sh](..\u002F..\u002F..\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh)\n\n```bash\n# Dry run first — shows what would be re-run, triggers nothing\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber> --dry-run\n\n# Actually re-run the failed\u002Fcanceled workflows for the PR's head commit\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber>\n\n# Explicit repo (auto-detected from cwd when omitted)\n.\u002Ftools\u002Fscripts\u002Frerun_failed_ci.sh \u003Cnumber> microsoft\u002Fonnxruntime\n```\n\nIt prefers `gh run rerun \u003Cid> --failed` (retry only failed jobs) and falls back to a full\nrerun for fully canceled runs that have no discrete failed jobs. Requires an authenticated\n`gh`. Always run `--dry-run` first and confirm the list looks right before the real run.\n\nTo re-run one specific workflow manually:\n\n```bash\ngh run list --repo microsoft\u002Fonnxruntime --commit \u003Chead_sha> --limit 100 \\\n  --json databaseId,workflowName,status,conclusion,url\ngh run rerun \u003Crun_id> --repo microsoft\u002Fonnxruntime --failed   # only failed jobs\ngh run rerun \u003Crun_id> --repo microsoft\u002Fonnxruntime            # full rerun\n```\n\n## 2. Unblock `license\u002Fcla` (CLA bot)\n\nThe `license\u002Fcla` check is posted by Microsoft's CLA bot, **independent of the CI pipelines**.\nWhen it is stuck as *\"Expected — Waiting for status to be reported\"*, re-trigger only the bot —\nno CI jobs are re-run — by posting this comment on the PR:\n\n```bash\ngh pr comment \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --body \"@microsoft-github-policy-service rerun\"\n```\n\nThen verify it flips to success:\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup[] | select((.name\u002F\u002F.context)==\"license\u002Fcla\")\n        | {status, conclusion}'\n```\n\nExpect `{\"status\":\"COMPLETED\",\"conclusion\":\"SUCCESS\"}`.\n\n## 3. Fix the \"Python format\" required check\n\nThe required **Python format** check (job `lint-python-format` in\n[.github\u002Fworkflows\u002Flint.yml](..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Flint.yml)) runs\n`lintrunner --all-files` and fails on any formatting\u002Flint violation. Re-running it will **not**\nhelp — you must fix the code, commit, and push. See\n[docs\u002FCoding_Conventions_and_Standards.md](..\u002F..\u002F..\u002Fdocs\u002FCoding_Conventions_and_Standards.md#linting)\nand the `ort-lint` skill.\n\n```bash\n# One-time setup (in an activated Python venv)\npip install -r requirements-lintrunner.txt\nlintrunner init\n\n# Auto-fix. Prefer changed files; use --all-files to match CI exactly.\nlintrunner -a                    # changed files only\nlintrunner -a --all-files        # everything (what CI checks)\n\n# Verify clean (no changes reported == pass)\nlintrunner --all-files\n```\n\nThen commit and push the formatting fixes; the check re-runs automatically on the new commit:\n\n```bash\ngit add -u && git commit -m \"Fix lint\" && git push\n```\n\nNotes:\n- CI runs `lintrunner --all-files`, so a local `lintrunner -a` on only changed files can miss a\n  pre-existing violation the CI reports. If the check still fails, run `--all-files` locally.\n- The same job also covers C++ clang-format and other adapters; the fix is the same\n  (`lintrunner -a`).\n\n## 4. Trigger the Azure Pipelines check (QNN Android Emulator only)\n\nAs of 2026-07, the **only** ORT check still on Azure Pipelines is\n`Linux Android Emulator QNN CI Pipeline`. Everything else is GitHub Actions (use §1). Trigger\nit through the PR comment integration:\n\n```bash\ngh pr comment \u003Cnumber> --repo microsoft\u002Fonnxruntime \\\n  --body \"\u002Fazp run Linux Android Emulator QNN CI Pipeline\"\n```\n\nThen wait briefly and check for a reply from `azure-pipelines[bot]`:\n\n```bash\n# Note: through the GraphQL `comments` field (what `gh pr view --json comments`\n# uses), the bot's author.login is `azure-pipelines` (no `[bot]` suffix), even\n# though it surfaces as azure-pipelines[bot] in the UI and the REST API.\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json comments \\\n  --jq '.comments[] | select(.author.login==\"azure-pipelines\")\n        | {createdAt, body}' | tail\n```\n\n- If the bot replies *\"No pipelines are associated with this pull request\"*, the pipeline is not\n  wired to the comment app — use the direct Azure DevOps API fallback (see the\n  `Trigger CI Pipelines` section of the private `gh-pr-management` skill for the\n  `dev.azure.com` project\u002Fdefinition discovery and `POST ...\u002Fruns` payload using\n  `refName: refs\u002Fpull\u002F\u003Cnumber>\u002Fmerge` and the PR `merge_commit_sha`).\n- Keep it to **one batch `\u002Fazp run` comment per attempt**; do not spam repeated comments.\n\n## 5. Fix the \"Windows GPU Doc Gen CI\" check (operator docs out of date)\n\nThe **ONNX Runtime Windows GPU Doc Gen CI** check (workflow\n[.github\u002Fworkflows\u002Fwindows_gpu_doc_gen.yml](..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fwindows_gpu_doc_gen.yml))\nbuilds ORT and runs `build.py --gen_doc validate`. It **fails when the generated operator docs\nno longer match what's committed** — typically after you add\u002Fmodify an operator or its kernel\nregistrations but forget to regenerate `docs\u002FContribOperators.md` \u002F `docs\u002FOperatorKernels.md`.\nRe-running will **not** help; you must update the docs.\n\nThe easiest fix is to download the regenerated docs the failed validation already produced.\nAfter successful generation, the workflow uploads a **single artifact named `updated-docs`**\nwhether validation passes or finds stale docs. It contains `OperatorKernels.md`,\n`ContribOperators.md`, and `generation-metadata.json` at its top level. Build or plugin-query\nfailures do not produce a new artifact.\n\n```bash\nHEAD_SHA=$(gh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Fpulls\u002F\u003Cnumber> --jq .head.sha)\n\n# Find the failed Doc Gen run\nrun_id=$(gh run list --repo microsoft\u002Fonnxruntime --commit \"$HEAD_SHA\" --limit 100 \\\n  --json databaseId,workflowName,conclusion \\\n  --jq '.[] | select(.workflowName|test(\"Doc Gen\")) | select(.conclusion==\"failure\") | .databaseId' | head -1)\n\n# Confirm the artifact is present (expect: updated-docs)\ngh api repos\u002Fmicrosoft\u002Fonnxruntime\u002Factions\u002Fruns\u002F$run_id\u002Fartifacts --jq '.artifacts[].name'\n\n# Download separately so provenance stays out of the source docs directory.\nartifact_dir=$(mktemp -d)\ngh run download \"$run_id\" --repo microsoft\u002Fonnxruntime -n updated-docs --dir \"$artifact_dir\"\ncp \"$artifact_dir\u002FOperatorKernels.md\" \"$artifact_dir\u002FContribOperators.md\" docs\u002F\n```\n\nThen review, commit, and push — the check re-runs on the new commit:\n\n```bash\ngit diff --stat docs\u002FContribOperators.md docs\u002FOperatorKernels.md\ngit add docs\u002FContribOperators.md docs\u002FOperatorKernels.md\ngit commit -m \"Update operator docs\" && git push\n```\n\nNotes:\n- The `updated-docs` artifact always contains **both** `OperatorKernels.md` and\n  `ContribOperators.md`. Copy both; only changed content will appear in `git diff`.\n  `generation-metadata.json` records the source commit, runtime\u002Fplugin versions, options, and\n  hashes. Keep it with the downloaded artifact; do not commit it under `docs\u002F`.\n- Canonical generation requires CPU, CUDA, DirectML, and the native WebGPU plugin from the\n  same source checkout. For the matching Windows build and regeneration commands, see\n  [How To Update ONNX](..\u002F..\u002F..\u002Fdocs\u002FHow_To_Update_ONNX_Dev_Notes.md).\n  Downloading the CI artifact avoids this full build.\n\n## Special-Case Check Handling\n\n| Check \u002F job name | Owner | How to unblock |\n|---|---|---|\n| `license\u002Fcla` | CLA bot | Comment `@microsoft-github-policy-service rerun` (§2) |\n| `Python format` (`lint-python-format`) | GitHub Actions | Fix with `lintrunner -a`, commit, push (§3) — rerun alone won't fix |\n| `ONNX Runtime Windows GPU Doc Gen CI` | GitHub Actions | Copy the Markdown files from `updated-docs` into `docs\u002F`, commit, push (§5) — rerun alone won't fix |\n| `Optional Lint`, `Optional Lint C++` | GitHub Actions | Non-required reviewdog checks; fix warnings or ignore |\n| Most CI (Linux\u002FWindows\u002FMac\u002FCUDA\u002FTensorRT\u002FWebGPU\u002FWeb\u002FAndroid\u002FiOS, `windows_x64_*`, Builds, PR Checks) | GitHub Actions | `rerun_failed_ci.sh \u003Cnumber>` (§1) |\n| `Linux Android Emulator QNN CI Pipeline` | Azure DevOps | `\u002Fazp run Linux Android Emulator QNN CI Pipeline` (§4), then API fallback |\n\n## Safety Rules\n\n- **Never** trigger release, publish, official, nightly, signing (`ESRP`), deployment, or\n  package-upload pipelines unless the user explicitly asks for that class of pipeline. Treat\n  names containing `release`, `publish`, `official`, `nightly`, `sign`, `ESRP`, `production`, or\n  `deploy` as high-risk and confirm first.\n- Always `--dry-run` the rerun script before the real run.\n- Do not re-run green checks or dispatch unrelated workflows.\n- Prefer PR merge refs (`refs\u002Fpull\u002F\u003Cnumber>\u002Fmerge`) over branch refs for external CI so the run\n  validates the merge result.\n- Do not claim success until the provider returns a queued\u002Fin-progress\u002Fcompleted run ID or URL,\n  or the check flips state in `statusCheckRollup`.\n\n## Verify After Triggering\n\n```bash\ngh pr view \u003Cnumber> --repo microsoft\u002Fonnxruntime --json statusCheckRollup \\\n  --jq '.statusCheckRollup | group_by(.status\u002F\u002F.state)\n        | map({state:(.[0].status\u002F\u002F.[0].state), count:length})'\n```\n\nConfirm the previously stuck\u002Ffailed check moved to `queued`\u002F`in_progress` (or `SUCCESS` for the\nCLA bot), and that no duplicate runs were created for the same head SHA.\n",{"name":5,"description":7},"main","2650ca13cafde3a061d412e4a7748b479ba2176c",".github\u002Fskills\u002Fort-ci",4436,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime","https:\u002F\u002Fonnxruntime.ai","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-11 08:49:21",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add microsoft\u002Fonnxruntime --skill ort-ci",{"tool":74,"command":75},"bunx","bunx skills add microsoft\u002Fonnxruntime --skill ort-ci",{"tool":77,"command":78},"pnpm","pnpm dlx skills add microsoft\u002Fonnxruntime --skill ort-ci","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fort-ci\u002FSKILL.md",true,[],[83,114,142,165,184,200],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":94,"publishedAt":53},"01M69AJ65WPPT5DS4JA8YWN37B","workspace-estimation-shared-header","Use when editing a boundary-safe shared header meant to be included by both in-tree and shared-provider\u002Fplugin-bridge code (e.g. include\u002Fonnxruntime\u002Fcore\u002Fframework\u002Fworkspace_requirement.h, or any future header supporting OrtKernelWorkspaceEstimateFunc \u002F DeclareWorkspaceRequirements per issue #29775's Phase-A workspace-estimation roadmap), or when a workspace-estimation math helper needs to be callable from a future plugin EP DLL. Covers a Node forward-declaration ODR trap and the math-helper vs. graph-parsing-wrapper reuse boundary discovered while implementing PR #29811 (MatMulNBits pilot).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fworkspace-estimation-shared-header\u002FSKILL.md",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,34],"workspace estimation shared header","workspace","estimation","shared","safe","pr","code","framework","graph","parsing","node","math","bridge","roadmap","Wrapper","issue","tree","implementing","phase",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":123,"publishedAt":53},"01M69AJ3F3NXDS7QP76KZ9EX5H","webgpu-local-testing","Build and run ONNX Runtime WebGPU provider tests on Linux WITHOUT a real GPU, using a software Vulkan adapter (Mesa lavapipe). Use when you need to exercise WebGPU EP kernels off-Mac — the Linux webgpu CI leg is build-only, so software Vulkan is how you actually run WebGPU correctness tests locally. SCOPE - lavapipe only validates host-side enforce\u002Fshape bugs and MatMul-free kernels; any graph containing MatMul (including the expanded-Attention node tests) crashes lavapipe and runs ONLY on macOS-arm64 Metal, which is the source of truth for those. Covers install (dnf on Azure Linux), the --use_webgpu build flag, the onnxruntime_provider_test target, VK_ICD_FILENAMES, and the lavapipe MatMul crash gotcha.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fwebgpu-local-testing\u002FSKILL.md",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[124,125,126,127,128,129,130,131,50,132,51,43,27,133,134,105,135,44,136,137,138,139,140,141,34],"testing","webgpu","webgpu local testing","local testing","local","macos","metal","vulkan","test","exercise","how","install","free","host","scope","you","vk","which",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":53},"01M69AJ1ASRSCJ90HDWN05TW82","python-kwargs-setattr-security","When reviewing or fixing Python code that uses setattr() with user-controlled kwargs to configure C++ extension objects (SessionOptions, RunOptions, etc.) in ONNX Runtime. Use this to apply the allowlist pattern that prevents arbitrary file writes and other attacks via reflected property access.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpython-kwargs-setattr-security\u002FSKILL.md",[],[149,150,151,51,101,152,153,154,155,156,157,158,37,159,160,161,162,163,164,34],"python","security","python kwargs setattr security","file","access","configure","use","objects","pattern","c++","extension","via","with","attacks","python code","apply",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":53},"01M69AHZ0M0Q90TP0KYMZ10HEP","ort-transformers-gpu-pytest","Run the ONNX Runtime transformers Python tests (onnxruntime\u002Ftest\u002Fpython\u002Ftransformers) against a GPU wheel, and confirm real cuDNN\u002Fflash SDPA dispatch. Use when a transformers pytest fails with ModuleNotFoundError onnxruntime.capi, when torch's bundled CUDA\u002FcuDNN libs shadow the ORT-built ones (wrong-version dispatch or load errors), or when you must PROVE a test exercised the cuDNN SDPA decode tier instead of silently skipping\u002Ffalling back to MATH.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fort-transformers-gpu-pytest\u002FSKILL.md",[],[172,173,174,175,149,132,51,43,176,106,155,177,37,178,179,139,180,181,182,183,34],"ort transformers gpu pytest","gpu","Transformers","pytest","flash","back","tests","SDPA","errors","load","prove","decode",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"publishedAt":53},"01M69AHW3EFVHBHB2S7103YA21","ort-test","Run ONNX Runtime tests. Use this skill when asked to run tests, debug test failures, or find and execute specific test cases in ONNX Runtime.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fort-test\u002FSKILL.md",[190],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[132,192,193,194,195,51,196,43,197,198,155,37,178,199,34],"ort test","run tests","debug","debug test","debug test failures","find","execute","test cases",{"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":206,"publishedAt":53},"01M69AHSKXBSERP5NGAJB5E6XD","ort-release-notes","Draft ONNX Runtime release notes using preset configurations for full ORT or scoped component releases. Use when generating highlights with PR links, compiling human contributor acknowledgments from compile_contributors.py output, and applying preset path filtering.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fonnxruntime\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fort-release-notes\u002FSKILL.md",[],[207,208,209,210,211,212,51,100,213,214,215,216,217,218,37,219,220,221,222,223,34],"notes","ort release notes","release notes","release","component","preset","compile","compiling","contributors","releases","human","full","links","path","for","scoped","contributor"]