Systems Lab

Agent skill

client-health-review

Sweep every client folder and report what needs attention — renewals inside 90 days, accounts in their first 90 days, missing success definitions, accounts with no QBR in two quarters, unfilled proof stubs, stale reviews, and referral-ready accounts.

activeSelf-containedActs undeclared1,109 words

Filed under Onboarding, retention and expansion.

From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21

What it does when it runs

Sweep every client folder and report what needs attention — renewals inside 90 days, accounts in their first 90 days, missing success definitions, accounts with no QBR in two quarters, unfilled proof stubs, stale reviews, and referral-ready accounts. Use for portfolio review, retention review, or before starting new prospecting.

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about client-health-review

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce
git -C /tmp/b2bforce sparse-checkout set ".agents/skills/client-health-review"
mkdir -p ~/.claude/skills/client-health-review
cp -R "/tmp/b2bforce/.agents/skills/client-health-review/." ~/.claude/skills/client-health-review/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/client-health-review/SKILL.md, which is licensed MIT (skill frontmatter). 1,109 words, 10 headings.

Client Health Review

The portfolio sweep. intel-weekly-report does this for competitors; this does it for the client base, which is where the revenue already is.

It exists for a specific reason: everything else in workspace/clients/ is per-client and therefore only runs when someone remembers an account. The account nobody remembers is the one that churns. Small firms carry roughly twice the annual churn of large ones, and the difference is not talent — it is that somebody's job is to look at the whole list on a schedule.

Read First

  1. Every workspace/clients/*/!_account.md.
  2. Each account's onboarding.md, account-plan.md, qbr/, and notes.md.
  3. workspace/firm/proof/ — which records are still empty stubs.
  4. workspace/sales/opportunities/*/outcome.md — wins with no client folder.

Start with the mechanical pass; it produces the structural facts without judgment:

scripts/validate-account.sh

When to Use

  • Monthly or quarterly portfolio review.
  • Before starting new prospecting. This is the renewal review rule in AGENTS.md: a renewal inside 60 days or an account with no QBR in two quarters gets surfaced before the firm spends effort on new logos. Acquisition is the expensive channel; running it while an existing account quietly lapses is the mistake this ordering prevents.
  • Anything about retention, churn risk, renewals, or where growth could come from.

Signals

Each row is a fact plus the skill that resolves it. Nothing here is a judgment call.

SignalConditionResolve with
Renewal approachingrenewal_date within 90 daysclient-qbr, then client-account-plan
In the danger windowstart_date within 90 daysclient-onboarding checkpoints
No success definitionactive account, no success_definitionclient-onboarding
Review overdueno qbr/ file in two quartersclient-qbr
Stale reviewreviewed_at older than 90 dayshuman review, then bump
Stale greenstale reviewed_at and health: greenhard failure — verify or downgrade
Gone quietlast_contact older than 6 weeks on an active accountcontact, then notes.md
Health declared without causehealth is amber/red, health_reason emptyfill the reason
Unfilled proof stubproof record exists with empty metricssales-outcome-log
Referral-readyreferenceable: true, no referral asked in the last two QBRsclient-qbr
Referral undecidedreferenceable: pending past day 90ask the client
Won, not onboardedoutcome.md with result: won, no client folderclient-onboarding
Single-threadedone named contact on an active accountclient-account-plan
Single-brand account (multi-brand only)brands lists one brand while a sibling brand has a service matching the client's profileclient-account-plan — cross-brand hypothesis

Stale green is the one to take seriously. A health: green last reviewed seven months ago is worse than no file at all, because a human will act on it. Unlike a competitor snapshot, nothing here refreshes itself — the file is only as true as the last person who touched it. Report stale green as a failure, not an item.

Workflow

  1. Run scripts/validate-account.sh for the structural pass.
  2. Walk every account folder and collect the signals above with dates.
  3. Group by what to do, not by client. A list organized by account produces reading; a list organized by action produces action.
  4. Compute the portfolio numbers from frontmatter only (below).
  5. Write the report.
  6. State the top three actions, with an account and an owner. Not ten.

Portfolio Numbers

Computable from !_account.md frontmatter. Report only what the files support, and mark the rest unknown — an estimated retention rate is worse than an absent one.

NumberHealthy
Active accounts, and how many are retainer vs projectProject engagements churn far harder
Accounts with a written success definition100%. The strongest leading indicator here.
Accounts with a QBR in the last two quarters100%
referenceable: true shareHigher performers sit near 80%
Accounts inside their first 90 daysWatch closely — this is where most churn happens
Renewals in the next 90 daysEach one needs a QBR first
Stale reviews, and stale greensStale greens should be zero

Do not compute NRR, churn rate, or logo retention here unless the firm records the inputs. If the firm wants those tracked over time, that is firm-pdca-setup with this report as the source of truth — not a number guessed once inside a report.

Output

workspace/clients/reports/{YYYY-MM-DD}-health.md

---
generated: 2026-12-01
accounts_active: 11
accounts_with_success_definition: 8
accounts_missing_qbr: 3
renewals_90d: 2
in_first_90_days: 1
stale_reviews: 4
stale_greens: 1
unfilled_proof_stubs: 3
referenceable: 5
---

Body: Do this first (three actions), Renewals and reviews, At risk, Referral and proof opportunities, Portfolio numbers, Data quality — the accounts whose files are too stale to trust, which is a finding about the firm's habits rather than about a client.

Rules

  1. Report only what the files say. Never infer that an account is healthy because nothing is recorded — that is the absence of data, not a green light.
  2. Never guess a renewal date, an MRR band, or a health colour.
  3. If most accounts are stale, lead with that. A report built on stale files is itself unreliable, and saying so is more useful than ranking fictional risk.
  4. Group by action. Cap "Do this first" at three.
  5. Do not write into client folders from here. This report reads and recommends; the per-client skills write.

Testing Requirements

  1. Run with no client folders; confirm it says the folder is empty and points to client-onboarding rather than producing an empty report.
  2. Create an account with health: green and reviewed_at six months old; confirm stale green is reported as a failure, and that validate-account.sh exits non-zero.
  3. Create a won outcome.md with no client folder; confirm it appears as "won, not onboarded".
  4. Create a proof record with empty metrics; confirm it appears as an unfilled stub.
  5. Confirm no portfolio number is reported that the frontmatter does not support.

Related Skills

SkillWhen
client-onboardingResolves missing accounts and missing success definitions
client-qbrResolves overdue reviews and upcoming renewals
client-account-planResolves single-threaded accounts before renewal
sales-outcome-logFills the proof stubs this report surfaces
firm-pdca-setupTurns these numbers into a tracked outcome over time
intel-weekly-reportThe same sweep pattern, for competitors

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what client-health-review does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.