agentsclimarketplace

Release

Skill Flowxtra/career-agent/.agents/skills/release

Use when the user asks to cut, tag, or ship an openings-mcp release (e.g. "release v0.8.0"), to run pre-release provider smoke tests, or to rewrite a fresh release's auto-generated notes.From its SKILL.md

Install
npx -y skills add Flowxtra/career-agent --skill release

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 14 days oldThe repository was created 14 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.6 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

Release

Overview

Cut a release end to end: validate the version, live-smoke-test every provider at HEAD, push the tag, wait for the Release workflow (goreleaser publishes the GitHub release with a raw commit-list body), then rewrite the notes in the house style and report back.

Input

Exactly one version matching ^v\d+\.\d+\.\d+$ (all numeric, e.g. v0.8.0). Reject anything else — 0.8.0, v0.8, v0.8.0-rc1 — and ask for a corrected version instead of guessing. It must not already exist and must sort above the latest tag (git tag --sort=-v:refname | head -1 — that latest tag is also the "previous version" used in steps 2, 4, and 5). Require a clean tree on main, in sync with origin/main.

1. Smoke-test every provider (before tagging)

Test HEAD through the real MCP path, never an installed binary or the session's connected openings-mcp server — those run the previous release. Build once (go build -o <scratchpad>/openings-mcp ./cmd/openings-mcp) and drive it over stdio; the request script is in the integrate-new-provider skill's MCP-surface step.

  • ATS adapters (the unified-search set: providerOrder in cmd/verify-companies/main.go): per provider, sample 3–5 companies from internal/provider/<name>/companies.yaml; search_jobs_by_company must return live listings for each, and get_job_detail_by_company must succeed on at least one returned job_id.
  • Dedicated-tool providers (job boards and careers sites: the Register* calls in newServer, cmd/openings-mcp/main.go): per provider, 3–5 varied <name>_search_jobs queries exercising the filters it supports (keyword, location, ...) plus one <name>_get_job_detail on a returned identifier.

A failure stops the release: retry once to rule out upstream flakiness, then report to the user instead of tagging. Also run go test ./... — cheaper to catch breakage here than across six CI matrix legs after the tag is public.

2. Tag

Annotated, message in the same shape as the release title:

git tag -a vX.Y.Z -m "vX.Y.Z: <one-line summary of the release>"
git push origin vX.Y.Z

Skim git log <prev>..HEAD --oneline first to write the summary line.

3. Wait for CI

The tag push triggers .github/workflows/release.yml: unit tests on six platforms, then goreleaser (GitHub release, archives, Homebrew cask, Docker images). Watch it to completion:

gh run watch --exit-status \
  "$(gh run list --workflow=release.yml --limit 1 --json databaseId -q '.[0].databaseId')"

On failure, report the failing job; never delete the tag or release to retry without asking.

4. Rewrite the release notes

Collect what shipped since the previous tag: git log <prev>..vX.Y.Z --oneline plus the merged PRs it references — read enough of each PR to state its user-facing impact, not just its subject line. Then replace goreleaser's title and commit-list body:

gh release edit vX.Y.Z --title "..." --notes-file <scratchpad>/notes.md

House style (see v0.5.5, v0.6.0, v0.7.0 for worked examples):

  • Title vX.Y.Z: <one-line story of the release>.
  • Only the ## sections that apply: Highlights (a minor release's lead story, opening phrase bolded), Added, Changed, Fixed.
  • Bullets are full sentences about user-visible outcomes, not commit restatements; concrete numbers (roster counts) when they carry the story; each bullet ends with its PR refs (#N) — GitHub autolinks them in release notes, no full URL needed.
  • Internal-only changes (CI, refactors, docs, skills) are omitted unless users can observe the difference.
  • Last line: **Full Changelog**: https://github.com/amikai/openings-mcp/compare/<prev>...vX.Y.Z.
  • English throughout.

5. Report

End the run by showing the user the full changelog (the compare link plus the commit/PR list gathered in step 4) and the rewritten release note verbatim.

Common Mistakes

  • Smoke-testing through a released binary or the session's MCP server — that validates the previous release, not the one being cut.
  • Tagging before the smoke tests finish: the tag push immediately triggers a public release build.
  • Writing notes from commit subjects alone — the style demands user-facing impact, which usually lives in the PR diff or description.
  • Reciting provider lists from memory: derive the ATS set and the dedicated tools from the wiring named in step 1; both change from release to release.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,852. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.