Skip to content
Agentmart
Submit a tool

koboi-release

This skill should be used when the user asks to "release koboi-agent", "bump version and publish", "create a new release", "push to PyPI", "tag and release"…

Skill by hedypamungkas

IndexedMIT★ 5
Write a review

Chalk Labs

Need help deploying koboi-release?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/hedypamungkas-koboi-release

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

This skill should be used when the user asks to "release koboi-agent", "bump version and publish", "create a new release", "push to PyPI", "tag and release", "ship version vX.Y.Z", or mentions PyPI publishing, GitHub releases, or GHCR container image publishing for the koboi-agent project. Encodes the full release sequence (merge → pre-check → bump → tag → PyPI + GHCR auto-publish → verify → GitHub release) plus the gotchas learned from releases v0.3.0–v0.4.3.

Use cases: agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Shell scripts

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/koboi-release

What's inside

Skill name
koboi-release
Description
This skill should be used when the user asks to "release koboi-agent", "bump version and publish", "create a new release", "push to PyPI", "tag and release", "ship version vX.Y.Z", or mentions PyPI publishing, GitHub releases, or GHCR container image publishing for the koboi-agent project. Encodes the full release sequence (merge → pre-check → bump → tag → PyPI + GHCR auto-publish → verify → GitHub release) plus the gotchas learned from releases v0.3.0–v0.4.3.
License
MIT
Instructions
114 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (6)

  • SKILL.md
  • gotchas.md · references/
  • workflows.md · references/
  • bump-and-tag.sh · scripts/
  • pre-release-check.sh · scripts/
  • verify-release.sh · scripts/

SKILL.md (first lines)

# koboi-release — Publish a new koboi-agent release

## Overview
Execute the full release sequence for koboi-agent: ensure code is merged → pre-check → bump
version → tag → tag-push triggers auto-publish to PyPI (Trusted Publishing) + GHCR (Docker
image) → verify → GitHub release. Both publish workflows are tag-triggered: `release.yml`
(PyPI) and `docker.yml` (GHCR).

Three scripts (all under `.claude/skills/koboi-release/scripts/`, invoked from the repo root):
- **`pre-release-check.sh`** — the 6 CI gates locally (Gate 0 refreshes the `.venv` editable
  install + dev toolchain; Gates 1-5 = ruff/format/mypy/bandit/pytest).
- **`bump-and-tag.sh [--dry-run] X.Y.Z "msg"`** — mechanical bump + commit + push main + tag +
  push tag (validates `X.Y.Z`, resumable, `--dry-run` rehearses without pushing).
- **`verify-release.sh X.Y.Z`** — waits for *this tag's* PyPI+GHCR runs, watches them, verifies
  PyPI version + GHCR `:X.Y.Z`/`:latest` + a `/healthz` smoke.

## When to use
Triggered by: "release koboi-agent", "bump version and publish", "create release vX.Y.Z",
"push to PyPI", "tag and release". Determine the version bump (patch/minor/major) from the
changes since the last release. Check `git tag --sort=-creatordate | head` for the latest tag.

## Pre-conditions (one-time, already done at v0.3.0/v0.4.1)
- **PyPI Trusted Publishing** configured for `koboi-agent` (repo `hedypamungkas/koboi-agent`,
  workflow `release.yml`, environment `pypi`).
- **GHCR package** created + public (`ghcr.io/hedypamungkas/koboi-agent`).
- **Branch protection** on `main`: "PR required" rule. Release version-bump commits bypass it
  (owner override — works, prints a warning).
- A CI-faithful `.venv` (Python 3.10+) with the dev toolchain. If missing, the scripts will
  tell you: `python3 -m venv .venv && .venv/bin/pip install -e ".[dev,tui,api]"`.

## Step 0 — Pre-release validation (BEFORE tagging)
```bash
.claude/skills/koboi-release/scripts/pre-release-check.sh
```
Gate 0 refreshes the editable install + dev toolchain (mirrors ci.yml), so mypy/bandit are
present AND `test_version_matches_pyproject` sees the current version (no stale-install
false-red). Gates 1-5: ruff check, ruff format, mypy (~=1.19.1), bandit (>=1.9), pytest
(cov ≥ 80; e2e self-skips). If any gate fails, FIX before releasing.

## Step 1 — Merge PRs + sync main
Ensure all intended code is on `main` (merge any open PRs first via `gh pr merge <n> --merge`):
```bash
git checkout main && git pull origin main
```

