> butler CLI (butler push) to named channels. Use for itch.io publishing, butler push, channel naming for Windows/macOS/Linux/HTML5, versioning uploads, or shipping a jam or release build to itch.io.
npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill itch-publish
Get a build onto an itch.io page and keep it updated. The page is created in the browser; all
uploads go through butler, itch.io's command-line tool, with one command you'll use
forever: butler push. butler diffs against the previous build and uploads only what
changed. Deep CI/CD and flag detail lives in references/butler-ci.md.
uploading a build with butler push, choosing channel names, versioning uploads, or
shipping a jam/demo/release build to itch.io.
butler push, butler login, channels, .itch.toml, "publish on itch","upload to itch".
When *not* to use: publishing on Steam (use steam-publish); jam *scope/planning* (use
game-jam — this skill is only the upload mechanics); building the game itself (engine
skills).
itch.io/game/new. Set the Kind of project: keep*Downloadable* for native builds, or choose HTML for a browser-playable game (this is
required for web builds — see Pitfalls). Set pricing/visibility (Draft until ready).
itchio.itch.io/butler, add it to PATH,then butler login (opens a browser to authorize). Verify with butler version. For
CI, use BUTLER_API_KEY instead — see the reference.
folder (or a single .zip *of* that folder), not an installer and **not a
pre-compressed archive of archives** (hurts patching; see Pitfalls).
butler push <dir> <user>/<game>:<channel>. The channel namedetermines the platform tag (see Patterns). The first push uploads everything; later
pushes to the same channel upload only the diff.
correctly, then Save. For browser games also flip the page to HTML and tag the
channel *playable in browser*.
--userversion 1.2.0 or--userversion-file build.txt so you control the version string players and the update
API see.
butler status <user>/<game>to see channels/builds and butler push-preview to see what a push would change before
sending it.
butler push# butler push <directory-or-zip> <user>/<game>:<channel>
butler push ./build/windows leafy/my-game:windows
butler push ./build/mac leafy/my-game:osx
butler push ./build/linux leafy/my-game:linux
butler push ./web leafy/my-game:html # browser build (also set page Kind = HTML)
Substring in channel name -> auto-applied tag:
win / windows -> Windows linux -> Linux
mac / osx -> macOS android -> Android
Multiple platforms in one channel are allowed: e.g. a Java jar:
butler push ./jar leafy/my-game:win-linux-mac
Convention: lowercase words separated by dashes (windows-beta, osx-demo, soundtrack).
Tags are only the INITIAL guess — fix them anytime on the Edit game page (then Save).
butler version # print version; confirms install + PATH
butler login # authorize this machine (opens browser)
# Set an explicit version string instead of itch's auto-incrementing integer:
butler push ./build leafy/my-game:windows --userversion 1.2.0
butler push ./build leafy/my-game:windows --userversion-file build_number.txt
butler status leafy/my-game # list channels + latest builds/versions
butler push-preview ./build leafy/my-game:windows # NEW/MODIFIED/DELETED/SAME, uploads nothing
# Hide a brand-new channel from the page until you're ready (NEW channels only):
butler push ./build leafy/my-game:windows-beta --hidden
# Exclude files from the upload without copying the folder (--ignore is repeatable):
butler push ./build leafy/my-game:windows --ignore '*.pdb' --ignore '*.dSYM'
# Preview exactly what would be sent, without sending it:
butler push ./build leafy/my-game:windows --dry-run
.exe/.msi)defeats patching and the itch app's auto-update, and may need admin rights players don't
have. Push the extracted, runnable folder instead.
makes patches huge — a tiny change rewrites the whole compressed blob. Push uncompressed
files; itch.io compresses on its side.
.zip. butler auto-unzips it and pushes the contents(to avoid a "zip in a zip"). Pass --no-auto-unzip only if you truly want the zip uploaded
as one opaque file.
*HTML* and tag the channel *playable in browser* on the *Edit game* page after the first
push — neither happens automatically from the channel name.
--hidden on an existing channel errors. It only applies when the push *creates* a newchannel. Unhide later from *Edit game*.
windows and win-final are different channels andcreate separate downloads. Decide your channel names up front and reuse them.
BUTLER_API_KEY printed in a public log is compromised — revokeit immediately on the API keys page. See the reference for safe CI usage.
BUTLER_API_KEY, automated install via broth, thefull flag list, and the update-check API, read references/butler-ci.md.
itch.io/docs/butler (installing, login, pushing).steam-publish — the same game on Steam via SteamPipe (often shipped alongside itch.io).game-jam — most jams are hosted on itch.io; this skill handles the upload step.prototype-fast — share an early prototype on a Draft/restricted itch page for playtesting.Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take gamedev-skills/itch-publish from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.