/dotcom-release-crew
Post to the #development Discord channel naming the people whose critical fixes or significant features are in this week's tldraw.com (dotcom) release. Use when preparing the weekly dotcom release, when asked who should be involved in this week's release, or when the scheduled
$ npx -y skills add tldraw/tldraw --skill dotcom-release-crew --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/dotcom-release-crew
Context preview
The summary Claude sees to decide when to auto-load this skill.
Post to the #development Discord channel naming the people whose critical fixes or significant features are in this week's tldraw.com (dotcom) release. Use when preparing the weekly dotcom release, when asked who should be involved in this week's release, or when the scheduled
SKILL.md
dotcom-release-crew.SKILL.mdname: dotcom-release-crew
description: Post to the #development Discord channel naming the people whose critical fixes or significant features are in this week's tldraw.com (dotcom) release. Use when preparing the weekly dotcom release, when asked who should be involved in this week's release, or when the scheduled release-crew automation runs. Examines the production...main commit range, selects contributors of meaningful user-facing or stability changes (not the whole team), and posts a concise summary via a Discord webhook.
Dotcom release crew
Identify who contributed **critical fixes or significant features** to this week's dotcom release (the commits on `main` that are not yet on `production`) and post a short summary to the `#development` Discord channel.
The goal is a very tight list of people to involve in the release — **2–3 people at most**, not a changelog and not the whole engineering team. Only exceed 3 in extraordinary weeks where more than three people each own a genuinely critical, release-risky change.
Inputs
- `DISCORD_RELEASE_WEBHOOK_URL` — environment variable holding the Discord webhook that posts to `#development`. Required. If it is unset, stop and tell the user to set it (do not hardcode a webhook URL — this repo is public).
- `GH_TOKEN` — used by `gh`. Present automatically in CI; locally, ensure `gh auth status` works.
Workflow
1. Fetch the commit range
Get every commit on `main` that is not on `production`, with its author and subject line. `--paginate` handles ranges larger than 250 commits.
gh api repos/tldraw/tldraw/compare/production...main --paginate \
--jq '.commits[] | [ (.author.login // .commit.author.name), (.commit.author.name), (.commit.message | split("\n")[0]) ] | @tsv'Each row is: `login`\t`display name`\t`subject`. tldraw squash-merges PRs, so the commit author is the PR author and the subject is the PR title (usually a conventional commit like `feat(editor): ...` with a trailing `(#1234)`).
Also capture the human-readable diff URL for the message: `https://github.com/tldraw/tldraw/compare/production...main`.
If there are **zero** commits, post a brief note that there are no changes to release this week and stop.
2. Select the critical contributors
Read the subject lines and keep only commits that a release manager would want a human on hand for. Group the kept commits by author.
**Include** (judgment, not just prefix):
- `feat` — significant features, especially scoped to `dotcom`, `editor`, `sync`, `sync-core`, `store`, `tlschema`, `state`.
- `fix` — meaningful correctness, data-integrity, sync, or crash fixes.
- `perf` — performance changes that affect users.
- Anything touching multiplayer sync, persistence/migrations, or auth/billing, even if small.
**Exclude:**
- `docs`, `test`, `chore`, `style`, `ci`, `build`, and dependency bumps (dependabot, "Bump versions", `[skip ci]`).
- Trivial `fix`es (typos, comments, lint, flaky-test pins, snapshot updates).
- Reverts that cancel out another commit in the same range.
Then **rank the authors by how critical and release-risky their change is, and keep only the top 2–3**. When unsure whether a change is "critical", lean toward **excluding** it — the point is a very short, high-signal list. It is completely fine to surface just 1–2 people, and normal to have some kept-but-not-listed commits.
Only go above 3 people in extraordinary weeks — for example a large migration plus an unrelated sync fix plus an auth change all landing together, where each genuinely needs its own owner on hand. If you do, briefly justify the extra names to yourself before including them.
3. Compose the message
Keep it under 2000 characters (Discord's limit). One bullet per person; if someone has multiple notable changes, list them under one bullet.
Mention each person with their Discord user ID from the table below, written as `<@ID>` — Discord renders that as a real `@` mention and pings them. If a GitHub login is not in the table, fall back to the plain GitHub login (no `<@…>`), since a wrong ID would ping the wrong person.
| GitHub login | Name | Discord username | Discord user ID | | ----------------- | ----------------- | ----------------- | --------------------- | | `angrycaptain19` | Tim | `trg1379` | `1197197068045910087` | | `AniKrisn` | Ani Krishnan | `anikrisn` | `1348594738927767612` | | `audrey17leo` | Audrey | `dreiiz` | `617346760385495060` | | `danieljamesross` | Dan Ross | `djrdjrdjr` | `1494628009896837203` | | `driev` | Niall | `driev_` | `1338934372992159786` | | `frolic` | Kevin Ingersoll | `frolic` | `79416844720537600` | | `jsscclr` | Jessica Edwards | `jsscclr` | `1382308873276358766` | | `kaneel` | Guillaume Richard | `guillaumetldraw` | `1519303217840656522` | | `kostyafarber` | Kostya Farber | `kostyafarber` | `327278771541377034` | | `m31-galaxy` | Andy (Andromeda) | `m31_galaxy` | `650459420635168769` | | `max-drake` | Max Drake | `max__drake` | `177565795973464065` | | `meg-an31` | Megan Walker | `megelia` | `813347618083045393` | | `mimecuvalo` | Mime Čuvalo | `mimecuvalo` | `1193847824350199881` | | `MitjaBezensek` | Mitja Bezenšek | `mitja_bezensek` | `559094482470174720` | | `nattofu` | Leo | `nattotofu` | `168686397941743617` | | `steveruizok` | Steve Ruiz | `steveruizok` | `414943707662385154` |
Format:
🚀 **dotcom release — people to involve this week**
Critical changes on production...main:
• **Mime Čuvalo** (<@1193847824350199881>) — fix(release): don't cut a new SDK version for docs-only patches
• **Kevin Ingersoll** (<@79416844720537600>) — feat(editor): finer, coarse-pointer-aware hit-testing
N crit
Read more
name: dotcom-release-crew description: Post to the #development Discord channel naming the people whose critical fixes or significant features are in this week's tldraw.com (dotcom) release. Use when preparing the weekly dotcom release, when asked who should be involved in this week's release, or when the scheduled release-crew automation runs. Examines the production...main commit range, selects contributors of meaningful user-facing or stability changes (not the whole team), and posts a concise summary via a Discord webhook.
Dotcom release crew
Identify who contributed **critical fixes or significant features** to this week's dotcom release (the commits on `main` that are not yet on `production`) and post a short summary to the `#development` Discord channel.
The goal is a very tight list of people to involve in the release — **2–3 people at most**, not a changelog and not the whole engineering team. Only exceed 3 in extraordinary weeks where more than three people each own a genuinely critical, release-risky change.
Inputs
- `DISCORD_RELEASE_WEBHOOK_URL` — environment variable holding the Discord webhook that posts to `#development`. Required. If it is unset, stop and tell the user to set it (do not hardcode a webhook URL — this repo is public).
- `GH_TOKEN` — used by `gh`. Present automatically in CI; locally, ensure `gh auth status` works.
Workflow
1. Fetch the commit range
Get every commit on `main` that is not on `production`, with its author and subject line. `--paginate` handles ranges larger than 250 commits.
gh api repos/tldraw/tldraw/compare/production...main --paginate \
--jq '.commits[] | [ (.author.login // .commit.author.name), (.commit.author.name), (.commit.message | split("\n")[0]) ] | @tsv'Each row is: `login`\t`display name`\t`subject`. tldraw squash-merges PRs, so the commit author is the PR author and the subject is the PR title (usually a conventional commit like `feat(editor): ...` with a trailing `(#1234)`).
Also capture the human-readable diff URL for the message: `https://github.com/tldraw/tldraw/compare/production...main`.
If there are **zero** commits, post a brief note that there are no changes to release this week and stop.
2. Select the critical contributors
Read the subject lines and keep only commits that a release manager would want a human on hand for. Group the kept commits by author.
**Include** (judgment, not just prefix):
- `feat` — significant features, especially scoped to `dotcom`, `editor`, `sync`, `sync-core`, `store`, `tlschema`, `state`.
- `fix` — meaningful correctness, data-integrity, sync, or crash fixes.
- `perf` — performance changes that affect users.
- Anything touching multiplayer sync, persistence/migrations, or auth/billing, even if small.
**Exclude:**
- `docs`, `test`, `chore`, `style`, `ci`, `build`, and dependency bumps (dependabot, "Bump versions", `[skip ci]`).
- Trivial `fix`es (typos, comments, lint, flaky-test pins, snapshot updates).
- Reverts that cancel out another commit in the same range.
Then **rank the authors by how critical and release-risky their change is, and keep only the top 2–3**. When unsure whether a change is "critical", lean toward **excluding** it — the point is a very short, high-signal list. It is completely fine to surface just 1–2 people, and normal to have some kept-but-not-listed commits.
Only go above 3 people in extraordinary weeks — for example a large migration plus an unrelated sync fix plus an auth change all landing together, where each genuinely needs its own owner on hand. If you do, briefly justify the extra names to yourself before including them.
3. Compose the message
Keep it under 2000 characters (Discord's limit). One bullet per person; if someone has multiple notable changes, list them under one bullet.
Mention each person with their Discord user ID from the table below, written as `<@ID>` — Discord renders that as a real `@` mention and pings them. If a GitHub login is not in the table, fall back to the plain GitHub login (no `<@…>`), since a wrong ID would ping the wrong person.
| GitHub login | Name | Discord username | Discord user ID | | ----------------- | ----------------- | ----------------- | --------------------- | | `angrycaptain19` | Tim | `trg1379` | `1197197068045910087` | | `AniKrisn` | Ani Krishnan | `anikrisn` | `1348594738927767612` | | `audrey17leo` | Audrey | `dreiiz` | `617346760385495060` | | `danieljamesross` | Dan Ross | `djrdjrdjr` | `1494628009896837203` | | `driev` | Niall | `driev_` | `1338934372992159786` | | `frolic` | Kevin Ingersoll | `frolic` | `79416844720537600` | | `jsscclr` | Jessica Edwards | `jsscclr` | `1382308873276358766` | | `kaneel` | Guillaume Richard | `guillaumetldraw` | `1519303217840656522` | | `kostyafarber` | Kostya Farber | `kostyafarber` | `327278771541377034` | | `m31-galaxy` | Andy (Andromeda) | `m31_galaxy` | `650459420635168769` | | `max-drake` | Max Drake | `max__drake` | `177565795973464065` | | `meg-an31` | Megan Walker | `megelia` | `813347618083045393` | | `mimecuvalo` | Mime Čuvalo | `mimecuvalo` | `1193847824350199881` | | `MitjaBezensek` | Mitja Bezenšek | `mitja_bezensek` | `559094482470174720` | | `nattofu` | Leo | `nattotofu` | `168686397941743617` | | `steveruizok` | Steve Ruiz | `steveruizok` | `414943707662385154` |
Format:
🚀 **dotcom release — people to involve this week** Critical changes on production...main: • **Mime Čuvalo** (<@1193847824350199881>) — fix(release): don't cut a new SDK version for docs-only patches • **Kevin Ingersoll** (<@79416844720537600>) — feat(editor): finer, coarse-pointer-aware hit-testing N crit
Build infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.
Repo: tldraw/tldraw
Other skills on tldraw.
- /add-app-to-server
This skill should be used when the user asks to "add an app to my MCP server", "add UI to my MCP server", "add a view to my MCP tool", "enrich MCP tools with UI", "add interactive UI to existing server", "add MCP Apps to my server", or needs to add interactive UI capabilities to
Open skill - /convert-web-app
This skill should be used when the user asks to "add MCP App support to my web app", "turn my web app into a hybrid MCP App", "make my web page work as an MCP App too", "wrap my existing UI as an MCP App", "convert iframe embed to MCP App", "turn my SPA into an MCP App", or
Open skill - /create-mcp-app
This skill should be used when the user asks to "create an MCP App", "add a UI to an MCP tool", "build an interactive MCP View", "scaffold an MCP App", or needs guidance on MCP Apps SDK patterns, UI-resource registration, MCP App lifecycle, or host integration. Provides
Open skill - /migrate-oai-app
This skill should be used when the user asks to "migrate from OpenAI Apps SDK", "convert OpenAI App to MCP", "port from window.openai", "migrate from skybridge", "convert openai/outputTemplate", or needs guidance on converting OpenAI Apps SDK applications to MCP Apps SDK.
Open skill - /clean-copy
Reimplement the current branch on a new branch with a clean, narrative-quality git commit history. Use when asked to make a clean copy branch, clean up commit history by replaying work, or rebuild a branch as reviewable commits.
Open skill - /commit-changes
Create a git commit for the current changes. Use when asked to commit changes, make a commit, generate a commit message, or commit the current worktree with optional user-provided context.
Open skill

