Agent skill
problem-scan
Find problems that keep coming up and that nobody has written down, from bounded conversation, meeting, CRM, sales-engagement and support context the user selects, and hand the ones worth writing up to problem-statement pre-filled.
Filed under Calls, demos and discovery.
From sarahcallmesmadds/gtm-operator · 27 skills · 0 · pushed 2026-09-02
What it does when it runs
Find problems that keep coming up and that nobody has written down, from bounded conversation, meeting, CRM, sales-engagement and support context the user selects, and hand the ones worth writing up to problem-statement pre-filled. Use when the user says "what problems keep coming up", "scan for problems", "what's causing friction", "what should we be fixing", or before a planning cycle. Reads external sources only and writes nothing to Notion, not a row, not a draft.
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-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/sarahcallmesmadds/gtm-operator.git /tmp/gtm-operator git -C /tmp/gtm-operator sparse-checkout set "plugins/projects/skills/problem-scan" mkdir -p ~/.claude/skills/problem-scan cp -R "/tmp/gtm-operator/plugins/projects/skills/problem-scan/." ~/.claude/skills/problem-scan/
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 ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 27 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add sarahcallmesmadds/gtm-operator /plugin
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.
The skill
Source on GitHub ↗Reproduced in full from sarahcallmesmadds/gtm-operator/blob/a93c6e98a742d183823691197b8d9be9edd114c6/plugins/projects/skills/problem-scan/SKILL.md, which is licensed MIT (repository). 785 words, 6 headings.
problem-scan
Find the friction everybody works around and nobody has ever named.
The line this skill holds: it offers candidates and decides nothing. A
weak signal produces a line in a list that costs one "no", never a document.
problem-statement writes up a problem you already know about; this finds the
more common case, the one nobody has named, the same shape as
process:backfill applied to problems instead of process.
Step 1. Set the scope, and never widen it
Scope is the user's to set, and the defaults lean closed, the same rules as
process:backfill:
| Source | Packaged connectors | Rule |
|---|---|---|
| Internal conversations | Slack | Public channels are all or a named set. Direct messages are never all; the user names each conversation |
| Gmail | The authenticated user's own mailbox, with a date range | |
| Call recordings | Granola, Gong | One recorder per pass, named by the user |
| CRM | HubSpot, Salesforce | Name the providers, object families and account, deal, opportunity, case or project filters |
| Sales engagement | Outreach | Name the accounts, prospects, sequences, tasks or meetings to search |
| Customer support | Intercom, Pylon | Name the accounts, contacts, conversations or issues to search |
| Date range | Every source | Required for every source. There is no unbounded read |
When that recorder is Granola, use its meeting search and read tools inside the
approved date range. get_meeting_transcript is available only on paid Granola
plans, so fall back to the meeting notes or report the transcript as unread
when the tool is unavailable.
Gong's hosted MCP returns answers derived from calls and emails rather than raw transcript text. Use those answers as transcript-derived evidence and label them that way. If raw transcript text is required and no separate Gong API or export surface is connected, report it as unavailable rather than claiming it was read.
HubSpot, Salesforce, Outreach, Intercom and Pylon are used only to read context.
The same is true for Slack and Gmail. Some of these connectors also offer write
tools, but this skill never sends or drafts a message, changes a CRM record,
enrols a prospect, changes a sequence or task, updates or assigns a support
issue, adds a note, or changes an account or contact. Notion is not written by
this skill either; problem-statement holds the later approval and write gate.
An unavailable optional connector is listed under notReading, with the reason.
It never causes the scan to substitute a different source or silently widen the
sources that remain. Intercom currently supports US-hosted workspaces. Outreach
requires the organization's MCP server and an eligible licensed user. Pylon
requires OAuth and a Member or Admin seat.
Do not read outside what the user pointed at. Every candidate must say where it came from, down to the channel, the thread, or the meeting and date, and to the CRM, Outreach or support record when one contributed. This skill reads things people said and systems recorded rather than things written for the project record.
Step 2. Look for the two signals, and say which fired
Telling a recurring problem from a one-off complaint is the whole judgment:
- Different people describing the same friction. The strongest signal, and the one a single person cannot produce.
- The same person raising it repeatedly over time. Weaker on its own, because it can be one person's hobby horse, but strong when the gap between mentions is long.
A single complaint from one person on one day is not a candidate.
Step 3. Offer the list
One line per candidate: the problem, who described it, how often it came up, and where. Say which signal fired for each. The user picks the ones worth writing up.
Do not rank or prioritise them. Priority is set at the end of scope,
once effort is known, and guessing earlier is guessing.
Step 4. Hand the yeses to problem-statement
For each one the user picks, open problem-statement pre-filled: what is
happening, who described it, and the evidence lines with their sources. That
skill previews and writes; this one never does.
What this skill does not do
- Writes nothing to Notion. Not a row, not a draft. The handoff to
problem-statementis the only output. - Does not decide something is a problem. It offers candidates.
- Does not rank or prioritise. That is
scope's job, once effort is known. - Does not read outside the scope the user set, and never all DMs.
- Does not write to an external connector, even when that connector exposes write-capable tools.
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.
- market-scan by AIDevGTM · 278
- evening-scan by ekatasingh1107 · 2
- frontiergtm-scan by frontiergtm · 0
- distribution-competitive-scan by gogrowth-co · 0
Need help setting it up?
This page tells you what problem-scan 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.