skills/golem-powers/golem-install/SKILL.md
Set up the golems ecosystem for the first time on a new machine. Checks CLI dependencies, wires MCP servers, creates skill symlinks. Use when: "set up golems", "install golems", "new machine setup", "wire skills". NOT for daily usage.
npx skillsauth add etanhey/golems golem-installInstall 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.
First-time setup for the golems ecosystem on a new Mac. Checks deps, wires MCPs, symlinks skills.
| CLI | Purpose | Install |
|-----|---------|---------|
| gh | GitHub — PRs, issues | brew install gh |
| op | 1Password — secrets | brew install 1password-cli |
| bun | TypeScript runtime | curl -fsSL https://bun.sh/install \| bash |
| cr | CodeRabbit — code review | brew install coderabbitai/tap/cr |
| git | Version control | pre-installed on macOS |
| jq | JSON processing | brew install jq |
| fswatch | File watching | brew install fswatch |
# Check all at once
for cmd in gh op bun cr git jq fswatch; do
which $cmd >/dev/null 2>&1 && echo "✅ $cmd" || echo "❌ $cmd — needs install"
done
Skills live in ~/Gits/golems/skills/golem-powers/. The symlink target depends on which CLI you use:
| CLI | Skill directory | Notes |
|-----|----------------|-------|
| Claude Code (2.1.91+) | ~/.claude/skills/ | Primary. CC reads slash commands from here. |
| Claude Code (legacy) | ~/.claude/commands/ | Still watched for changes but NOT used for slash command autocomplete. |
| Codex | ~/.agents/skills/ | Codex reads from ~/.codex/skills/ → symlinked to ~/.agents/skills/ |
| Cursor / Gemini | ~/.agents/skills/ | |
# For Claude Code — install to BOTH skills/ (primary) and commands/ (legacy)
SKILLS_DIR=~/Gits/golems/skills/golem-powers
CC_SKILLS=~/.claude/skills
CC_COMMANDS=~/.claude/commands
mkdir -p "$CC_SKILLS" "$CC_COMMANDS"
for skill_dir in "$SKILLS_DIR"/*/; do
skill_name=$(basename "$skill_dir")
ln -sf "$skill_dir" "$CC_SKILLS/$skill_name"
ln -sf "$skill_dir" "$CC_COMMANDS/$skill_name"
echo "Linked: $skill_name"
done
# For Codex / Cursor / Gemini
AGENTS_DIR=~/.agents/skills
mkdir -p "$AGENTS_DIR"
for skill_dir in "$SKILLS_DIR"/*/; do
skill_name=$(basename "$skill_dir")
ln -sf "$skill_dir" "$AGENTS_DIR/$skill_name"
echo "Linked: $skill_name"
done
# Then wire Codex to read from ~/.agents/skills/:
# ln -sf ~/.agents/skills/<skill> ~/.codex/skills/<skill>
Verify Claude Code: ls ~/.claude/skills/ should show ~45 skills (and ls ~/.claude/commands/ for legacy).
Verify Codex/other: ls ~/.agents/skills/ should show the installed skills.
Wire these MCPs via ~/.mcp.json (at ~/Gits/ for cross-repo access):
| MCP | Binary | Purpose |
|-----|--------|---------|
| brainlayer | brainlayer-mcp | Memory search + store |
| voicelayer | voicelayer-mcp | TTS + STT |
| context7 | npx @upstash/context7-mcp | Library docs |
| supabase | via config | Database |
# Verify MCP binaries
which brainlayer-mcp || echo "Run: cd ~/Gits/brainlayer && bun link"
which voicelayer-mcp || echo "Run: cd ~/Gits/voicelayer && bun link"
Ensure ~/.claude/CLAUDE.md exists with global instructions. Template lives at:
~/Gits/orchestrator/standards/
| Item | Vault | Fields |
|------|-------|--------|
| golems | development | context7.API_KEY, linear.API_KEY |
| ANTHROPIC | development | API_KEY |
# Verify 1Password access
op item get "golems" --vault development --fields label=context7.API_KEY 2>/dev/null && echo "✅ 1P connected" || echo "❌ 1P not connected"
Native macOS terminal for running agents:
cd ~/Gits/golem-terminal && bash install.sh
Config lives at: ~/Library/Application Support/golem-terminal/golems.toml
echo "=== Golem Setup Validation ==="
echo "CLIs:"
for cmd in gh op bun cr git jq; do which $cmd >/dev/null 2>&1 && echo " ✅ $cmd" || echo " ❌ $cmd"; done
echo "Skills (Claude Code — ~/.claude/skills/):"
skill_count=$(ls ~/.claude/skills/ 2>/dev/null | wc -l | tr -d ' ')
[ "$skill_count" -gt "30" ] && echo " ✅ $skill_count skills in ~/.claude/skills/" || echo " ❌ Only $skill_count skills in ~/.claude/skills/ (expected 40+). Run the symlink step above."
echo "Skills (Codex/other — ~/.agents/skills/):"
agents_count=$(ls ~/.agents/skills/ 2>/dev/null | wc -l | tr -d ' ')
[ "$agents_count" -gt "5" ] && echo " ✅ $agents_count skills in ~/.agents/skills/" || echo " ⚠️ Only $agents_count skills in ~/.agents/skills/ (run setup-symlinks for your CLI)"
echo "MCPs:"
which brainlayer-mcp >/dev/null 2>&1 && echo " ✅ brainlayer-mcp" || echo " ❌ brainlayer-mcp"
which voicelayer-mcp >/dev/null 2>&1 && echo " ✅ voicelayer-mcp" || echo " ❌ voicelayer-mcp"
echo "=== Done ==="
Homebrew not installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
1Password CLI not connecting to app:
Skills not appearing in Claude Code (slash command autocomplete):
# CC 2.1.91+ reads from skills/, NOT commands/
ls ~/.claude/skills/
# If empty or missing skills, re-run the symlink step above
# If skills are in commands/ but not skills/, migrate:
for cmd in ~/.claude/commands/*/; do
name=$(basename "$cmd")
[ -e ~/.claude/skills/"$name" ] || ln -s "$(readlink "$cmd" 2>/dev/null || echo "$cmd")" ~/.claude/skills/"$name"
done
Skills not appearing in Codex:
ls ~/.agents/skills/
ls ~/.codex/skills/ # Should symlink into ~/.agents/skills/
# Re-run: ln -sf ~/.agents/skills/<skill> ~/.codex/skills/<skill>
brainlayer-mcp not found:
cd ~/Gits/brainlayer && bun install && bun link
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).