What it is
The performance ledger for the project. Numerical context for whatever decisions the team is making.
Owner
Media (agent). Like health.md — overwritten, not appended.
Structure
- Frontmatter (cycle, agent, last updated)
- Latest Benchmarks table — current vs 30d avg vs target/benchmark
- Last 30 Days table — spend, conversions, CPA, CTR, CVR per platform
- Benchmarks table — current vs PD benchmark, with status flags
- Historical Performance — past audit periods, prior cycles, key creative wins
- Best Performing Formats (reference)
- Conversion Tracking — how conversions are defined
- Trends — narrative patterns over time
- Recoverable Spend (where applicable)
Real example — SHAPE TCOL Sales
Elmwood doesn't have a populated performance.md yet. SHAPE TCOL Sales has the cleanest v2 example.
Latest benchmarks (Apr 1 – May 1, 2026):
| Platform | Spend | Conv | CPA | Clicks | Impr | CTR | CVR |
|---|---|---|---|---|---|---|---|
| Meta | $5,877 | 140 | $42.00 | 4,354 | 243,310 | 1.88% | 3.49% |
| $2,352 | 10 | $239.00 | 1,008 | 16,084 | 6.71% | 2.94% | |
| Total | $8,229 | ~150 | ~$55 |
Benchmarks vs PD targets:
| Metric | TCOL Sales | PD Benchmark (pre-sale) | Status |
|---|---|---|---|
| Meta CPA | $42 | ~$42 | On target |
| Google Search CPA | $239 | $38.58 | Critical |
| Google PMax CPA (90d) | $237 | $27.41 | Critical |
| Search CVR | 2.94% | 5.89% | Watch |
Historical context (90-day Google Ads audit, Jan 8 – Apr 8 2026):
| Metric | Value |
|---|---|
| Overall CPA | $273.90 |
| Search CPA | $250.22 |
| Search CVR | 0.91% |
| PMax CPA | $237.18 |
| Avg Quality Score | 3.5 / 10 |
| Zero-conv keyword spend | $8,700+ |
The pattern: numerical context for whatever decisions the team is making. If campaign.md says "we paused phrase match in March" — performance.md tells you whether that decision was right.
How this file gets updated
Managed exclusively by agents. /update-context rejects human writes to performance.md; manual edits get overwritten on the next agent run.
If you try to update it, the skill redirects you with a message like:
performance.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 |
|---|---|
| "Hue CPL spiked to $58 over the weekend" | campaign.md § Status Log — dated entry the agent reconciles on next pull |
| "Google Search CPA is 6× benchmark — needs attention" | campaign.md § Status Log + Open Flags. The agent updates performance.md + health.md on the next run |
| Weekly perf snapshot / monthly numbers | Don't manually paste into performance.md. Either run the media-agent or write the narrative-only takeaway in campaign.md § Status Log |
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.