name: release-network-docs
description: Update network/operator documentation for a mainnet or testnet release without touching developer docs
argument-hint:
Release Network Docs
Update the Aztec network/operator documentation for a new release. Queries the
network for current info, updates contract addresses, builds the docs, cuts a
versioned snapshot of the operator docs, and prepares changes on next.
This is a lightweight alternative to the full /release-docs skill. Use it
when only the network/operator docs need updating (new contract addresses,
network upgrade, config changes) and the developer docs remain unchanged.
Supports mainnet and testnet releases only. Network operator docs do not have devnet or nightly versions. The release type is auto-detected from the version string returned by the network. If the version string does not self-identify its release type, ask the user to confirm.
This skill does NOT:
- Generate developer API docs (aztec-nr or TypeScript)
- Generate CLI reference docs
- Update developer version config or cut developer versioned docs
- Update migration notes
- Require aztec CLI, nargo, or yarn-project build
This skill DOES regenerate the Node JSON-RPC API reference for the versioned docs (see Step 5a).
Usage
/release-network-docs https://aztec-mainnet.drpc.org
/release-network-docs https://rpc.testnet.aztec-labs.com
Workflow
Step 1: Query Network Info and Detect Release Type
Fetch node info from the provided RPC URL:
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"method":"node_getNodeInfo"}' <RPC_URL> | jq .result
Parse the response to extract:
nodeVersion(the version string, e.g.4.1.2or4.1.0-rc.2)- L1 contract addresses from
l1ContractAddresses: registry, rollup, inbox, outbox, fee juice, staking asset, fee juice portal, fee asset handler, coin issuer, reward distributor, governance proposer, governance, slash factory - L2 protocol contract addresses from
protocolContractAddresses: instance registry, class registry, multi-call entrypoint, fee juice rollupVersionl1ChainId
Detect release type from the version string:
- Contains
mainnetor matches a plain semver like4.1.2→ release type ismainnet - Contains
testnetorrc→ release type istestnet - Contains
devnet→ abort: network docs do not support devnet. Direct the user to use/release-docsinstead. - If unclear, ask the user to confirm the release type (must be
mainnetortestnet)
Store all values for use in subsequent steps.
Step 2: Verify Git Tag and Checkout
The version from Step 1 tells us which git tag the docs should be built from.
The operator docs source in docs/docs-operate/ must reflect the code at the
release tag, not whatever happens to be on next.
git fetch origin
git tag -l "v<nodeVersion>"
- If the tag exists and is already checked out, continue.
- If the tag exists but is not checked out:
git checkout v<nodeVersion> - Abort if the tag doesn't exist — the release hasn't been tagged yet.
Step 3: Identify and Resolve Missing Contract Addresses
The networks.md L1 table includes contracts that are not returned by
node_getNodeInfo. Resolve these addresses in three tiers:
Tier 1: Query on-chain from known contracts
The Rollup and Registry addresses are already known from the RPC response. Use
them to query additional addresses on L1. Determine the L1 RPC from the chain
ID: 1 → Ethereum mainnet, 11155111 → Sepolia.
# GSE (Governance Staking Escrow) — from Rollup
cast call <ROLLUP_ADDRESS> "getGSE()(address)" --rpc-url <L1_RPC>
# Slasher — from Rollup
cast call <ROLLUP_ADDRESS> "getSlasher()(address)" --rpc-url <L1_RPC>
# Governance — from Registry
cast call <REGISTRY_ADDRESS> "getGovernance()(address)" --rpc-url <L1_RPC>
Tier 2: From deployment output (if available)
These addresses are stored internally in contracts with no public getter. They
can be obtained from the Forge deployment script output
(l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol prints JSON with all
addresses). Ask the user if they have deployment output.
- Reward Booster (stored in Rollup's
RewardLibstorage, no getter) - Tally Slashing Proposer (deployed alongside Slasher, no getter)
- Staking Registry
Tier 3: Manual / confirm unchanged
These periphery contracts have no on-chain getter. Ask the user to provide new
addresses or confirm that the existing values in networks.md are still correct.
- Honk Verifier
- Register New Rollup Version Payload
- Slash Payload Cloneable
Present a summary table showing: which addresses came from RPC, which were queried on-chain, which came from deployment output, and which are unchanged. Get user confirmation before proceeding.
Step 4: Update Network Info and Contract Addresses
File: docs/docs/networks.md
Update the column matching the release type (Alpha (Mainnet) or Testnet) in each table:
Network Technical Information table: update the version, rollup version. Update the RPC endpoint only if the user provides a new one (the argument RPC URL may be temporary or internal). Keep bootnodes and block explorer links unless the user requests changes.
L1 Contract Addresses table: update all addresses from the RPC response, on-chain queries, and any additional addresses provided by the user.
- Mainnet: use
https://etherscan.io/address/0xADDRlink format - Testnet: use
https://sepolia.etherscan.io/address/0xADDRlink format - For contracts that are not deployed on this network, use
N/A
- Mainnet: use
L2 Contract Addresses table: update if any canonical protocol contract addresses changed (check the
protocolContractAddressesfrom the RPC response). SponsoredFPC is always "Not deployed" on mainnet.
Also grep for any old addresses that may appear elsewhere in the docs:
grep -r "<old_address>" docs/
Step 5: Review Operator Docs Content (Optional)
Ask the user if any content changes are needed in docs/docs-operate/:
- New or changed configuration options, environment variables, or CLI flags
- Updated setup instructions or prerequisites
- New or modified troubleshooting entries
- Operator changelog updates (if not handled by
/updating-changelog)
If the user has content changes, apply them to the source files in
docs/docs-operate/. If no content changes are needed, skip to Step 5a.
Step 5a: Regenerate Node API Reference
The Node JSON-RPC API reference is auto-generated from TypeScript source. It must be regenerated from the release tag's source files to ensure the versioned docs reflect the actual API at that release.
cd docs
yarn generate:node-api-reference
This writes to docs/docs-operate/operators/reference/node-api-reference.md
using the source files from the currently checked-out tag. The generator parses
yarn-project/stdlib/src/interfaces/aztec-node.ts and
yarn-project/stdlib/src/interfaces/aztec-node-admin.ts directly (no
yarn-project build needed, but yarn-project/node_modules/ must be installed
so npx tsx can resolve typescript — run yarn install from yarn-project
if needed).
Verify the output lists the expected number of methods and has no ungrouped methods warnings.
Step 5b: Regenerate Operator CLI Reference
The operator-facing CLI reference (docs/docs-operate/operators/reference/cli-reference.md)
is auto-generated from aztec start --help. Regenerate it so the doc matches
the CLI shipped with the release.
Pass the release version with -v so the script verifies the locally-installed
aztec CLI matches before running. The mismatch is fatal in non-interactive
mode (use -f to bypass).
cd docs
yarn generate:operator-cli-reference -v v<new_version>
If aztec --version reports a different version, install the matching one
first with aztec-up v<new_version> and retry.
The script captures aztec start --help, retries on the dockerized-CLI
stdout-truncation race, and writes the file. Verify the resulting file is
~950+ lines and ends with Starts Aztec TXE with options.
Step 6: Build and Validate
Set the environment variables matching the release type so the build preprocessor resolves version placeholders correctly in the operator docs:
- Mainnet:
MAINNET_TAG=<new_version> RELEASE_TYPE=mainnet - Testnet:
TESTNET_TAG=<new_version> RELEASE_TYPE=testnet
IMPORTANT: COMMIT_TAG must include the v prefix (e.g., v4.1.2). The
preprocessor uses this for git tag references and GitHub URLs.
cd docs && <TAG_VAR>=<new_version> RELEASE_TYPE=<release_type> COMMIT_TAG=v<nodeVersion> yarn build
Where <TAG_VAR> is MAINNET_TAG for mainnet or TESTNET_TAG for testnet.
Fix any issues reported by the build:
- Broken redirect targets (from
validate_redirect_targets.sh) - Broken API reference links (from
validate_api_ref_links.sh) - Spellcheck errors
Iterate until the build passes.
Step 7: Read Old Version and Cut Network Versioned Docs
Before cutting, read docs/network_version_config.json and record the
current version for this release type. This is the old version that will be
cleaned up in Step 8. Save this value — the config will be overwritten next.
cat docs/network_version_config.json
For example, if the config shows "mainnet": "v4.1.2" and you are releasing
v4.2.0 for mainnet, the old version is v4.1.2.
Now create a versioned snapshot of the network/operator docs. The version string
must always be prefixed with v (e.g. v4.1.2, not 4.1.2).
cd docs
<TAG_VAR>=<new_version> RELEASE_TYPE=<release_type> yarn docusaurus docs:version:network v<new_version>
Then update the version config and reconcile:
scripts/update_docs_versions.sh network <release_type> v<new_version>
Verify the results:
docs/network_version_config.jsonhas the new version under the correct release type (the old version is no longer mapped to this release type)docs/network_versioned_docs/version-v<new_version>/exists with resolved macros (check that#release_versionwas replaced with the actual version string and#release_networkwas replaced withmainnetortestnet)docs/network_versioned_sidebars/version-v<new_version>-sidebars.jsonexists
Note: At this point network_versions.json may still list the old version
as an unmapped extra (its directory still exists). This is cleaned up in Step 8.
Step 8: Clean Up Old Network Version
Use the old version recorded at the start of Step 7.
If this is the first release for this release type (no previous version existed in the config), skip this step.
Ask the user for confirmation before deleting. If approved, remove:
docs/network_versioned_docs/version-<old_version>/docs/network_versioned_sidebars/version-<old_version>-sidebars.json
Then re-run the reconciliation script so that network_versions.json drops the
old version (its directory no longer exists):
scripts/update_docs_versions.sh network
Verify that both network_version_config.json and network_versions.json no
longer reference the old version.
Step 9: Move Changes to next Branch
git stash
git checkout next && git pull origin next
git stash pop
Check for stash conflicts. Then report to the user:
git statusandgit diff --statto show what changed- List all modified/added/deleted files
- Flag any conflicts or unexpected changes
- Let the user know the changes are ready to be committed and a PR can be opened
Key Points
- Mainnet and testnet only: This skill does not support devnet or nightly
releases. Network operator docs only have mainnet and testnet versions. If
devnet is detected, abort and direct the user to
/release-docs. - Tag must be checked out: The operator docs source in
docs/docs-operate/must reflect the release tag, notnext. Always checkout the tag before building and cutting versioned docs. - Always query the network first: The RPC response is the source of truth for version and L1/L2 contract addresses.
- Some addresses are not in the RPC: Contracts like Staking Registry, Reward Booster, Tally Slashing Proposer, and others must be queried on-chain, obtained from deployment output, or confirmed unchanged by the user.
- Lightweight prerequisites: This skill does not require nargo or a
yarn-project build. It does need: the locally-installed
aztecCLI to match the release version (for Step 5b),yarn(for the docs build),curl/jq(for the RPC query), andcast(for on-chain address queries). - Node API reference is auto-generated: Run
yarn generate:node-api-reference(Step 5a) before building. The generator parses TypeScript source directly, so no yarn-project build is required — butyarn-project/node_modules/must exist (runyarn installfromyarn-projectif missing). - Operator CLI reference is auto-generated: Run
yarn generate:operator-cli-reference(Step 5b) before building. The script runsaztec start --helpand prepends the hand-curated frontmatter/intro. Requires the matchingaztecCLI version to be installed locally. - Build must pass: Do not cut versioned docs until
yarn buildsucceeds. - COMMIT_TAG needs
vprefix: The preprocessor uses COMMIT_TAG for GitHub URLs and git tag references. Omitting thevwill break links in versioned docs. - User confirmation required: Ask before deleting old versioned docs and before making content changes to operator docs.
- Changes land on
next: All changes are stashed and moved to thenextbranch at the end, ready for a PR. - Network version config only: This skill modifies
network_version_config.jsonandnetwork_versions.json. It does not touchdeveloper_version_config.jsonordeveloper_versions.json.