Agent skill

Ship Release

by KeeForge in KeeForge/KeeForge

Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac.

GPL-3.0Auto-check passedMobile

Install Ship Release

skills CLI
$ npx skills add KeeForge/KeeForge --skill ship-release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install KeeForge/KeeForge ship-release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/KeeForge/KeeForge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/ship-release .claude/skills/ship-release && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ship-release
GitHub stars
114
Token cost
~2.3k tokens
SKILL.md length
1,087 words
Files
2
Skills in repo
9
Repo updated
First seen
Licence
GPL-3.0

At a glance

Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac.

  • Promote a soaked build
  • SKILL.md covers Confirm what you are shipping, Correct the changelog date if…, Audit that main has every fix and Stage both App Store…, plus 4 more sections
  • Calls git
  • Never create a replacement candidate here

What it does

Ship Release is an agent skill from KeeForge/KeeForge. Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac. Verify the recorded artifact identities and soak evidence, coordinate App Store review, create the shipped tag after approval and final go, publish the exact artifacts, and reconcile released issues. Use when asked to ship or promote a soaked build; never create a replacement candidate here.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

It sits in Mobile, covering App store release. It works with iOS, macOS and App Store Connect. The repository describes itself as: KeePass-compatible password manager for iPhone, iPad, and Mac. The licence is GPL-3.0.

When your agent uses it

  • Promote a soaked build
  • Never create a replacement candidate here

Example prompts

  • “/ship-release”

What it can do on your machine

Read from SKILL.md and the folder at commit 2959200. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ship Release loads about 2.3k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 1,087 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from KeeForge/KeeForge at commit 2959200, republished under its GPL-3.0 licence (© KeeForge). 1,087 words, ~2,336 tokens.

Download SKILL.mdSave it as .claude/skills/ship-release/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
ship-release
description
Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac. Verify the recorded artifact identities and soak evidence, coordinate App Store review, create the shipped tag after approval and final go, publish the exact artifacts, and reconcile released issues. Use when asked to ship or promote a soaked build; never create a replacement candidate here.

Ship a KeeForge release

Read the shared release contract and soak guidance, then follow this workflow.

Use this skill when the user decides to ship, after the soak guidance signals have been reported to them.

Do not re-check the CI gates here. All cloud gates and local gates were read and adjudicated in candidate gates, and accepting them is what allowed the build to reach external testers in the first place (invariant 3). That verdict is release preparation's job and it is final: do not poll Xcode Cloud or GitHub Actions check runs for the RC commit, do not reopen gate-adjudication.md, and do not treat a test action that was red but accepted as a flake — or a later re-run of either workflow — as a reason to stop. The soaked binary already carries the verdict. If it turns out a gate was never accepted, you are not in production shipping; go back to candidate gates.

Confirm what you are shipping

Record explicitly, and state it back to the user before proceeding:

  • The marketing version, repo build, and both TestFlight build numbers of the soaked builds.
  • Its rc/{version}-b{repoBuild} tag and commit SHA. The tag identifies the commit; each platform-specific TestFlight number identifies its binary, and neither is required to equal the repo build.
  • The direct Mac CFBundleVersion, zip hash, and notarization ID.
  • Both distribution timestamps, elapsed soak times, unique-install/crash counts, and direct install/update results.
  • Which soak guidance signals, if any, are short of target.

Each TestFlight build number here is the build you will select for its platform in App Store Connect. If either does not match the build distributed and soaked, stop — something is out of sync. Do not substitute a newer build.

Correct the changelog date if the soak crossed a day

If CHANGELOG.md's ## v{version} ({date}) no longer matches the actual ship date, fix it on the release branch now. This is a documentation-only change and does not require a new build — the changelog is not compiled into the binary. Merge that correction to main before the audit below.

Audit that main has every fix

Because backports and the date correction are merges, this is an exact check rather than a judgement call:

bash
git fetch origin --tags
git merge-base --is-ancestor origin/release/{major}.{minor} origin/main \
  && echo "main contains the release branch" \
  || git log --oneline origin/main..origin/release/{major}.{minor}

If the check fails, the listed commits are on the release branch and not on main. Run merge-back guidance to merge them before shipping. Do not ship with an unmerged fix.

Stage both App Store submissions; do not create the shipped tag yet

Invoke publish-app-store-version once for iOS and once for macOS. Attach the exact soaked TestFlight build numbers from the manifest, save the platform-specific metadata/screenshots, and stage each platform independently through Ready for Review, then stop. Do not submit either platform yet. If the user later requests submission, obtain separate explicit action-time confirmation immediately before each platform's API submission request; confirmation for one platform does not authorize the other. Configure both records for manual release and leave approved versions held. v{version} does not exist yet.

