Other

/repogolem

Launch repoGolem agents in any repo. Triggers: spawn agent, launcher, brainlayerClaude, flags -s/-c/-w.

$ golems-cli skills install repogolem
8 evals

Updated 6 days ago

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 need source ~/.zshrc && cd ~/Gits/X && claude -s. Just: brainlayerClaude -s.


UNIFIED FLAGS (same across ALL CLIs)

FlagShortWhat It DoesClaudeCodexCursor
Skip permissions-sAuto-approve tool calls--dangerously-skip-permissions--dangerously-bypass-approvals-and-sandbox--yolo --approve-mcps
Continue/resume-cResume last session--continueResume 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-askedModel stringCodex model stringCursor 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 cwdcd <path>cd <path>cd <path>

CRITICAL:

  • -s = skip permissions. Capital -S/--sonnet = Sonnet model (separate flag, Claude only)
  • ⛔ NEVER pass -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, paraphrased: "some of y'all just send -m opus instead of letting it spawn as the default, which is Opus with 1 million — I 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.
  • Launcher defaults are the authoritative model source for agent sessions. Never pass model params through cmux spawn_agent; use repoGolem launchers as-is unless Etan explicitly asks for a model change.
  • Claude launchers pin Opus 4.8 1M-context (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)

LAUNCHER NAME PATTERN

{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.

Agent-style projects

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.

WARNING — launcher names strip hyphens from repo names

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.


KEY REGISTERED PROJECTS

ProjectPathLaunchers
golems~/Gits/golemsgolemsClaude, golemsCodex, golemsCursor
brainlayer~/Gits/brainlayerbrainlayerClaude, brainlayerCodex, brainlayerCursor
voicelayer~/Gits/voicelayervoicelayerClaude, voicelayerCodex, voicelayerCursor
orc (orchestrator)~/Gits/orchestratororcClaude, orcCodex, orcCursor
dashboard~/Gits/golems-dashboarddashboardClaude, dashboardCodex, dashboardCursor
6pm~/Gits/6pm-mini6pmClaude, 6pmCodex, 6pmCursor
portfolio~/Gits/etanheyman.comportfolioClaude, portfolioCodex, portfolioCursor
domica~/Gits/domicadomicaClaude, domicaCodex, domicaCursor
mehayom~/Gits/Mehayom-appmehayomClaude, mehayomCodex, mehayomCursor
cmuxlayer~/Gits/cmuxlayercmuxlayerClaude, cmuxlayerCodex, cmuxlayerCursor
mcplayer~/Gits/mcplayermcplayerClaude, mcplayerCodex, mcplayerCursor
metacomlayer~/Gits/metacomlayermetacomlayerClaude, metacomlayerCodex, metacomlayerCursor
qwan~/Gits/qwan-drillqwanClaude, qwanCodex, qwanCursor
coach~/Gits/golems/packages/coachcoachClaude, coachCodex, coachCursor
jobs~/Gits/golems/packages/jobsjobsClaude, jobsCodex, jobsCursor
content~/Gits/golems/packages/contentcontentClaude, contentCodex, contentCursor
services~/Gits/golems/packages/servicesservicesClaude, servicesCodex, servicesCursor
skills~/Gits/golemsskillsClaude, skillsCodex, skillsCursor
eval~/Gits/orchestratorevalClaude, evalCodex, evalCursor
maintenance~/Gits/orchestratormaintenanceClaude, maintenanceCodex, maintenanceCursor
recruiter~/Gits/recruiterGolemrecruiterClaude, recruiterCodex, recruiterCursor
teller~/Gits/tellerGolemtellerClaude, tellerCodex, tellerCursor
monitor~/Gits/monitorGolemmonitorClaude, monitorCodex, monitorCursor
rudy~/Gits/rudy-monoreporudyClaude, rudyCodex, rudyCursor
songscript~/Gits/songscriptsongscriptClaude, songscriptCodex, songscriptCursor
union~/Gits/unionunionClaude, unionCodex, unionCursor
ralph~/.config/ralphralphClaude, ralphCodex, ralphCursor
taba~/Gits/tabatabaClaude, tabaCodex, tabaCursor
project2~/Desktopproject2Claude, project2Codex, project2Cursor
maakaf~/Gits/maakaf_homemaakafClaude, maakafCodex, maakafCursor

brainlayer topology — bare-mirror-style hub, main lives elsewhere (2026-06-07 weave E12)

~/Gits/brainlayer is the repo HUB, not the canonical main checkout: main is checked out at ~/Gits/brainlayer-prod (the prod/deploy worktree), and feature branches live in worktrees under ~/Gits/brainlayer/.worktrees/. Two rules:

  1. Briefs must PIN the exact worktree path (-w /Users/etanheyman/Gits/brainlayer/.worktrees/<task>). A brief that just says "brainlayer" leaves the worker guessing among three checkouts — live failure: worker's git status failed despite .git existing because the brief never pinned a path (bl-orqi-codex#2).
  2. Local merges fail there. Because main is held by brainlayer-prod, gh pr merge --delete-branch from any other checkout dies with 'main' is already used by worktree at '…/brainlayer-prod' — see /pr-loop "Worktree-Locked Local Merge" for the remote fallback.