Agent skill

Appstore Release

by kmworks in kmworks/kmreader

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

MITAuto-check passedMobile

Install Appstore Release

skills CLI
$ npx skills add kmworks/kmreader --skill appstore-release -a claude-code

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

GitHub CLI
$ gh skill install kmworks/kmreader appstore-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/kmworks/kmreader.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/appstore-release .claude/skills/appstore-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
appstore-release
GitHub stars
111
Token cost
~2.5k tokens
SKILL.md length
688 words
Files
2
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

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

  • Works in 7 steps: Refresh Release Copy → PR And Merge Release Copy → Create Or Reuse ASC Versions → …
  • Asked to prepare
  • SKILL.md covers Required Inputs, Related Local Skills, Guardrails and Phase 1: Refresh Release Copy, plus 7 more sections
  • Calls git, gh and make

What it does

Appstore Release is an agent skill from kmworks/kmreader. Coordinate the KMReader App Store release workflow. Use when asked to prepare or run a KMReader App Store release across iOS, macOS, and tvOS: refresh docs and APPSTORECHANGELOG.txt, open and merge the release-copy PR, create or update App Store Connect versions, attach builds and submit for review, then run make minor and open/merge the next-version-cycle PR.

Its SKILL.md is about 2.5k 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 App Store Connect, iOS and macOS. The repository describes itself as: A full-featured, native Komga client for iOS, macOS, and tvOS. The licence is MIT.

When your agent uses it

  • Asked to prepare
  • Run a KMReader App Store release across iOS
  • TvOS: refresh docs and APPSTORECHANGELOG.txt
  • Open and merge the release-copy PR

Example prompts

  • “/appstore-release”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Refresh Release Copy
  2. PR And Merge Release Copy
  3. Create Or Reuse ASC Versions
  4. Sync ASC Metadata
  5. Attach Builds
  6. Submit For Review
  7. Start Next Version Cycle

What it can do on your machine

Read from SKILL.md and the folder at commit cb2d394. 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
    • gh
    • make
    • python3

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

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    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

Appstore Release loads about 2.5k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 688 words of instructions outside code blocks.

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

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 kmworks/kmreader at commit cb2d394, republished under its MIT licence (© kmworks). 688 words, ~2,485 tokens.

Download SKILL.mdSave it as .claude/skills/appstore-release/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
appstore-release
description
Coordinate the KMReader App Store release workflow. Use when asked to prepare or run a KMReader App Store release across iOS, macOS, and tvOS: refresh docs and APP_STORE_CHANGELOG.txt, open and merge the release-copy PR, create or update App Store Connect versions, attach builds and submit for review, then run make minor and open/merge the next-version-cycle PR.

KMReader App Store Release

Run the end-to-end KMReader App Store release workflow while keeping local release copy, App Store Connect metadata, submitted builds, and the next development version in sync.

Required Inputs

  • Release version, for example 4.10.
  • Build number to submit, for example 439. If omitted, resolve the latest valid build per platform before attaching anything.
  • Target platforms are always IOS, MAC_OS, and TV_OS unless the user explicitly narrows scope.

KMReader App Store app ID is 6755198424. Confirm it with asc apps list --name KMReader before making remote changes.

Before editing release copy, read and follow:

  • ../changelog/SKILL.md for APP_STORE_CHANGELOG.txt
  • ../docs/SKILL.md for README.md, APP_STORE_DESCRIPTION.txt, and the KMReader landing page in the kmworks/website repo
  • ../testflight/SKILL.md for distributing builds to TestFlight groups

Do not duplicate those instructions here. This skill owns ordering, GitHub PR handling, App Store Connect release actions, and the follow-up version-cycle PR.

Guardrails

  • Work from a clean or understood git state. Do not mix unrelated local changes into release PRs.
  • Use asc --help for command shape when uncertain; CLI flags can drift.
  • Do not use raw xcodebuild; this repo uses Makefile automation.
  • Do not create duplicate App Store Connect versions. Reuse existing editable versions.
  • Stop before submission if any platform build is not VALID, metadata is incomplete, content rights are missing, or encryption compliance is unresolved.
  • Do not rely on asc submit status --id; App Store Connect can reject that lookup with a GET_INSTANCE limitation. Verify final state through asc versions get/list and review submission responses.
  • Keep release notes user-facing. Exclude bump commits, CI, implementation details, file names, class names, and refactor-only work.
  • Use gh pr create --body-file and gh pr edit --body-file; do not pass Markdown bodies inline.

Phase 1: Refresh Release Copy

  1. Inspect context:
bash
git status --short --branch
git log --oneline --decorate -n 20
git tag --sort=-creatordate | head -20
  1. Generate APP_STORE_CHANGELOG.txt from the latest tag to HEAD. Read full commit bodies, not only subjects.
  2. Refresh README.md and APP_STORE_DESCRIPTION.txt from current important product capabilities, and align the KMReader landing page (src/pages/reader/index.tsx in the kmworks/website repo, committed there separately).
  3. Keep docs evergreen and concise. APP_STORE_DESCRIPTION.txt should be store-appropriate; the landing page should align with the same product priorities.
  4. Validate release copy:
