Skip to main content

create-release-note

Write a Reno release-note fragment under `releasenotes/notes/` for a change, or determine that a change needs the `changelog/no-changelog` label instead. TRIGGER when: user asks for a release note, a changelog entry, or a changelog fragment; the release-note check has failed on a pull request; or user invokes `/create-release-note`. DO NOT TRIGGER when: user asks to publish or repair the release notes of an already-tagged release — that is the `Release notes` workflow's job, not a fragment.

跳到安装

来源信息

仓库
DataDog/saluki
最近来源活动
2026年9月2日 14:07
检测到的 SKILL.md 语言
英语
星标
41
分支
13

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
create-release-note
description
Write a Reno release-note fragment under `releasenotes/notes/` for a change, or determine that a change needs the `changelog/no-changelog` label instead. TRIGGER when: user asks for a release note, a changelog entry, or a changelog fragment; the release-note check has failed on a pull request; or user invokes `/create-release-note`. DO NOT TRIGGER when: user asks to publish or repair the release notes of an already-tagged release — that is the `Release notes` workflow's job, not a fragment.
argument-hint
<topic> e.g. `fix-listener-shutdown-race`
allowed-tools
Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
# /create-release-note Every pull request records whether it has customer-visible release information. When it does, it carries a Reno note under `releasenotes/notes/`; when it does not, a maintainer applies the `changelog/no-changelog` label. The `Release note check` workflow requires one of the two before a pull request can merge. Notes are the source for the curated section of each tagged GitHub release: `reno report` renders them as reStructuredText, and `ci/tooling/release_notes.py render` converts that to GitHub-flavored Markdown. **The prose you write is reStructuredText, not Markdown** — see step 4. ## Step 1: Decide whether the change needs a note Read the change before asking the user anything: ```bash git diff $(git merge-base HEAD origin/main)...HEAD --stat ``` A note is needed when the change alters behavior someone operating Agent Data Plane could observe: new or changed configuration, metrics, telemetry, defaults, performance characteristics, error handling, or a fixed bug. A note is not needed for changes with no observable effect on the shipped binary: tests, documentation, CI configuration, developer tooling, dependency bumps that change no behavior, and pure refactors. In that case, don't invent one — tell the user the change looks like a `changelog/no-changelog` candidate and that a maintainer applies that label on the pull request. When it's genuinely ambiguous, ask the user with `AskUserQuestion` rather than guessing. ## Step 2: Choose the section and draft the content Propose a section and a draft entry from the diff, then confirm both with the user. Sections come from `releasenotes/config.yaml`: | Section | When to use | |---|---| | `upgrade` | A required operator action or a major behavior change on upgrade | | `features` | A wholly new customer-visible capability | | `enhancements` | A customer-visible improvement too small to be a feature | | `issues` | A known customer-visible limitation | | `deprecations` | A planned customer-visible removal | | `security` | A customer-relevant security change | | `fixes` | A customer-visible correction | | `other` | Customer-visible release information that fits no other section | The entry is read by people operating Agent Data Plane, not by reviewers of this pull request. Describe the observable effect, not the implementation, and make it self-contained: no references to pull requests, commits, internal type names, or other release notes. ## Step 3: Create the file with Reno ```bash make ensure-python-venv # only if .venv/bin/reno is missing .venv/bin/reno new <topic> --no-edit ``` `<topic>` is a short kebab-case slug describing the change, for example `fix-listener-shutdown-race`. Reno writes `releasenotes/notes/<topic>-<16 hex characters>.yaml`. **Never hand-write the file or its filename.** The hex suffix is Reno's unique identifier for the note. `make check-release-notes` rejects a filename that doesn't match `<topic>-<16 lowercase hex characters>.yaml`, and it rejects two notes that share an identifier — a collision that a guessed or copied suffix produces and that breaks `reno report` at release time. If `reno` can't be installed at all, generate a real suffix with `openssl rand -hex 8` rather than typing one. ## Step 4: Write the entry Keep only the section chosen in step 2 and delete every other section of the template, including its comments. The result is small: ```yaml fixes: - | Fix a listener shutdown race that could drop telemetry during process exit. ``` Prose is reStructuredText. `make check-release-notes` rejects the Markdown spellings: | Instead of Markdown | Write reStructuredText | |---|---| | `` `dogstatsd_port` `` | ``` ``dogstatsd_port`` ``` | | `[the docs](https://example.test)` | ``` `the docs <https://example.test>`_ ``` | | `__important__` | `**important**` | | `# Heading` | A title underlined with `===` | | A ` ``` `-fenced code block | A `.. code-block:: yaml` directive | | `> quoted text` | Indentation, or a `.. note::` directive | `**bold**` is the same in both, so it needs no change. Use a separate list item per distinct change, in the same section: ```yaml fixes: - | Fix a listener shutdown race that could drop telemetry during process exit. - | Fix a panic when a DogStatsD payload ends mid-tag. ``` ## Step 5: Validate ```bash make check-release-notes .venv/bin/reno lint ``` Fix anything either reports and re-run. Report to the user which file you created, its section, and its content.
在 GitHub 查看