simctl / adb / ffmpeg argv builders in devices.ts; capture.ts runs them with
per-shot progress, --dry, clear errors when xcrun / adb / ffmpeg are missing,
status bar restore, and shuts down only a simulator it booted (--keep-booted).
Salvaged from wip/shots-pipeline. Pure modules (spec, devices, report, video,
check), variant support in render / lib, 13" iPad size and 3:4 template layout.
Not all of it is wired into the CLI yet.
- tools/gen-adapters.ts writes the Claude Code plugin + .mcp.json, Codex plugin, Gemini CLI
extension + GEMINI.md, AGENTS.md, Copilot instructions and a Cursor rule from skills/ and
docs/agents-core.md; --check fails on stale files
- tests for adapters, MCP tools and JSON-RPC, validate rules, ASO, release notes, privacy
manifest, release helpers, install merging, scrub
- bun run ci: adapters check, tests, typecheck, secrets / personal data scrub
- 0.2.0
- storebound mcp: stdio MCP server (spec 2025-11-25, tools only), one tool per command, write tools
dry_run by default, readOnly/destructive/idempotent/openWorld annotations; submit, release,
rollout, cancel and delete are not exposed. Own JSON-RPC subset, no SDK, zero runtime deps.
- storebound install --agent claude|codex|cursor|copilot|windsurf|gemini|opencode: copies the skills
and adds the storebound MCP entry (.mcp.json, .codex/config.toml, .cursor/mcp.json, .vscode/mcp.json,
Windsurf mcp_config.json, .gemini/settings.json, opencode.json). Idempotent, keeps other entries, --dry.
- validate: read-only App Store Connect + Play report with ordered blockers (exit 1)
- apple release --phased on|pause|resume|complete and --manual-release (asks first)
- apple status --wait-review (exit 0 approved, 1 rejected, 7 timeout), apple next-build, apple encryption
- play rollout --fraction|--halt|--resume|--complete, play next-version-code
- check --aso, whats-new --since <tag>, privacy-manifest --ios <path>, version
- Apple IAP description limit is 45 characters (App Store Connect Help), not 55
- config: apple.usesNonExemptEncryption, apple.screenshotTypes, ads.appAdsTxt