release

GitHub

通过CI流程发布Styx新版本,涵盖版本递增、多平台构建、草稿审核及最终发布。包含Feed更新、Homebrew Cask升级和站点同步,并提供本地调试与打包注意事项,确保端到端发布质量。

.claude/skills/release/SKILL.md NicholasFlemmer/styx-app

Trigger Scenarios

需要发布新版本的Styx应用 执行CI/CD发布流程 处理发布失败后的重试或修复

Install

npx skills add NicholasFlemmer/styx-app --skill release -g -y
More Options

Non-standard path

npx skills add https://github.com/NicholasFlemmer/styx-app/tree/main/.claude/skills/release -g -y

Use without installing

npx skills use NicholasFlemmer/styx-app@release

指定 Agent (Claude Code)

npx skills add NicholasFlemmer/styx-app --skill release -a claude-code -g -y

安装 repo 全部 skill

npx skills add NicholasFlemmer/styx-app --all -g -y

预览 repo 内 skill

npx skills add NicholasFlemmer/styx-app --list

SKILL.md

Frontmatter
{
    "name": "release",
    "description": "Release a new Styx version through CI (styx-app release.yml → draft → publish.yml) and check it end to end.",
    "allowed-tools": "Bash(pnpm:*), Bash(gh:*), Bash(git log:*), Read",
    "disable-model-invocation": true
}

Release

Releases are built and published by CI on the public repo (NicholasFlemmer/styx-app), never from a laptop.

  1. Bump version in apps/desktop/package.json (every release needs a new number; the feed refuses a version it already serves) and land it. mirror.yml pushes it to styx-app's sync branch; sync-pr.yml opens a pull request that merges itself once CI passes (about 35 minutes). Wait for that merge before step 2.
  2. Start the release: gh workflow run release.yml -R NicholasFlemmer/styx-app -f version=X.Y.Z (or push a vX.Y.Z tag to styx-app). verify checks the version, waits for CI on that exact commit to pass, and tags it. Mac (signed + notarized, retried on network errors), Windows and Linux build in parallel; draft attaches every installer and feed file to a draft release.
  3. Review the draft on styx-app › Releases. Only the owner presses Publish release: that is the gate.
  4. Publishing runs publish.yml: the update feed (installers first, feed files last, keyless upload through Workload Identity), a check that all three feeds serve the new version, then the Homebrew cask bump in NicholasFlemmer/homebrew-styx. When it succeeds, site.yml rebuilds and redeploys heystyx.com so its stated version matches (run it by hand after a site-only change).
  5. Check: curl -s https://storage.googleapis.com/styx-desktop-releases/mac/latest-mac.yml | head -1, and an installed copy shows "Update available" within 30 minutes.

If a step fails, fix the cause, bump nothing, and re-run the failed jobs (a draft can be deleted and release.yml re-run for the same version until it is published).

Local builds (debugging only)

pnpm release:preflight, then pnpm package:mac (notarizes with the styx-notary keychain profile) or pnpm -F @styx/desktop package:mac:dir && pnpm -F @styx/desktop package:smoke for an unsigned check. pnpm release:publish still uploads a local release/ folder through the gcloud shim, for emergencies only.

Packaging notes (learned 2026-09-05)

  • Only native modules (better-sqlite3, node-pty, @napi-rs/keyring, ssh2) stay external in electron.vite.config.ts; every other main-process dependency is bundled. A packaged app that require()s ESM-only packages (execa, chokidar) at runtime hangs before app.whenReady.
  • apps/desktop/package.json declares packageManager: pnpm@… so electron-builder resolves the hoisted workspace node_modules; workspace packages are devDependencies (bundled by electron-vite), which keeps Storybook/Jest out of the bundle.
  • Without a signing identity electron-builder ad-hoc signs; never pass CSC_IDENTITY_AUTO_DISCOVERY=false on Apple Silicon (an unsigned bundle inherits a broken Electron signature).
  • Windows installers are named Styx-Setup-<version>.exe (no spaces: GitHub renames spaces in release assets).

Version History

  • 1d72019 Current 2026-10-18 15:23

Same Skill Collection

.claude/skills/db-migration/SKILL.md
.claude/skills/ipc-command/SKILL.md
.claude/skills/port-screen/SKILL.md
.claude/skills/provider-adapter/SKILL.md
.claude/skills/run-app/SKILL.md
.claude/skills/spec-lookup/SKILL.md
.claude/skills/state-machine-change/SKILL.md
.claude/skills/ui-component/SKILL.md
.claude/skills/visual-diff/SKILL.md

Metadata

Files
0
Version
1d72019
Hash
775e6bef
Indexed
2026-10-18 15:23

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-20 00:29
浙ICP备14020137号-1