Agent Skills › crbnos/carbon › changelog-entry

changelog-entry

GitHub

端到端编写并发布 Carbon 项目更新日志。基于实际合并内容撰写 MDX,生成缩略图,并验证各展示面的渲染效果。

.claude/skills/changelog-entry/SKILL.md crbnos/carbon

Trigger Scenarios

要求添加、撰写、起草或发布更新日志条目 整理已合并工作的发布说明 重新生成更新日志缩略图

Install

npx skills add crbnos/carbon --skill changelog-entry -g -y
More Options

Non-standard path

npx skills add https://github.com/crbnos/carbon/tree/main/.claude/skills/changelog-entry -g -y

Use without installing

npx skills use crbnos/carbon@changelog-entry

指定 Agent (Claude Code)

npx skills add crbnos/carbon --skill changelog-entry -a claude-code -g -y

安装 repo 全部 skill

npx skills add crbnos/carbon --all -g -y

预览 repo 内 skill

npx skills add crbnos/carbon --list

SKILL.md

Frontmatter
{
    "name": "changelog-entry",
    "description": "Write and ship a Carbon changelog entry end to end: ground it in what actually merged, write the MDX in the house format, generate its thumbnail, and verify the feed, the permalink and the RSS newsletter all still render. Use whenever someone asks to add, write, draft or publish a changelog entry, to \"write up\" a release or a batch of merged work, or to regenerate changelog thumbnails. Not for the docs Guide or Reference (use carbon-docs) and not for release notes that live outside docs\/content\/changelog."
}

changelog-entry — write and ship a changelog entry

Announce at start: "Using the changelog-entry skill — writing {date} and generating its thumbnail."

The full conventions live in .claude/rules/changelog-authoring.md; read it first. This skill is the workflow around them.

The surfaces an entry feeds

One MDX file reaches four places, which is why the format is constrained:

Surface Shows
/changelog title + description + first 3 tags + thumbnail
/changelog/<slug> the full body
/changelog/rss.xml description and the body as HTML
ERP "What's new" panel title + description

description is therefore not optional garnish — it is the entire feed row, the newsletter blurb and the in-app toast.

Workflow

1. Ground it — never write from the diff summary alone

Establish what actually shipped before writing a word:

git log --oneline <since>..main | cat
gh pr list --state merged --limit 40 --json number,title,mergedAt,labels

For each candidate feature, open the code or the reference page and confirm the claim. Never invent a product fact to fill the shape. If you cannot verify a detail, leave it out. An entry is a record of what merged, not a wish list.

2. Pick the date and slug

docs/content/changelog/YYYY-MM-DD-slug.mdx. Carbon has no versions, so date is the ordering key and the filename's date must match the frontmatter's. Entries land roughly every two weeks.

3. Write it

Frontmatter, then a lead, then one ## per feature. The failure mode to avoid is the 100-word unbroken paragraph with no links — see the rule for the full format, but in short:

  • description — 15–20 words. It is the whole feed row.
  • Lead with why, then what, in one or two sentences before the first ##.
  • One ## per feature, 1–3 sentences, under ~60 words.
  • Link each feature to its reference page on first mention. There are ~94 pages under docs/content/docs/reference/; check for one before writing a bare noun.
  • Say where it lives (Automate → Workflows) only if you have verified the path.
  • <Accordion title="Improvements"> / "Fixes" last, one line per bullet.
  • No em dashes.

4. Generate the thumbnail

cd docs && pnpm generate:changelog-thumbnails            # all entries
cd docs && pnpm generate:changelog-thumbnails <slug>     # just the new one

The motif is derived from the title: whichever motif keyword appears earliest wins, because a changelog title leads with its headline feature. Layout detail is varied by a hash of the slug, so two entries sharing a motif do not come out identical, and a rerun is byte-identical. The script also stamps image: into the frontmatter when missing.

If a new entry's subject has no motif, add one to MOTIFS in docs/scripts/generate-changelog-thumbnail.mjs alongside a drawing function — do not hand-author a one-off SVG, or the set drifts out of the house style.

5. Verify — all four surfaces

cd docs
pnpm typecheck
curl -s localhost:3002/changelog/rss.xml | grep -c '<item>'   # every entry renders

Every internal link must resolve; a /docs/... path with no file 404s silently in the feed and in the newsletter:

cd docs && for l in $(grep -oh "](/docs/[^)]*)" content/changelog/*.mdx \
  | sed 's|](/docs/||;s|)||' | sort -u); do
  [ -f "content/docs/$l.mdx" ] || [ -f "content/docs/$l/index.mdx" ] \
    || echo "MISSING $l"; done

Then look at /changelog and the permalink in a browser.

Gotchas

  • Any MDX component an entry uses needs a plain-HTML stand-in in docs/lib/changelog-feed-components.tsx. Feed readers run no components; one that is missing renders undefined and fails the build, deliberately — a newsletter that silently drops a section is worse than a red build.
  • Callout here is the Reference one (type/title/children), not the Guides variant with tone/badge.
  • The newsletter dispatcher reads the RSS feed, so a malformed entry reaches subscribers. Check the feed before considering the entry done.
  • Nothing sends carbon/changelog-dispatch automatically; publishing the entry is not the same as sending the newsletter.

Version History

  • f9d7efd Current 2026-10-20 03:32

Same Skill Collection

.claude/skills/agent-browser/SKILL.md
.claude/skills/auth/SKILL.md
.claude/skills/create-agents-md/SKILL.md
.claude/skills/debugging-difficult-bugs/SKILL.md
.claude/skills/error/SKILL.md
.claude/skills/execute/SKILL.md
.claude/skills/make-interfaces-feel-better/SKILL.md
.claude/skills/plan/SKILL.md
.claude/skills/pr-explainer/SKILL.md
.claude/skills/pr-splitter/SKILL.md
.claude/skills/research/SKILL.md
.claude/skills/resolving-merge-conflicts/SKILL.md
.claude/skills/root-cause/SKILL.md
.claude/skills/rust-best-practices/SKILL.md
.claude/skills/smoke-test/SKILL.md
.claude/skills/supabase-postgres-best-practices/SKILL.md
.claude/skills/tdd/SKILL.md
.claude/skills/test-driven-development/SKILL.md
.claude/skills/test/SKILL.md
.claude/skills/writing-skills/SKILL.md
.claude/skills/carbon-design/SKILL.md
.claude/skills/carbon-docs/SKILL.md
.claude/skills/check-and-commit/SKILL.md
.claude/skills/explain/SKILL.md
.claude/skills/feature/SKILL.md
.claude/skills/fix/SKILL.md
.claude/skills/grill/SKILL.md
.claude/skills/improve/SKILL.md
.claude/skills/inngest/SKILL.md
.claude/skills/rust/SKILL.md
.claude/skills/self-review/SKILL.md
.claude/skills/spec-writing/SKILL.md
.claude/skills/translate/SKILL.md
.claude/skills/ui/SKILL.md

Metadata

Files
0
Version
f9d7efd
Hash
9b44df69
Indexed
2026-10-20 03:32

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-25 04:23
浙ICP备14020137号-1