Release
vaayne/mori
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
Coordinate the KMReader App Store release workflow. An agent skill from kmworks/kmreader.
$ npx skills add kmworks/kmreader --skill appstore-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kmworks/kmreader appstore-release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .claude/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kmworks/kmreader --skill appstore-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kmworks/kmreader appstore-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kmworks/kmreader.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/appstore-release .agents/skills/appstore-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .agents/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kmworks/kmreader --skill appstore-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kmworks/kmreader appstore-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kmworks/kmreader.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/appstore-release .cursor/skills/appstore-release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .cursor/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kmworks/kmreader.git --path .agents/skills/appstore-release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kmworks/kmreader --skill appstore-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kmworks/kmreader appstore-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kmworks/kmreader.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/appstore-release .gemini/skills/appstore-release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .gemini/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kmworks/kmreader appstore-releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kmworks/kmreader --skill appstore-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kmworks/kmreader.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/appstore-release .github/skills/appstore-release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .github/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kmworks/kmreader --skill appstore-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kmworks/kmreader appstore-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kmworks/kmreader.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/appstore-release .opencode/skills/appstore-release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "appstore-release" agent skill from https://github.com/kmworks/kmreader/tree/main/.agents/skills/appstore-release into .opencode/skills/appstore-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "appstore-release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
appstore-releaseCoordinate 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. 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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cb2d394. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitghmakepython3From the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from kmworks/kmreader at commit cb2d394, republished under its MIT licence (© kmworks). 688 words, ~2,485 tokens.
.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.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.
4.10.439. If omitted, resolve the latest valid build per platform before attaching anything.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 groupsDo not duplicate those instructions here. This skill owns ordering, GitHub PR handling, App Store Connect release actions, and the follow-up version-cycle PR.
asc --help for command shape when uncertain; CLI flags can drift.xcodebuild; this repo uses Makefile automation.VALID, metadata is incomplete, content rights are missing, or encryption compliance is unresolved.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.gh pr create --body-file and gh pr edit --body-file; do not pass Markdown bodies inline.git status --short --branch
git log --oneline --decorate -n 20
git tag --sort=-creatordate | head -20APP_STORE_CHANGELOG.txt from the latest tag to HEAD. Read full commit bodies, not only subjects.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).APP_STORE_DESCRIPTION.txt should be store-appropriate; the landing page should align with the same product priorities.git diff --check
wc -c APP_STORE_DESCRIPTION.txt APP_STORE_CHANGELOG.txtIf validation needs stronger proof, run the smallest relevant repo command. Do not run repository-wide formatting just for release copy.
Create a dedicated branch:
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:
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,statusCheckRollupMerge when checks are acceptable or the user has explicitly authorized immediate release workflow completion:
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 --branchDo not continue to App Store Connect metadata updates from an unmerged local-only release-copy branch unless the user explicitly wants that.
Confirm app and versions:
asc apps list --name KMReader --pretty
asc versions list --app 6755198424 --version "$version" --platform IOS,MAC_OS,TV_OS --prettyFor each missing platform version:
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 --prettyRecord the version IDs in a platform map. The version state should be PREPARE_FOR_SUBMISSION before metadata/build changes.
For each platform version, update en-US localization with local files:
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" \
--prettyRepeat 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.
Find and validate build IDs:
asc builds list --app 6755198424 --version "$version" --build-number "$build_number" --processing-state all --prettyMap one build ID per platform. Confirm:
processingState is VALID.usesNonExemptEncryption=false.Attach each build:
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" --prettyThen verify:
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 --prettyFor each platform:
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 --prettyRepeat for MAC_OS and TV_OS.
Final verification:
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 --prettyAll three versions should be WAITING_FOR_REVIEW. Report platform, version ID, build ID, and submission ID.
After the release submissions are verified, start the next development version from clean main.
git status --short --branch
git switch -c "release/bump-${next_version}"
make minor
git status --short --branchmake minor must own the version mutation. Do not edit MARKETING_VERSION or CURRENT_PROJECT_VERSION manually.
Verify the generated commit and version delta:
git log --oneline --decorate -n 3
git diff --stat HEAD~1..HEADPush, open, and merge the version-cycle PR:
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 --branchReport:
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
SKILL.md and 1 other file in .agents/skills/appstore-release of kmworks/kmreader.
Open the folder on GitHubat commit cb2d394
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Appstore Release this skillkmworks/kmreader | 111 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Releasevaayne/mori | 303 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Publish App Store VersionKeeForge/KeeForge | 114 | — | ~3.5k | Automated safety check: Pass | GPL-3.0 | |
| Prepare ReleaseKeeForge/KeeForge | 114 | — | ~572 | Automated safety check: Pass | GPL-3.0 | |
| App Store Preflight Skillstruongduy2611/app-store-preflight-skills | 1.4k | — | ~1.4k | Automated safety check: Pass | MIT | |
| OdevioOdevio/Odevio-CLI | 423 | — | ~7.6k | Automated safety check: Pass | MIT |
vaayne/mori
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
KeeForge/KeeForge
Prepare and publish an already-built KeeForge iOS or macOS version through the App Store Connect API using an API key.
KeeForge/KeeForge
Prepare the first KeeForge candidate for a new marketing version, including minor/major releases and patches or hotfixes to shipped versions.
truongduy2611/app-store-preflight-skills
Scan an iOS/macOS Xcode project for common App Store rejection patterns before submission.
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.
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.
kmworks/kmreader
A skill your agent uses when updating KMReader translations in Localizable.xcstrings after code changes.
kmworks/kmreader
Create and merge KMReader GitHub pull requests. An agent skill from kmworks/kmreader.
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…
kmworks/kmreader
Distribute KMReader builds to TestFlight groups via the asc CLI.
kmworks/kmreader
Generate App Store changelog text from commits between the latest tag and HEAD.
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…
Works with
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.