If Apple requests a metadata-only correction, fix only that platform's record. If Apple requests a code change, return to candidate respin and respin all three artifacts. Never substitute a newer unsoaked build.

Create the shipped tag after review approval and final go

Wait until both App Store submissions have code approval and the user gives the final coordinated go decision. Record that non-secret decision/evidence and completed soak observations in the manifest: set each platform's appStoreReviewState, preserve the separate beta reviewState, and record each soak's accepted verdict/evidence, metrics, or owner-accepted exceptions. Then validate the ship evidence. Then create v{version} on the accepted RC commit; it triggers no build and records the code that actually shipped. Include any accepted soak exception in the tag message.

bash
ci_scripts/candidate_manifest.py validate \
  --manifest scratch/release-manifests/{version}-b{repoBuild}.json --mode ship
bash
git fetch origin --tags
rc_tag='rc/{version}-b{repoBuild}'
rc_commit=$(git rev-list -n1 "$rc_tag")
git tag -a 'v{version}' -m 'Release v{version} — shipped RC '"$rc_tag" "$rc_commit"
git push origin 'refs/tags/v{version}'

Keep every rc/* tag. They are the audit trail of the candidates, including the ones that were replaced.

If git fetch origin --tags reports ! [rejected] ... (would clobber existing tag), a local tag has drifted from the remote. The remote is authoritative for released tags: inspect both sides, then realign with git fetch origin --tags --force.

Show full SKILL.md (419 more words)Show less

Confirm main reflects the shipped state

release branch cut put the changelog section, the What's New content, and MARKETING_VERSION on main before the cut, and the merge-back guidance merges carried each candidate's repo build across. Verify rather than redo:

  • main's MARKETING_VERSION is {version} on all four targets: KeeForge, KeeForgeAutoFill, KeeForgeMac, and KeeForgeMacAutoFill.
  • main's CURRENT_PROJECT_VERSION is the accepted repoBuild on all four targets, and the direct artifact's CFBundleVersion is also that repoBuild. Do not compare either value with the platform-specific TestFlight build numbers.
  • main's CHANGELOG.md has the ## v{version} section, with an empty ## Unreleased above it ready for the next cycle.

CURRENT_PROJECT_VERSION is not checked against either TestFlight number. Xcode Cloud manages platform-specific build numbers and may override the project value. The repo value must still be globally unique and increasing and must equal the direct build's CFBundleVersion; build-number selection and Bump the build number guarantee that. The manifest is the authoritative mapping between the repo build, both TestFlight numbers, and the direct artifact.

Fix any real drift with a single -s commit on main, then push.

Release the approved channels and verify production

After v{version} exists and both platform records are approved, manually release iOS and native macOS at the coordinated time. Publish the verified GitHub Release/direct zip, then publish the production Sparkle appcast last. Verify live installs, migration, AutoFill, WebDAV, channel boundaries, and both App Store version/build numbers; preserve the completed non-secret manifest.

Keep the release branch. It is where {version}.1 will come from.

Reconcile the GitHub project

After production verification succeeds, audit KeeForge project 1 for issues whose Status is Pending Release. Establish the shipped boundary from the dereferenced v{version} tag, then identify the implementation commit or merged pull request for each pending issue. Move an issue to Released only when its implementation is reachable from that tag and the promised behavior actually shipped on its intended platform. A changelog entry is useful corroboration but is not required for internal tasks or refactors.

Do not infer release from the issue being closed, from its milestone, or from the implementation being present on current main: work merged after the shipped tag stays Pending Release. Present the exact move/leave list with the tag-containment evidence and obtain confirmation immediately before changing project fields unless the user already explicitly authorized this reconciliation. For the write, invoke keeforge-github-issues, follow its live-project preflight, change only the Status field, and read every changed project item back to verify it now says Released. Do not close or otherwise edit the issues as part of this step.

© KeeForge, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .agents/skills/ship-release of KeeForge/KeeForge.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 2959200

Compare with similar skills

Ship Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ship Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ship Release this skillKeeForge/KeeForge114—~2.3kAutomated safety check: PassGPL-3.0
App Store Preflight Skillstruongduy2611/app-store-preflight-skills1.4k—~1.4kAutomated safety check: PassMIT
OdevioOdevio/Odevio-CLI423—~7.6kAutomated safety check: PassMIT
Releasevaayne/mori303—~1.2kAutomated safety check: PassMIT
Asc Xcode Buildrorkai/app-store-connect-cli-skills1.1k2 repos~2.1kAutomated safety check: PassMIT
Releasemovieclaw/MovieClaw146—~2.6kAutomated safety check: PassCustom licence

Similar skills

  • App Store Preflight Skills

    truongduy2611/app-store-preflight-skills

    Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission.

    1.4k GitHub stars~1.4k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Odevio

    Odevio/Odevio-CLI

    Take a Flutter project to an iPhone or the App Store with Odevio - build, sign and publish iOS apps from Windows, Linux or macOS with no Mac and no Xcode.

    423 GitHub stars~7.6k tokensUpdated 13 days ago
    MobileAuto-check passed
  • Release

    vaayne/mori

    Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.

    303 GitHub stars~1.2k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Asc Xcode Build

    rorkai/app-store-connect-cli-skills

    Build, archive, generate export options, export, upload, and manage Xcode version/build numbers with the current asc xcode helpers.

    1.1k GitHub starsUsed in 2 repos~2.1k tokens
    MobileAuto-check passed
  • Release

    movieclaw/MovieClaw

    发布 movieclaw 新版本。当用户要求发版、发布新版本、打 tag、发布 NER 模型、发布 Docker 镜像,或打包上传 iOS App 到 TestFlight / App Store、补传发版附件(IPA、Mac 转码器、Mac 版 App)时使用。涵盖版本号三处同步、应用/模型/镜像/iOS 的完整流程、可选附件失败补救与检查清单。

    146 GitHub stars~2.6k tokensUpdated today
    MobileAuto-check passed
  • Appstore Release

    kmworks/kmreader

    Coordinate the KMReader App Store release workflow. An agent skill from kmworks/kmreader.

    111 GitHub stars~2.5k tokensUpdated today
    MobileAuto-check passed

More from KeeForge/KeeForge

All 9 skills in this repo
  • Publish App Store Version

    KeeForge/KeeForge

    Prepare and publish an already-built KeeForge iOS or macOS version through the App Store Connect API using an API key.

    114 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Test Audit

    KeeForge/KeeForge

    Assess KeeForge test quality, redundant coverage, and test-support complexity; audit a selected subsystem or apply an authoring checklist while changing tests.

    114 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Keeforge GitHub Issues

    KeeForge/KeeForge

    Create, edit, comment on, close, reopen, classify, or change project fields for issues in KeeForge/KeeForge.

    114 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Pre Release Review

    KeeForge/KeeForge

    Statically review KeeForge changes since a shipped release for behavior risks, documentation inconsistencies, i18n gaps, and missing test coverage.

    114 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Prepare Release

    KeeForge/KeeForge

    Prepare the first KeeForge candidate for a new marketing version, including minor/major releases and patches or hotfixes to shipped versions.

    114 GitHub stars~572 tokensUpdated today
    Auto-check passed
  • Respin Release

    KeeForge/KeeForge

    Replace an unshipped KeeForge candidate after a fix on an existing release branch.

    114 GitHub stars~914 tokensUpdated today
    Auto-check passed

Categories

Questions about Ship Release

What does Ship Release do?

Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac. Ship Release is an agent skill from KeeForge/KeeForge. Ship an accepted, soaked KeeForge candidate across iOS, Mac App Store, and direct Mac.

When should I use Ship Release?

Ship Release fits situations like: promote a soaked build; never create a replacement candidate here.

How do I install Ship Release in Claude Code?

Run `npx skills add KeeForge/KeeForge --skill ship-release -a claude-code`. Or copy the skill folder (.agents/skills/ship-release in KeeForge/KeeForge) into .claude/skills/ship-release in your project. Claude Code loads it when a task matches its description.

How do I install Ship Release in Codex?

Run `npx skills add KeeForge/KeeForge --skill ship-release -a codex`. Or copy the skill folder (.agents/skills/ship-release in KeeForge/KeeForge) into .agents/skills/ship-release in your project. Codex loads it when a task matches its description.

Can I use Ship Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add KeeForge/KeeForge --skill ship-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ship-release, .gemini/skills/ship-release, .github/skills/ship-release and .opencode/skills/ship-release in your project.

What does Ship Release need to run?

Going by SKILL.md and its folder, Ship Release needs the command-line tools its instructions call (git).

Does Ship Release access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Ship Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ship Release use?

Ship Release is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ship Release use?

About 2.3k tokens (SKILL.md is roughly 9.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ship Release?

Skills that share tags, products or a category with Ship Release: App Store Preflight Skills (truongduy2611/app-store-preflight-skills, 1.4k stars), Odevio (Odevio/Odevio-CLI, 423 stars), Release (vaayne/mori, 303 stars) and Asc Xcode Build (rorkai/app-store-connect-cli-skills, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ship Release?

KeeForge (a GitHub organization) maintains it in KeeForge/KeeForge, which has 114 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.

Source: KeeForge/KeeForge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.