# Dynamo Release Notes

> Curate, sweep, draft, cross-check, and publish the "### {version}" section of the Dynamo GitHub wiki Release-Notes page, starting from the raw ReleaseNotes_{X.Y.Z}.md generator dump. Use when compiling release notes for a Dynamo release, deciding which PRs belong in a release's notes, or inserting/updating content on the Release-Notes wiki page (https://github.com/DynamoDS/Dynamo/wiki/Release-Notes).

- Skill: `dynamods/dynamo-release-notes` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add dynamods/dynamo-release-notes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dynamods/dynamo-release-notes/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dynamods (https://skillmd.com/u/dynamods)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dynamods/dynamo-release-notes

---


# Dynamo Release Notes

## When to use

- Turning a raw `ReleaseNotes_{X.Y.Z}.md` generator dump (or an equivalent PR list) into
  a publishable wiki section for a Dynamo release — major, minor, or patch.
- Deciding whether a specific PR belongs in a release's notes, or which section
  (Features / Enhancements / Bug Fixes / Security Fixes) it belongs in.
- Inserting or correcting content on the live `DynamoDS/Dynamo` wiki's Release-Notes page.

## When not to use

- Writing or polishing release-notes *prose in isolation*, with the PR list already
  decided and no publishing step involved — see the [style guide](./assets/style-guide.md)
  directly.
- Any other content type (node descriptions, UI strings, blog posts, tutorials) — those
  stay with `dynamo-content-designer`.

## Inputs expected

- The target version number (e.g. `4.2.0`).
- The raw source: `ReleaseNotes_{X.Y.Z}.md` (produced by `PushRelease`'s
  `GENERATE_RELEASE_NOTES=on` stage running `scripts/generate-release-notes.ps1`), or an
  equivalent raw PR list for the version if that artifact wasn't generated.
- Whether this is a major/minor or patch release (changes which prior-release baseline
  applies to the bug-inclusion rule below).
- Access to the public `DynamoDS/Dynamo` wiki repo, and — for internal ticket/PR
  cross-refs (e.g. DYN tickets whose PRs live on `git.autodesk.com`) — access to that GHE
  instance.

## Output format

The finalized `### {version}` wiki section, live on
`https://github.com/DynamoDS/Dynamo/wiki/Release-Notes`, verified post-push against a
fresh fetch of the page.

---

## Workflow

1. **Orient before starting.** This skill may be run by someone other than its author —
   don't assume the caller already knows the process. Summarize the steps below, then
   ask two things: (a) proceed with the process as written, or adjust it first; (b)
   confirm the version number, the raw source file, and the release type. Treat this as
   a standing checkpoint on every run, not a one-time question.
2. **Curate the raw dump.** Apply the rules in
   [curation-rules.md](./assets/curation-rules.md): collapse revert/reapply churn on the
   same ticket to its net behavior change, drop internal/build/test/version-bump-only
   entries, and apply the shipped-baseline bug rule (a bug fix belongs in the notes only
   if the underlying bug existed in an already-*shipped* release — bugs introduced and
   fixed entirely within the current dev cycle are excluded regardless of beta exposure).
3. **Run the sweeps** — security-fix identification, breaking-changes, external-contributor
   credit, and category QA. These are independent of each other and of step 2's
   line-by-line curation, so fan them out in parallel (subagents) rather than running
   serially. Details and the contractor-vs-community-contributor distinction are in
   [curation-rules.md](./assets/curation-rules.md).
4. **Flag, don't guess.** Any inclusion, exclusion, or categorization call that isn't
   clear-cut from the raw PR text goes into an explicit "needs a call" list for the
   requester to decide. Never silently resolve ambiguity — this mirrors
   `dynamo-content-designer`'s "never hallucinate, always ask" rule, applied to editorial
   judgment calls instead of prose.
5. **Draft the prose** per `dynamo-content-designer`'s writing principles and the
   [style guide](./assets/style-guide.md) — past-tense verb, neutral tone, no internal
   jargon, one sentence per bullet where possible. Format: `### {version}` heading, then
   `#### Features` / `#### Enhancements` / `#### Bug Fixes` / `#### Security Fixes`
   (only sections with content), each item as `> * <sentence>. [PR](url)`.
6. **Cross-check against everything already published** — not just the immediately
   preceding version. Diff every candidate PR number against the *entire* existing
   `Release-Notes.md` content, all prior version sections. The raw generator only knows
   whether a PR was cherry-picked into this release's RC branch; it has no concept of "this
   PR's fix already shipped under an earlier patch release that also branched from
   `master` in the same window." Drop exact matches. This step exists because it caught 5
   duplicate PRs in the 4.2.0 pass that the generator's own tags completely missed — see
   `curation-rules.md` and DynaNotes `DynamoRelease/improvement-plan.md` item **C19**.
7. **Validate links and content.** For every cited PR: confirm the link resolves, and
   confirm the bullet text matches the PR's own `### Release Notes` body field — not just
   its title. Titles are sometimes misleadingly narrow (e.g. a title mentioning one
   template when the PR's actual described scope covers four).
8. **Insert into the live wiki.** Follow
   [wiki-publish-plumbing.md](./assets/wiki-publish-plumbing.md) exactly. The wiki repo
   contains a Windows-invalid filename that breaks any git operation touching the full
   index or working tree — normal clone/checkout/add/reset will fail or, worse, silently
   stage the entire wiki as deleted. The plumbing recipe never touches the index or
   working tree, so the real safety check is the `diff-tree` comparison in step 5 above —
   confirm it reports exactly one changed entry before proceeding to `commit-tree`. **Ask
   the requester to explicitly confirm before pushing** — a wiki push has no PR or review
   gate and is immediately live and public.
9. **Verify post-push.** Re-fetch the raw page and diff it against the pre-push version;
   confirm only the intended lines changed anywhere on the page.
10. **Retro.** Ask the requester whether anything about this run should change the skill
    itself — a new gotcha, a rule that needs adjusting, a step that was unclear or
    missing. If yes, update this skill and its assets now, while the detail is fresh,
    rather than deferring it to "someday."

## Boundaries

- ✅ **Always**: run the full curate → sweep → flag → cross-check → validate pipeline
  before drafting is considered final; confirm the `diff-tree` check shows exactly one
  changed entry before any commit-equivalent step in a wiki clone; re-verify the page
  after every push.
- ⚠️ **Ask first**: any PR whose inclusion/exclusion/category isn't clear-cut (flag,
  don't guess); crediting or omitting an external contributor when authorship is
  ambiguous; pushing the finalized section to the live wiki.
- 🚫 **Never**: run whole-index git operations (`git add -A`, `git reset`, `git checkout .`,
  a normal `git clone`) against a local clone of the `Dynamo.wiki` repo — see
  `wiki-publish-plumbing.md` for why and what to use instead. Never skip the step 6
  duplicate-publication cross-check. Never skip the pre-push confirmation.

## Assets & References

- **[curation-rules.md](./assets/curation-rules.md)** — dedup/inclusion rules, the four
  sweeps, and the C19 duplicate-publication cross-check in detail.
- **[style-guide.md](./assets/style-guide.md)** — sentence-level style rules and good
  examples for release-note bullets (moved here from `dynamo-content-designer`, which now
  redirects release-notes requests to this skill).
- **[wiki-publish-plumbing.md](./assets/wiki-publish-plumbing.md)** — the exact git
  plumbing recipe for safely editing the `Dynamo.wiki` repo on Windows.

