What it is
The campaign's live health monitor. Active flags, alerts, drift detection.
Owner
Ad Ops (agent). Durable items get promoted to CLAUDE.md Standing Rules. Episodic items are written by the monitoring agent and overwritten on the next run.
Structure
- Frontmatter (cycle, agent, last reviewed)
- Status banner (Healthy / Needs Attention / Critical)
- Active Flags — severity-coded, each with metric, context, actions taken, status, owner
- Known Context — durable patterns that affect interpretation of metrics
- Last Reviewed — dates of last audit / BQ pull
- Upcoming Watch Items
Real example — SHAPE TCOL Sales
Elmwood doesn't have a populated health.md yet (will regenerate on next campaign-director run). The pattern is best shown via SHAPE TCOL Sales:
## Status: Needs Attention (Google)
| Platform | CPA (last 30d) | Benchmark | Status |
|---|---|---|---|
| Meta | $42.00 | ~$42 (pre-sale) | On target |
| Google | $239.00 | $38.58 | 6× benchmark |
## Active Flags
### Critical — Google CPA
- CPA: $239 (last 30d) vs $38.58 PD Search benchmark
- Context: Apr 8, 2026 Google Ads audit identified $8,700+ over prior 90d
in zero-conversion keyword spend. Phrase match ($2,864 / 0 conv) and
Search Partners ($430 / 0 conv) flagged for pause.
- Actions taken: Keywords tightened Mar 2026. Broad + phrase match largely
paused.
- Outstanding: Verify pauses fully implemented. PMax under review.
- Recoverable: ~$4,000/month if remaining optimizations applied.
### Watch — Secondary CTA undefined
- Secondary CTA discussed in Mar 2026 meeting — no decision recorded yet.
- Confirm with SHAPE what secondary action should be tracked.
### Healthy — Meta performing
- Meta at $42 CPA — in line with pre-sale benchmark.
The pattern: agent-maintained, so the team always sees the current state without anyone manually keeping it fresh. If you ask "is this campaign in trouble?" — open health.md.
How this file gets updated
Managed exclusively by agents. /update-context rejects human writes to health.md; manual edits get overwritten on the next agent run.
If you try to update it, the skill redirects you with a message like:
health.md is agent-managed. Human edits get overwritten on the next agent run.
Your update sounds like a <classification>. Try:
- <suggested alternative file + section>
Common redirects
| What you tried to write | Where it actually belongs |
|---|---|
| "We have a tracking gap on Elmwood landing page" | CLAUDE.md § Standing Rules § Known Issues (if durable), or campaign.md § Status Log (if cycle-specific) |
| "Conversion event ELM_REG_COMP_RESI not firing" | campaign.md § Status Log — dated entry the agent picks up on next run |
| "Should this campaign be paused?" | Not a file write. Use the campaign-director agent to surface the flag, then promote durable items to CLAUDE.md |
No --force flag. No override. The agent owns this file. If the team needs to see something now, write it to campaign.md § Status Log and the agent picks it up.