·
An overlay-style Claude Code harness that pre-bakes the context-discipline patterns Anthropic recommends. Toggle it on and the next Claude Code session you launch from a yaw pane inherits a curated working style - 13 rule files, 30+ slash commands, dispatch sub-agents, safety hooks - without touching the config on your disk. As of May 2026, Yaw Mode also runs against typed.cloud as a backend.
Claude Code ships with a config directory at ~/.claude/. It's where your CLAUDE.md lives, your skills, your agents, your permission allowlists, your OAuth credentials, and the JSONL transcripts for every session you've ever run. It's a deeply personal directory by the time you've used Claude Code for a few months - and anything that wants to change how Claude Code behaves has to either edit that directory in place or teach you to maintain a second config somewhere else.
Yaw Mode is a third option. It's a per-session overlay that layers an opinionated bundle on top of your ~/.claude/ without mutating it. Claude Code inside the overlay sees your CLAUDE.md plus ours, your skills plus ours, your permissions merged with a safe default set for sub-agents, and conversation history that writes straight through to your real home - so every session still shows up in --resume exactly where you'd expect. When the session ends, the overlay is gone. Your real config is untouched.
This post is the "what's in the box, how does the box work, how do I open it" tour - now updated with the slash command catalog, typed.cloud backend support, and every rule and hook we've added since launch. (The disciplines the overlay encodes -- rule layering, hook-as-policy, scope, capacity, the seven hazards -- are the book-length treatment in Claude Code in Production.)
If you read the April 22 version of this post, the additions in the past month are worth scanning before the section-by-section tour:
ANTHROPIC_BASE_URL=https://api.typed.cloud + ANTHROPIC_MODEL=typed-xhigh environment and the bundle adapts - model defaults, throttle handling, and self-state verification all branch on the active backend.canonical-source-gate.sh and gh-pr-merge-admin-gate.sh - turn two failure modes that previously relied on agent discipline into hard gates.node:path fixture skew in tests, and a documented npm-on-ARM64 segfault workaround.Full details below.
Three kinds of content ride along with Yaw Mode. First: a set of rule files that get @-imported into a merged CLAUDE.md, so the model's baseline instructions pick them up on every turn. Second: a curated skill set, the slash commands users invoke at runtime. Third: the hooks, custom sub-agents, and permission defaults that make dispatched work safe and reliable out of the box.
The bundle currently ships 13 rule files. Each starts with the rule, then a Why: line and a How to apply: line - the why is what lets the model (or a person reading it) decide whether an edge case falls under the rule.
agent-setup - default to the highest-capability model tier at the backend's recommended effort. Pin runtime defaults in project-scoped settings. Yaw skills are invoked via the Skill tool, never as Agent subagent_type.corrections - when the user corrects a name (package, branch, file path), echo back the corrected form on the next reference, don't revert to the wrong form within a turn or two.deploy - reproducible builds decoupled from your workstation. Run kubectl from your workstation, not the build environment. Secrets via Secret resources, never inline env. Migrations versioned and automatic on boot.investigate - probe hypotheses yourself; don't hand the user a list. A diagnostic is tool-call shaped (ssh, curl, grep, journalctl, kubectl) - run it, surface the conclusion, not the possibilities.memory - when stuck, search memory before trying a third approach. Re-read a memory you just wrote if the topic resurfaces. Resolve memory paths via the canonical env-var path, not the per-PTY tmpdir string.npm - prefer CI-on-tag-push for npm publish. Don't initiate npm login from an agent session; once logged in, write ops are fine. Never copy ~/.npmrc tokens into CI.platform-windows - don't pass bare Unix paths to native .exe binaries from Git Bash (MSYS translates them). Test fixture keys must use path.join, not POSIX literals. The npm-on-ARM64 segfault workaround for biome.scope - finish the task first; surface the bigger fix separately. Don't read frustration as a redesign mandate. Pre-existing issues you encounter are yours to fix, not "out of scope". Surface a finding once with file:line + fix, then move on. Don't volunteer passive monitoring the user didn't ask for.self-state - verify Yaw Mode state by reading the environment, never by guessing from skill names. Don't infer runtime state from the shape of your system reminder. Verify the active API backend the same way (Anthropic-direct vs typed.cloud).subagent-prompts - pass sub-agents the delta, not the agent's job description. Restating the report format the skill already defines wastes tokens twice (orchestrator's prompt + sub-agent's own loaded definition).terminal-output - prefer ASCII substitutes (--, >=, x) over Unicode punctuation in terminal output. On Windows ConPTY, — becomes mojibake.throttle-recovery - server-side limits are a valid reason to drop tiers. Mechanism differs by backend - Anthropic-direct throttles trigger Yaw Terminal's "switch to Fast" toast; typed.cloud 429s mean quota exhausted, handled via dashboard top-up.verification - ask or verify load-bearing user-domain state before asserting it. Fetch the next piece of context yourself before asking the user to paste more. A justifying comment is a hypothesis, not a fact - verify external claims when the thing it explains is failing.Two hooks turn previously-soft rules into hard mechanical gates. They live in ~/.claude/hooks/ and fire before the gated tool executes.
canonical-source-gate.sh - blocks Edit/Write to paths under yaw-mode-* overlay tmpdirs. Without it, edits to skill/agent/rule files through the per-PTY junction can detach the hardlink and the change lands on a throwaway copy while the durable source stays unchanged. Confirmed twice in May 2026 - edits were lost on session end while the agent confidently reported them as applied. The hook surfaces the canonical path to retry at. Test-mode bypass: inline # canonical-override comment or YAW_CANONICAL_OVERRIDE=1.gh-pr-merge-admin-gate.sh - blocks gh pr merge --admin unless the invocation carries an inline # yaw-admin-authorized marker or YAW_ADMIN_AUTHORIZED=1 in env for that one command. Origin story: on 2026-04-16 an agent admin-merged a ~6,000-line deletion PR with zero CI reports, after GitHub's policy explicitly refused the normal merge. The hook makes "stop and ask" the default; the carve-out is per-invocation, not session-wide.The bundle ships around 30 skills - invoked as /yaw-* slash commands plus the two release entry points (/release-yaw, /release-mcp-hosting). Their bodies don't ride in the persistent system prompt; the model sees only names and one-line descriptions until you invoke one.
Full reference with shareable links: jump to the slash command catalog.
Sub-agents read whatever they need in their own context window and return a digest to the parent. The bundle ships:
full-pass - end-to-end sweep over a module, returning solid / fragile / worth fixing now / file for later.review-loop - independent bug/perf/UX review on recent changes. Punch list with file:line.ship-ready-audit - branch shippability check covering golden path, error UI, loading, empty states.ci-watch - polls a gh run to completion, pulls failing logs, identifies the root cause.changelog-writer - generates release notes from a git range, groups commits by area.mcp-bundle-builder - scans package.json + code for API integrations, proposes which @yawlabs/*-mcp servers to load.memory-curator - scans transcripts for memory-worthy moments. Proposes; never auto-writes.postgres-prober - read-only SQL queries against mcp-hosting prod RDS via kubectl-exec. Refuses INSERT/UPDATE/DELETE.runbook-runner - pattern-matches an alert string against runbooks in CLAUDE.md and walks the operator step by step. Read-only checks auto; destructive steps gated behind confirmation.claude-code-guide - answers "can Claude...", "how do I..." questions about Claude Code, the Agent SDK, and the Claude API. Stays in lookup mode so it doesn't burn context on implementation.The mechanism is simpler than it sounds. When yaw spawns a Claude Code session in Yaw Mode, it:
~/.claude/ into the overlay: settings.json, .credentials.json, history.jsonl, ~/.claude.json. Hardlinks mean Claude Code reads the real file; anything it writes through the same inode reaches home directly.projects/, sessions/, plans/, file-history/. Writes go straight through to home - your --resume list is unaffected.CLAUDE_CONFIG_DIR=<overlay>. Claude Code reads its config from the overlay and never touches your real ~/.claude/.On session exit: a guarded sync of the overlay's .claude.json back to home (more on the guard below), a live-synced copy-back of refreshed OAuth credentials, and then the overlay directory is deleted. A per-session overlay, created from scratch, torn down when you're done. No accumulating state, no stale config from yesterday's session, and - critically - no risk of the overlay's teardown reaching into your real home.
Two modes. Both do the same overlay dance; they differ in what they start with.
Augment (default): your ~/.claude/ gets layered underneath the Yaw bundle. Your skills, your agents, your settings all participate. The merged CLAUDE.md is your CLAUDE.md plus Yaw's. This is the "I already have my Claude Code set up the way I like it, I just want Yaw's rules and skills on top" shape.
Fresh: only the Yaw bundle. Your ~/.claude/ is ignored for skills, agents, CLAUDE.md, settings. Conversation transcripts still route through home so you don't lose history, but the working configuration is exactly what the bundle ships - nothing more, nothing less. This is the "I want a clean slate to run the Yaw discipline against" shape, or the "I'm reproducing behavior someone else saw in Yaw Mode and need to eliminate my personal config as a variable" shape.
Both modes expose a runtime marker - $YAW_MODE is set to augment or fresh in the session env. A bundled rule tells the model to verify its own mode from that env var rather than inferring from skill names (which overlap with Claude Code built-ins and produce confident-sounding wrong answers). Small detail, but the kind of thing that matters when you're debugging why a session behaved unexpectedly.
Yaw Mode is wire-compatible with any Anthropic-API-shaped backend. As of May 2026, the most common alternative we run against is typed.cloud - an AI CLI that ships ~40% more tokens per dollar than Claude Pro/Max at the same monthly price, with cheaper overage and monthly billing instead of 5-hour rolling windows. (See typed Is Live for the full pricing and migration breakdown.)
You don't need a special Yaw Mode build to use it. The typed launcher sets the right environment variables before spawning Claude Code:
export ANTHROPIC_BASE_URL=https://api.typed.cloud
export ANTHROPIC_AUTH_TOKEN=<your typed key>
export ANTHROPIC_MODEL=typed-xhighWhen Claude Code launches from a Yaw pane with those vars set, Yaw Mode picks up the backend automatically. Three things change:
agent-setup rule branches on the active backend - on Anthropic-direct it pins claude-opus-4-8 at xhigh; on typed it pins typed-xhigh (the second-from-top of typed's five tiers: typed-max / typed-xhigh / typed-high / typed-medium / typed-low). Same shape - default to the flagship at the recommended effort, reserve max for genuinely hard problems./fast is only valid there). A 429 from typed means monthly quota exhausted, handled via dashboard one-click top-up ($5 / $10 / $20 / $50) or auto-top-up if pre-enabled. The bundle's throttle-recovery rule covers both branches.self-state rule has it check $YAW_MODE_PROVIDER and $ANTHROPIC_BASE_URL before answering. On typed it reports the typed model ID, not the Claude model the system prompt was trained to self-identify as.Both can coexist on the same machine. Open one tab against typed, another against Anthropic-direct; same conversation history, different upstreams. typed disable bounces the launcher back to your Claude subscription if you want to spread spend across both.
Because you shouldn't have to choose between your setup and ours. A replacement config would make you pick one; an overlay lets you run ours for the sessions where you want it, and your baseline the rest of the time. Opening a non-Yaw-Mode tab in yaw gets you vanilla Claude Code, reading your real ~/.claude/, same as you'd see anywhere else. Opening a Yaw-Mode tab gets you the layered version. Two tabs side by side, same conversation history, different working styles. That's the whole pitch.
It also means when Claude Code ships a new feature, you get it the day it lands - nothing in Yaw Mode is a re-implementation of Claude Code itself. The overlay is strictly additive to the official binary.
Anthropic recently framed agent quality at scale as "the discipline of deciding what belongs in Claude's context" and grouped the practical patterns into four pillars. Yaw Mode wasn't designed against that talk - the overlay predates it - but the four pillars line up cleanly with how the bundle was already shaped, which is the more useful kind of validation. We didn't add primitives Claude Code doesn't have; we shaped Yaw Mode to work with the ones it does.
1. Tool search - keep unused tool and skill schemas out of context. The Yaw bundle ships ~30 skills plus 10 sub-agents. Their bodies don't ride in the persistent system prompt - they load only when invoked. The model sees their names and one-line descriptions; the multi-thousand-token instructions inside are paged in on demand. That's the difference between a 5KB persistent footprint and a 200KB one.
2. Programmatic tool calling - keep intermediate tool results out of context. The Yaw sub-agents are dispatch surfaces, not paraphrasers. A full-pass over a subsystem reads dozens of files in its own context window and returns a digest - solid / fragile / worth fixing now / file for later - to the parent. The 50,000 tokens of file content stay on the sub-agent's side of the wall; the parent sees the verdict.
3. Compaction - keep stale turn history out of context. Compaction is a Claude Code primitive; what Yaw Mode contributes is making sure the cached prefix actually survives across sessions. The bundle is built to be cache-stable: rule bodies don't interpolate dates, session counters, or environment markers, and edits prefer additive changes over reordering. That keeps the largest cacheable region of the system prompt hashing identically across releases, so users hit the cache rather than re-paying full prompt cost on every new session.
4. Advisor strategy - cheap executor + capable advisor on hard sub-problems. Yaw's sub-agents are the dispatch surface for this pattern. A routine session can run on a fast tier and still escalate the genuinely hard sub-problems - an architectural review, an ambiguous debug, a ship-readiness audit - to a sub-agent pinned to a higher-tier model. The bundle's agent-setup rule has the conventions; the sub-agent boundary makes them mechanically expressible.
An overlay that shares your conversation history via junctions, hardlinks, and sync-back is a mechanism with real blast radius. "Yaw Mode broke my Claude Code history" would be an unrecoverable user experience. So the safety properties are worth spelling out, because we've done the work to make them real - including finding and fixing two data-loss edge cases in the first month.
Teardown can't touch your conversation history. Every recursive delete of an overlay directory - at session end, at startup sweep of stale overlays, at legacy-format cleanup - first unlinks the known junction points and then removes the overlay. The recursive rm sees only an empty shell; the junction targets (~/.claude/projects/, sessions/, etc.) cannot be reached, regardless of whether the Electron-bundled Node.js in a given release follows junctions or not. This is defense in depth against a behavior that shifts quietly across Node versions.
Concurrent overlays don't race each other to data loss. Running four Yaw Mode tabs in parallel used to mean only the first-to-exit's new projects landed in home's .claude.json - the rest hit a stale-snapshot guard and were silently dropped on teardown. Now the guard falls back to an additive merge: new projects get unioned in, shared projects keep home's newer values (no regression on last-session stats), counters take the max. Every overlay's additions reach home, even when four of them exit in quick succession.
Before every sync-back, we snapshot. A timestamped copy of your home .claude.json lands in ~/.yaw-claude-json-backups/. Seven are kept, pruned by age. If anything ever does slip through - and "never" is a claim we're unwilling to make about filesystem-level code on Windows - you have recovery points.
Ghost entries get cleaned up automatically. A project entry in .claude.json whose transcript directory doesn't exist on disk clutters --resume and select-to-nothing. Sync-back filters them out, so the picker only lists projects that actually have sessions to resume.
Mechanical gates on top of the rules. The two PreToolUse hooks (canonical-source-gate.sh and gh-pr-merge-admin-gate.sh) turn "the agent will remember to do the right thing" into "the agent gets blocked if it doesn't." Documented in the Safety hooks section above.
Everything is covered by tests. The junction-follow, concurrent-overlay, and ghost-filter cases all have regression tests pinned at the source level - they trip the moment anyone reintroduces the pre-fix behavior. If a future Node bump changes the filesystem primitives underneath us, those tests catch it in CI before it reaches anyone.
Every Yaw Mode slash command, grouped by purpose. Each card has a share button - click it to copy a direct link to that command. You can also click the command name itself to copy the link. Useful when someone in chat asks "wait, what does /yaw-deploy-check actually do?" and you want to point them at the answer without scrolling them through the whole article.
All commands are skills - the body loads only when invoked. The persistent footprint is the name plus the one-line description below.
triggers: "ship 1.3.X", "release X.Y.Z", "cut a new yaw release", "let's release"
Cuts a new Yaw Terminal release. Codifies the full flow: pre-release PR pattern, GitHub Release create, admin-merge marker for required pre-release PRs. Scoped to ~/yaw/yaw.
triggers: "release mcp-hosting", "ship mcp.hosting X.Y.Z", "deploy mcp-hosting"
Cuts a release of mcp-hosting (and any affected sibling repos - Yaw MCP CLI, mcp-hosting-deploy distributions). Codifies the workstation-driven EKS deploy + tag + GHCR self-host flow.
triggers: "pre-flight my release", "is this ready to ship", "ready to release"
Pre-flight gate before invoking a release script. Verifies kubectl context, AWS creds, SSH reachability, git state, lint, audit, and tests. Green/red checklist with remediation hints.
triggers: "did the release land", "verify the deploy", "check the ghcr publish"
Post-release verification for mcp-hosting. Confirms /health and /ready, /api/self-host/latest-version reports the new version, GHCR image landed, dashboard isn't white-screening, integration smoke runs clean. Idempotent - re-runnable any time.
triggers: "rotate secret", "rotate webhook secret", "rotate token", "rotate ghcr pat"
Interactive credential rotation walkthrough for YawLabs infra. Covers LemonSqueezy webhook secret, GHCR PAT (write:packages), NPM_TOKEN org secret, npm session token. Walks fetch -> rotate -> verify per the runbooks.
triggers: "we have an alert", "this is paging", "alert fired", or paste an alert body
Alert text in, runbook out. Pattern-matches the alert string against the runbooks in mcp-hosting CLAUDE.md and walks you through the matching runbook interactively. Read-only checks run automatically; destructive steps gated behind confirmation.
triggers: "commit and push", "stage commit push", "lint commit push"
Runs the pre-commit checklist (lint:fix, tsc, tests), stages the right files, commits with a generated message, pushes to origin. For routine non-release commits. NOT a release flow.
triggers: "wait for it to finish", "watch this run", "poll until done", "babysit this deploy"
Generic poll-until-done for long-running operations: gh runs, kubectl rollouts, deploys, builds, log tails. Dispatches to the ci-watch agent for gh runs; polls native commands for others.
triggers: invoke after a plan has been agreed on
Executes an agreed plan end to end - writes code, runs checks, confirms it works before declaring done. Use after a plan has been agreed on, not for open-ended exploration.
triggers: "review this diff", "spot bugs in recent changes"
Reviews the most recent changes for bugs, performance issues, UX issues before committing or opening a PR. Returns a short punch list with file:line, what's wrong, and a suggested fix.
triggers: before merging to main, cutting a release tag, declaring a feature done
Audits a branch or feature for shippability. Done / missing / blocked checklist covering golden path, error UI, loading states, empty states, destructive confirmations, hygiene.
triggers: "what edge cases am I missing", "untested paths"
Identifies untested branches, edge cases, and failure paths in a module or feature. Returns a list of missing test cases with rationale - does not write tests unless explicitly asked.
triggers: before a release, after a large refactor, onboarding to unfamiliar code
End-to-end sweep over a module, feature, or subsystem. Reads everything carefully, reports surprises as solid / fragile / worth fixing now / file for later.
triggers: "ready to pr", "pr check", "is this ready for review"
Pre-PR audit: lint, typecheck, tests, plus a short diff-readiness pass. Auto-detects the project's test/lint commands from package.json. Outputs a PR-ready/blocked checklist with file:line for each blocker.
triggers: "address all of these", "do them all", "fix everything", "work the list"
Implements every actionable item from the most recent enumerated list the agent surfaced - punch list, findings, action items, TODOs. Works the list end to end without per-item confirmations.
triggers: "what yaw mode am I in", "verify the overlay is active"
Inspects Yaw Mode state in the current Claude Code session. Reports mode (off / augment / fresh), model, effort tier, and how to change them.
triggers: "snapshot this session", "save state for tomorrow", "handoff"
Snapshots the current session for resume in a fresh tab tomorrow. Captures cwd, branch, recent commits, files touched, pending tasks, open decisions, and a one-line next step. Saves to ~/.claude/handoffs/ and echoes to stdout.
triggers: "am i throttled", "are we rate limited", "should i switch tier"
Reports current Claude backend (Anthropic-direct vs typed.cloud), model, effort tier, and whether the session is currently being rate-limited. Recommends tier drops per the throttle-recovery playbook when 429s are firing.
triggers: "how much did this session cost", "session cost breakdown", "token usage"
Per-session token and dollar breakdown. Parses the current session transcript, sums tokens by model, multiplies by current Anthropic published pricing, breaks out main vs sub-agents. On typed.cloud reports tokens-only.
triggers: "check memory links", "find broken memory links"
Scans memory bodies for [[link]] syntax pointing to nonexistent memory files. Proposes either backfilling a new memory at the target name or editing the link to a real target.
triggers: "prune my memories", "clean up memory", "garbage collect memory"
Scans the per-project memory dir for stale entries (broken file refs, way-out-of-date versions, contradicted by current commits) and proposes deletions. Never auto-deletes.
triggers: "explain rule X", "why does Y rule exist", "where did the Z rule come from"
Given a rule name or memory slug, explains what it means with concrete examples from recent git history. Helps you understand WHY a rule exists, not just WHAT it says.
triggers: "what corrections did i make", "where am i pushing back", "what should i add to my rules"
Scans recent session transcripts for friction signals (user corrections, "actually", "no, not that", name corrections) and proposes rule updates that would have prevented them.
triggers: "is my Yaw config healthy", "audit my session config", "what is stale"
Static-hygiene audit for Yaw Mode session state: stale memories, divergent configs, broken cross-references, orphaned skills/agents, settings drift. The companion to /yaw-tool-usage-audit.
triggers: "which MCPs am I skipping", "audit my tool usage", "run the tool routing audit"
Scans Claude Code transcripts to report which MCP servers earned their loadout vs were skipped via bash fallback. Computes per-server use rate (mcp_calls / (mcp_calls + eligible bash fallbacks)) over a time window.
triggers: "tune my bundle", "which mcps should i drop", "which mcps should i add"
Proposes Yaw MCP bundle drops/adds based on tool-usage data from /yaw-tool-usage-audit. Identifies servers with low use-rate (drop candidates) and install-candidates with high bash-fallback counts (add candidates). Outputs a sample updated bundle config.
triggers: "what skills am i missing", "what should i automate", "what would benefit from a skill"
Scans recent transcripts to identify repeated workflows that lack a skill. Clusters user prompts by topic, finds clusters with 3+ occurrences that don't fire any existing skill, proposes new skill names + trigger phrases.
triggers: "should i use an mcp for this", "is there an mcp for this", "is this a bash fallback"
Given a planned Bash command, checks if a loaded MCP server would do it better. References the bash-to-MCP rule table from /yaw-tool-usage-audit. Suggests the MCP equivalent if loaded, or the install package if not.
triggers: "scaffold a skill", "create skill", "make a new skill"
Scaffolder for new Yaw skills. Asks 3 questions (name, purpose, trigger phrases), writes a properly-formatted SKILL.md under ~/.claude/skills/ with the standard frontmatter and section scaffold.
triggers: "scaffold an agent", "create subagent", "new agent"
Scaffolder for custom Claude Code subagents. Creates ~/.claude/agents/ if missing, asks 3 questions (name, purpose, tool restrictions), writes <name>.md with proper YAML frontmatter and body scaffold.
Settings → Yaw Mode → toggle to Augment or Fresh. The bundle is downloaded on first use; subsequent sessions reuse the local copy. You can preview the merged CLAUDE.md from the same settings panel - useful for confirming what the model will actually see on its first turn.
Once it's on, the next Claude Code session you launch from any yaw pane inherits the overlay. Existing sessions are unaffected until you close and re-open them. Toggling back to Off reverts to vanilla Claude Code with no residue - the overlay directory was always temp-scoped to that session anyway.
To run Yaw Mode against typed.cloud instead of the Anthropic API: install the typed launcher (one curl), then enable Yaw Mode in Yaw Terminal. Each pane spawned via t or typed inherits the typed env vars; Yaw Mode picks them up automatically.
Yaw Mode is the shape you want if:
/yaw-implement, /yaw-review, /yaw-ship-ready available everywhere without installing them into every ~/.claude/skills/.It's not the shape you want if Claude Code's defaults already match the working style you want, or if you prefer to edit your own CLAUDE.md directly. Both are valid. Yaw Mode is a convenience, not a requirement.
The overlay mechanism is part of Yaw Terminal - the per-pane spawn that sets CLAUDE_CONFIG_DIR and creates the junctioned temp dir is a Yaw feature. The bundle itself (rules, skills, agents, hooks) is open and can be cloned into ~/.claude/ directly if you want them without the overlay - you just lose the "doesn't touch your real config" property.
Nothing. The transcript directories (projects/, sessions/, plans/, file-history/) are junctions/symlinks into your real ~/.claude/, so writes during the session go straight to home. Teardown unlinks the junction points before any recursive delete, so the overlay's rm cannot reach the target directories even if Node's filesystem behavior changes. See the safety section.
Not via the overlay path. The canonical-source-gate.sh hook blocks Edit/Write to any yaw-mode-* tmpdir path and surfaces the canonical source location to retry at. Edit the canonical source under ~/.claude/skills/ or ~/.claude/agents/ directly. Inline # canonical-override bypasses the gate when you're legitimately probing a skill in isolation.
No. The overlay is entirely local - the merged CLAUDE.md is constructed on disk in your tmp dir and read by Claude Code as part of its normal startup. Nothing about the bundle's installation or use phones home. See why your terminal shouldn't phone home for the broader Yaw Labs stance on telemetry.
No. Each pane gets a distinct tmpdir namespaced by process id + pty id. The previously-known race - four concurrent overlays exiting in quick succession losing all but one's new project entries on sync-back - was fixed by switching to an additive merge for the sync-back guard. See the safety section.
The overlay spawn is a Yaw Terminal feature. If you want the bundle's rules and skills in a non-Yaw context, clone them into ~/.claude/ directly and skip the overlay - you'll lose the per-session isolation but the content is the same.
Published by Yaw Labs.