bash
git diff --check
wc -c APP_STORE_DESCRIPTION.txt APP_STORE_CHANGELOG.txt

If validation needs stronger proof, run the smallest relevant repo command. Do not run repository-wide formatting just for release copy.

Phase 2: PR And Merge Release Copy

Create a dedicated branch:

bash
git switch -c "docs/refresh-${version//./}-store-copy"
git add README.md APP_STORE_DESCRIPTION.txt APP_STORE_CHANGELOG.txt
git commit -m "docs: refresh ${version} store copy"
git push -u origin "docs/refresh-${version//./}-store-copy"

Create the PR with a body file:

bash
cat > /tmp/kmreader-release-copy-pr-body.md <<EOF
## Problem
The public documentation and App Store release copy need to match the ${version} release.

## Approach
Refresh README, App Store description, landing page copy, and App Store changelog from the current user-visible product changes.

## Validation
- [x] Reviewed latest-tag-to-HEAD commits
- [x] Ran git diff --check
EOF

gh pr create --title "docs: refresh ${version} store copy" --body-file /tmp/kmreader-release-copy-pr-body.md
gh pr view <PR_NUMBER> --json url,title,body,headRefName,baseRefName,state,statusCheckRollup

Merge when checks are acceptable or the user has explicitly authorized immediate release workflow completion:

bash
gh pr merge <PR_NUMBER> --squash --delete-branch \
  --subject "docs: refresh ${version} store copy" \
  --body "Update README, App Store description, landing page copy, and App Store changelog for the ${version} release."

git fetch --prune origin
git switch main
git pull --ff-only origin main
git status --short --branch

Do not continue to App Store Connect metadata updates from an unmerged local-only release-copy branch unless the user explicitly wants that.

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

Phase 3: Create Or Reuse ASC Versions

Confirm app and versions:

bash
asc apps list --name KMReader --pretty
asc versions list --app 6755198424 --version "$version" --platform IOS,MAC_OS,TV_OS --pretty

For each missing platform version:

bash
asc versions create --app 6755198424 --version "$version" --platform IOS --pretty
asc versions create --app 6755198424 --version "$version" --platform MAC_OS --pretty
asc versions create --app 6755198424 --version "$version" --platform TV_OS --pretty

Record the version IDs in a platform map. The version state should be PREPARE_FOR_SUBMISSION before metadata/build changes.

Phase 4: Sync ASC Metadata

For each platform version, update en-US localization with local files:

bash
description=$(cat APP_STORE_DESCRIPTION.txt)
whats_new=$(cat APP_STORE_CHANGELOG.txt)

asc localizations update --version "$ios_version_id" --locale en-US \
  --description "$description" \
  --whats-new "$whats_new" \
  --pretty

Repeat for MAC_OS and TV_OS version IDs.

After update, download or list localizations and compare fields against local files. ASC may trim the final trailing newline; that is acceptable. Preserve unrelated metadata such as keywords, support URL, and marketing URL.

If the user says description must remain unchanged, update only whatsNew.

Phase 5: Attach Builds

Find and validate build IDs:

bash
asc builds list --app 6755198424 --version "$version" --build-number "$build_number" --processing-state all --pretty

Map one build ID per platform. Confirm:

  • processingState is VALID.
  • Encryption compliance is resolved, usually usesNonExemptEncryption=false.
  • The build belongs to the requested release version/build number.

Attach each build:

bash
asc versions attach-build --version-id "$ios_version_id" --build "$ios_build_id" --pretty
asc versions attach-build --version-id "$macos_version_id" --build "$macos_build_id" --pretty
asc versions attach-build --version-id "$tvos_version_id" --build "$tvos_build_id" --pretty

Then verify:

bash
asc versions get --version-id "$ios_version_id" --include-build --pretty
asc versions get --version-id "$macos_version_id" --include-build --pretty
asc versions get --version-id "$tvos_version_id" --include-build --pretty

Phase 6: Submit For Review

For each platform:

bash
submission_id=$(asc review submissions-create --app 6755198424 --platform IOS --pretty \
  | python3 -c 'import json,sys; data=json.load(sys.stdin); print(data.get("id") or data["data"]["id"])')

asc review items-add --submission "$submission_id" --item-type appStoreVersions --item-id "$ios_version_id" --pretty
asc review submissions-submit --id "$submission_id" --confirm --pretty

Repeat for MAC_OS and TV_OS.

Final verification:

bash
asc versions list --app 6755198424 --version "$version" --platform IOS,MAC_OS,TV_OS --pretty
asc versions get --version-id "$ios_version_id" --include-build --pretty
asc versions get --version-id "$macos_version_id" --include-build --pretty
asc versions get --version-id "$tvos_version_id" --include-build --pretty

All three versions should be WAITING_FOR_REVIEW. Report platform, version ID, build ID, and submission ID.

Phase 7: Start Next Version Cycle

After the release submissions are verified, start the next development version from clean main.

bash
git status --short --branch
git switch -c "release/bump-${next_version}"
make minor
git status --short --branch

