본문으로 건너뛰기
cccskills
무료GitHub에 공개

itch-publish

Publish and update games on itch.io by creating a project page and uploading builds with butler, its command-line tool. Organize platform-specific channels, assign version numbers, preview changes, and upload only changed files during updates.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Publish and update a game on itch.io: create the project page and upload builds with the 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.

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Publishing a game jam entry or demo
  • Uploading separate Windows, macOS, and Linux builds
  • Making an HTML5 game playable in the browser
  • Previewing updates and assigning build versions

포함된 파일(2)

  • SKILL.md8.9 KB
  • references/butler-ci.md6.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

itch.io Publish (butler)

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.

When to use

  • Use when creating/updating an itch.io project page, installing or logging in to butler, uploading a build with butler push, choosing channel names, versioning uploads, or shipping a jam/demo/release build to itch.io.
  • Triggers: 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).

Core workflow

  1. Create the project page at itch.io/game/new — butler pushes only to a page that already exists. 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 and keep visibility at Draft (or Restricted for testers) until the page is finished: the first public publish puts it on Most Recent once, and it cannot go back to the top later.
  2. Install butler and log in. Download from 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. (The itch desktop app also has a graphical push screen that uses its own bundled butler, if the user prefers no CLI.)
  3. Prepare a portable build folder — the exact files a player runs, nothing extra. Push a folder (or a single .zip of that folder), not an installer and not a pre-compressed archive of archives (hurts patching; see Pitfalls).
  4. Push to a channel: butler push <dir> <user>/<game>:<channel>. <user>/<game> is the lowercase page address (finji.itch.io/overland → finji/overland). The channel name determines the platform tag (see Patterns). The first push uploads everything; later pushes to the same channel upload only the diff.
  5. Fill in the Edit game page, then Save. Fix platform tags if a channel wasn't auto-tagged correctly — tick only platforms you have actually run the build on. For browser games also flip the page to HTML and tag the channel playable in browser. Answer the AI generation disclosure section if any shipped content was made with generative AI (mandatory for asset pages, which are delisted without it), and mark adult content under Metadata → Classification.
  6. Version your builds (optional but recommended): --userversion 1.2.0 or --userversion-file build.txt so you control the version string players and the update API see.
  7. Update later by pushing to the same channel again. Use butler status <user>/<game> to see channels/builds and butler push-preview to see what a push would change before sending it.

Patterns

1. The one command you need — 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)

2. Channel naming controls the platform tag (kebab-case, lowercase)

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).
There is no tag for CPU architecture: name the channel (windows-arm64) if you ship several.

3. Version, verify, and preview

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

4. First-time, hidden, and filtered pushes

# 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

Pitfalls

  • Pushing an installer. itch.io patches portable builds; an installer (.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.
  • Pre-compressed builds. Pushing a heavily compressed archive (or an archive of archives) makes patches huge — a tiny change rewrites the whole compressed blob. Push uncompressed files; itch.io compresses on its side.
  • A folder containing only one .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.
  • HTML5 game shows as a download. Two switches are required: set the page Kind to HTML and tag the channel playable in browser on the Edit game page after the first push — neither happens automatically from the channel name.
  • HTML5 build loads a blank page or 403s. The upload needs index.html at its root and must stay within itch.io's limits: at most 1,000 files, 500 MB extracted, 200 MB per file, 240 characters per path. The CDN is case-sensitive, serves the game from a subfolder (so paths starting with / break — use relative paths), returns 403 for folder URLs, and only allows HTTPS requests to other domains. HTML5 pages take payment only as donations; sell a web game by making the page Downloadable.
  • invalid target (bad user) / (bad game). The target must match the page address exactly — subdomain for the user, URL slug for the game, all lowercase — and the page must exist already.
  • macOS .app loses its structure. Push the .app folder itself (or the folder that contains it); butler keeps the bundle as the top-level directory and marks Mac/Linux executables as executable by default.
  • --hidden on an existing channel errors. It only applies when the push creates a new channel. Unhide later from Edit game.
  • Channel typos make duplicate slots. windows and win-final are different channels and create separate downloads. Decide your channel names up front and reuse them.
  • 30 GB cap. itch.io rejects builds whose total uncompressed size exceeds 30 GB.
  • Paid page delisted or payouts frozen. Selling requires following the payment processors' rules (itch.io's creator FAQ lists themes card networks will not process), and adult content must be classified as such. Check before setting a price.
  • Secrets in CI logs. A BUTLER_API_KEY printed in a public log is compromised — revoke it immediately on the API keys page. See the reference for safe CI usage.

References

  • For CI/CD (GitHub Actions/GitLab) with BUTLER_API_KEY, automated install via broth, the full flag list, and the update-check API, read references/butler-ci.md.
  • Primary docs: the butler manual — itch.io/docs/butler (installing, login, pushing); itch.io creator docs — itch.io/docs/creators/html5 (web build limits) and itch.io/docs/creators/quality-guidelines (tagging, AI disclosure, delisting rules).

Related skills

  • 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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Implement reusable decision systems for game characters using behavior trees, which organize conditional actions, and Utility AI, which scores available choices. Build either approach or combine them to control patrols, combat, targeting, and needs-based behavior.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Build a reusable behavior tree runtime
  • Choose attacks or targets using action scores
  • Combine patrol and combat trees with Utility AI
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

Design game audio with grouped volume controls, music that responds to gameplay, and varied sound effects. Plan how music lowers during dialogue and how events follow the beat, using principles that can be adapted to different game engines.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Plan grouped volume controls for music, effects, and dialogue
  • Lower background music while dialogue plays
  • Change music layers or segments with gameplay intensity
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

bevy-ecs

무료

Build and debug Rust games in Bevy using ECS, a way to separate game data from behavior. Organize apps and plugins, query entities, control execution order, and fix conflicting data access or frame-dependent movement.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Organizing a Bevy app with plugins
  • Defining components and shared resources
  • Fixing conflicting queries and execution order
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

Build and tune game cameras for smooth 2D following and 3D viewing. Covers motion smoothing, look-ahead, level boundaries, wall avoidance, and framing multiple targets, with techniques that apply across engines.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Smooth player-follow cameras in 2D games
  • Keep the camera view within level boundaries
  • Prevent third-person cameras from clipping through walls
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

card-game

무료

Design the core rules of a card game, including decks, hands, discards, drawing, shuffling, turns, and resource costs. Represent card effects as data and define their resolution order so card movement and gameplay outcomes follow explicit rules.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Building a deckbuilder or trading card game
  • Implementing draws and discard reshuffling
  • Defining turn phases and card costs
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

Plan and prepare consistent game artwork, from sprites and backgrounds to UI icons and 3D briefs. Organize asset requirements, generate or source related visuals, standardize files, and check their appearance and technical fit inside the game.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Create sprites and backgrounds with a consistent visual style
  • Check asset dimensions, transparency, and tile seams
  • Track asset sources and licenses before release
gamedev-skills/awesome-gamedev-agent-skills3.9천2026년 10월 24일 업데이트

gamedev-skills의 스킬 모두 보기

이 스킬의 문제 신고