release-notes
Use when writing or curating the user-facing release copy for an Agent Sessions release — README "What's New", GitHub release…
Use when shipping a release of Agent Sessions — bumping version, updating CHANGELOG, building, signing, notarizing, publishing appcast, and creating a GitHub release.
Claude Code
$ npx -y skills add jazzyalex/agent-sessions --skill deploy --agent claude-code
Codex
$ npx skills add jazzyalex/agent-sessions --skill deploy -a codex -y
Cursor
$ npx skills add jazzyalex/agent-sessions --skill deploy -a cursor -y
Gemini CLI
$ npx skills add jazzyalex/agent-sessions --skill deploy -a gemini-cli -y
GitHub Copilot
$ npx skills add jazzyalex/agent-sessions --skill deploy -a github-copilot -y
OpenCode
$ npx skills add jazzyalex/agent-sessions --skill deploy -a opencode -y
Windsurf
$ npx skills add jazzyalex/agent-sessions --skill deploy -a windsurf -y
name: deploy description: Use when shipping a release of Agent Sessions — bumping version, updating CHANGELOG, building, signing, notarizing, publishing appcast, and creating a GitHub release.
This skill is an agent-facing entrypoint that avoids duplicating the deployment runbook.
If anything here disagrees with the runbook, follow `docs/deployment.md`.
Heavy steps (QA test runs, the Release build, notarization) crawl when the Mac is out of memory. During 6.0 the Release build ran 20+ minutes at 15% CPU because swap was nearly full. The cause was `fseventsd`, a macOS daemon holding 21 GB (20 GB compressed). The machine reported "31% free" and `ps` RSS showed every process small, so both looked healthy. Run this check before each heavy step, and again if a Release build passes 12 minutes:
sysctl -n vm.swapusage # swap used / total top -l 1 -o mem -n 8 -stats pid,command,mem,cmprs # MEM includes compressed memory df -h / | tail -1 # free disk du -sh ~/Library/Developer/Xcode/DerivedData .deriveddata-* 2>/dev/null
Use `top`, not `ps`: RSS hides compressed and swapped memory, which is where the problem was. Do not trust `memory_pressure`'s "free percentage" either.
Act on what you find:
heavy step. If the process is `fseventsd`, restart it: launchd respawns it at once, and nothing is lost. Try `sudo -n killall fseventsd` first. When that fails (no cached sudo), stop and give the user that command without `-n` to run in Terminal, then re-check. Never kill other system daemons. For user apps (Chrome, other Claude sessions, test runners), name the biggest ones and ask the user to quit them; do not kill them yourself.
deleting the repo's `.deriveddata-*` folders and `~/Library/Developer/Xcode/DerivedData`. They are build caches and regenerate. Delete them only when the user agrees, and never while a build is running.
1. **Scope** — `git log --oneline --decorate -n 30` and `git diff --name-only <LAST_TAG>..HEAD`; identify high-risk areas. 2. **Build** — `xcodebuild -project AgentSessions.xcodeproj -scheme AgentSessions -configuration Debug build` 3. **Full test suite** — `./scripts/xcode_test_stable.sh` 4. **Targeted tests** — run suites for touched high-risk areas (session parsing, usage tracking, onboarding, etc.) 5. **Warnings sweep** — flag any new actionable warnings in build output. 6. **Manual smoke reminder** — list the manual steps from `docs/release/pre-release-qa.md` §3–4 and ask the user to confirm GO/NO-GO after completing them.
**Test count.** QA reads the authoritative pass count from the `.xcresult` bundle (stdout reports per-bundle totals and this scheme has two — it under-reports) and compares it to `tools/release/test-count-baseline.txt`. A drop **warns and continues**, deliberately: it does not block a release. So the warning has to actually be read — a deleted suite still exits 0 from xcodebuild, and this line is the only thing that says so. When the count changes for a real reason, update the baseline file in the same release.
1. Target version (`X.Y` for major/minor releases, `X.Y.Z` only for patch releases; never ship `X.Y.0`) 2. Any headline changes (new agents, major features) that must be reflected in `docs/CHANGELOG.md` 3. Whether this is a major release that requires onboarding updates 4. Public copy updates needed for README/GitHub Pages (major changes to highlight, renamed features, or outdated wording to fix)
**Do NOT ask about QA status** — QA always runs automatically as part of pre-deploy (see QA Gate above).
`docs/index.html`'s `description`, `og:description` and `twitter:description` are **deliberately version-agnostic** as of the 2026-08-29 SEO work. This checklist used to demand "mention current version + key change" there, which is how the homepage description reached 541 chars reading "Version 5.0 makes every agent a plug-in adapter…" — past the ~155-char SERP budget, and stale the day after every release.
Leave them alone. If the product's positioning genuine
Local-first macOS app to browse, search, analyze, and resume supported AI coding-agent session history across Codex, Claude Code, OpenCode, Cursor Agent, Antigravity, Hermes, OpenClaw, Copilot CLI, and more.
Use when writing or curating the user-facing release copy for an Agent Sessions release — README "What's New", GitHub release…
Create and ship AgentSessions support for a new or changed local AI agent/provider. Use when adding, reviewing, testing,…
Verify agent session format compatibility for Agent Sessions. Use when any agent CLI updates, when monitoring flags drift, or…
Maintain Agent Sessions agent support matrix and JSON/JSONL parsing compatibility. Use when checking upstream agent releases for…
Capture deterministic macOS screenshots for testing, docs, release notes, and marketing assets. Use when asked to automate app…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.