azure/release-notes
Update CHANGELOG.md and README.md for an Azure SDK for Java package based on a GitHub PR. Use when the user wants to write or update release notes, changelogs, or readme docs from a PR reference.
npx skills add https://github.com/Azure/azure-sdk-for-java --skill release-notes
Update CHANGELOG.md and/or README.md for an Azure SDK for Java package using a GitHub PR as the source of truth.
gh CLI authenticated (gh auth status).CHANGELOG.md and README.md live).Ask the user for any missing inputs before proceeding:
| Input | Required | Description |
|-------|----------|-------------|
| PR URL or number | Yes | GitHub PR to use as the source of changes. |
| Package directory | No | Defaults to cwd. Override if the user specifies a different package. |
| Scope | No | changelog, readme, or both (default: both). |
Use gh to collect the data you need. The diff may be too large for gh pr diff; fall back to the files API.
# PR metadata
gh pr view <number> --json title,body
# File list with status (added/modified/removed/renamed)
gh api repos/{owner}/{repo}/pulls/<number>/files --paginate \
--jq '.[] | .status + " " + .filename'
# Renamed files (old → new)
gh api repos/{owner}/{repo}/pulls/<number>/files --paginate \
--jq '.[] | select(.status == "renamed") | "\(.previous_filename) -> \(.filename)"'
# Patch for a specific file (when you need detail)
gh api "repos/{owner}/{repo}/pulls/<number>/files?per_page=100" \
--jq '.[] | select(.filename | test("<pattern>")) | .patch'
Collect:
*ServiceVersion.java (version string changes).*ClientBuilder.java (base URL, authentication, new builder methods).module-info.java (transitive exports, new requires).Before writing anything, read the current CHANGELOG.md and README.md (if in scope) in full and compare their content against the changes you collected in Step 1.
For each change you plan to document, check whether an entry already covers it:
If any overlap is found, stop and consult the user before editing. Present a summary like:
> The following changes from PR #NNN already appear to be covered in the current files:
>
> CHANGELOG.md
> - _Features Added_ already mentions FooClient addition (line …).
> - _Breaking Changes_ already has a bullet about tool renames that partially overlaps the renames in this PR.
>
> README.md
> - The "Key concepts" section already lists the BarClient sub-client.
>
> Would you like me to:
> 1. Skip the entries that are already covered and only add the new ones?
> 2. Merge/update the overlapping entries (tell me how you'd like them worded)?
> 3. Proceed anyway and add everything as new entries?
Wait for the user's response before continuing to Step 3 or Step 4.
If there is no overlap at all, inform the user briefly (e.g., "No existing entries overlap with this PR — proceeding to update.") and continue.
The CHANGELOG structure is strict. Every version section must contain exactly these headings in this order:
## <version> (date or Unreleased)
### Features Added
### Breaking Changes
### Bugs Fixed
### Other Changes
(Unreleased) one).- .| Heading | Content |
|---------|---------|
| Features Added | New public classes, methods, enums, samples, tools, client capabilities. |
| Breaking Changes | Renamed/removed classes, renamed methods, changed enum values, changed method signatures, service version changes. |
| Bugs Fixed | Fixes to incorrect behavior (e.g., URL construction, serialization bugs). |
| Other Changes | Dependency updates, spec regeneration, module-info changes, internal refactors. |
ClassName . OldName → NewName or OldName renamed to NewName .*AgentTool to *Tool, write one bullet with representative examples rather than 10 bullets.v1) in Breaking Changes.@HostParam/@QueryParam annotations, checkstyle suppression updates, or whitespace.The README structure is also checked by CI. Follow the existing heading hierarchy exactly:
# <Package name> client library for Java
## Documentation
## Getting started
### Prerequisites
### Adding the package to your product
### Authentication
## Key concepts
### <subsections as needed>
## Examples
### <subsections as needed>
### Service API versions
#### Select a service API version
## Troubleshooting
## Next steps
## Contributing
<!-- LINKS -->
[//]: # version-update markers.### subsections under ## Key concepts or ## Examples.java com.azure... snippet tags intact.Tool subclasses, document which are GA and which are preview (look for Preview in the class name or discriminator value). Use a table.FoundryFeaturesOptInKeys, AgentDefinitionFeatureKeys, or Foundry-Features headers, document:*Impl.java for hardcoded foundryFeatures strings)./openai → /openai/v1), update the snippet and surrounding prose. Remove references to removed imports like AzureUrlPathMode or AzureOpenAIServiceVersion if they no longer apply.For the azure-ai-agents package, look at classes extending com.azure.ai.agents.models.Tool:
# Read the Tool.java discriminator to find all subtypes
grep -A1 'equals(discriminatorValue)' src/main/java/com/azure/ai/agents/models/Tool.java
Tools whose discriminator value or class name contains preview are preview tools. All others are GA.
Check which *Impl.java files hardcode a foundryFeatures value:
grep -rl "final String foundryFeatures" src/main/java/*/implementation/*.java
Those operation groups are preview and auto-opt-in. Also check convenience client classes for FoundryFeaturesOptInKeys parameters — those are opt-in by caller.
gh pr diff (HTTP 406), use gh api .../pulls/<number>/files --paginate instead.--paginate and page with ?per_page=100&page=N as needed.Take azure/release-notes from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.