skills/golem-powers/repogolem/SKILL.md
Launch agents in any repo via repoGolem launchers ({name}Claude, {name}Codex, {name}Cursor). Unified flags: -s skip, -c continue, -m model override (rare), -p scripted one-shot only (not agent sessions), -w worktree cwd. 40 projects registered. Triggers on: spawn agent, launcher, repoGolem, brainlayerClaude, flags.
npx skillsauth add etanhey/golems repogolemInstall 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.
Every project has launchers:
{name}Claude,{name}Codex,{name}Cursor,{name}Gemini,{name}Kiro. The launcher handles EVERYTHING: cd to repo, MCP wiring, secrets, iTerm profile, badge. You NEVER needsource ~/.zshrc && cd ~/Gits/X && claude -s. Just:brainlayerClaude -s.
| Flag | Short | What It Does | Claude | Codex | Cursor |
|------|-------|-------------|--------|-------|--------|
| Skip permissions | -s | Auto-approve tool calls | --dangerously-skip-permissions | --dangerously-bypass-approvals-and-sandbox | --yolo --approve-mcps |
| Continue/resume | -c | Resume last session | --continue | Resume last | (no-op, not supported) |
| Model override | -m <model> | ⛔ BANNED for agent sessions (2026-06-07 Etan order — see CRITICAL). Non-agent scripted one-shots only, Etan-asked | Model string | Codex model string | Cursor model string |
| Headless/print | -p "prompt" | Scripted one-shot only; NOT agent sessions or verification gates | --print -p "prompt" | Headless prompt | --print --output-format text |
| Worktree | -w <abs-path> | Launch from pre-created git worktree cwd | cd <path> | cd <path> | cd <path> |
CRITICAL:
-s = skip permissions. Capital -S/--sonnet = Sonnet model (separate flag, Claude only)-m to a launcher for an agent session — not even -m opus. -m opus resolves to PLAIN Opus 4.8 (200K) and SILENTLY KILLS the 1M pin (live incident 2026-06-07: voicelayerClaude -s -m opus booted "Opus 4.8 · Claude Max" with no 1M context; Etan, verbatim: "some of y'all just send the -M opus instead of just letting it spawn as the default, which is opus with 1 million. I fucking want this fixed now"). The BARE launcher IS the model policy. Same law as spawn_agent's model-param ban (#478) — this closes the launcher-flag half.spawn_agent; use repoGolem launchers as-is unless Etan explicitly asks for a model change.claude-opus-4-8[1m]) by DEFAULT — they boot on the 1M model without a manual /model flip. Post-boot verify: the status bar must read "Opus 4.8 (1M context)" — plain "Opus 4.8" means the pin was lost; kill and respawn bare.-p is NOT for agent sessions or verification gates. Open scope: it may survive for non-agent scripted one-shots; confirm with Etan before using it in automation.-c on Cursor is a no-op (not supported yet){projectName}{CLI}
Examples:
brainlayerClaude brainlayerCodex brainlayerCursor
golemsClaude golemsCodex golemsCursor
orcClaude orcCodex orcCursor
6pmClaude 6pmCodex 6pmCursor
dashboardClaude dashboardCodex dashboardCursor
The name is the project key from ~/.config/ralphtools/registry.json, lowercased.
Registry entries can include an agent field:
{
"yash": {
"path": "/Users/etanheyman/Gits/golems",
"agent": "yash",
"clis": ["claude", "codex", "cursor", "gemini", "kiro"]
}
}
Claude launchers pass this through as --agent <name>.
Codex, Cursor, Gemini, and Kiro do not read Claude Agent SDK files directly, so repoGolem reads ~/.claude/agents/<name>.md and injects it as the launcher's initial prompt.
It preserves the frontmatter initialPrompt block when present, strips the rest of the YAML metadata, then appends the Markdown body.
This is intentional: yashCodex, yashCursor, yashGemini, and yashKiro should inherit the same agent protocol instead of acting like generic shells in the project directory.
repoGolem launcher names are generated from the registry key, not the raw repo folder name. If a repo name contains hyphens, the launcher drops them:
repo: skill-creator
wrong launcher guess: skill-creatorClaude
actual launcher: skillcreatorClaude
This matters when another tool tries to build a launcher name from repo directly. Known live failure: mcp__cmux__spawn_agent({repo:"skill-creator", cli:"claude"}) guessed skill-creatorClaude, hit zsh: command not found, and left the agent stuck at booting.
Before relying on a generated launcher for a new repo, verify the real launcher first:
which skillcreatorClaude
which skillcreatorCodex
which skillcreatorCursor
If the launcher guess is wrong, use the verified repoGolem launcher manually until cmuxlayer normalizes repo -> launcher with the same hyphen-stripping rule.
| Project | Path | Launchers | |---------|------|-----------| | golems | ~/Gits/golems | golemsClaude, golemsCodex, golemsCursor | | brainlayer | ~/Gits/brainlayer | brainlayerClaude, brainlayerCodex, brainlayerCursor | | voicelayer | ~/Gits/voicelayer | voicelayerClaude, voicelayerCodex, voicelayerCursor | | orc (orchestrator) | ~/Gits/orchestrator | orcClaude, orcCodex, orcCursor | | dashboard | ~/Gits/golems-dashboard | dashboardClaude, dashboardCodex, dashboardCursor | | 6pm | ~/Gits/6pm-mini | 6pmClaude, 6pmCodex, 6pmCursor | | portfolio | ~/Gits/etanheyman.com | portfolioClaude, portfolioCodex, portfolioCursor | | domica | ~/Gits/domica | domicaClaude, domicaCodex, domicaCursor | | mehayom | ~/Gits/Mehayom-app | mehayomClaude, mehayomCodex, mehayomCursor | | cmuxlayer | ~/Gits/cmuxlayer | cmuxlayerClaude, cmuxlayerCodex, cmuxlayerCursor | | mcplayer | ~/Gits/mcplayer | mcplayerClaude, mcplayerCodex, mcplayerCursor | | metacomlayer | ~/Gits/metacomlayer | metacomlayerClaude, metacomlayerCodex, metacomlayerCursor | | qwan | ~/Gits/qwan-drill | qwanClaude, qwanCodex, qwanCursor | | coach | ~/Gits/golems/packages/coach | coachClaude, coachCodex, coachCursor | | jobs | ~/Gits/golems/packages/jobs | jobsClaude, jobsCodex, jobsCursor | | content | ~/Gits/golems/packages/content | contentClaude, contentCodex, contentCursor | | services | ~/Gits/golems/packages/services | servicesClaude, servicesCodex, servicesCursor | | skills | ~/Gits/golems | skillsClaude, skillsCodex, skillsCursor | | eval | ~/Gits/orchestrator | evalClaude, evalCodex, evalCursor | | maintenance | ~/Gits/orchestrator | maintenanceClaude, maintenanceCodex, maintenanceCursor | | recruiter | ~/Gits/recruiterGolem | recruiterClaude, recruiterCodex, recruiterCursor | | teller | ~/Gits/tellerGolem | tellerClaude, tellerCodex, tellerCursor | | monitor | ~/Gits/monitorGolem | monitorClaude, monitorCodex, monitorCursor | | rudy | ~/Gits/rudy-monorepo | rudyClaude, rudyCodex, rudyCursor | | songscript | ~/Gits/songscript | songscriptClaude, songscriptCodex, songscriptCursor | | union | ~/Gits/union | unionClaude, unionCodex, unionCursor | | ralph | ~/.config/ralph | ralphClaude, ralphCodex, ralphCursor | | taba | ~/Gits/taba | tabaClaude, tabaCodex, tabaCursor | | project2 | ~/Desktop | project2Claude, project2Codex, project2Cursor | | maakaf | ~/Gits/maakaf_home | maakafClaude, maakafCodex, maakafCursor |
brainlayerClaude -s # Claude in brainlayer repo, skip-permissions
orcCodex -s # Codex in orchestrator repo, skip-permissions
golemsCursor -s # Cursor in golems repo, skip-permissions
brainlayerClaude -s -c # Resume last Claude session in brainlayer
orcClaude --resume # Session picker for orchestrator
# Create the worktree FIRST — bare names fail silently
git -C ~/Gits/golems worktree add ~/Gits/golems.wt/my-task -b feat/my-task origin/master
golemsCodex -s -w /Users/etanheyman/Gits/golems.wt/my-task
mcplayerCodex -s -w /tmp/mcplayer-gen10-track
metacomlayerClaude -s -w /tmp/metacomlayer-gen10-track
The launcher consumes -w/--worktree, cds to the literal argument, and does
not pass --worktree to the underlying CLI.
-w contract (gen-12 weave E16): the path must be a pre-created absolute
worktree directory that already exists on disk. The launcher does NOT resolve
bare names, create worktrees, or fall back to the main checkout.
WRONG: golemsCodex -s -w weave-edits-a
→ _golem_launch_codex:cd:22: no such file or directory: weave-edits-a
→ 120s boot-timeout waiting for a pane that never started (ea8514a2:[643])
RIGHT: git worktree add … then golemsCodex -s -w /Users/etanheyman/Gits/golems.wt/weave-edits-a
Alternative fix (not shipped here): teach the launcher to resolve/create worktree paths from bare names — until then, briefs must inline absolute verified paths.
brainlayerCursor -s -p "Audit all .py files for stubs"
# → runs cursor agent --yolo --approve-mcps --print --output-format text "prompt"
Do not use this form for workers, leads, or verification gates. Those are interactive repoGolem launcher sessions (brainlayerCursor -s, then send the prompt). Whether -p should remain for non-agent scripted one-shots is an open scope question for Etan; keep the flag documented, but do not apply it to agent sessions.
orcClaude -s # Default: Opus 4.8 1M-context (claude-opus-4-8[1m])
brainlayerClaude -s -S # Sonnet shortcut
# ⛔ -m EXAMPLES REMOVED (2026-06-07 Etan order): NEVER pass -m for agent sessions.
# `-m opus` boots PLAIN 200K Opus and silently kills the 1M pin. Bare launcher = the policy.
brainlayerClaude -s # CORRECT: bare launcher boots the pinned Opus 4.8 (1M context)
Launcher enforcement refuses -m/--model on {repo}Claude, {repo}Codex,
and {repo}Cursor agent sessions. -p scripted one-shots may still pass a
model because they are not worker/lead sessions. For scripted automation that
intentionally needs an interactive override, set REPOGOLEM_ALLOW_MODEL=1 in
that command's environment and document why the bare launcher law does not
apply.
spawn_agent({ repo: "brainlayer", cli: "codex", prompt: "Fix the FTS5 sync issue in search.py" })
→ returns agent_id
wait_for({ agent_id, target_state: "ready", timeout_ms: 120000 })
send_to_agent({ agent_id, text: "Keep the fix narrow and cite the changed file", press_enter: true })
Do not include a model field in spawn_agent. repoGolem launchers are the model source; stale model strings silently downgrade or mislabel live panes.
NEVER do this:
# WRONG — raw CLI, no launcher
send_input(surface, "source ~/.zshrc && cd ~/Gits/brainlayer && codex --dangerously-bypass-approvals-and-sandbox")
.mcp.json from registry, merges with repo's .mcp.jsonralph-secrets.zshbrainlayer-p0-hybrid → project:"brainlayer-p0-hybrid")~/.config/ralphtools/registry.json:"myproject": {
"path": "/Users/etanheyman/Gits/myproject",
"displayName": "My Project",
"mcps": [],
"secrets": {},
"created": "2026-04-05T00:00:00Z",
"clis": ["claude", "codex", "cursor"]
}
_ralph_generate_launchers_from_registry
source ~/.config/ralphtools/launchers.zsh
which myprojectClaude should resolve.Example: adding cursor to all 27 projects (done April 4, 2026):
"cursor" to each project's clis array_ralph_generate_launchers_from_registrysource ~/.config/ralphtools/launchers.zshwhich brainlayerCursor for a few projects-s is a LAUNCHER flag, not a Claude CLI flag-s only works with repoGolem launchers (brainlayerClaude -s). When using raw claude --agent, you MUST spell out --dangerously-skip-permissions. Evidence: claude --agent skill-creator -s failed; had to use claude --agent skill-creator --dangerously-skip-permissions.
User correction: "Just use it with default; no need for the model flag." The launcher/default Codex model is fine for code tasks. Don't add -m unless specifically asked, and never pass a model field through cmux spawn_agent.
User complained when Cursor defaulted to a specific model instead of Auto. Don't override with --model for Cursor data-gathering tasks.
-p is NOT for agent sessionsFor interactive agents (monitored via cmux), launch WITHOUT -p: brainlayerCursor -s. Then send prompt separately. This includes verification gates. -p remains documented only for possible non-agent scripted one-shots; that scope needs Etan confirmation before automation depends on it.
| Problem | Fix |
|---------|-----|
| command not found: brainlayerClaude | source ~/.config/ralphtools/launchers.zsh |
| Launcher doesn't cd to repo | Check path in registry.json |
| MCP not available in session | Check mcps array in registry.json, regenerate |
| Wrong iTerm badge | Check emoji field in registry.json |
| No launcher for a repo | Add to registry.json, regenerate (see above) |
| --agent flag with -s | -s is a launcher flag, NOT a Claude flag. Use --dangerously-skip-permissions explicitly |
| -force error on Cursor | Use --force (double dash), not -force |
| Skill | How repoGolem Integrates |
|-------|-------------------------|
| /agent-routing | Routing says WHO (Cursor/Codex/Claude). repoGolem says HOW to launch them. |
| /cmux-agents | spawn_agent is the default visible-worker path; repoGolem still defines the launcher names underneath (R10) |
| /orc | R10 iron rule: "Use repoGolem launcher functions. ALWAYS. NEVER raw CLI." |
| /session-handoff | Agent resume table includes launcher commands for crash recovery |
~/.config/ralphtools/registry.json — project definitions, MCP configs, CLI lists
~/.config/ralphtools/lib/ralph-registry.zsh — generator (creates launcher functions)
~/.config/ralphtools/launchers.zsh — auto-generated launcher functions (source this)
tools
The human-eval UX contract for Phoenix views: turn-by-turn scrollable replay (not a scorecard), hide-but-copyable IDs, collapsed thinking, identity chips, tool filters, tiny frozen starter datasets, mark-wrong-in-thread, mobile-first. Use when: building or reviewing ANY Phoenix/eval view, annotation UI, session replay, or human-grading surface. Triggers: phoenix view, eval UI, annotation view, session replay, human eval UX, grading interface. NOT for: Phoenix data pipelines/ingest (capture scripts have their own specs).
tools
macOS systems specialist — AppKit NSPanel architecture, launchd services, socket activation, MCP bridge resilience, syspolicyd, and high-frequency SwiftUI dashboards. Use when building menu-bar apps, LaunchAgents, debugging syspolicyd/Gatekeeper/TCC, resilient UDS/MCP bridges, or SwiftUI dashboards at 10Hz+.
development
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Use when: dispatching or running judge workers (J1/J2/RT), planning bulk-apply from verdict JSONL, or triaging evidence_degraded outputs. Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for: single-item code review, Phoenix view UX (use phoenix-human-view), or non-judge eval pipelines.
development
Quiet-down protocol for sprint close: when the fleet wraps, delete ALL polling crons and monitors, send ONE final dashboard + ONE message, then go SILENT. Use when: fleet wraps, all workers done, overnight queue exhausted, sprint close, Etan asleep/away with nothing approved left. Triggers: fleet wrap, wrap the fleet, stand down, going quiet, sprint close. NOT for: mid-sprint monitoring (keep your loops), spawning a successor (use /session-handoff first).