make minor must own the version mutation. Do not edit MARKETING_VERSION or CURRENT_PROJECT_VERSION manually.

Verify the generated commit and version delta:

bash
git log --oneline --decorate -n 3
git diff --stat HEAD~1..HEAD

Push, open, and merge the version-cycle PR:

bash
git push -u origin "release/bump-${next_version}"

cat > /tmp/kmreader-next-version-pr-body.md <<EOF
## Problem
The ${version} App Store release has been submitted, so main should move to the next development version.

## Approach
Run make minor to bump MARKETING_VERSION and CURRENT_PROJECT_VERSION through the repository release script.

## Validation
- [x] Ran make minor
- [x] Verified version file diff
EOF

gh pr create --title "chore: bump version to ${next_version}" --body-file /tmp/kmreader-next-version-pr-body.md
gh pr view <PR_NUMBER> --json url,title,body,headRefName,baseRefName,state,statusCheckRollup

gh pr merge <PR_NUMBER> --squash --delete-branch \
  --subject "chore: bump version to ${next_version}" \
  --body "Bump marketing version to ${next_version} and advance the build number for the next development cycle."

git fetch --prune origin
git switch main
git pull --ff-only origin main
git status --short --branch

Final Report

Report:

  • Release-copy PR URL and merge status.
  • ASC version IDs by platform.
  • Build IDs by platform.
  • Review submission IDs by platform.
  • Final ASC state by platform.
  • Next-version PR URL and merge status.
  • Current local branch, HEAD, and whether the worktree is clean.

© kmworks, MIT. 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/appstore-release of kmworks/kmreader.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit cb2d394

Compare with similar skills

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

Appstore Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Appstore Release this skillkmworks/kmreader111—~2.5kAutomated safety check: PassMIT
Releasevaayne/mori303—~1.2kAutomated safety check: PassMIT
Publish App Store VersionKeeForge/KeeForge114—~3.5kAutomated safety check: PassGPL-3.0
Prepare ReleaseKeeForge/KeeForge114—~572Automated 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

Similar skills

  • 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
  • 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
    MobileAuto-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
    MobileAuto-check passed
  • 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 14 days 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

More from kmworks/kmreader

All 8 skills in this repo
  • Localization

    kmworks/kmreader

    A skill your agent uses when updating KMReader translations in Localizable.xcstrings after code changes.

    111 GitHub stars~800 tokensUpdated today
    Auto-check passed
  • PR Workflow

    kmworks/kmreader

    Create and merge KMReader GitHub pull requests. An agent skill from kmworks/kmreader.

    111 GitHub stars~899 tokensUpdated today
    Auto-check passed
  • Simulator

    kmworks/kmreader

    A skill your agent uses when observing or driving an iOS simulator for KMReader debugging — screenshots, accessibility tree, tap/swipe/gestures, hardware buttons, orientation, and unified logs via…

    111 GitHub stars~797 tokensUpdated today
    Auto-check passed
  • Testflight

    kmworks/kmreader

    Distribute KMReader builds to TestFlight groups via the asc CLI.

    111 GitHub stars~403 tokensUpdated today
    Auto-check passed
  • Changelog

    kmworks/kmreader

    Generate App Store changelog text from commits between the latest tag and HEAD.

    111 GitHub stars~370 tokensUpdated today
    Auto-check passed
  • Repo Conventions

    kmworks/kmreader

    KMReader subsystem conventions and invariants — reader state boundaries, reading-progress sync, offline downloads and caching, local database (GRDB) migrations, SSE dispatch, browse and dashboard…

    111 GitHub stars~18k tokensUpdated today
    Auto-check passed

Questions about Appstore Release

What does Appstore Release do?

Coordinate the KMReader App Store release workflow. An agent skill from kmworks/kmreader. Appstore Release is an agent skill from kmworks/kmreader. Coordinate the KMReader App Store release workflow.

When should I use Appstore Release?

Appstore Release fits situations like: asked to prepare; run a KMReader App Store release across iOS; tvOS: refresh docs and APPSTORECHANGELOG.txt; open and merge the release-copy PR.

How do I install Appstore Release in Claude Code?

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

How do I install Appstore Release in Codex?

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

Can I use Appstore 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 kmworks/kmreader --skill appstore-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/appstore-release, .gemini/skills/appstore-release, .github/skills/appstore-release and .opencode/skills/appstore-release in your project.

What does Appstore Release need to run?

Going by SKILL.md and its folder, Appstore Release needs the command-line tools its instructions call (git, gh, make and python3). Our summary lists: Python 3.

Does Appstore Release access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Appstore 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 Appstore Release use?

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

How many tokens does Appstore Release use?

About 2.5k tokens (SKILL.md is roughly 9.9k 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 Appstore Release?

Skills that share tags, products or a category with Appstore Release: Release (vaayne/mori, 303 stars), Publish App Store Version (KeeForge/KeeForge, 114 stars), Prepare Release (KeeForge/KeeForge, 114 stars) and App Store Preflight Skills (truongduy2611/app-store-preflight-skills, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Appstore Release?

kmworks (a GitHub organization) maintains it in kmworks/kmreader, which has 111 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 8, 2026.

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