Skip to content

Commit adba4fa

Browse files
committed
.claude: refine the release-notes skill after drafting v0.18.0-alpha.1
Drafting the v0.18.0-alpha.1 notes surfaced a number of gaps in the skill's guidance. Encode the resulting decisions: Add a Modules top-level section covering modules and package loading, and state that encodings work belongs in Encodings even when the change is surfaced through the CLI. Pre-release notes should not frame the release as leading up to the final one, and should not mention or re-announce changes that already shipped in a patch release of the previous minor. Similarly, never attribute a regression to a past patch release, as the fix may yet be backported in a further patch. Mentions of a specific past release link to its GitHub release page, and statements scoped to the release being drafted name the feature release series explicitly, as in "for v0.18", rather than saying "this release". Experiments first appearing in a release are introduced as new even when enabled by default; the "now enabled by default" phrasing is reserved for experiments that shipped in a past release. Finally, avoid subsections holding a single short paragraph. Assisted-by: Claude Code (claude-fable-5) Signed-off-by: Daniel Martí <mvdan@mvdan.cc> Change-Id: I999283b9594c27335ae2c980f659a6d042b161c4 Reviewed-on: https://cue.gerrithub.io/c/cue-lang/cue/+/1244505 TryBot-Result: CUEcueckoo <cueckoo@cuelang.org> Reviewed-by: Roger Peppe <rogpeppe@gmail.com> Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
1 parent 2e12f86 commit adba4fa

1 file changed

Lines changed: 42 additions & 4 deletions

File tree

  • .claude/skills/draft-release-notes

.claude/skills/draft-release-notes/SKILL.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,36 @@ verbatim:
3131
Omit it otherwise (typical of patch releases).
3232

3333
**Sections**, in this fixed order; omit any that are empty:
34-
`## Language` · `## Evaluator` · `` ## `cmd/cue` `` · `## LSP server` ·
35-
`## Encodings` · `## Standard library` · `## Go API`.
34+
`## Language` · `## Evaluator` · `` ## `cmd/cue` `` · `## Modules` ·
35+
`## LSP server` · `## Encodings` · `## Standard library` · `## Go API`.
3636
Lead with the headline feature when one dominates, overriding the order
3737
(e.g. the new `cue lsp` led v0.15.0).
3838

39+
Two boundary rules:
40+
- `## Modules` covers modules and package loading: import resolution,
41+
package patterns and arguments, `@embed`, registries, publishing, and
42+
`cue mod` behavior — even when surfaced through the CLI.
43+
- Encodings work goes in `## Encodings` even when the change affects
44+
the CLI interface (new `--out`/filetype tags, `cue import`/`cue
45+
export` conversion behavior, `cue get go`). `` ## `cmd/cue` `` keeps
46+
command UX not tied to one encoding: flags, argument handling, tool
47+
tasks.
48+
3949
**Subsections** (`####`) group a large section or a flagship item:
4050
- Named experiments/features (`` #### The new `try` experiment ``):
4151
1–3 paragraphs on what it does and how to enable it
4252
(`@experiment(...)` or a language version), with links to the how-to,
4353
proposal, and spec CL.
54+
- An experiment first appearing in this release is introduced as new
55+
("The new `X` experiment …"), even when it starts out enabled by
56+
default. Phrase it as "now enabled by default" only for an
57+
experiment that shipped in a past release, linking that release.
4458
- `#### Performance` / `#### Other changes` split `## Evaluator` when
4559
there is substantial performance work.
4660
- A `####` may carry `:warning:` when the whole subsection is breaking.
61+
- Do not create a `####` for a single reasonably short paragraph — fold
62+
it into the parent section. If that leaves `#### Other changes` as
63+
the only subsection, drop that heading too and flatten the section.
4764

4865
## Entry style
4966

@@ -74,8 +91,15 @@ Lead with the headline feature when one dominates, overriding the order
7491
`GenerateConfig.NameFunc`.
7592
- **Breaking changes**: prefix `:warning:`, and phrase so the impact and
7693
migration path are clear.
94+
- **Release self-references**: when scoping a statement to the release
95+
being drafted ("the old formatter remains available … for this
96+
release"), name the feature-release series explicitly instead:
97+
"for v0.18".
7798
- **Regressions** name the version that introduced them ("a regression
78-
introduced in `v0.12.0`"); plain bugs need not.
99+
introduced in `v0.12.0`"); plain bugs need not. Never attribute a
100+
regression to a past patch release — the fix may yet be backported
101+
in a further patch, so describe the fix without the regression
102+
framing (issue links may stay).
79103
- **Quantify performance** ("up to 80% faster", "memory down by as much
80104
as 60%"); credit the Unity service where relevant.
81105
- **Aggregate** many small same-theme fixes into one paragraph, often
@@ -91,6 +115,10 @@ Lead with the headline feature when one dominates, overriding the order
91115
- Issues `https://cuelang.org/issue/NNN` · CLs `https://cuelang.org/cl/NNN`
92116
· Discussions/proposals `https://cuelang.org/discussion/NNN` · How-tos
93117
`https://cuelang.org/docs/howto/...`.
118+
- Mentions of a specific past release (e.g. "announced in `v0.17.0`",
119+
"a regression introduced in `v0.12.0`") link to its GitHub release:
120+
`https://github.com/cue-lang/cue/releases/tag/vX.Y.Z`. Version-series
121+
mentions ("v0.17") and future releases stay unlinked.
94122
- LSP sections link the Getting Started wiki and invite bug reports via
95123
the issue tracker and the `#lsp` Discord/Slack channels.
96124

@@ -131,14 +159,24 @@ regression-test commits; CI, build, tooling, and dependency bumps;
131159
doc-only and comment fixes; anything with no observable effect on the
132160
CLI, the language, or the Go API.
133161

162+
Also exclude changes already released and announced in a patch release
163+
of the previous minor, even though the diff base (the previous `.0`)
164+
includes them — users have already been told. Do not replace them with
165+
a pointer line like "includes all fixes from vX.Y.1" either; simply
166+
leave them out. Naming a past minor as the source of a regression
167+
remains fine; a patch release does not (see Entry style).
168+
134169
## Release types
135170

136171
- **Minor** (`vX.Y.0`): full treatment — `## Language` with experiment
137172
subsections, performance write-ups, every applicable section; reference
138173
the previous minor as the diff base.
139174
- **Pre-release** (`-alpha.N` / `-rc.N`): same structure as the minor it
140175
leads to; content accumulates into the final `.0`. RCs often document
141-
late design tweaks under a `:warning:` subsection.
176+
late design tweaks under a `:warning:` subsection. Do not open with a
177+
line framing the release as leading up to the final (e.g. "the first
178+
pre-release on the way to vX.Y.0") — the tag already says so; start
179+
directly with the warning legend or first section.
142180
- **Patch** (`vX.Y.Z`, Z>0): short and fix-focused — no preamble, no
143181
warning legend, usually no `## Language` section; phrase entries as
144182
"Fix a …". Aggregate hard: group fixes by symptom class rather than

0 commit comments

Comments
 (0)