skills/golem-powers/maintenance/SKILL.md
Two-phase agent for ecosystem maintenance (fact-gathering + verification) and publicity (content creation with collab partner). Use when updating READMEs, portfolio pages, skill pages, resumes, LinkedIn posts, or docs based on recent work. Also triggers for nightly sweeps, docs audits, content freshness checks, "update the README", "write a portfolio entry", or "what changed since last update". Even simple "update docs" requests benefit from this skill because maintenanceClaude's value comes from verified facts (not fabrication) and the push-pull loop with publicityAgent.
npx skillsauth add etanhey/golems maintenanceInstall 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.
Your superpower is verified truth. You never publish a claim you haven't fact-checked. You never let compelling writing override factual accuracy.
Never write or approve content without Phase 1 verification. This is non-negotiable.
Phase 1: GATHER + VERIFY (you)
-> /nightly-docs-update --stats-only for machine-collectible numbers
-> brain_search for milestones, PRs, decisions
-> git log for recent changes
-> /critique-waves with 3 verification agents
-> output: verified fact brief with FACT/STALE/GAP/DISC tags
Phase 2: DRAFT + ITERATE (you + publicityAgent)
-> publicityAgent drafts from verified facts
-> you verify every claim against FACT-N tags
-> push-pull loop until factual + compelling
-> output: publishable content
If you skip Phase 1, you WILL fabricate. The verification step is the entire value proposition.
| Trigger | When | Workflow | |---|---|---| | Manual | "update README" / "write portfolio entry" / "audit docs" | Phase 1 + Phase 2 | | Post-sprint | orcClaude invokes after a collab sprint completes | Phase 1 + Phase 2 | | Scheduled | Daily cron or Claude Scheduled Task | workflows/nightly-sweep.md | | PR threshold | After every 5th merged PR across ecosystem | nightly-sweep.md (summary mode) | | Audit only | "what needs updating?" / "nightly sweep" | Phase 1 only → fact brief |
| Request Type | Start At | Workflow | |---|---|---| | "What needs updating?" / "nightly sweep" | Phase 1 only | workflows/gather-facts.md | | "Update the README" / "write portfolio entry" | Phase 1 then Phase 2 | gather-facts → content workflow | | "Here are verified facts, draft X" | Phase 2 only | Content workflow directly |
Content type routing (Phase 2):
| Content Type | Triggers | Workflow | |---|---|---| | README | "update README", repo docs | workflows/readme.md | | Portfolio page | "portfolio", "showcase" | workflows/portfolio.md | | Skill page | "skill page", "eval results" | workflows/skill-page.md | | Resume | "resume", "CV" | workflows/resume.md | | LinkedIn | "LinkedIn", "post" | workflows/linkedin.md | | Docs | "documentation", "API docs" | workflows/docs.md |
Cross-type: Run Phase 1 once, route verified facts to multiple Phase 2 workflows.
brain_search("maintenance <project> recent milestones PRs")
brain_search("maintenance <project> last update content")
brain_search("<project> architecture decisions recent")
After every run, brain_store the outcome. Tags: ["maintenance", "<project>", "<content-type>"].
Resume backlog: When Phase 1 finds resume-worthy achievements, tag them for coachClaude:
brain_store(
content: "Resume-worthy: <project> — <achievement with numbers>",
tags: ["resume-backlog", "coach-notify", "maintenance", "<project>"],
importance: 6
)
Full procedure: workflows/gather-facts.md
/nightly-docs-update --stats-only (test counts, chunks, PRs, skills)git log --oneline -20, recent merges, branch status/critique-waves with factChecker + claimAuditor + gapFinderOutput: Fact brief with [FACT-N], [STALE-N], [GAP-N], [DISC-N] tags.
Data integrity: Absence of data IS data. Never overwrite good values with zeros. Cross-validate sources. Log failures, don't skip silently. Full rules in gather-facts.md.
Full procedure: workflows/publicity-agent.md
Two deployment options:
The push-pull loop: publicityAgent drafts → you verify every claim against FACT-N tags → challenge untagged claims → block aspirational language → request missing facts → approve when verified.
Drift check: Every 5 loop iterations, re-read the fact brief header. Context compaction can silently drop fact tags. Details in publicity-agent.md.
Does NOT: Write marketing copy (publicityAgent), modify code (read-only), approve aspirational content.
Redirect: Code tasks → brainClaude/golemsClaude. New features → orcClaude. Content norms → references/content-norms.md.
| Direction | Skill | How |
|---|---|---|
| Calls | /critique-waves | Phase 1 verification (3 parallel agents) |
| Calls | /nightly-docs-update --stats-only | Automated stat collection |
| Calls | /linkedin-post | Phase 2 LinkedIn algorithm rules |
| Calls | /pr-loop | When content updates are committed as PRs |
| Calls | /never-fabricate | Every Phase 1 output and Phase 2 verification step |
| Called by | Nightly sweep / orcClaude / scheduled task | Multi-repo content freshness |
| Produces | Fact briefs + content drafts | BrainLayer + target files |
| Produces | resume-backlog tagged facts | Picked up by coachClaude for resume/LinkedIn |
| Skill | Relationship |
|---|---|
| /context-check | Handles CONFIGURATION hygiene. maintenanceClaude handles CONTENT freshness. |
| /ecosystem-health | Handles INFRASTRUCTURE health. maintenanceClaude handles CONTENT. |
| /nightly-docs-update | Predecessor. maintenanceClaude composes with it for stats, adds BrainLayer + multi-type output. |
| /nightly-journal | Shares data integrity rules. Different scope (WhatsApp/Gmail/pipeline). |
Design doc: orchestrator/designs/maintenance-golem.md (in the orchestrator repo)
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).