skills/golem-powers/_archive/nightly-docs-update/SKILL.md
Automated sync between golems repo stats and etanheyman.com portfolio site. Collects package count, test count, skill count, BrainLayer chunk count, and PR count, then updates hardcoded numbers across portfolio files and detects dead references to removed packages. Use when: stats are stale, after merging significant PRs, nightly scheduled runs, or when someone says docs numbers look wrong. NOT for: editorial content rewrites or adding new portfolio sections.
npx skillsauth add etanhey/golems nightly-docs-updateInstall 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.
Keeps etanheyman.com/golems in sync with the actual golems repo state. Runs stats collection, updates hardcoded numbers, detects dead references, and creates a PR.
~/Gits/golems exists and is a git repo~/Gits/etanheyman.com exists and is a git repogh CLI authenticatedsqlite3 available (for BrainLayer chunk count)~/.local/share/zikaron/zikaron.dbThe scripts/default.sh script runs in two phases:
| Stat | Source | Command |
|------|--------|---------|
| Package count | ls packages/ | ls ~/Gits/golems/packages/ \| wc -l |
| Package list | ls packages/ | ls ~/Gits/golems/packages/ |
| Test count | bun test | bun test --reporter=summary 2>&1 \| grep -E 'pass\|fail' |
| Skill count | ls skills/ | ls ~/Gits/golems/skills/golem-powers/ \| wc -l |
| Skill eval coverage | evals.json | Count dirs with evals/evals.json |
| BrainLayer chunks | SQLite | sqlite3 ~/.local/share/zikaron/zikaron.db 'SELECT COUNT(*) FROM chunks' |
| PRs merged | GitHub API | gh pr list -R EtanHey/golems --state merged --limit 999 \| wc -l |
| MCP servers | .mcp.json | Count active servers |
Stats are written to a temp JSON for the update phase.
| Target File | What Changes |
|-------------|-------------|
| golems-stats.json | Full stats regeneration |
| project-showcase-config.ts | Package count, PR count, skill count, chunk count |
| terminal-showcase-config.ts | BrainLayer chunk numbers in terminal demo |
| content/golems/architecture.md | Package count in description |
| content/golems/getting-started.md | Monorepo tree, skill count, chunk count |
| content/golems/faq.md | Chunk count references |
| content/golems/zikaron.md | Chunk count references |
| content/golems/llm.md | Chunk count, skill count |
| content/golems/mcp-tools.md | Chunk count references |
| content/golems/journey.md | Chunk count references |
The script scans for references to packages that no longer exist:
| Dead Reference | What It Means |
|----------------|---------------|
| packages/autonomous/ | Removed — absorbed into services |
| packages/orchestrator/ | Removed — now external repo at ~/Gits/orchestrator |
| packages/dashboard/ | Renamed to packages/docsite/ |
| packages/ralph/ | Removed — ralph is now a skill + external repo |
| packages/zikaron/ | Removed — now standalone BrainLayer repo |
Dead refs are reported but not auto-fixed — they may be historically accurate (journey sections).
If any files changed:
chore/nightly-docs-YYYY-MM-DDIf no files changed: report "all stats current" and exit 0.
This is the full PRD of content that can drift. The script automates most of these.
ls packages/docsite not dashboard)--skip-tests flag to skip test counting@golems/services), manual invocation/pr-loop for the PR creation step (when run manually with --pr-loop)golems-stats.json consumed by etanheyman.com dashboard# Full run (collect + update + PR)
/nightly-docs-update
# Skip tests (faster, ~15s vs ~70s)
/nightly-docs-update --skip-tests
# Stats collection only (no file updates)
/nightly-docs-update --stats-only
# Detect dead refs only
/nightly-docs-update --dead-refs-only
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).