Writing release notes articles for tldraw SDK releases. Use when creating new release documentation, drafting release notes from scratch, or reviewing release note quality. Provides guidance on structure, voice, and content for release files in `apps/docs/content/releases/`.
npx skills add https://github.com/tldraw/tldraw --skill write-release-notes
This skill covers how to write a complete release notes article for a published tldraw SDK release.
All release files live in apps/docs/content/releases/.
| File | Purpose |
| ------------ | --------------------------------------------------------- |
| next.mdx | Accumulates changes for the upcoming release |
| vX.Y.0.mdx | Published releases (immutable except for patch additions) |
Get the version number and find the GitHub release:
gh release view v4.3.0
This shows the release date, tag, and any release notes from GitHub.
List PRs merged between the previous release and this one:
# Find commits between releases
git log v4.2.0..v4.3.0 --oneline --merges
# Or use gh to list PRs
gh pr list --state merged --base main --search "merged:2024-01-01..2024-02-01"
For each PR, get the full details:
gh pr view <PR_NUMBER> --json title,body,labels,author,baseRefName
Look for:
### Release notes section in PR body### API changes section in PR bodyImportant: Only include PRs whose baseRefName is main. PRs merged into feature branches (e.g. default-shape-customization) are not yet released — they will be included when the feature branch itself is merged to main.
List any patch releases for this minor version:
gh release list | grep "v4.3"
For each patch release, find its PRs:
git log v4.3.0..v4.3.1 --oneline --merges
Create apps/docs/content/releases/vX.Y.0.mdx following the style guide.
Every 💥 in the article needs a migration recipe. The tldraw-migrate skill drives off these recipes — it intentionally does not duplicate them in its own SKILL.md, because version-specific knowledge belongs next to the breaking change that introduced it. If the recipe is missing, agents and contributors performing the upgrade have to reverse-engineer it from type defs.
There are two acceptable forms:
For breaking changes with their own featured section (renames, replaced APIs, new patterns), add a <details><summary>Migration guide</summary> block under the section. Include before/after code and call out any silent-compile traps (props the typecheck won't reject, signatures with optional new parameters, etc.):
### 💥 Custom themes with display values
[Description of what changed and why]
<details>
<summary>Migration guide</summary>
`getDefaultColorTheme()` and `DefaultColorThemePalette` have been removed. Use `editor.getCurrentTheme().colors[colorMode]` instead:
// Before
const theme = getDefaultColorTheme({ isDarkMode })
// After
const theme = editor.getCurrentTheme()
const colors = theme.colors[editor.getColorMode()]
</details>
For one-line 💥 entries in the API changes list, the bullet itself must contain the recipe — name the replacement and any caveats inline:
💥 Replace TLDrawShapeSegment.points with the helper getPointsFromDrawSegment(segment, scaleX, scaleY) so segment points respect the shape's current scale.💥 Remove TLDrawShapeSegment.points. (no replacement → reader has to guess)A symbol that is removed without a replacement is a documentation bug — find the public alternative or, if there genuinely isn't one, say so explicitly so readers know to drop the call site rather than searching for a rename.
Special case — @public → @internal demotions: these compile but disappear from public types. They are still breaking changes for consumers who imported the symbol. Treat them like a removal: mark with 💥, name the public replacement, and explicitly tell readers *not* to reach for module augmentation to re-expose the demoted symbol.
Check that:
💥 has either a migration guide block or an inline replacement (run grep -nE '💥' apps/docs/content/releases/<file>.mdx and verify each bullet/section)../shared/release-notes-guide.md for guidance on what a release notes article should contain and how to format it.Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when the user asks to run Codex CLI (codex exec, codex resume) or references OpenAI Codex for code analysis, refactoring, or automated editing. Uses GPT-5.2 by default for state-of-the-art software engineering.
Implement memory-safe programming with RAII, ownership, smart pointers, and resource management across Rust, C++, and C. Use when writing safe systems code, managing resources, or preventing memory bugs.
Python/HTSlib workflows for genomic files. Use when reading, querying, filtering, or writing SAM/BAM/CRAM, VCF/BCF, FASTA/FASTQ, or tabix data with pysam, including pileup, coverage, indexing, and CRAM references.
Evaluate scientific claims and evidence quality. Use for assessing experimental design validity, identifying biases and confounders, applying evidence grading frameworks (GRADE, Cochrane Risk of Bias), or teaching critical analysis. Best for understanding evidence quality, identifying flaws. For formal peer review writing use peer-review.
Use when a user asks to debug or fix failing GitHub PR checks that run in GitHub Actions; use `gh` to inspect checks and logs, summarize failure context, draft a fix plan, and implement only after explicit approval. Treat external providers (for example Buildkite) as out of scope and report only the details URL.
> Create, build, deploy, and localize declarative agents for M365 Copilot and Teams. USE THIS SKILL for ANY task involving a declarative agent — including localization, scaffolding, editing manifests, adding capabilities, and deploying. Localization requires tokenized manifests and language files that only this skill knows how to produce. "scaffold an agent", "new agent project", "add a capability", "add a plugin", "configure my agent", "deploy my agent", "fix my agent manifest", "edit my agent", "localize my agent", "add localization", "translate my agent", "multi-language agent", "add an API plugin", "add an MCP plugin", "add OAuth to my plugin", "review instructions", "improve instructions", "fix my instructions"
Documentation generation workflow covering API docs, architecture docs, README files, code comments, and technical writing.
Take tldraw/write-release-notes 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.