一键导入
ship-ios-app
Ships new versions of iOS/macOS apps. Use when asked to ship, release, or deploy an app, or when checking if a version is ready to ship.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Ships new versions of iOS/macOS apps. Use when asked to ship, release, or deploy an app, or when checking if a version is ready to ship.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Toggle a Swift Package.swift between the local-sibling-checkout development pattern and a clean remote-only release pattern. Use this skill whenever you need to flip Package.swift in or out of the `sibling(...)` helper-function pattern — for example, before tagging a release the dependencies must be pinned to remote-only, and on a fresh `-dev` development cycle they must go back to sibling-aware. Also trigger on phrases like "switch to remote deps", "remove the sibling helper", "restore sibling pattern", "make Package.swift release-ready", "flip to dev-mode deps", or any time the user references the `sibling()` helper or the `useLocalSiblings` constant. Only intrusive-memory/* dependencies participate in the sibling pattern; all other dependencies are left untouched.
Plan and execute sprints with sergeant precision. Give each agent ONE clear, measurable goal. Pre-execution commands (breakdown, analyze, prioritize, evaluate) create and refine an EXECUTION_PLAN.md from requirements. Execution commands (start, resume, status, stop, killall) orchestrate sprint agents with lean context and crystal-clear objectives. THE RITUAL (name-feature) generates humorous military operation names.
Use macOS text-to-speech via the `say` command for voice feedback, audio narration, and spoken output.
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.
Generate audio and transcripts for podcast episodes from Fountain screenplays using Produciesta CLI. When asked to "generate podcast audio", "create audio plan", "cast voices", "prepare transcripts", or working with podcast projects that have episodes/*.fountain files, this skill analyzes characters, assigns voices, writes PROJECT.md cast list, generates audio, and prepares transcripts for web deployment.
Organize project agentic documentation into universal (AGENTS.md) and agent-specific files (CLAUDE.md, GEMINI.md, etc.). Use when asked to "organize agent docs", "separate agent instructions", "restructure AGENTS.md", or when a project has agent documentation that mixes universal and tool-specific content.
| name | ship-ios-app |
| description | Ships new versions of iOS/macOS apps. Use when asked to ship, release, or deploy an app, or when checking if a version is ready to ship. |
| allowed-tools | Read, Bash, Grep, Glob, Edit, Task |
This skill manages the release workflow for iOS and macOS apps distributed via App Store Connect.
Before shipping, verify ALL of the following conditions:
gh pr list --state open --json number,title,headRefName,statusCheckRollup
A PR is ready to ship ONLY if:
If no PR exists with passing tests, STOP and report: "No Pull Request ready to ship. A PR with passing tests is required."
Compare the version in README.md and CLAUDE.md against the last tagged version:
# Get the last tagged version
git fetch --tags
git tag --sort=-v:refname | head -1
# Check versions in documentation files
grep -i "version" README.md
grep -i "version" CLAUDE.md
If the versions in README.md and CLAUDE.md match the last tagged version, STOP and report: "Version has not been bumped. Please update the version in README.md and CLAUDE.md before shipping."
Check that BOTH marketing version AND build number are correct:
# Check local marketing version (what users see: 1.0, 2.0, 22, 23...)
MARKETING_VERSION=$(grep "MARKETING_VERSION" <YourApp>.xcodeproj/project.pbxproj | head -1 | grep -oE '[0-9]+(\.[0-9]+)*')
echo "Local Marketing Version: ${MARKETING_VERSION}"
# Check local build number (internal counter: 274, 275, 276...)
BUILD_NUMBER=$(agvtool what-version -terse)
echo "Local Build Number: ${BUILD_NUMBER}"
CRITICAL: iOS apps use TWO version numbers:
Verify on TestFlight:
If marketing version doesn't match App Store, STOP and report: "Marketing version mismatch with App Store." If build number is not higher than App Store, STOP and report: "Build number must be incremented beyond App Store Connect."
Check that CHANGELOG.md has an entry for the current release in development:
# Get the version from project
VERSION=$(grep "MARKETING_VERSION" <YourApp>.xcodeproj/project.pbxproj | head -1 | grep -oE '[0-9]+(\.[0-9]+)*')
# Check if CHANGELOG.md has an entry for this version
grep -i "version ${VERSION}\|## ${VERSION}\|# ${VERSION}" CHANGELOG.md
If no changelog entry exists for the current version, STOP and report: "Missing changelog entry. CHANGELOG.md must have an entry for version ${VERSION} before shipping."
The next version is always one more than the last tag:
v1.2.3, next version is v1.2.41.2.3, next version is 1.2.4 (preserve format)Once all pre-flight checks pass:
Squash merge to keep main branch history clean:
gh pr merge <PR_NUMBER> --squash --delete-branch
git fetch origin main
git checkout main
git pull origin main
Tag the merge commit that was just created with the agreed-upon version:
git tag <VERSION>
git push origin <VERSION>
# Verify the tag exists on remote
git ls-remote --tags origin | grep <VERSION>
# Show the tagged commit
git show <VERSION> --oneline --no-patch
Report success with:
--squash flag| Scenario | Action |
|---|---|
| No open PR | Report "No PR ready to ship" |
| PR has failing tests | Report "Tests failing, cannot ship" |
| Version not bumped | Report "Version must be bumped before shipping" |
| Version doesn't match App Store | Report "Version mismatch with App Store canonical version" |
| Missing changelog entry | Report "CHANGELOG.md missing entry for current version" |
| Merge conflict | Report conflict and ask user to resolve |
| Tag already exists | Report error and verify correct version |