← Blog · 2026-10-15
A Claude Code Skill for the Retainer Report You Keep Putting Off (and the Renewal You Keep Forgetting)
Want to build your own skill like this? Try the free SKILL.md builder: fill in a form and copy a ready-to-save SKILL.md, all in your browser.
Retainers are the best deal in solo consulting: predictable money, clients you already like, no proposal every month. They also come with two chores that quietly cost you money.
The first is the monthly report. Somewhere around the 2nd of the month you open last month's notes, try to remember what you actually did for the client, add up hours from three places, and write something that sounds like progress. It takes an hour you can't bill, so it slips to the 9th. The client doesn't complain. They just start wondering what they're paying for.
The second is the renewal. Your contract says 30 days' notice. You remember that 12 days before the end date, which means the rate increase you've been meaning to make has to wait another year, or turns into an awkward "would you be open to..." email.
Both chores are mostly reading files and doing arithmetic, which is exactly the kind of work Claude Code is good at when you give it clear rules. Here's how I'd set it up.
The setup: plain files, one folder per client
Claude Code works on files in a folder you control, and it picks up skills (a folder with a SKILL.md file) from .claude/skills/. For retainers you need three small files:
business/retainers.md <- one row per retainer
clients/lumen-agency/hours.md <- this month's hours log
clients/lumen-agency/log.md <- one dated line per thing that happened
retainers.md is a markdown table:
| client | monthly_fee | currency | hours_month | rollover | start | end | notice_days | auto_renew | status |
|---|---|---|---|---|---|---|---|---|---|
| lumen-agency | 1500 | USD | 8 | max 4h, 1 month | 2026-01-01 | 2026-12-31 | 30 | no | active |
The log is the part people skip, and it's the part that makes the report write itself. One line whenever something happens: 2026-10-09 | onboarding checklist live in ClickUp. If a client says something nice in a meeting, paste the exact sentence in. That quote will do more in your report than anything you write about yourself.
Skill 1: the monthly report
The report people actually read has the same shape every month:
- Results first. Two to four changes for the client: something went live, got faster, got fixed, got decided. Not "attended weekly call."
- Work done as evidence. Short bullets grouped by theme. Not a timesheet.
- Hours, with the math shown. Allocated, rolled over, used, remaining or over.
- Next month. Three to five items.
- Exactly one ask. A decision, an access request, a number you need. One.
The skill is mostly that list plus a few rules. A trimmed version:
---
name: retainer-report
description: Write a client-facing monthly retainer report plus a short cover email draft. Use when the user says "monthly report", "retainer report", or "write the October report for <client>".
---
# Retainer report
Run `date +%F` first. Read the client's log.md, meetings/, hours.md,
their row in business/retainers.md and business/rates.md.
Hours math (show it every time):
available = hours_month + rollover_in; used = sum of the month's hours
(write the sum out); remaining = available - used. If negative, overage
= hours over x hourly rate, and ask whether to bill or absorb it.
Results come first and each one points to a log date or meeting file.
Never estimate a metric. If a number isn't in the files, write [ASK: ...].
Exactly one client ask. Under one page.
Save to clients/<slug>/reports/YYYY-MM.md and a cover email under
120 words to clients/<slug>/drafts/. Never send email.
Three rules do most of the work:
- "Never estimate a metric." Left alone, a model will happily write "reduced onboarding time by 40%" because it sounds like a report. If the number isn't in your files, the skill writes
[ASK: how many new clients went through the checklist?]and you fill it in. A report with one honest placeholder beats a report with a made-up stat your client repeats to their boss. - "Show the hours math."
8 + 1.5 rolled over = 9.5 available; 10.0 used; 0.5 over = $75 at $150/h.When the arithmetic is on the page, you catch mistakes before the client does. - "Exactly one ask." Reports that end with five questions get zero answers. One ask gets answered.
In practice you open a terminal in the folder, run claude, and type "Write the October report for Lumen." You get a draft report and a cover email in the client's folder, plus a list of every [ASK] it couldn't answer from the files. You fix those, read it once, and send it yourself.
Skill 2: renewals before the notice date
The renewal problem is pure date arithmetic, which is why it's so easy to get wrong in your head and so easy to get right in a file.
For every active retainer the skill computes two numbers:
- days until the end date:
2026-12-31 - 2026-11-02 = 59 days - the notice deadline:
end - notice_days, so2026-12-31 - 30 days = 2026-12-01
Then it sorts everything ending in the next 90 days, flags anything whose notice deadline is within two weeks, and says plainly when a deadline has already passed. That last flag matters: once the notice date is gone, a rate increase isn't something you announce anymore, it's something you negotiate.
When you ask it to "draft the renewal for Lumen," it reads your last few reports and your rates file and writes a short note with three options (expand, renew as is, step down), priced only from tiers that exist in rates.md. It recommends one, with a reason taken from the numbers.
Make "Which retainers are up for renewal?" the first thing you type on the 1st of every month, and notice dates stop sneaking up on you.
Why drafts only
Every one of these outputs touches a client relationship, so none of them get sent by the AI. The skills write files; you read and send. If you want that enforced rather than just requested, a Claude Code hook can block send commands from the terminal entirely.
Want the files?
If you'd rather not build this from scratch:
- Free 3-skill sample — client follow-ups, meeting-to-tasks and invoice chase
- Solo Consultant Kit ($29) — 8 skills, 12 CLAUDE.md practice templates, safety hooks
- Solo Retainer Pack ($15) — the two retainer skills from this post, templates, and example outputs
Or take the rules above and write your own. The format matters more than the wording.
More free Claude Code workflows: Solo Stack Kits Directory
Disclosure: I make Solo Stack Kits. The sample is free; paid kits are optional.
Not affiliated with Anthropic. "Claude" is a trademark of Anthropic.