← ClaudeAtlas

myconative-binary-distributionlisted

Apply this skill when working on native binary installation, upgrade pipelines, daemon binary path management, or dev/prod daemon coexistence for the Myco native installer. Covers: the steady-state binary path model (e.g., issues with code-signing on macOS have now been addressed and should be reflected in plist self-heal), the looksLikeDevBuildExecutable() service-mutation guard, managedBinaryPath() usage, the MYCO_HOME physical boundary model (prod ~/.myco vs dogfood ~/.myco-dev) that replaced the deprecated detectDevBuild() pattern, upgrade-path validation (confirm plist self-heal before testing), beta rollout sequencing for install-path changes, and the self-propagation trap requiring GA-gating any upgrade-path fix. Use this skill whenever code touches binary paths, service install/uninstall, upgrade exemption, plist config, or daemon coexistence.
goondocks-co/myco · ★ 13 · AI & Automation · score 79
Install: claude install-skill goondocks-co/myco
# Native Binary Distribution and Installer Pipeline Myco's native installer places the daemon binary at a managed stable slot (`~/.myco/bin/myco`) via plist self-healing, distinct from the npm global prefix (`/opt/homebrew/...`). This creates a two-path world that every piece of upgrade, coexistence, and service-mutation guard must understand. Getting the boundary wrong silently breaks service install, upgrade paths, or coexistence for every real user. ## Prerequisites Understand the two production binary locations: 1. **npm-package path (transient)** — e.g., `/opt/homebrew/lib/node_modules/myco-darwin-arm64/bin/myco`. Present immediately after `npm install -g`. Falls *under* the npm global prefix. 2. **Managed stable slot (steady state)** — `~/.myco/bin/myco`. Reached after the launchd plist self-heals post-install. This is where every real user's daemon runs permanently. Key source files: - `packages/myco/src/install/managed-binary.ts` — `managedBinaryPath()` (production slot) - `packages/myco/src/service/spec-builder.ts` — `looksLikeDevBuildExecutable()`, `buildServiceSpec()` - `packages/myco/src/cli/service.ts` — `assertSafeServiceMutation()`, `resolveServiceExecutable()` - `packages/myco/src/daemon/update-checker.ts` — `resolveMycoBinary()`, `releaseChannelIsManual()` Service identity helpers: `serviceLabel()`, `defaultServiceExecutable()`, `ensureSelfInstalledAsService()`. Quick diagnostic — check upgrade status on a running daemon: ```bash curl -s http://l