Repository navigation
feat(skills): add xmc_release skill for end-to-end release orchestration - #980
Conversation
Introduce the `xmc_release` skill guiding agents through the 7-phase XMC release process: 1. Trigger nightly deployment workflow (`nightly-build.yml`). 2. Watch deployment and abort on failure. 3. Trigger examples E2E test suite (`nightly-examples-e2e.yml`) and abort on failure. 4. Trigger visual snapshot gallery (`nightly-visual-snapshot.yml`) and share URL. 5. Generate structured release notes using `xmc_generate_release_notes`. 6. Iteratively review release notes and version bump with user. 7. Publish draft GitHub release and tag upon explicit user confirmation. TAG=agy CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417
There was a problem hiding this comment.
Code Review
This pull request adds a comprehensive playbook (SKILL.md) to orchestrate the end-to-end XMC release workflow across seven sequential phases. The review feedback suggests removing a hardcoded local repository path to ensure environment independence, and adding a short delay (sleep 5) after triggering asynchronous GitHub workflows to guarantee that the correct, newly created run IDs are retrieved.
- Make repository working directory requirement generic instead of hardcoded `~/Documents/XMC`. - Add a 5-second sleep buffer after `gh workflow run` across Phases 1, 3, and 4 to prevent fetching stale/previous workflow run IDs before GitHub registers the new runs. Comment links: - #980 (comment) - #980 (comment) - #980 (comment) - #980 (comment) TAG=agy CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417
…l pythonpath - Eliminate prerequisite requirement to checkout or pull local `main`, allowing the release skill to run from any branch or git worktree without conflicts. - Ensure helper tool invocations specify `PYTHONPATH=.`. TAG=agy CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417
…enerate_release_notes
…publishing to xmc_generate_release_notes
…to xmc_release
Out-of-diff observations (related to the inline comments above)These are outside this PR's diff, so they can't be posted inline. They directly affect how safe
|
- Register XMC Release Skill in .agents/AGENTS.md routing matrix and modular index - Correlate workflow runs by DISPATCH_TIME, event, and verify against TARGET_SHA - Persist TARGET_SHA and state paths in Prerequisites and direct entry - Distinguish cancelled vs failure outcomes and offer single rerun for E2E flakes - Tie E2E tests to Phase 1 deployment and inspect Pages deploy step conclusion - Link heading anchors in Phase 5 to xmc_generate_release_notes/SKILL.md - Enforce --target-commit and --target-ref pinned to TARGET_SHA with --dry-run preflight - Remove duplicate draft promotion step from xmc_release TAG=agy CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417
…d_watch helper - Implement tools/release/dispatch_and_watch.py with Python 3.14+ syntax, strict type hints, and PEP 8 - Add Bazel test target and hermetic unit test suite in dispatch_and_watch_test.py - Support --workflow, --target-sha, --actor, --find-existing, --state-file, and --watch - Update .agents/skills/xmc_release/SKILL.md to invoke the Python tool across phases 2, 3, and 4 - Extend HandledError and run_tool to support custom exit codes and error details
…hs in xmc_release
Review Summary & Documentation Observations (Group B)Great progress on addressing the prior review comments! The introduction of The 11 previously open review threads have all been verified and marked as resolved on GitHub. 5 new inline feedback items have been posted regarding function decomposition, polling condition safety, DRY subprocess helpers, and error propagation. Additionally, here are two observations on files outside the immediate diff: 1. Synchronize
|
…rden polling match
… in dispatch_and_watch
…s, and document dispatch_and_watch
There was a problem hiding this comment.
will release titles/names be consistent with this?
@AntonTyb They should be - when it comes to creation of the draft notes we defer this to the preexisting SKILL so there should be no naming drift. |
- Mandate non-mutating preflight validation (--dry-run) before mandatory confirmation gates. - Codify explicit prohibition against --force or autonomous tag overwrites. - Standardize multi-turn state resumption idiom using conditional parameter expansion and state files. - Mandate dedicated Python helpers for multi-step CI polling and JSON parsing. - Consolidate variable placeholders at top of playbook bash snippets. - Document draft-to-public release promotion ownership and dedicated confirmation gate in xmc_generate_release_notes. - Enforce structured error summarization and conclusion discrimination without raw log dumping. TAG=agy CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417
Summary
Adds the new
xmc_releaseagent skill (.agents/skills/xmc_release/SKILL.md) providing an end-to-end operational playbook for orchestrating XMC releases across 5 sequential phases, adds thetools/release/dispatch_and_watch.pyworkflow dispatch and monitoring CLI tool with accompanying Bazel tests, and registers the skill in.agents/AGENTS.md.Motivation & Context
Preparing and publishing an XMC release involves coordinating multiple GitHub Actions workflows, failure-stop checks, visual verification, structured release notes synthesis, and release publishing. Standardizing this workflow into a documented agent skill with a dedicated helper CLI tool ensures deterministic execution, enforces strict confirmation gates before tag and release publishing, and prevents broken builds from reaching users.
Key Changes
.agents/skills/xmc_release/SKILL.md): Added operational playbook defining:nightly-build.ymldeployment onmain.nightly-examples-e2e.ymltest suite with mandatory abort-on-failure handling and single approved flake retry.nightly-visual-snapshot.ymlgolden UI gallery links with GitHub Pages deployment step verification.--dry-run), and tag/release publishing toxmc_generate_release_notes.tools/release/dispatch_and_watch.py): Added CLI tool to dispatch GitHub Actions workflows, poll for registered runs with commit SHA verification, watch outcomes to completion, and persist release state.tools/release/dispatch_and_watch_test.py): Added unit test suite covering run dispatch, SHA mismatch detection, cancellation handling, GitHub Pages URL extraction, and state file updates.tools/release/BUILD.bazel,tools/release/README.md): Configured Bazel targets fordispatch_and_watchand documented CLI usage, package architecture, and testing..agents/AGENTS.md): RegisteredXMC Release Skillin the Task Intent Routing Matrix and Modular Rules Index.Assumptions
None — requirements were fully specified.
Verification & Testing
bazel test //tools/release:all(All 8 release tool tests passed cleanly)../.githooks/pre-commit(All buildifier, gofmt, golangci-lint, go test determinism, addlicense, and ruff checks passed cleanly)../tools/analyze_diff_size.py --base-ref origin/main...(387 prod lines, 531 test lines, 264 doc lines; 918 total code lines).Related Issues / Bugs
N/A
TAG=agy
CONV=85ef69c5-6bd6-4ccb-bac3-6d26ad135417