Skip to content

Commit 0c55436

Browse files
committed
docs: enhance changelog guidelines for audience-specific entries
1 parent 1484006 commit 0c55436

1 file changed

Lines changed: 50 additions & 21 deletions

File tree

  • .agents/skills/write-changelog-entry

.agents/skills/write-changelog-entry/SKILL.md

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@ description: Use when asked to add, revise, or review a changelog or release-not
55

66
## Purpose
77

8-
Write a single changelog entry that matches the surrounding section's style and reflects the actual shipped change.
8+
Write changelog entries that match the surrounding section's style and reflect the actual shipped change for the intended audience.
99

1010
## Inputs
1111

12-
* Target changelog file, usually `/CHANGELOG.md` or `packages/flet/CHANGELOG.md`.
12+
* Target changelog file, if specified; otherwise infer it from the changed package
13+
and audience.
1314
* Release version or section if the user specifies one.
1415
* Relevant PR number, issue number, commit(s), or branch context.
1516

1617
## Target file selection
1718

18-
Choose the narrowest correct changelog file before writing the item.
19+
Choose the narrowest correct changelog file before writing entries.
1920

2021
* Use `/CHANGELOG.md` for repo-level or broadly user-facing Flet changes.
2122
* Use `packages/flet/CHANGELOG.md` only for changes relevant to Flutter package
22-
consumers and extension developers. Do not mirror `/CHANGELOG.md` entries there
23-
just because a user-facing feature required Flutter-side implementation.
23+
consumers and extension developers. See the dedicated section below.
2424
* Use `sdk/python/packages/<package>/CHANGELOG.md` for changes scoped to a specific
2525
Python package.
2626
* For extension (ex: flet-audio) changelogs under
@@ -33,6 +33,27 @@ Choose the narrowest correct changelog file before writing the item.
3333
* Do not default everything to `/CHANGELOG.md` when a package-specific changelog is the
3434
better fit.
3535

36+
## Root vs Flutter package changelog
37+
38+
`/CHANGELOG.md` and `packages/flet/CHANGELOG.md` have different audiences.
39+
40+
* `/CHANGELOG.md` is the broad Flet product changelog. Write entries from the app
41+
developer's perspective, usually summarizing the shipped feature or fix at about
42+
PR-title specificity.
43+
* `packages/flet/CHANGELOG.md` is for Flutter package consumers and extension
44+
developers. Write entries only when they need to know a specific Dart-side API,
45+
utility, parser, serializer, runtime contract, dependency, or compatibility change.
46+
* Do not repeat a root changelog entry in `packages/flet/CHANGELOG.md` merely because
47+
the implementation touched Dart files.
48+
* If both audiences are affected, update both changelogs, but phrase them differently:
49+
the root entry should describe the user-facing outcome, while the Flutter package
50+
entry should describe the precise Dart/extension-facing change.
51+
52+
Example split:
53+
54+
* Root: `Add support for text-or-control labels in \`NavigationDestination\`s.`
55+
* Flutter package, only if applicable: `Extend \`Control\` with \`.buildTextOrWidget()\` to parse properties that accept either plain text or child controls.`
56+
3657
## Workflow
3758

3859
1. Inspect the target changelog section before editing.
@@ -42,27 +63,27 @@ Choose the narrowest correct changelog file before writing the item.
4263
* `### Improvements`
4364
* `### Bug fixes`
4465
* `### Other changes`
45-
2. Inspect the source of truth for scope.
66+
2. Inspect the source of truth for scope and audience.
4667
* Prefer PR title and PR description/summary over commit noise.
4768
* Use linked issues to understand user-facing intent.
4869
* Use commits only to confirm details or fill gaps.
4970
3. Extract the primary shipped change.
5071
* Lead with the API, control, command, or behavior that changed.
51-
* Mention docs, examples, tests, refactors, or chores only when they are the main outcome the user would care about.
52-
4. Write one concise item.
72+
* Mention docs, examples, tests, refactors, or chores only when they are the main outcome the changelog audience would care about.
73+
4. Write concise item(s) for the selected changelog(s).
5374
* Avoid laundry lists unless the PR truly shipped multiple peer-level features.
5475
* Prefer concrete nouns and verbs over implementation detail.
55-
* Keep the sentence focused on what users gained or what was fixed.
76+
* Keep each sentence focused on what that changelog's audience gained or must know.
5677
5. Add links and attribution in repo style.
57-
* Include both related issue link(s) and PR link(s) when available, with issue links
58-
first.
59-
* If no issue exists, include PR link(s) only.
60-
* Include issue-only direct-commit items when a shipped change has no PR.
78+
* Include both related issue link(s) and PR link(s) when available, with issue links
79+
first.
80+
* If no issue exists, include PR link(s) only.
81+
* Include issue-only direct-commit items when a shipped change has no PR.
6182
* Use plain-text author attribution at the end: `by @login.`
62-
* Use the PR author login for PR-based items.
63-
* For issue-only direct-commit items, use the commit author login if available.
64-
* If one item groups multiple PRs by different authors, attribute all relevant
65-
authors: `by @user1, @user2.`
83+
* Use the PR author login for PR-based items.
84+
* For issue-only direct-commit items, use the commit author login if available.
85+
* If one item groups multiple PRs by different authors, attribute all relevant
86+
authors: `by @user1, @user2.`
6687

6788
## Repo-specific guidance
6889

@@ -76,21 +97,29 @@ Choose the narrowest correct changelog file before writing the item.
7697
* For extension package changelogs, prefer Python-facing API, behavior, packaging, and
7798
usability changes over Flutter implementation details that are not directly published
7899
to users.
79-
* Add `packages/flet/CHANGELOG.md` entries for public Dart APIs, extension authoring
80-
contracts, shared Dart utility behavior, serialization/parsing contracts that custom
81-
controls rely on, or Flutter dependency/compatibility changes.
82100

83101
## Good patterns
84102

103+
Root changelog:
104+
85105
* `* Add \`scrollable\` to \`NavigationRail\` for overflowed destinations ([#1923](...), [#6356](...)) by @login.`
86106
* `* Make \`NavigationDrawerDestination.label\` accept custom controls and add \`NavigationDrawerTheme.icon_theme\` ([#6379](...), [#6395](...)) by @login.`
87107

108+
Flutter package changelog:
109+
110+
* `* Improve \`parseBool()\` to accept string and numeric payload values ([#1234](...)) by @login.`
111+
* `* Extend \`Control\` with \`.buildTextOrWidget()\` to parse properties that accept either strings or child controls ([#1234](...)) by @login.`
112+
* `* Improve extension asset resolution to avoid package path collisions ([#1234](...)) by @login.`
113+
* `* Add \`parseEnum()\` utility for consistent enum parsing ([#1234](...)) by @login.`
114+
88115
## Checks
89116

90117
Before finishing, verify:
91118

92119
* The item sits under the right release and section.
93120
* The wording matches neighboring entries in length and tone.
94-
* The sentence describes the primary user-facing change.
121+
* The sentence describes the primary change for that changelog's audience.
122+
* `packages/flet/CHANGELOG.md` entries are specific to Dart/Flutter package or
123+
extension-facing behavior and are not bare repeats of root changelog entries.
95124
* Issue and PR links follow repo style, including issue-only direct-commit cases.
96125
* Attribution is plain text and placed last.

0 commit comments

Comments
 (0)