Files
stack/packages/mosaic/framework/runtime/claude/RUNTIME.md
jason.woltje 59b611ba8a
Some checks failed
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
refactor(framework): thin-core prompt diet — cut injected contract ~53% (#529)
2026-06-11 18:10:42 +00:00

2.9 KiB

Claude Runtime Reference

Claude-runtime behavior only. Global rules win if anything here conflicts.

Required Actions

  1. Follow the Session Start load order in ~/.config/mosaic/AGENTS.md.
  2. Runtime config lives in ~/.claude/settings.json (hooks, model, plugins, permissions) and ~/.claude/hooks-config.json.
  3. sequential-thinking MCP is required.
  4. First response MUST declare mode per the global contract.
  5. Git wrappers first for issue/PR/milestone ops; runtime-default confirmation prompts do NOT override Mosaic hard gates (push/merge/issue-close without routine confirmation).

Subagent Model Selection (Claude Code syntax)

The Task tool takes model: "haiku" | "sonnet" | "opus". You MUST set it per the tier rule in AGENTS.md — omitting it defaults to the parent (usually opus) and wastes budget.

Task(subagent_type="Explore", model="haiku", prompt="Find all API route handlers")
Task(subagent_type="feature-dev:code-reviewer", model="sonnet", prompt="Review src/auth/ changes")
Task(subagent_type="Plan", model="opus", prompt="Design the multi-tenant isolation strategy")

Memory Policy (Hard Gate)

OpenBrain is the primary cross-agent memory layer — capture learnings/gotchas/decisions there (capture MCP tool or REST). ~/.claude/projects/*/memory/MEMORY.md is write-blocked by the prevent-memory-write.sh PreToolUse hook (the rule alone proved insufficient — the hook is the hard gate). At session start, search(topic) + recent() to load prior context. Full protocol: ~/.config/mosaic/guides/MEMORY.md.

Quick placement: discoveries/decisions → OpenBrain; active task state → docs/TASKS.md or docs/scratchpads/; Mosaic framework notes → ~/.config/mosaic/memory/.

MCP Configuration

MCP servers are configured in ~/.claude.json (key mcpServers) — NOT ~/.claude/settings.json, where that key is ignored. settings.json controls hooks/model/plugins/permissions.

claude mcp add --scope user --transport http <name> <url> --header "Authorization: Bearer <token>"
claude mcp add --scope user <name> -- npx -y <package>   # stdio

--scope user~/.claude.json (global); project.claude/settings.json; local (default) → not committed.

Required Settings (launcher-audited, advisory)

mosaic claude warns if ~/.claude/settings.json is missing these (session still launches):

  • Hooks — PreToolUse prevent-memory-write.sh (Write|Edit|MultiEdit); PostToolUse qa-hook-stdin.sh + typecheck-hook.sh (Edit|MultiEdit|Write).
  • Pluginsfeature-dev, pr-review-toolkit, code-review.
  • SettingsenableAllMcpTools: true; model: "opus" (orchestrator default; workers use tiered models via the Task model param).

Note: PostToolUse hook plain stdout on exit 0 goes to the debug log, not model context — only hookSpecificOutput.additionalContext (or exit-2 stderr) enters context.