CI CD Setup
rshankras/claude-code-apple-skills
Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
$ npx skills add vaayne/mori --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vaayne/mori 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/vaayne/mori.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release .claude/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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/vaayne/mori/tree/main/.agents/skills/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 vaayne/mori --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vaayne/mori release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/release .agents/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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 vaayne/mori --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vaayne/mori release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/release .cursor/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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/vaayne/mori.git --path .agents/skills/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 vaayne/mori --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vaayne/mori release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/release .gemini/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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 vaayne/mori 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 vaayne/mori --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/release .github/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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 vaayne/mori --skill 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 vaayne/mori release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/release .opencode/skills/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 "release" agent skill from https://github.com/vaayne/mori/tree/main/.agents/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "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.
releaseRelease workflow for Mori macOS workspace terminal and MoriRemote iOS app.
Release is an agent skill from vaayne/mori. Release workflow for Mori macOS workspace terminal and MoriRemote iOS app. Create releases with semantic versioned tags, update changelog, and trigger automated CI/CD builds. Use when the user asks to "release", "create a release", "tag a version", "update changelog", "prepare release", "cut a release", "publish to TestFlight", or discusses versioning and release artifacts.
Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering App store release, iOS development and Changelog and release notes. It works with App Store Connect, macOS, iOS and Homebrew. The repository describes itself as: A native macOS workspace terminal organized around Projects and Worktrees, powered by tmux and libghostty. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ff206ee. 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:
gitghxcrunFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
appstoreconnect.apple.comkeepachangelog.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
APPLE_APP_PASSWORDAPPLE_CERTIFICATE_PASSWORDHOMEBREW_TAP_TOKENSPARKLE_PRIVATE_KEYIOS_CERTIFICATE_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release loads about 1.2k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 438 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 vaayne/mori at commit ff206ee, republished under its MIT licence (© vaayne). 438 words, ~1,166 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).Use semantic versioning with v prefix: v0.1.0, v1.0.0, v1.2.3-rc.1.
CHANGELOG.md (see below)📝 docs: update CHANGELOG for vX.Y.Zgit tag vX.Y.Zgit push origin main --tags.github/workflows/release.yml → builds, signs, notarizes, and publishes the GitHub Releasevaayne/homebrew-tap with the new mori cask version and SHA-256APPLE_CERTIFICATE_P12APPLE_CERTIFICATE_PASSWORDAPPLE_IDAPPLE_TEAM_IDAPPLE_APP_PASSWORDAPPLE_DEVELOPER_NAMEHOMEBREW_TAP_TOKEN — personal access token with write access to vaayne/homebrew-tapSPARKLE_PRIVATE_KEY — EdDSA key for Sparkle appcast signingHomebrew does not automatically update a third-party tap from GitHub Releases. Mori's release workflow is responsible for updating vaayne/homebrew-tap.
The tap update flow:
Casks/mori.rb in vaayne/homebrew-tapThe generated cask installs Mori.app, depends on tmux, and exposes the embedded mori CLI via a binary stanza.
Mori-X.Y.Z-macos-arm64.zip (signed and notarized)Mori-X.Y.Z-macos-arm64.dmg (signed and notarized)release.yml workflow on tag pushvaayne/homebrew-tap updated automatically after a successful releaseFor MoriRemote TestFlight uploads, keep the App Store Connect marketing version fixed at 0.3.5 unless the user explicitly asks to change it. New TestFlight uploads must reuse version 0.3.5 and only increment the build number.
Use semantic versioning with ios-v prefix: ios-v0.1.0, ios-v1.0.0.
Option A: Manual dispatch (recommended for testing)
gh workflow run release-ios.yml -R vaayne/mori \
--ref <branch> \
-f version=0.3.5 \
-f build_number=NOption B: Tag-based
0.3.5 unless explicitly told otherwisegit tag ios-vX.Y.Zgit push origin ios-vX.Y.Z.github/workflows/release-ios.yml → archives, exports IPA, uploads to TestFlightIOS_CERTIFICATE_P12 — Apple Distribution certificate (base64-encoded .p12)IOS_CERTIFICATE_PASSWORD — password for the .p12APPLE_ID — Apple ID email (shared with macOS)APPLE_APP_PASSWORD — app-specific password (shared with macOS)APPLE_TEAM_ID — team ID (shared with macOS)com.vaayne.mori-remotemori-remotexcrun altoolThe changelog lives at CHANGELOG.md in the repo root. It follows Keep a Changelog format.
Gather changes since last tag:
git log $(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)..HEAD --oneline
gh pr list --state merged --base main --search "merged:>=$(git log -1 --format=%aI $(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD))"Apply to CHANGELOG.md:
[Unreleased] to [X.Y.Z] - YYYY-MM-DD[Unreleased] section above✨ Features, 🐛 Bug Fixes, ♻️ Refactoring, 📝 Documentation, 📦 Dependencies([#123](https://github.com/vaayne/mori/pull/123))**Full Changelog**: [vPREV...vX.Y.Z](https://github.com/vaayne/mori/compare/vPREV...vX.Y.Z)© vaayne, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/release of vaayne/mori.
Open the folder on GitHubat commit ff206ee
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 |
|---|---|---|---|---|---|---|
| Release this skillvaayne/mori | 303 | — | ~1.2k | Automated safety check: Pass | MIT | |
| CI CD Setuprshankras/claude-code-apple-skills | 781 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Publish App Store VersionKeeForge/KeeForge | 111 | — | ~3.5k | Automated safety check: Pass | GPL-3.0 | |
| Prepare ReleaseKeeForge/KeeForge | 111 | — | ~493 | Automated safety check: Pass | GPL-3.0 | |
| OdevioOdevio/Odevio-CLI | 423 | — | ~7.6k | Automated safety check: Pass | MIT | |
| Asc Xcode Buildrorkai/app-store-connect-cli-skills | 1.1k | 2 repos | ~2.1k | Automated safety check: Pass | MIT |
rshankras/claude-code-apple-skills
Generate CI/CD configuration for automated builds, tests, and distribution of iOS/macOS apps.
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.
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.
movieclaw/MovieClaw
发布 movieclaw 新版本。当用户要求发版、发布新版本、打 tag、发布 NER 模型、发布 Docker 镜像,或打包上传 iOS App 到 TestFlight / App Store、补传发版附件(IPA、Mac 转码器、Mac 版 App)时使用。涵盖版本号三处同步、应用/模型/镜像/iOS 的完整流程、可选附件失败补救与检查清单。
vaayne/mori
Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes.
vaayne/mori
A skill your agent uses when designing or building native macOS applications with SwiftUI or AppKit.
Categories
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app. Release is an agent skill from vaayne/mori. Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
Release fits situations like: automated CI/CD builds; the user asks to release; create a release; update changelog.
Run `npx skills add vaayne/mori --skill release -a claude-code`. Or copy the skill folder (.agents/skills/release in vaayne/mori) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vaayne/mori --skill release -a codex`. Or copy the skill folder (.agents/skills/release in vaayne/mori) into .agents/skills/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 vaayne/mori --skill 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/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, gh and xcrun) and credentials named APPLE_APP_PASSWORD, APPLE_CERTIFICATE_PASSWORD, HOMEBREW_TAP_TOKEN and SPARKLE_PRIVATE_KEY. Our summary lists: A credential in HOMEBREW_TAP_TOKEN; A credential in SPARKLE_PRIVATE_KEY.
SKILL.md names 2 domains. As links in the text: appstoreconnect.apple.com and keepachangelog.com. 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.
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 1.2k tokens (SKILL.md is roughly 4.7k 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 Release: CI CD Setup (rshankras/claude-code-apple-skills, 781 stars), Publish App Store Version (KeeForge/KeeForge, 111 stars), Prepare Release (KeeForge/KeeForge, 111 stars) and Odevio (Odevio/Odevio-CLI, 423 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vaayne (a GitHub user) maintains it in vaayne/mori, which has 303 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 5, 2026.
Source: vaayne/mori on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.