# Caretaker

> Run the bounded harness caretaker — deterministic state gather (predictions, verifier gain, agent health, sensors, drift), then triage ONLY what's flagged under a hard authority boundary (files work, never ships changes). Triggers on /caretaker, "run the caretaker", "harness health check".

- Skill: `sethdford/caretaker` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sethdford/caretaker`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sethdford/caretaker/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: sethdford (https://skillmd.com/u/sethdford)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sethdford/caretaker

---


# /caretaker — bounded harness caretaker

Deterministic-first (LOOP pattern): all state gathering is compiled into a
script; the LLM reasons only about what's flagged.

## Step 1 — gather

```bash
~/.claude/scripts/caretaker-daily.sh
```

- **Exit 0**: output its one-liner verbatim and STOP. No further tool calls.
- **Exit 1**: triage the listed action items under the authority boundary.

## Authority boundary (hard rules)

The caretaker **files work, it never ships**:

MAY:
- Read anything under `~/.claude` (telemetry, rl, sensor-triage notes, lessons-inbox)
- Run read-only diagnostics (`rg`, `git status/log`, `gh run view`, `launchctl print`)
- Assemble evidence for a WRONG prediction or degrading agent (≥2 items) into
  `~/.claude/rl/tuning-evidence.md` and recommend the exact `/tune-agent` or
  revert command
- Consolidate sensor-triage notes into one diagnosis
- Move processed tuning-evidence entries under a `## Processed <date>` heading
  (that ONE file is the only thing it edits)
- Post one notification: `osascript -e 'display notification "..." with title "caretaker"'`

MUST NEVER:
- Edit rules/, CLAUDE.md, agents/, skills/, hooks/, settings, or any code
- Promote candidates, apply mining patches, or run /tune-agent itself
- Restart services, push git, delete files, spawn agent fleets
- Exceed ~20 tool calls; if triage is bigger, say so and stop

## Interpretation guidance

- A cost anomaly on a day of heavy interactive use is *expected* — flag it
  prominently only if cache hit rate also fell below 85%.
- One sensor anomaly = read its triage note; repeated anomalies from the same
  sensor within the cooldown window = the underlying issue persists, escalate
  in the notification.
- A degrading agent needs ≥2 concrete evidence items before it becomes a
  `/tune-agent` recommendation (one bad day is noise).
- A **starving loop** item (from `check-loop-liveness.sh`) means a closed
  loop's *output artifact* is stale/missing even though its process may be
  ticking — the highest-severity class here, because it is invisible in
  normal logs (2026-07 rating-drip outage: two weeks of healthy-looking
  ticks, zero delivered questions). Diagnose which stage of the loop starved
  (producer, transport, or consumer) and file the evidence + exact fix
  command; do NOT restart services yourself. A loop that is *intentionally*
  finished (e.g. rating sheet complete) is auto-exempted by the script — if
  it flags anyway, the exemption logic is the bug to report.

## Output

End with: what was found, what was filed where, and the exact next commands
for a human. One notification, no essays.

## Scheduling

Best run automatically once a day. Claude Code desktop: create a scheduled
task with this skill as the prompt (see `templates/caretaker-scheduled-task.md`
in the claude-agent-os repo). Headless: cron a budget-capped session:

```cron
47 6 * * * ~/.local/bin/claude -p --max-budget-usd 2 --max-turns 25 "/caretaker"
```

