Borrowing it
Nothing to install: this file belongs to Othmane-Khadri/gtm-engineer-playbook. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Othmane-Khadri/gtm-engineer-playbook/main/.claude/skills/gtm-playbook/crm-hygiene-scanner/SKILL.mdgit clone --depth 1 https://github.com/Othmane-Khadri/gtm-engineer-playbookWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/othmane-khadri/gtm-engineer-playbook/crm-hygiene-scanner)<a href="https://agentmods.dev/skills/othmane-khadri/gtm-engineer-playbook/crm-hygiene-scanner"><img src="https://agentmods.dev/badge/skills/othmane-khadri/gtm-engineer-playbook/crm-hygiene-scanner/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/othmane-khadri/gtm-engineer-playbook/crm-hygiene-scanner"><img src="https://agentmods.dev/badge/skills/othmane-khadri/gtm-engineer-playbook/crm-hygiene-scanner.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00066 | $0.04362 |
| Opus 5 | $0.00033 | $0.02181 |
| Sonnet 5 | $0.00013 | $0.00872 |
| Haiku 4.5 | $0.00007 | $0.00436 |
Grade A, and why
crm-hygiene-scanner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 433 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CRM Hygiene Scanner
Scan a CSV export of CRM data (contacts, companies, or deals), detect duplicates, flag stale records, measure data completeness, calculate an overall quality score, and produce a prioritized cleanup plan. This is a read-only audit — the original file is never modified.
Tools Used
- Read — load the CSV file and any existing hygiene reports
- Write — save the hygiene report to
docs/crm-hygiene-report.md - Bash — run Python one-liners for CSV parsing, fuzzy matching, and statistical analysis
- Glob — check for existing reports before overwriting
Methodology
Follow these steps in order. Do not skip steps. Do not fabricate data.
Step 1: Input
Ask the user for four pieces of information before proceeding:
To run the CRM hygiene scan, I need:
- CRM export file path — path to the CSV file on disk
- Data type — is this contacts, companies, or deals/opportunities?
- CRM system — which CRM did this come from? (HubSpot, Salesforce, Pipedrive, or other)
- Critical fields — which fields matter most for your business? (e.g., email, phone, company name, deal stage, last activity date, owner)
Wait for all four answers. Do not assume defaults.
Once the user responds, validate the CSV path exists using Read. If the file is not found, tell the user and ask for the correct path.
Step 2: Data Profiling
Read the CSV and build a profile of the dataset. Use Bash with Python one-liners for parsing.
Produce these metrics:
| Metric | How to Calculate |
|---|---|
| Total records | Row count (excluding header) |
| Column inventory | List every column name |
| Data types | Infer type per column: text, email, phone, date, number, boolean, URL |
| Fill rate per column | (non-empty cells / total rows) * 100 — report as percentage |
| Date range | Oldest and newest value across all date columns |
| Unique vs. total values | For each key field (email, company name, phone), count unique values vs. total rows |
| Row completeness | Average number of filled columns per row, as a percentage of total columns |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 433 lines · 66 tokens per session scan A 418c5154c7e2
crm-hygiene-scanner is a skill published in the GitHub repository Othmane-Khadri/gtm-engineer-playbook (56 stars, last pushed 5mo ago), licensed MIT. It adds 66 tokens to every session and 4,362 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
go-to-market-playbook
A reusable Go-to-Market strategy template for both B2B and B2C launches. Covers positioning, messaging, ICP definition, channel selection, and competitive analysis frameworks. By @WeiYipei.
adoption-leaderboard
Scores a rep's or a team's recent sales calls against a fixed set of five winning-behavior checklists (rapport, upsell signals, renewal risk, customer experience, value realization), then ranks reps lowest-adoption-first so the highest-leverage coaching targets lead. Use when running a team calibration, prepping 1:1…
challenger
Audits a B2B sales call transcript against the Challenger Sale framework (teach, tailor, take control, plus the commercial-teaching pitch arc), or sweeps a CRM export for deals with no teaching insight logged. Use when a rep leans on discovery-question skill but rarely brings a point of view, when prepping a rep for a…
champion-tracker
Tracks champion strength across a deal's call(s) — builds an action ledger, one row per named contact per cited quote, tagging each as either an act of internal selling (looping in a stakeholder, pushing back for the rep in a room the rep wasn't in) or mere positive sentiment (encouraging words, no action), then reads…
executive-briefing
Writes the short brief a rep sends upward out of one deal — to their own exec or the buyer's exec sponsor — covering deal snapshot, status, what's at risk, and the ask, each claim cited to a quote or a CSV column/cell. Use when someone who will never read the transcript needs to act on one deal, not a call-by-call…
faint
Audits a B2B sales call transcript against the FAINT qualification framework (Funds, Authority, Interest, Need, Timing), or sweeps a CRM export for deals missing FAINT fields. Use when a prospect hasn't articulated a clear need yet but shows financial capacity and curiosity, or when deciding whether a demand-driven…