Keep Stave's Claude and Codex provider runtimes in sync when editing one of them. Use when a change touches `electron/providers/claude-sdk-runtime.ts`, `electron/providers/codex-sdk-runtime.ts`, `electron/providers/codex-app-server-runtime.ts`, executable lookup, env construction, CLI session launch env, tooling status probes, or any provider-agnostic behavior. Trigger on phrases like "provider runtime", "claude adapter", "codex adapter", "sibling adapter", "PATH env", "CLAUDE_CONFIG_DIR", "CODEX_HOME", "tooling status", "어댑터 대칭", "양쪽 프로바이더 확인".
72
88%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
When Stave's provider runtimes diverge, regressions surface as "works in Claude, broken in Codex" (or vice versa) and are often found only in production by users who exercise the non-default path.
This skill codifies the AGENTS.md rules in one place:
electron/providers/. When modifying one adapter, check the other for symmetry."Use alongside the-ipc-contract-audit when the change also crosses IPC.
electron/providers/claude-sdk-runtime.ts or electron/providers/codex-sdk-runtime.ts.electron/providers/codex-app-server-runtime.ts or electron/providers/runtime.ts.electron/providers/executable-path.ts) or CLI env builder (electron/providers/cli-path-env.ts).electron/main/utils/tooling-status.ts or any provider availability probe.permissionMode, sandbox, thinking, dangerous_skip, model selection, or error handling propagates inside one adapter.src/lib/providers/) and does not touch either runtime file.the-provider-router instead — it covers orchestration, not adapter parity).| File | Role |
|---|---|
electron/providers/claude-sdk-runtime.ts | Claude SDK adapter (~1 200 lines) |
electron/providers/codex-sdk-runtime.ts | Codex SDK adapter (~800 lines) |
electron/providers/codex-app-server-runtime.ts | Codex app-server variant |
electron/providers/runtime.ts | Shared provider runtime entry |
electron/providers/executable-path.ts | CLI binary lookup |
electron/providers/cli-path-env.ts | Env-builder (PATH, config homes) |
electron/providers/adapter.factory.ts | Event normalization entry (parseNormalizedEvent) |
electron/main/utils/tooling-status.ts | Provider availability probes |
electron/providers/types.ts | Shared runtime option types |
src/lib/providers/provider.types.ts | Renderer-facing TS union |
src/lib/providers/schemas.ts | Zod discriminated union mirror |
Run this before considering an adapter change complete.
runtime.ts or a shared helper instead of being duplicated?runtimeOptions field? Check it is wired through both adapters, the shared type in electron/providers/types.ts, the renderer-side type in src/lib/providers/provider.types.ts, the preload/window-api contract, and the strict Zod schema in electron/main/ipc/schemas.ts.electron/providers/, src/store/app.store.ts, and session/input UI producer sites.NormalizedProviderEvent variant? Both src/lib/providers/provider.types.ts (TS) and src/lib/providers/schemas.ts (Zod) updated in the same change, plus every emitter across electron/providers/.src/lib/session/provider-event-replay.ts updated.PATH handling: GUI-launched Stave must resolve the same executables a login shell resolves. Cloned env objects must not drop login-shell PATH entries.CLAUDE_CONFIG_DIR / CODEX_HOME / auth-related vars: the same precedence rules apply to runtime execution and tooling-status probes.claude auth status / codex --version probe success is not sufficient verification. Environment parity bugs often show:
env: node: No such file or directoryVerify both paths explicitly.
When upgrading @anthropic-ai/claude-agent-sdk, @openai/codex-sdk, or the Claude/Codex CLI expectations:
node_modules, not memory.docs/providers/codex-upgrade-checklist.md, including Guardian reviewer status.cli-path-env.ts but the Codex app-server runtime still builds env inline.tooling-status.ts uses a different PATH resolution than the actual turn-start path, so "Claude is available" reports true while turns fail.runtimeOptions.foo wired through the Claude adapter only; Codex silently ignores it.bun run typecheck — always.Return:
the-ipc-contract-audit — when the symmetry check also crosses IPC layers.the-provider-router — when the change affects Stave Auto routing, not adapter parity.the-terminal-surface-guard — when CLI session launch env changes ripple into docked terminal surfaces.electron/main/ipc/schemas.ts and src/lib/providers/schemas.ts still rejects or drops fields silently.runtime.ts; conversely, do not duplicate provider-agnostic code across both adapters.e275ad5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.