## Step 2 — Bump version
Rehearse first (no commit/tag/push — validates the version + bump mechanism):
```bash
.claude/skills/koboi-release/scripts/bump-and-tag.sh --dry-run X.Y.Z "vX.Y.Z — <summary>"
```
Then release (bumps `pyproject.toml`, commits `chore(release): bump version to X.Y.Z`, pushes
main — owner-override bypass warning is expected — tags `vX.Y.Z`, pushes the tag):
```bash
.claude/skills/koboi-release/scripts/bump-and-tag.sh X.Y.Z "vX.Y.Z — <summary>"
```
The tag push is **irreversible** (triggers PyPI, which is immutable) — that's why `--dry-run`
exists. The script refuses if the tag already exists, and resumes (skip-bump) if `main` was
pushed but the tag wasn't.

## Step 3 — Verify the publish (PyPI + GHCR + smoke)
```bash
.claude/skills/koboi-release/scripts/verify-release.sh X.Y.Z
```
This waits for *this tag's* `release.yml` and `docker.yml` runs (filtered by `--branch vX.Y.Z`,
which kills the "latest-run" race that returned the previous release's run), watches both to
green, retries PyPI propagation (~90s), pulls `:X.Y.Z` + `:latest`, and smoke-tests
`/healthz` with retries + cleanup. **Verification comes before the GitHub release on purpose**
— don't advertise a version that hasn't reached PyPI.

## Step 4 — GitHub release
```bash
gh release create vX.Y.Z --title "vX.Y.Z — <title>" --notes "$(cat <<'EOF'
<compact notes: reference PR number(s), bullet the key changes, keep to ~10 lines>
EOF
)"
```

## Critical gotchas (inline — see references/gotchas.md for detail)
- **Interpreters**: scripts use `.venv/bin/python` or `python3` — never bare `python` (macOS
  non-interactive bash has no `python`, only a zsh alias → `set -e` abort).
- **Bandit**: now in the `dev` extra (>=1.9). Always `.venv/bin/bandit` — system bandit
  (1.8.6) gives a false green.
- **release.yml test job**: installs `.[dev,tui,api]` — if `[api]` missing, server test
  modules error on `import fastapi`.
- **Docker default config**: `server_simple.yaml` (concrete model). NOT `e2e_full.yaml`.
- **e2e self-skip**: `tests/e2e/conftest.py` skips when no live server.
- **Tag naming**: git tag = `vX.Y.Z` (with v); PyPI version = `X.Y.Z` (no v); **GHCR image tag = `X.Y.Z` (no `v`) + `:latest`** — since #13 rewrote docker.yml (`type=semver,{{version}}`). Releases ≤ v0.7.0 used the old `:vX.Y.Z` convention.
- **PyPI is immutable**: a published version CANNOT be re-published. To ship a fix, bump to
  the next version.

## Error handling
- **A workflow job fails** (release.yml test, docker build, etc.): fix the root cause, then
  `gh run rerun <run-id> --failed` (re-runs only the failed job). Do NOT re-tag — the tag
  already exists and PyPI may already have the version.
- **PyPI publish fails** ("invalid-publisher"): Trusted Publishing mismatch. Check PyPI →
  koboi-agent → Publishing (repo=`hedypamungkas/koboi-agent`, workflow=`release.yml`,
  environment=`pypi`). Then `gh run rerun`.
- **PyPI version already exists**: cannot re-publish. Bump to the next version instead.
- **Tag pushed but version was wrong** (rare, requires re-tag): only then delete + recreate
  the tag — `git tag -d vX.Y.Z && git push origin :refs/tags/vX.Y.Z`, fix, re-bump to a NEW
  version (PyPI immutability means you can't reuse vX.Y.Z on PyPI even if GHCR can be rebuilt).

## Additional resources

### Reference files
- **`references/gotchas.md`** — Full gotcha catalog from v0.3.0–v0.4.3 (each release's lesson).
- **`references/workflows.md`** — `release.yml` + `docker.yml` structure, triggers, debugging.

### Scripts (under `.claude/skills/koboi-release/scripts/`)
- **`pre-release-check.sh`** — 6 CI gates locally (Gate 0 refreshes `.venv` + toolchain).
- **`bump-and-tag.sh`** — bump + commit + push main + tag + push tag (`--dry-run` to rehearse).
- **`verify-release.sh`** — wait/watch this tag's PyPI+GHCR runs + verify artifacts + smoke.

From hedypamungkas/koboi-agent, MIT.

More from hedypamungkas/koboi-agent

Signals

Stars
5
Forks
0
Open issues
6
Last commit (this folder)
Jul 13, 2026 (3 months ago)
Last release
Jul 27, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from hedypamungkas

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get koboi-release running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying koboi-release?

CallGet help
Cite this page

koboi-release skill. Agent Mart. https://agentmart.dev/skills/hedypamungkas-koboi-release (last updated 2026-10-24)