.claude/skills/verify-pin/SKILL.md
Background knowledge for safely bumping the pinned versions of Claude CLI binary, Codex CLI binary, Electron, Vite, Tailwind, or Shiki in this repo. Each pin is load-bearing for a different reason — this skill encodes the per-pin rationale and the regression test that must pass before the bump can land. Use proactively whenever editing package.json, scripts/download-claude-binary.mjs, scripts/download-codex-binary.mjs, or any file that mentions these versions. Claude-only (background knowledge, not user-invocable).
npx skillsauth add jrmatherly/1dev verify-pinInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill encodes the load-bearing reasons each version pin exists in this repo. Before editing any of the files below, read the relevant pin section. After editing, run the verification command for that pin.
This repo has 6 different version pins, each pinned for a specific reason documented in CLAUDE.md "Environment Notes." Bumping one without re-verifying the constraint that pinned it has bitten the project before. The existing PreToolUse hook in .claude/settings.json already emits a warning when binary pin files are touched — this skill is the mental checklist Claude should run through when responding to that warning.
2.1.96File: package.json (claude:download script), scripts/download-claude-binary.mjs
Why pinned: Claude binary releases occasionally break session resume and streaming behavior. The pin protects the @anthropic-ai/claude-agent-sdk integration in src/main/lib/trpc/routers/claude.ts.
Additional constraint: Must be 2.1.89 or newer because GPG signature verification (Phase 0 gate #7) is only available from that version onward. The download script enforces signature verification — bumping below 2.1.89 will break the download flow.
Before bumping:
claude-code CLI session resume, streaming, or token formatmanifest.json to GCSAfter bumping:
Claude CLI binary pinned to 2.1.96bun run claude:download to verify the download + GPG verification still worksbun test (regression guards include gpg-verification-present.test.ts)0.118.0File: package.json (codex:download script), scripts/download-codex-binary.mjs
Why pinned: The Codex CLI is bridged into the app via @zed-industries/codex-acp (currently 0.9.3). Bumping the Codex version requires re-testing that bridge.
Additional constraint: Must be 0.118.0 or newer because dynamic short-lived bearer token refresh for custom model providers was added in that version. This is what enables the Phase 1 Envoy Gateway rotation pattern without a custom shim.
Before bumping:
@zed-industries/codex-acp has a compatible versionasset.digest with SHA-256After bumping:
bun run codex:download~40.8 (currently 40.8.5)File: package.json devDependencies.electron
Why pinned:
upgrade-electron-40, capability spec electron-runtime)electron-vite upgraded to 5.0.0 in lockstep (build.externalizeDeps replaces externalizeDepsPlugin)node-pty lazy-loaded in src/main/lib/terminal/session.ts to prevent crash if native module failsBefore bumping (within 40.x):
electron-rebuild still works for better-sqlite3 and node-ptybun run ts:check && bun run build && bun test — the electron-version-pin regression guard validates the expected major versionBefore bumping to 41.x or later:
dependabot/bun/electron-*) for breaking changesapollosai-agents:// and apollosai-agents-dev://)electron-version-pin.test.ts guard with the new expected major version^6.4.2 (must stay 6.x)File: package.json devDependencies.vite
Why pinned: electron-vite 3.x depends on splitVendorChunk which was removed in Vite 7+. Bumping to Vite 7 will break the build immediately.
The hook will already catch this: The PostToolUse hook for electron.vite.config.ts runs bun run build on edit. Trust it.
Before bumping (within 6.x):
bun run build — the hook will do this for you on electron.vite.config.ts editsBefore bumping to 7.x or later: Don't, until electron-vite is upgraded to a version that no longer uses splitVendorChunk. Track upstream alex8088/electron-vite releases.
~3.x (must stay 3.x)File: package.json devDependencies.tailwindcss
Why pinned: tailwind-merge v3 requires Tailwind v4. Upgrading Tailwind requires migrating the v3 config, regenerating PostCSS config, and re-validating every cn() call site (134+ files use it).
Before bumping: This is a multi-day migration, not a pin bump. Open an OpenSpec proposal first.
^3.0.0 (must stay 3.x)File: package.json dependencies.shiki
Why pinned: @pierre/diffs pins shiki: ^3.0.0. Until upstream @pierre/diffs releases a v4-compatible version, Shiki must stay on 3.x.
Before bumping: Check if @pierre/diffs has released a new version supporting Shiki 4+. If not, do not bump.
CLAUDE.md, README.md, CONTRIBUTING.md, .serena/memories/environment_and_gotchas.md. The docs-drift-check skill exists to catch missed updates.tests/regression/feature-flags-shape.test.ts and tests/regression/gpg-verification-present.test.ts both have version-coupled assertionsgit diff package.json before stagingbun update --latest without checking each major bump against this skillbun.lock after a pin changedevelopment
Background knowledge for AI agents before editing any file that handles authentication tokens or spawn environment variables in the 1Code enterprise fork. Triggers when touching src/main/lib/trpc/routers/claude.ts, claude-code.ts, claude/env.ts, feature-flags.ts, or claude-token.ts. Reminds the agent to consult the frozen Envoy Gateway strategy doc (auth-strategy-envoy-gateway.md v2.1) sections that impose hard rules on credential handling.
development
Use when reading or writing any file under src/renderer/ that calls remoteTrpc.* or fetch(${apiUrl}/...). Verifies the call site is documented in docs/enterprise/upstream-features.md and warns if a new upstream-backend dependency is being introduced without a corresponding F-entry. This skill enforces the enterprise-fork posture documented in CLAUDE.md.
development
End-of-task sync — update CLAUDE.md, rebuild code graph, sync Serena memories, check roadmap drift, and commit. Run after completing any significant work to ensure all drift surfaces are current.
documentation
View, add, or complete items on the centralized project roadmap at docs/operations/roadmap.md. Use when starting a session to see outstanding work, when deferring work to record it, or when completing work to update the tracker. Triggers on "roadmap", "outstanding work", "what's left", "defer", "follow-up".