updating-changelog
Skill458 starsChanged 2 months agoApache-2.0View on GitHub
Updates changelog documentation for contract developers and node operators by analyzing branch changes relative to 'next'. Use when preparing a PR, updating migration notes, documenting breaking changes, or when asked to update changelog/release notes.
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
When that file is new (the first entry of a major), two more files must be updated or the page ships unreachable:
- Very specific: line 117
After approval, add entries to the appropriate files in this repository's docs/ (never in the checkout or under labs/, and never a …
- Very specific: line 124
Add entries under ## TBD section:
- Distinctive: line 175
Changed defaults: Use table format with Flag, Environment Variable, Previous, New columns.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Updating Changelog
The docs live in this repository's docs/. The code they describe is mostly aztec-node's,
at the commit docs/aztec-node.json pins, read through a checkout of it that
node docs/scripts/aztec_node.mts fetch keeps ($AZTEC_NODE_DIR, default
docs/.aztec-node/tree; its version and its changes are read there, never in the labs/
submodule), plus this repository's own code (l1-contracts/, barretenberg/, …).
Steps
1. Determine Target Files
The version is the Labs release the docs' pin names, read from the checkout:
cd "$(git rev-parse --show-toplevel)"
node docs/scripts/aztec_node.mts fetch && pin=$(node docs/scripts/aztec_node.mts env) || exit 1
eval "$pin"
jq -r '."."' "$AZTEC_NODE_DIR/.release-please-manifest.json"6.0.0 → edit v6.md. The release-please manifest at the repository root versions the
Foundation tree (7.0.0 while Labs is on v6): never take the version from it.
Target files:
- Aztec contract developers:
docs/docs-developers/docs/resources/migration_notes.md - Node operators and Ethereum contract developers:
docs/docs-operate/operators/reference/changelog/v{major}.md
When that file is new (the first entry of a major), two more files must be updated or the page ships unreachable:
docs/docs-operate/operators/reference/changelog/index.md: add a### [<version>](./<page>.md)entry at the top of## Version history. The heading is the release (v6.0.0,v5.2.0,v4.3.x); the link target is the page's actual filename, which is not derived from the heading. Page names vary by how many releases a major has needed:v6.md,v5.2.md,v4.3.md,v4.2.md,v4.md,v2.0.2.mdall exist. Copy the filename you created; do not construct it from the version.docusaurus.config.jssetsonBrokenMarkdownLinks: "throw", so a link to a page that does not exist fails the build.docs/sidebars-operate.js: add"operators/reference/changelog/<page>"(the same filename, without.md) to the changelog list. The sidebar enumerates these pages explicitly; an unlisted page is published but has no nav entry.
2. Analyze Branch Changes
The base is origin/next (git fetch origin next first). Three sources, each read where it
lives:
This repository's own changes (Foundation code, and the docs already written; the
labsgitlink is the Foundation's build input, not the docs' pin):cd "$(git rev-parse --show-toplevel)" git diff origin/next...HEAD --stat -- . ':!labs' git diff origin/next...HEAD -- . ':!labs'Labs code, when this branch moves the docs' pin (
docs/aztec-node.json, moved withnode docs/scripts/aztec_node.mts pin <tag>). Read the range in the checkout; both commits must be in it, and a two-commit diff needs no history between them:cd "$(git rev-parse --show-toplevel)" old=$(git show "$(git merge-base origin/next HEAD):docs/aztec-node.json" | node -p 'JSON.parse(require("fs").readFileSync(0, "utf8")).commit') new=$(node -p 'require("./docs/aztec-node.json").commit') node docs/scripts/aztec_node.mts fetch && pin=$(node docs/scripts/aztec_node.mts env) || exit 1 eval "$pin" git -C "$AZTEC_NODE_DIR" fetch --depth 1 --no-tags origin "$old" "$new" git -C "$AZTEC_NODE_DIR" diff --stat "$old" "$new" git -C "$AZTEC_NODE_DIR" diff "$old" "$new" -- yarn-project/ noir-projects/ <other paths> gh api "repos/aztec-labs-eng/aztec-node/compare/$old...$new" \ --jq '.total_commits, (.commits[].commit.message | split("\n")[0])' gh api "repos/aztec-labs-eng/aztec-node/compare/$old...$new" \ --jq '.commits[].commit.message | select(test("!:"))'aztec-node marks breaking changes only with the conventional-commit
!(feat!:,feat(txe)!:), never aBREAKING CHANGE:trailer. The second command prints every message containing!:, bodies included: port commits (chore: port … from monorepo) list the breaking commits they carry only in their body. The compare API lists at most 250 commits; whentotal_commitsis larger, list the PRs merged between the two commits' dates instead, and keep only those the diff confirms:from=$(git -C "$AZTEC_NODE_DIR" log -1 --format=%cs "$old") to=$(git -C "$AZTEC_NODE_DIR" log -1 --format=%cs "$new") gh pr list --repo aztec-labs-eng/aztec-node --state merged --limit 1000 \ --search "merged:$from..$to" --json number,title --jq '.[] | "\(.number) \(.title)"'One aztec-node PR, when asked to document a change that has not reached the pin yet:
gh pr view <PR_NUMBER> --repo aztec-labs-eng/aztec-node --json title,body,files,url gh pr diff <PR_NUMBER> --repo aztec-labs-eng/aztec-node
Categorize changes:
- Breaking changes (API modifications, removals, renames)
- New features (APIs, CLI flags, configuration)
- Deprecations
- Configuration changes (CLI flags, environment variables)
3. Generate Draft Entries
Present draft entries for review BEFORE editing files. Match the formatting conventions by reading existing entries in each file.
4. Edit Documentation
After approval, add entries to the appropriate files in this repository's docs/ (never
in the checkout or under labs/, and never a versioned snapshot).
Migration Notes Format
File: docs/docs-developers/docs/resources/migration_notes.md
Add entries under ## TBD section:
### [Component] Brief description
Explanation of what changed.
**Migration:**
```diff
- old code
+ new code
```Impact: Effect on existing code.
Component tags: [Aztec.nr], [Aztec.js], [PXE], [Aztec Node], [AVM], [L1 Contracts], [CLI]
Node Operator Changelog Format
File: docs/docs-operate/operators/reference/changelog/v{major}.md
Breaking changes:
### Feature Name
**v{previous}:**
```bash
--old-flag <value> ($OLD_ENV_VAR)
```
**v{current}:**
```bash
--new-flag <value> ($NEW_ENV_VAR)
```
**Migration**: How to migrate.New features:
### Feature Name
```bash
--new-flag <value> ($ENV_VAR)
```
Description of the feature.Changed defaults: Use table format with Flag, Environment Variable, Previous, New columns.
In this repository22 other files it gives its agents.
- avm-transpiler/CLAUDE.mdCLAUDE.md
- barretenberg/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- docs/CLAUDE.mdCLAUDE.md
- docs/llms.txtllms.txt
- acir-formal-proofsSkill
- adding-benchmarksSkill
- bench-regressionSkill
- capture-app-flowSkill
- chonk-inputsSkill
- ci-logsSkill
- create-issueSkill
- cycleSkill
- fixSkill
- genesis-constantsSkill
- merge-train-infraSkill
- merge-trainsSkill
- noir-sync-updateSkill
- prep-cycleSkill
- release-docsSkill
- release-network-docsSkill
- update-doc-referencesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

