datadog/create-release-note
Create a reno release note for a PR or change
npx skills add https://github.com/DataDog/datadog-agent --skill create-release-note
Create a release note file using the reno format. Release notes are mandatory for all PRs unless labeled changelog/no-changelog.
Use AskUserQuestion to collect the following. If $ARGUMENTS provides the topic, skip that question.
fix-ntp-timeout, add-gpu-metrics). Used in the filename.features — New functionality (e.g. "Add support for GPU metrics collection")enhancements — Small improvements to existing features (e.g. "Improve log rotation performance")fixes — Bug fixes (e.g. "Fix memory leak in forwarder")deprecations — Deprecation notices (e.g. "Deprecate log_enabled in favor of logs_enabled")upgrade — Breaking changes requiring user action (must include steps for users to identify if affected)security — Security fixes or improvementsissues — Known issues or limitationsother — Miscellaneous (rarely used)releasenotes/notes/ — Main agent (default, most common)releasenotes-dca/notes/ — Cluster Agent (DCA)cmd/trace-agent or pkg/trace, the content must be prefixed with APM : and the topic should be prefixed with apm-.Generate the file using reno:
reno new <topic> --no-edit
Or for non-default directories:
reno --rel-notes-dir <directory> new <topic> --no-edit
This creates a file at <directory>/notes/<topic>-<hash>.yaml with a template.
> Always create the file with reno. The <hash> suffix is reno's unique note ID — it must be a real, unique 16-character hex string that reno generates for you. Never hand-write a placeholder like a1b2c3d4e5f6a7b8 or any sequential/guessed value: reno treats the suffix as the note's UID and fails release-note-check with a "UID collision" when two notes share one (this placeholder has broken main more than once).
>
> If reno is not installed, install it rather than creating the file by hand: pip install reno (see the contributing guide). Only if you genuinely cannot install it, generate a real random suffix with openssl rand -hex 8 and name the file <topic>-<hash>.yaml — never a placeholder.
Then replace the template content with only the relevant section. Remove all unused sections (don't leave them commented out — reno template comments are noisy).
Final file format:
---
<section>:
- |
Description of the change written for end users.
Can span multiple lines.
Release note content must follow these rules:
link text <https://example.com>_ (NOT text)text code (double backticks, NOT single).. code-block:: <lang> directiveAPM : (e.g. APM : Fix trace sampling rate calculation). fixes:
- |
Fix memory leak when collecting Docker container metrics.
- |
Fix panic in log agent when file is rotated during read.
Run the release note linter to validate:
dda inv linter.releasenote
This checks:
text, headers #, or single-backtick codeIf linting fails, fix the issues and re-run.
| Section | When to use | Example |
|---|---|---|
| features | Wholly new capabilities | "Add Windows support for the Process Agent" |
| enhancements | Improvements too small to be features | "Add PDH data to Windows flare" |
| fixes | Bug fixes | "Fix EC2 tags collection with multiple marketplaces" |
| deprecations | Deprecation notices | "The log_enabled config option is deprecated, use logs_enabled" |
| upgrade | Breaking changes needing user action | "The --config flag format has changed. Users must update..." |
| security | Security fixes | "Enforce bearer token authentication for API endpoints" |
| issues | Known issues | "Kubernetes 1.3 is not fully supported in this release" |
| other | Misc (rarely used) | "Update internal CI tooling" |
changelog/no-changelog label)/create-release-note — Interactive: prompts for all details/create-release-note fix-ntp-timeout — Pre-fills the topicTake datadog/create-release-note from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.