Fret release check and publish
Use this skill when the task is about preparing, validating, or troubleshooting a Fret release wave.
When to use
- You are preparing a new workspace release wave.
release-plz is failing in CI and you need to find the blocking issue.
- You need to check which crates should be in scope for publishing.
- You need to validate
release-plz.toml, version groups, or release workflow permissions.
Inputs to collect (ask the user)
- Which release scope is intended (single crate, crate group, full wave)?
- Is this a dry-run/preflight, or are we actually trying to publish?
- Are versions expected to move in lockstep, or should there be multiple version groups?
- Which CI/workflow run is failing, and what is the exact error surface?
- Do we need local evidence artifacts (publish order, planning output, dry-run commands)?
Defaults if unclear:
- Start with a dry-run/preflight and make release scope explicit before touching config.
Smallest starting point (one command)
python3 tools/release_closure_check.py --config release-plz.toml --print-publish-commands
Quick start
- Read the relevant reference note first.
- Make release scope explicit (
release-plz.toml, publish whitelist, wave members).
- Run local preflight and closure/order checks before blaming CI.
- Capture planning output and workflow evidence so the failure is reproducible.
Workflow
0) Read the relevant reference note first
Use these notes to keep the main skill lean:
- Preflight commands, CI flow, and SemVer check boundaries:
.agents/skills/fret-release-check-and-publish/references/release-preflight-checklist.md
- Version-group strategy, v0.1 practice notes, and release-task outputs:
.agents/skills/fret-release-check-and-publish/references/versioning-and-v0-1-notes.md
1) Define release scope explicitly
Before changing config or rerunning CI:
- decide which crates are in scope,
- confirm whether they should publish together,
- keep apps/demos/tooling out of the publish wave unless intentionally required.
2) Run local preflight before CI
At minimum, validate:
- publishable manifests,
- dependency version requirements,
- closure/order of the release wave,
release-plz planning output.
3) Treat CI as execution, not discovery
By the time CI runs, you should already know:
- the intended release scope,
- the expected publish order,
- the version-group policy,
- the likely failure surface if credentials or permissions are wrong.
4) Leave bounded release evidence
Keep the release task reviewable by leaving:
- exact commands used,
- planning output or reproducible planning command,
- publish-order evidence,
- the workflow/config files that define release behavior.
Definition of done (what to leave behind)
- Minimum deliverables (3-pack): Repro (closure/order), Gate (CI-ready config), Evidence (planning output). See
fret-skills-playbook.
release-plz.toml scope is explicit and version-group intent is documented.
- A closure/order artifact exists for the wave.
- CI workflow expectations are validated against the canonical release workflows.
- If publishing: the release PR is merged and the publish job completes.
Examples
- Example: debug a
release-plz failure
- User says: "release-plz failed—what do we fix?"
- Actions: run preflight, identify manifest/version-group/workflow issues, and verify publish permissions.
- Result: a clear fix list before re-running CI.
Common pitfalls
- Treating CI as the first place to discover release scope.
- Publishing crates with path-only internal dependencies and no crates.io version requirement.
- Letting version groups drift without writing the intended policy down.
- Mixing demos/apps/tooling into the publish whitelist by accident.
Troubleshooting
- Symptom: publish fails due to missing credentials.
- Fix: confirm CI secrets/permissions first, then rerun bounded preflight.
- Symptom: workspace versioning becomes inconsistent.
- Fix: use the configured version-group rules; avoid ad-hoc per-crate bumps.
Evidence anchors
release-plz.toml
.github/workflows/release-plz.yml
.github/workflows/release-guards.yml
docs/release/release-plz-adoption-analysis.md
docs/release/v0.1.0-release-checklist.md
tools/release_closure_check.py
- This skill’s references:
.agents/skills/fret-release-check-and-publish/references/release-preflight-checklist.md
.agents/skills/fret-release-check-and-publish/references/versioning-and-v0-1-notes.md
Related skills
fret-framework-maintainer-guide
fret-diag-workflow
fret-boundary-checks
1---2name: fret-release-check-and-publish3description: This skill should be used when the user asks to "prepare a release", "publish crates", "debug release-plz failures", or "validate release-plz config/workflows". Provides a release readiness and publish workflow for Fret using `release-plz` + crates.io (scope selection, dry runs, CI troubleshooting).4---56# Fret release check and publish78Use this skill when the task is about preparing, validating, or troubleshooting a Fret release wave.910## When to use1112- You are preparing a new workspace release wave.13- `release-plz` is failing in CI and you need to find the blocking issue.14- You need to check which crates should be in scope for publishing.15- You need to validate `release-plz.toml`, version groups, or release workflow permissions.1617## Inputs to collect (ask the user)1819- Which release scope is intended (single crate, crate group, full wave)?20- Is this a dry-run/preflight, or are we actually trying to publish?21- Are versions expected to move in lockstep, or should there be multiple version groups?22- Which CI/workflow run is failing, and what is the exact error surface?23- Do we need local evidence artifacts (publish order, planning output, dry-run commands)?2425Defaults if unclear:2627- Start with a dry-run/preflight and make release scope explicit before touching config.2829## Smallest starting point (one command)3031- `python3 tools/release_closure_check.py --config release-plz.toml --print-publish-commands`3233## Quick start34351. Read the relevant reference note first.362. Make release scope explicit (`release-plz.toml`, publish whitelist, wave members).373. Run local preflight and closure/order checks before blaming CI.384. Capture planning output and workflow evidence so the failure is reproducible.3940## Workflow4142### 0) Read the relevant reference note first4344Use these notes to keep the main skill lean:4546- Preflight commands, CI flow, and SemVer check boundaries:47 - `.agents/skills/fret-release-check-and-publish/references/release-preflight-checklist.md`48- Version-group strategy, v0.1 practice notes, and release-task outputs:49 - `.agents/skills/fret-release-check-and-publish/references/versioning-and-v0-1-notes.md`5051### 1) Define release scope explicitly5253Before changing config or rerunning CI:5455- decide which crates are in scope,56- confirm whether they should publish together,57- keep apps/demos/tooling out of the publish wave unless intentionally required.5859### 2) Run local preflight before CI6061At minimum, validate:6263- publishable manifests,64- dependency version requirements,65- closure/order of the release wave,66- `release-plz` planning output.6768### 3) Treat CI as execution, not discovery6970By the time CI runs, you should already know:7172- the intended release scope,73- the expected publish order,74- the version-group policy,75- the likely failure surface if credentials or permissions are wrong.7677### 4) Leave bounded release evidence7879Keep the release task reviewable by leaving:8081- exact commands used,82- planning output or reproducible planning command,83- publish-order evidence,84- the workflow/config files that define release behavior.8586## Definition of done (what to leave behind)8788- Minimum deliverables (3-pack): Repro (closure/order), Gate (CI-ready config), Evidence (planning output). See `fret-skills-playbook`.89- `release-plz.toml` scope is explicit and version-group intent is documented.90- A closure/order artifact exists for the wave.91- CI workflow expectations are validated against the canonical release workflows.92- If publishing: the release PR is merged and the publish job completes.9394## Examples9596- Example: debug a `release-plz` failure97 - User says: "release-plz failed—what do we fix?"98 - Actions: run preflight, identify manifest/version-group/workflow issues, and verify publish permissions.99 - Result: a clear fix list before re-running CI.100101## Common pitfalls102103- Treating CI as the first place to discover release scope.104- Publishing crates with path-only internal dependencies and no crates.io version requirement.105- Letting version groups drift without writing the intended policy down.106- Mixing demos/apps/tooling into the publish whitelist by accident.107108## Troubleshooting109110- Symptom: publish fails due to missing credentials.111 - Fix: confirm CI secrets/permissions first, then rerun bounded preflight.112- Symptom: workspace versioning becomes inconsistent.113 - Fix: use the configured version-group rules; avoid ad-hoc per-crate bumps.114115## Evidence anchors116117- `release-plz.toml`118- `.github/workflows/release-plz.yml`119- `.github/workflows/release-guards.yml`120- `docs/release/release-plz-adoption-analysis.md`121- `docs/release/v0.1.0-release-checklist.md`122- `tools/release_closure_check.py`123- This skill’s references:124 - `.agents/skills/fret-release-check-and-publish/references/release-preflight-checklist.md`125 - `.agents/skills/fret-release-check-and-publish/references/versioning-and-v0-1-notes.md`126127## Related skills128129- `fret-framework-maintainer-guide`130- `fret-diag-workflow`131- `fret-boundary-checks`