Repository navigation
ci: announce published packages on Discord - #280
RedStar071 wants to merge 3 commits into
Conversation
Post each published package in the Sapphire format through the shared announce action of stars-components, and add announce.yml to re-send or preview an announcement by hand. zizmor allows that action to follow main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016cicF4XnPH4SGMiXLz6nKh
release.yml and announce.yml call reusable-announce-packages.yml from wolfstar-project/.github instead of the stars-components action. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016cicF4XnPH4SGMiXLz6nKh
No package changes: this only touches CI workflows. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016cicF4XnPH4SGMiXLz6nKh
|
The
This PR stays a draft until the shared workflows are merged in Generated by Claude Code |
🤖 REVIEW PAUSED
This pull request is from an outside contributor. Add the |
|
Note The title starts with
|
There was a problem hiding this comment.
Important
The reusable workflow this PR calls does not exist yet, so merging now would break release.yml. Hold the merge until it lands.
Reviewed changes
Reviewed the full diff (5 files, 3 commits) against the current release.yml, and checked the wolfstar-project/.github repository for the called workflow.
release.yml: thereleasejob now exposespublishedandpublishedPackages, and a newannouncejob calls the shared reusable workflow.announce.yml: new manual workflow to re-send or preview an announcement, withdry-runon by default..github/zizmor.yml: letswolfstar-project/.github/*followmain(ref-pin) and keepshash-pinfor everything else.AGENTS.mdand changeset: documents the flow and adds an empty changeset.
⚠️ PR body carries a second attribution after the disclosure line
The body ends with the disclosure line followed by --- and _Generated by [Claude Code](https://claude.ai/code/session_…)_. AGENTS.md says the disclosure line is the only AI attribution a PR body may carry and that nothing may follow it, so that footer should be removed.
Technical details
# Remove the extra attribution footer from the PR body
## Affected sites
- PR #280 body — trailing `---` and `_Generated by [Claude Code](...)_` after the `🤖 AI disclosure` line
## Required outcome
- The body contains exactly one disclosure line and nothing after it.claude-sonnet-5-5 | 𝕏
| pull-requests: read # pull request titles for the bullets | ||
| # Sapphire-style package notes from the changelogs, no AI. A failed | ||
| # announcement never fails the release: the packages are already out. | ||
| uses: wolfstar-project/.github/.github/workflows/reusable-announce-packages.yml@main |
There was a problem hiding this comment.
reusable-announce-packages.yml is not in wolfstar-project/.github yet (the contents API returns 404, and there is no open PR there). A caller that references a missing reusable workflow stops the whole release.yml run from starting, which would block the @next snapshot and the release publish on main. The PR is no longer a draft, so please keep the merge gated on the .github PR landing first.
Technical details
# Gate merge on the reusable workflow, and pin down the input contract
## Affected sites
- .github/workflows/release.yml:149 — `uses: wolfstar-project/.github/.github/workflows/reusable-announce-packages.yml@main`
- .github/workflows/release.yml:151 — passes `needs.release.outputs.publishedPackages`, which `changesets/action` emits as a JSON array of `{name, version}`
- .github/workflows/announce.yml:32 — passes a comma separated `name@version` list to the same `published-packages` input
## Required outcome
- Do not merge before `reusable-announce-packages.yml` exists on `wolfstar-project/.github` `main`.
- The `published-packages` input must accept both shapes (JSON array and `name@version,...`), or the two callers must normalize to one shape.
## Open questions for the human
- Does the reusable workflow parse both formats? It could not be checked because the file is not published yet.There was a problem hiding this comment.
On the open question: yes, published-packages takes both shapes. The action reads a value that starts with [ as the JSON array changesets/action emits (entries without a string name and version are dropped), and otherwise as name@version entries separated by commas or spaces. parsePublished covers both in its tests. I also checked every with: and secrets: name of the callers against the inputs and secrets the two reusable workflows declare, and none is unknown or missing.
The merge gate stays: please do not merge this before reusable-announce-packages.yml is on wolfstar-project/.github main. I cannot open that PR from this session, so it is for the maintainer to land.
Generated by Claude Code

🔗 Linked issue
N/A
🧭 Context
Releases of
@wolfstar/plugin-*packages are published with changesets, but nothing tells the community. This posts each release to Discord in the Sapphire announcement format, built from the changelogs, the same way as instars-components.The posting logic lives in the org
wolfstar-project/.githubrepository as a reusable workflow (reusable-announce-packages.yml). This PR depends on it being merged there first. GitHub rejects a workflow file that calls a missing reusable workflow, so do not merge this before then.📚 Description
After
changesets/actionpublishes, a newannouncejob callsreusable-announce-packages.yml. For each published package it reads the matchingCHANGELOG.mdsection and the PR titles, and posts# @wolfstar/plugin-api@3.1.0 - (date)followed by 💥 / 🚀 / 🐛 / 🏠 / 📦 sections, with links to the commit and the PR. No AI is involved. A failed announcement does not affect thereleasejob, because the packages are already out: theannouncejob is separate and runs after the publish.announce.ymlis a manual workflow that re-sends or previews an announcement from aname@versionlist (dry-rundefaults to on). Thepublished-packagesinput takes either that list or the JSON arraychangesets/actionoutputs.Optional signed lifecycle callbacks (
X-Release-Signature-256) are off unless bothRELEASE_WEBHOOK_URLandRELEASE_WEBHOOK_SECRETare set.Key changes
release.yml: thereleasejob exposespublishedandpublishedPackages; newannouncejob. The old inline step that called astars-componentsaction is gone.announce.yml(new): manual re-send or preview..github/zizmor.yml:wolfstar-project/.github/*may followmain(ref-pin); everything else stays hash-pinned.AGENTS.md: documents the flow.To turn it on, set the secret
DISCORD_PACKAGES_WEBHOOK_URLand the variableDISCORD_PACKAGES_ROLE_ID. With no webhook the job only renders the preview in its summary.Type of Change
Pre-flight Checklist
pnpm changeset(orpnpm changeset add --emptyif no release is needed). See .changeset/README.md.No tests here: the workflow has no code of its own, and the action's tests (24) run in the
.githubrepository.oxfmtis clean on the changed files.zizmorreports no finding on them; the one it still reports inpkg-pr-new.ymlwas already there.