name: azd-publish description: | Prepare and publish a new version of the waza azd extension. USE FOR: "publish extension", "release new version", "bump version", "prepare release", "update changelog", "azd publish", "new release", "version bump", "cut a release". DO NOT USE FOR: running evals (use waza), writing skills (use skill-authoring), CI/CD pipeline changes (edit workflow files directly). metadata: author: spboyer version: "1.0"
azd Extension Publish
Automate version bumps, changelog updates, and PR creation for waza azd extension releases.
When to Use
- Preparing a new release of the waza azd extension
- Bumping the version number (major, minor, or patch)
- Updating the changelog with changes since last release
- Creating a release PR for review
Workflow
Follow these steps in order. Ask the user for input at each decision point.
Step 1: Gather Changes and Update Changelog
Get the current version from version.txt and extension.yaml, then collect commits since the last release:
cat version.txt
# Find the latest azd extension version tags
git tag --list 'azd-ext-microsoft-azd-waza_*' --sort=-v:refname | head -5
# Get commits since last azd extension tag
last_tag=$(git tag --list 'azd-ext-microsoft-azd-waza_*' --sort=-v:refname | head -1)
git log "${last_tag}..HEAD" --oneline --no-decorate
If version.txt and extension.yaml differ, flag it to the user before proceeding.
Summarize the changes grouped by type:
- Added —
feat:commits - Fixed —
fix:commits - Changed —
refactor:,chore:,docs:commits - Removed — any removal-related commits
Present the summary to the user for review.
Then update CHANGELOG.md. The changelog follows Keep a Changelog format.
Perform these updates (using a placeholder version X.Y.Z — the actual version is determined in Step 2):
-
Move Unreleased content: Move any items currently under
## [Unreleased]into a staging area. If[Unreleased]is empty, populate from the git log summary gathered above. -
Populate from commits: Prepare entries grouped under
### Added,### Fixed,### Changedas appropriate based on the commits gathered above.
Hold these changelog entries — the new version section header and comparison links will be finalized after the version is determined in Step 2.
Step 2: Determine Version
Based on the changes gathered in Step 1, recommend a version bump type using standard semver semantics:
- major — Breaking changes, removals of public API (
feat!:,BREAKING CHANGE:) →(MAJOR+1).0.0 - minor — New features, backward compatible (
feat:) →MAJOR.(MINOR+1).0 - patch — Bug fixes, docs, refactors, chores (
fix:,docs:,refactor:,chore:) →MAJOR.MINOR.(PATCH+1)
Present the recommendation with rationale (e.g., "I see 3 feat: commits and no breaking changes — recommending a minor bump").
ASK THE USER to confirm the recommended bump or choose a different one.
Compute the new version and confirm with the user before proceeding.
Then finalize the changelog:
-
Create new version section: Insert a new section below
## [Unreleased]with today's date:## [X.Y.Z] - YYYY-MM-DD -
Add the prepared entries from Step 1 under the new version section.
-
Update comparison links at the bottom of the file:
[Unreleased]: https://github.com/microsoft/waza/compare/azd-ext-microsoft-azd-waza_X.Y.Z...HEAD [X.Y.Z]: https://github.com/microsoft/waza/compare/azd-ext-microsoft-azd-waza_PREVIOUS...azd-ext-microsoft-azd-waza_X.Y.Z -
Clear the Unreleased section: Leave
## [Unreleased]with empty subsections or blank.
Step 3: Update Version Files
Update these files with the new version:
version.txt— Replace contents with new version stringextension.yaml— Update theversion:field
Step 4: Review Changes
Show the user a summary of all changes made:
- New version number
- Files modified:
version.txt,extension.yaml,CHANGELOG.md - Show the diff with
git diff
Step 5: Ask About PR Creation
ASK THE USER: Should I create a PR with these changes?
If yes:
-
Create a feature branch:
git checkout -b release/v{VERSION} -
Stage and commit all changes:
git add version.txt extension.yaml CHANGELOG.md git commit -m "chore: Prepare release v{VERSION}" -
Push the branch:
git push origin release/v{VERSION} -
Create a PR using the GitHub CLI:
gh pr create \ --title "Release v{VERSION}" \ --body "## Release v{VERSION} ### Changes {changelog entries for this version} ### Checklist - [ ] Version bumped in version.txt and extension.yaml - [ ] CHANGELOG.md updated - [ ] CI passes - [ ] Ready to publish via 'Publish azd Extension' workflow" \ --base main \ --head release/v{VERSION}
If no:
- Leave the changes uncommitted in the working tree
- Inform the user they can review and commit manually
File Reference
| File | Purpose | What Gets Updated |
|---|---|---|
version.txt | Single source of version truth | New semver version string |
extension.yaml | azd extension manifest | version: field |
CHANGELOG.md | Human-readable change history | New version section with entries |
Important Notes
- Always use conventional commit prefixes (
feat:,fix:,chore:,docs:,refactor:) when interpreting git history - The changelog format must follow Keep a Changelog
- Version numbering must follow Semantic Versioning
- The PR branch naming convention is
release/v{VERSION} - After the PR is merged, the user should trigger the Publish azd Extension workflow (
azd-ext-release.yml) to build, pack, and publish the extension