⚙️ shipit-skill
Take an existing developer tool from "it works" to "published + listed + marketable" — one pass.
shipit-skill is an Agent Skill that runs the full launch pipeline for AI/developer tools
(MCP servers, CLIs, libraries): engineering baseline → publish → directory listings →
promo material. It was distilled from shipping wheel-hub,
zspace-cli and
media-manager-skill — every gotcha
below is one that actually bit during those releases.
Install
Two ways to use it — as a CLI tool or as an Agent Skill:
A. CLI (via pip) — for running the pipeline commands yourself:
pip install shipit-skill
shipit-skill init ./my-tool --server my-tool --pkg my-tool # scaffold CI/Dockerfile/promo
shipit-skill check-promo --dir promo --version 0.1.1 --prs 13600=open
B. Agent Skill — copy this folder into your project (or your agent's skills dir):
cp -r shipit-skill/ ~/your-project/.opencode/skills/shipit-skill # opencode
# cp -r shipit-skill/ ~/your-project/skills/shipit-skill # Claude Code, Cursor, etc.
What it does
| Phase | Exit criterion | CLI |
|---|---|---|
| 0. Recon | gap report (CI? Docker? Release? listed? promo?) | — |
| 1. Baseline | CI green, metadata right, Dockerfile present | shipit-skill ci, shipit-skill init |
| 2. Publish | on registry + GitHub Release + clean-env verified | shipit-skill publish |
| 3. Listings | Glama live + awesome PR open | shipit-skill check-glama, shipit-skill awesome-pr |
| 4. Promo | promo docs match reality | shipit-skill check-promo |
See SKILL.md for the full agent instructions and the automation
boundary (what the agent runs vs. what needs a human/credential).
Example
examples/mcp-server-launch.md walks all four
phases against a toy hello-mcp server — reproduce it locally to learn the
pipeline before applying it to a real project.
Automate releases (GitHub Action)
shipit-skill release --execute bumps, builds, tags, pushes, opens a GitHub
Release, and publishes to PyPI in one shot (token from PYPI_TOKEN env). Hook
it up as a manual GitHub Actions job:
# .github/workflows/release.yml
name: Release
on:
workflow_dispatch:
inputs:
how: {type: choice, options: [patch, minor, major], default: patch}
jobs:
release:
runs-on: ubuntu-latest
permissions: {contents: write}
steps:
- uses: actions/checkout@v4
with: {fetch-depth: 0}
- uses: actions/setup-python@v5
with: {python-version: "3.12"}
- run: pip install -e ".[dev]" build twine
- run: shipit-skill release --lang python --pkg your-tool \
--how ${{ inputs.how }} --repo owner/your-tool --execute
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
Other one-shot commands with --execute: publish (real PyPI/NPM upload),
bump --commit (bump + git commit), and awesome-pr --execute (opens the PR
via gh). Everything else stays print-only until you pass --execute.
Development
pip install -e ".[dev]"
pytest -q # 80 tests, coverage ≥ 85%
ruff check . # lint
pyright # type check (strict)
The scars (why this exists)
mcp>=1.0+ a new SDK → fresh installs crash. Set dependency floors.- Python 3.9 can't install
mcp>=2.0— split the CI matrix. - YAML block scalar + inline heredoc = broken workflow. Use a script file.
- Glama introspection needs stdin held open (
sleep 1) in smoke tests. - PyPI tokens start
pypi-; UUID-style strings are wrong and 403. - npm typosquatting blocks similar names — scoped names dodge it.
- Glama builds take minutes to hours — poll, don't panic.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shipit_skill-0.7.0.tar.gz.
File metadata
- Download URL: shipit_skill-0.7.0.tar.gz
- Upload date:
- Size: 39.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
558e82b5b211d90a9622f3d8b5be27736631e745e0153edfa4c8fd20aef0c206
|
|
| MD5 |
2590ad6a19f1c03f7d73d0047e3a3518
|
|
| BLAKE2b-256 |
cdacf1ed8493fe706689a7c24b2cb879708449d25de07e534d2218672e0359de
|
File details
Details for the file shipit_skill-0.7.0-py3-none-any.whl.
File metadata
- Download URL: shipit_skill-0.7.0-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04f38f8b0b333eb39eb9256428b9fa9eaa6c695e7d975c0292702c3ee6d550fe
|
|
| MD5 |
108b37e62cebaf2a5d2c87661669b8c1
|
|
| BLAKE2b-256 |
499a1098fd3e310c332e7c9d069e8582d93a8ab5d6cbcd563468cd9d181178b7
|