Add Codex skills sync on release - #133
Merged
Merged
Conversation
release.published never fires for the tag-first path in RELEASING.md. There the GitHub Release is created by action-gh-release using GITHUB_TOKEN, and GitHub does not start workflow runs for GITHUB_TOKEN events, so the sync was silently skipped for a supported release path. Key off Native Binary Release instead, which runs on the tag push either way; npm-publish.yml already uses this pattern. The workflow_run payload has no release object, so draft and prerelease filtering moves from the job-level condition into the script, and the release tag is read from head_branch. Whether a ref is a published release is resolved via the API rather than a v-prefix match, since tag names are inconsistent (v1.9.1 but 1.8.8). Manual dispatch keeps its existing semantics: base_tag still bypasses release lookup, and an explicitly named tag still overrides draft filtering. Also set queue: max. The default queue holds a single pending run, so three releases published in quick succession would drop the middle one. Co-authored-by: Cursor <cursoragent@cursor.com>
juangaitanv
approved these changes
Jul 28, 2026
yhoztak
approved these changes
Jul 28, 2026
yhoztak
left a comment
Contributor
There was a problem hiding this comment.
LGTM
maybe good candidate for auto-approval? If so, please update this one also https://github.com/Corgea/doghouse/blob/main/.github/pr-automation-rules.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
.github/workflows/sync-skills.yml: after a release ships, opens a PR against Corgea/skills updating the CLI skills to match what shipped.Requires Documentation Update: - [ ] Yes - [x] No
Why release-triggered
Skills describe the CLI the reader already has installed. Diffing
mainwould publish unreleased commands into a public skill, so the job diffs tag to tag.Why not
release.publishedRELEASING.mddocuments two release paths, and that trigger only covers one. On the tag-first path the GitHub Release ends up created byaction-gh-releaseusingGITHUB_TOKEN, and GitHub does not start workflow runs forGITHUB_TOKENevents — so the sync would be silently skipped for a supported way of releasing.This keys off the
Native Binary Releaseworkflow instead, which runs on the tag push under either path.npm-publish.ymlalready uses the same pattern. That payload carries no release object, so draft and prerelease filtering moved from the job condition into the script, and the tag comes fromhead_branch.Notes
v-prefix match: history mixesv1.9.1and1.8.8, and a prefix match would skip the latter. Branch pushes, which also runNative Binary Release, resolve to no release and exit cleanly.publishedAt, not by excluding the current tag. Excluding the tag means a manual dispatch of an older tag selects a newer release as the base and produces a reversed diff, which reads as commands being removed.queue: maxon the concurrency group. The default holds one pending run, so three releases in quick succession would drop the middle one.workflow_dispatchtakeshead_tagplus an optionalbase_tag.base_tagbypasses release lookup, so a plain tag with no Release can still be synced, and an explicitly named tag overrides draft filtering.actions/checkoutstep: the action checks this repo out to./sourceitself, and a root checkout would placeskills/corgea/SKILL.mdunder the model's working directory as a decoy edit target.Testing
workflow_runonly fires from the default branch, so this cannot run until it is onmain. The range-resolution logic was exercised against live release data: branch pushes skip,v1.9.2resolvesv1.9.1..v1.9.2,v1.9.1correctly resolvesv1.9.0rather than the newerv1.9.2,1.8.8resolvesv1.8.7, and a missing tag errors on dispatch but skips onworkflow_run.Merge order
Last, and strictly after Corgea/internal_actions#2 — the
uses:reference resolves tomainand 404s until that action lands.Related: Corgea/internal_actions#2, Corgea/skills#2