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.
- License 许可
- MIT
- 最近更新
- 2026-11-12
- Stars
- ★ 2.2w
- Forks
- 4.4k
01 前言 Front Matter
- name
- ort-release-notes
- description
- 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.
- argument-hint
- preset base_ref target_ref [version] [output_dir]
02 资源文件 1
- 参考文档presets.json652 B
03 SKILL.md 正文
ONNX Runtime Release Notes
Use this skill to produce a consistent release-note draft from commit history and contributor metadata.
When To Use
Use this skill when you need to:
- Draft release notes for a full ONNX Runtime release
- Draft release notes for a scoped component (e.g., in-tree plugin EP) release
- Select a release profile by preset name instead of manually supplying path/version files
- Add PR links to highlight bullets
- Build a human-only contributor acknowledgment list from contributor metadata
Required Inputs
Collect these inputs from the user or infer from context:
preset: release profile name (for example,ort,webgpu-plugin-ep,cuda-plugin-ep)base_ref: previous release tagtarget_ref: release commit/tag/branch tip
Optional inputs:
versionoverrideoutput_diroverride
Presets
Read preset definitions from presets.json.
The config defines shared output defaults:
outputDirPatterndraftFileName
Each preset defines:
displayName: reader-facing product or component nameversionFilepathsFile(nullable): file of git pathspecs to filter to, one per line. Use:(top)to anchor an entry at repo root.
Example presets:
ort(full ONNX Runtime)webgpu-plugin-ep(scoped WebGPU Plugin EP)cuda-plugin-ep(scoped CUDA Plugin EP)
CUDA Plugin EP Scope
The cuda-plugin-ep preset uses the pathspecs in plugin-ep-cuda/paths.txt to scope release-note changes.
Workflow
- Determine release mode.
- Select preset and load configuration from presets.json.
- Use the preset's
displayNamewhenever the release-note content names the product or component. The preset key is internal and must not appear in published content. - If preset has
pathsFile, run in scoped mode. Otherwise run full mode.
- Resolve version, in this order:
- explicit
versioninput - value from preset
versionFile
- explicit
- Resolve output directory, referred to as
resolved_output_dirafter this step. The output directory contains contributor artifacts and the release notes draft. Resolve it in this order:- explicit
output_dirinput - shared
outputDirPatternrendered with preset name and resolved version
- explicit
- Gather metadata.
- If the output directory is missing or lacks contributor artifacts, generate them with
tools/python/compile_contributors.py. - Generation can take a while because it scans commit history and fetches PR metadata.
- Use
--paths-fileonly when preset has apathsFile. - If existing contributor artifacts are reused, verify
resolved_output_dir/logs.txtmatches base/target before trusting them.
- If the output directory is missing or lacks contributor artifacts, generate them with
- Read
resolved_output_dir/detail.csvas the primary source for PR numbers, titles, authors, target commits, and cherry-pick mapping.- Use
resolved_output_dir/logs.txtfor contributor summary context and base/target verification. - Use
git logonly as a fallback sanity check when artifacts are present but incomplete or suspect. - Check PRs with unexpectedly large author lists for rebased history that imported unrelated commits. Replace those authors with the actual PR author or authors before building contributor acknowledgments; do not credit authors solely because they authored an unrelated imported commit. For example, PR #28299, the rebased history contains unrelated commits and co-author metadata.
- Use
- Build highlight categories.
- Full ORT example categories: performance, model/operator support, execution providers, API/languages, reliability/security, build/packaging/tooling, docs/dev workflow.
- Scoped mode: narrow categories to the component domain.
- Draft markdown.
- Write the release-note draft to
resolved_output_dir/<draftFileName>. - Contents:
- Intro sentence
## Highlights- Inline PR links on every highlight bullet
## Contributors- Optional scope note for scoped-component releases
- Use the preset's reader-facing
displayName, not the internal preset key. - Describe the scope in reader-facing terms, such as "commits affecting WebGPU Plugin EP code and packaging."
- Use the preset's reader-facing
- AI disclaimer if AI drafted
- Do not mention presets,
pathsFile, configuration files, or other release-note-generation implementation details in the release-note content. - Do not refer to the release notes as a "draft" in their content. "Draft" is only an internal workflow and file-naming concept.
- Write the release-note draft to
- Build contributors section.
- Start from
detail.csvoutput - Include humans only
- Exclude bots/agents (for example:
github-actions[bot],app/copilot-swe-agent,claude) - Sort alphabetically
- Start from
- Validate draft quality.
- Every highlight bullet has at least one PR link
- PRs are traceable to metadata or git history
- Contributor list is human-only and alphabetical
- Scope is correct for full vs component release
PowerShell Command Patterns
compile_contributors.py
Full ORT metadata:
python .\tools\python\compile_contributors.py \
--base <previous_tag> \
--target <target_ref> \
--dir <resolved_output_dir>
Scoped metadata:
python .\tools\python\compile_contributors.py \
--base <previous_tag> \
--target <target_ref> \
--dir <resolved_output_dir> \
--paths-file <paths_file>
Style and Policy
Default policy unless release owners override:
- Treat the range as changes since the previous release.
- Keep PR links inline with highlight claims.
- Keep contributor acknowledgments human-only and best effort.
- Include an AI disclaimer when highlights are AI drafted.
- Use GitHub Releases pages as preferred style references. E.g., ORT 1.28 release page.
- Prefer preset-driven configuration over ad-hoc path/version arguments.
- Use a single
output_dirfor contributor artifacts, logs, and the release-note draft.
04 同仓库更多 Skills
workspace-estimation-shared-header
Use when editing a boundary-safe shared header meant to be included by both in-tree and shared-provider/plugin-bridge code (e.g. include/onnxruntime/core/framework/workspace_requirement.h, or any future header supporting OrtKernelWorkspaceEstimateFunc / 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).
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/shape 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.
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.
ort-transformers-gpu-pytest
Run the ONNX Runtime transformers Python tests (onnxruntime/test/python/transformers) against a GPU wheel, and confirm real cuDNN/flash SDPA dispatch. Use when a transformers pytest fails with ModuleNotFoundError onnxruntime.capi, when torch's bundled CUDA/cuDNN 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/falling back to MATH.
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.
ort-lint
Lint and format ONNX Runtime code. Use this skill when asked to lint, format, or check code style for C++ or Python files in ONNX Runtime.