with one click
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.
// 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.
Interactive wizard that walks service teams through creating a package-specific skill for their Azure SDK package. Scans the package, detects customization patterns, scaffolds a SKILL.md with references, validates with vally lint, and registers in find-package-skill. WHEN: create package skill; add service skill; bootstrap skill for package; new package skill; skill for my SDK package; write skill for search; write skill for cosmos.
**UTILITY SKILL** — Must be consulted before making any changes to packages under sdk/. Provides package-specific domain knowledge that prevents common mistakes. WHEN: add feature to package; fix bug in package; modify package code; regenerate from typespec; change client library.
Generate code from TypeSpec via tsp-client (update, sync, generate). Requires a tsp-location.yaml in the current working directory. Supports updating the commit hash before running.
Suppress generated Java classes that duplicate openai-java models, using @@alternateType in TypeSpec and manual serialization bridges. Use after dup-classes has identified actionable duplicates.
Verify whether generated Java classes duplicate openai-java models by comparing fields/types (names may differ). Use when checking for duplicate model coverage.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
| name | release-notes |
| description | 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. |
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
FooClientaddition (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
BarClientsub-client.Would you like me to:
- Skip the entries that are already covered and only add the new ones?
- Merge/update the overlapping entries (tell me how you'd like them worded)?
- 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.