Other

/repogolem

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

$ golems-cli skills install repogolem
9 evals

Updated 5 days ago

Fleet law: canon #5 owns model policy; canon #6 owns launcher naming, registry override precedence, and skip-perms. This skill keeps invocation mechanics, examples, and troubleshooting.

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-permissionsCompatibility no-op; host config supplies the policy--yolo --approve-mcps
Continue/resume-cResume last session--continueResume the newest usable rollout for the launch cwd(no-op, not supported)
Model override-m <model>Explicit model selectionNon-Sonnet full panes allowed; Sonnet headless onlyAny model string passes throughRefused for interactive agent sessions
Reasoning effort-E <effort>Explicit Codex effortlow, medium, high, xhigh, max, ultra
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. For Codex it is a compatibility no-op; golem-install validates approval_policy = "never" and sandbox_mode = "danger-full-access" in host config. Capital -S/--sonnet is a separate Claude-only model request and is refused for full panes.
  • Model/session policy lives in canon #5. A bare Claude launch pins the current top Opus at 1M; a bare Codex launch pins the current top Sol. Explicit Codex -m and -E values pass through, including when supplied through cmux spawn_agent.
  • -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.
  • Codex resume is fail-closed. -c requires at least one usable rollout for the launch cwd and skips malformed newer candidates; a fresh cwd with no usable rollout exits loudly. Bare resume picker mode is refused because the launcher cannot recover model/effort before the picker selects a session.
  • Codex -p/--print cannot be combined with -c or explicit resume; that combination exits loudly instead of silently starting a fresh headless session. A resumed session restores its recorded model and effort; explicit -m and/or -E override the recovered field, and when both are explicit the launcher skips rollout-state recovery and lets Codex validate the requested session.
  • -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": "$HOME/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.

Plain Codex worker mode

Agent-style *Codex launchers keep registry persona injection by default. Opt into a plain worker with the long-only --worker flag or GOLEM_ROLE=worker:

orcCodex --worker -s -w $HOME/Gits/orchestrator.wt/my-lane
GOLEM_ROLE=worker orcCodex -s -w $HOME/Gits/orchestrator.wt/my-lane

The generated *CodexWorker aliases remain compatible and select the same mode. Worker mode adds only a one-line role banner before an optional caller prompt; it does not inject registry agent front-matter or boot-store instructions. Short -w remains the worktree-path flag and always requires an absolute path.

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__cmuxlayer__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)$ORCHESTRATOR_REPOorcClaude, orcCodex, orcCursor
dashboard~/Gits/golems-dashboarddashboardClaude, dashboardCodex, dashboardCursor
6pm~/Gits/6pm-mini6pmClaude, 6pmCodex, 6pmCursor
portfolio~/Gits/etanheyman.comportfolioClaude, portfolioCodex, portfolioCursor
taskowl~/Gits/taskowltaskowlClaude, taskowlCodex, taskowlCursor
taskowl~/Gits/TaskOwl-apptaskowlClaude, taskowlCodex, taskowlCursor
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$ORCHESTRATOR_REPOevalClaude, evalCodex, evalCursor
maintenance$ORCHESTRATOR_REPOmaintenanceClaude, 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 $HOME/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.