Skip to content
cccskills
FreePublished on GitHubEnglish overview

release

Prepare and publish a versioned everos release to PyPI. The skill guides version and changelog updates, the tag-triggered workflow, its approval step, and review and publication of the resulting GitHub Release draft.

OriginalShow the original description

Cut a versioned release and publish everos to PyPI via the tag-triggered workflow

EverMind-AI/EverOS13,704 stars(GitHub 13,704 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Preparing a patch, minor, or major release
  • Publishing a release candidate to PyPI
  • Reviewing and publishing the GitHub Release draft

Overview

What it does

Guides the steps for publishing a new version of everos to PyPI. It updates the version in pyproject.toml, organizes CHANGELOG.md, and, after changes are merged to main, creates and pushes a tag. The tag triggers a workflow that builds the package, runs smoke tests, and uploads it to PyPI. A reviewer must approve the publish job. After the upload, the skill helps review and publish the GitHub Release draft.

When it helps

Use it to prepare a finished fix or feature for a stable release, or to distribute a pre-release. It is also useful when you want to prepare the release page from the changelog and follow the required checks through publication.

Example requests

  • “Review these fixes and prepare the next patch release.”
  • “Show me how to publish a release candidate to PyPI for this change.”
  • “Review and publish the GitHub Release draft based on the changelog.”

Notes

CI must pass on the latest main. The tag, the version in pyproject.toml, and the stable release heading in CHANGELOG.md must match. Publishing to PyPI requires manual approval in the GitHub environment. The GitHub Release also remains a draft until someone reviews and publishes it.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
AGoodPyPI publication has manual approval, and tag-version mismatches are rejected.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingOne-time setup requires a GitHub environment and PyPI trusted publisher.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 29, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md5.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

/release

Publish a new version of everos to PyPI. Publishing is automated: pushing a vX.Y.Z tag triggers .github/workflows/release.yml, which builds, smoke-tests, and uploads via PyPI Trusted Publishing (OIDC — no stored token) behind the release environment's manual-approval gate, then drafts the GitHub Release page from the CHANGELOG.

A release is not finished when PyPI accepts the upload: the GitHub Release page is drafted, never auto-published, and someone has to write its lead summary and click Publish.

Preconditions

  • On main, up to date, with green CI (the tag builds from main's tree).
  • Decide the version per SemVer: patch = fixes, minor = back-compatible features, major = breaking changes.

Steps

1. Bump the version    → pyproject.toml [project] version = "X.Y.Z"
   (single source; everos.__version__ reads installed package metadata)
2. Update CHANGELOG.md → move the Unreleased entries under a new
   ## [X.Y.Z] - <date> heading, and write the release page's prose here
   (lead paragraph + `### Upgrade` group — see "The release page")
3. Commit              → git commit -m "chore(release): vX.Y.Z"
4. Open a PR, merge to main after green CI
5. Tag main + push     → git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z
6. Approve             → the release.yml run pauses on the `release`
   environment; a reviewer approves in the Actions run
7. Verify              → https://pypi.org/project/everos/X.Y.Z/
8. Publish the page    → the run leaves a DRAFT GitHub Release, already
   complete if step 2 was done properly. Read it once, click Publish.

The tag must equal the pyproject.toml version — the workflow refuses to publish on a mismatch. A stable tag with no matching ## [X.Y.Z] CHANGELOG section fails the release job for the same reason.

The release page

The whole page is written in CHANGELOG.md, during the release PR. Nothing is meant to be composed at publish time — by then the changes are weeks old and the text gets no review. Write the version section like this:

## [X.Y.Z] - 2026-09-01

**What this release is for.** One paragraph, prose, no bullets — it becomes the
lead of the release page. Say what changed for a user, not what was refactored.

### Added
### Changed
### Fixed

### Upgrade

What a reader must know before upgrading: what happens on first startup, which
command recovers a bad state, which pins moved. Omit the group entirely when a
plain `pip install --upgrade` is all there is — 1.1.4 and 1.2.0 have nothing
here. Do not write filler.

CI turns that into the page: everything above ### Upgrade is lifted verbatim with the group headings demoted to ##, and the Upgrade prose is wrapped in the boilerplate — pip line above it, compare link below — which is the shape every release since 1.1.3 has. See 1.2.1.

So publishing is a read-through and a click. If the draft looks wrong, the fix belongs in CHANGELOG.md on main, not only in the draft — otherwise the two drift apart and the next release inherits the habit.

While it is a draft, GitHub serves the release at releases/tag/untagged-<hash>, and that URL keeps serving a stale page after publication with no redirect. Never share it — a reader who opens it later concludes the release never went out. Link releases/tag/vX.Y.Z instead; the job prints both URLs in its step summary.

Publish with the Publish release button in the web UI. Publishing through the API by flipping draft alone drops the tag: GitHub rebinds the release to the untagged-<hash> placeholder and creates a git tag by that name against the default branch (observed on 1.2.2). Pass tag_name if you must do it from the CLI:

gh api -X PATCH "repos/EverMind-AI/EverOS/releases/<id>" \
  -F draft=false -f tag_name=vX.Y.Z -f make_latest=true

Re-running the release job replaces its own draft and leaves an already-published release untouched, so a re-run is always safe.

Pre-releases

PEP 440 pre-release tags publish too (PyPI accepts them; pip install everos ignores them unless --pre): vX.Y.ZrcN, vX.Y.ZaN, vX.Y.ZbN. Set the same suffix in pyproject.toml version before tagging.

Their release page is drafted as a pre-release and never becomes /releases/latest. A pre-release does not need its own CHANGELOG section — the draft falls back to a one-line placeholder body when there is none.

One-time setup (project owner, not doable from CI)

  1. PyPI trusted publisher — PyPI → project everos → Settings → Publishing → add: owner EverMind-AI, repo EverOS, workflow release.yml, environment release.
  2. GitHub environment — repo Settings → Environments → create release with required reviewers, so every publish needs a manual approval.

No PyPI API token is ever stored; the workflow mints a short-lived OIDC token at publish time.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

add-memory-kind

FreeSummary

Guide developers through adding a persisted business memory type. Choose Markdown, SQLite, and LanceDB storage and a Markdown file strategy, then wire up schemas, repositories, and writers across the layers the data needs.

  • Adding a new persisted business record type
  • Choosing storage for searchable memory
  • Wiring a daily Markdown log with database indexes
EverMind-AI/EverOS13.7KUpdated Oct 29, 2026

commit

FreeSummary

Review the current Git changes and recent history, then create a focused commit with a Conventional Commits message. The skill helps stage only related files, follow the required format, and address hook failures before committing.

  • Creating a commit for a focused code change
  • Staging only related files from a mixed working tree
  • Writing a Conventional Commits message
EverMind-AI/EverOS13.7KUpdated Oct 29, 2026

new-branch

FreeSummary

Creates a scoped Git branch from the updated `main` branch using the project’s naming convention. It selects a prefix for feature work, fixes, docs, CI, maintenance, or refactoring, then adds a concise lowercase, hyphenated name.

  • Starting a feature branch
  • Creating a bug fix branch
  • Preparing a docs or CI change
EverMind-AI/EverOS13.7KUpdated Oct 29, 2026

pr

FreeSummary

Opens a GitHub pull request from a scoped branch to `main` using the repository’s template. It checks that `make ci` passes, pushes the branch, and guides completion of the summary, change area, verification, checklist, and reviewer notes.

  • Opening a pull request for a completed change
  • Filling out the repository’s PR template
  • Recording CI and manual verification results
EverMind-AI/EverOS13.7KUpdated Oct 29, 2026

See all skills by EverMind-AI

Report a problem with this skill