Skip to content

ci(release): dispatch publish-claude-plugin after each release - #1180

Open
sronix wants to merge 2 commits into
zzet:mainfrom
sronix:fix/970-publish-on-release
Open

sronix wants to merge 2 commits into
zzet:mainfrom
sronix:fix/970-publish-on-release

Conversation

@sronix

@sronix sronix commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #1176, part of #970. publish-claude-plugin has not run for a release since v0.53.1, so gortexhq/claude-plugin was last synced from v0.24.0 (2026-05-14). It still has the old flat layout, the marketplace install from #1176 can't work yet, and plugin fixes since then (#911, #981, #1173) haven't reached users.

The cause: v0.53.1 was published by a person, but v0.54.0 through v0.64.11 were created by release.yml with GITHUB_TOKEN (author github-actions[bot]). Events from GITHUB_TOKEN don't start other workflows, so the release: published trigger never fired. workflow_dispatch is the documented exception.

Changes

  • release.yml: a new publish-claude-plugin job (after release) runs gh workflow run publish-claude-plugin.yml -f ref=<tag>, with job-level actions: write only.
  • publish-claude-plugin.yml: a header comment explaining the dispatch. No logic change; the release trigger stays for releases published without GITHUB_TOKEN.
  • scripts/validate-cask.sh: touching release.yml runs the homebrew-cask check, which now fails on any change because current Homebrew refuses to load a cask from an untrusted tap (brew info does not trust it the way brew install user/tap/x does). The script now trusts its scratch tap in a throwaway trust store (XDG_CONFIG_HOME pointed at a temp dir), so a developer's own trust settings are left alone. Users installing from the tap are not affected.

A publish failure shows in the dispatched run, not in the Release run. If a release is ever published by hand, two runs can start; the concurrency group serializes them and the second finds no changes.

Two things only you can do:

  • A manual run of publish-claude-plugin with ref set to main (or the next tag) would publish the marketplace layout now instead of at the next release.
  • The v0.53.1 run failed and its logs have expired. If CLAUDE_PLUGIN_TOKEN has expired, the dispatched run will fail the same way.

Testing

  • actionlint on both workflows: no findings in the changed lines.
  • shellcheck and bash -n on validate-cask.sh; the homebrew-cask job on this PR runs it against real Homebrew.
  • Not run end to end: it needs a release tag and the repo secrets.

Checklist

  • Code follows existing patterns in the codebase
  • No unnecessary abstractions added
  • Language extractor includes Meta["methods"] for interfaces (n/a)
  • Methods have EdgeMemberOf edges to their containing type (n/a)

Releases are created with GITHUB_TOKEN, so publish-claude-plugin's
release: published trigger has not fired since v0.53.1. Dispatch it
from release.yml, which GitHub allows for GITHUB_TOKEN.
Current Homebrew refuses to load casks from an untrusted tap, and
brew info does not trust one on the way like brew install does, so
the cask check now fails on every run. Trust the scratch tap in a
throwaway trust store so the developer's own one is left alone.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant