Agent skill
agency-signal-sourcer
Operational buying-signal engine for B2B service agencies (BIM/MEP, custom dev, GIS, AI/SaaS engineering outsourcing).
Filed under Prospecting and list building.
From victor-shulga/gtm-skills · 6 skill entries · 1 · pushed 2026-11-01
What it does when it runs
Operational buying-signal engine for B2B service agencies (BIM/MEP, custom dev, GIS, AI/SaaS engineering outsourcing). Answers the OPERATIONAL half of signal-based outbound: how to DETECT a signal (which tool, Clay credit cost), WHEN it expires (freshness and decay windows), how to SCORE and prioritise accounts (recency multipliers, multi-signal stacking, heat tiers with SLAs) and WHAT to do once it fires (signal-to-action plays). Use for: detecting buying signals, which tool finds which signal, Clay cost per signal, signal freshness / decay / timing, signal scoring, heat-tier SLAs, signal-to-action plays, visitor-tracking and intent tooling (RB2B, Trigify, Common Room, Bombora, Koala, Warmly, 6sense, with EU/GDPR and agency-budget caveats), or "how do we operationalise signal X". Pairs with the STRATEGY layer (which signal x ICP x offer to test). Do NOT use it to invent the signal list (hypo-generator's signals-catalog) or to write outreach copy (sequence-writer).
Automated analysis of the skill and the 6 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.
Ask about agency-signal-sourcer
Opens your assistant with this page's recorded context. Check the linked sources before relying on it.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/victor-shulga/gtm-skills.git /tmp/gtm-skills git -C /tmp/gtm-skills sparse-checkout set "agency-signal-sourcer" mkdir -p ~/.claude/skills/agency-signal-sourcer cp -R "/tmp/gtm-skills/agency-signal-sourcer/." ~/.claude/skills/agency-signal-sourcer/
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.
The skill
Source on GitHub ↗Reproduced in full from victor-shulga/gtm-skills/blob/b54c5a96b28ae57763237b7f66eeb281abf8dc19/agency-signal-sourcer/SKILL.md, which is licensed MIT (repository). 1,564 words, 8 headings.
Agency Signal Sourcer (operational layer)
Adapted from a public signal-sourcing playbook, re-pointed at B2B service agencies instead of US SaaS vendors.
This skill is the operational half of signal-based outbound. The strategic half (what to test)
already lives in Viktor's hypo-generator and hypothesis-builder — they compose (see Integration).
Setup (run once per session)
Resolve the install dir dynamically — never hardcode:
- Glob for
**/agency-signal-sourcer/SKILL.md - Its directory is
SKILL_BASE; resources are at{SKILL_BASE}/resources/...
Agency adaptation rules (apply to EVERYTHING below)
These override the source material, which was written for product/SaaS sellers:
- Signals ≠ Data Points (Viktor's core frame, shared with
hypo-generator/signals-catalog.md):- Dynamic signal = time-bound event, fires for ~3–5% of TAM → tells you WHEN to reach out.
- Static data point = a fact true for ~100% of TAM → tells you WHAT to say.
- A strong play = one dynamic/individual signal as the trigger + one static data point to adapt the message.
- Service-agency motion, not product motion. DROP or down-rank product-led signals that don't apply: product-usage spikes, free-trial signups, G2 head-to-head, Bombora topic surge, PLG cross-sell. KEEP the signals that fit agency selling: funding, hiring / hiring-surge, failed-hire, champion job change, new decision-maker (90-day window), tech-stack change, headcount growth, expansion/new-geo, product launch, event attendance, LinkedIn post engagement.
- EU/GDPR + geography reality. Many clients are EU/UA selling into US/UK/DACH. Person-level website ID (RB2B, Warmly de-anon) is US-only; in the EU only company-level IP ID is compliant. Flag this whenever recommending visitor tracking — never hand a client a US-only tool for an EU target list.
- Agency budget, not enterprise. Demote enterprise-intent tools (Bombora ~$30–100k/yr, 6sense ~$35–130k/yr, ZoomInfo ~$15–60k/yr) to "enterprise only — usually out of scope." The realistic agency stack is Clay + Serper/Claygent (0-credit detection first) + Trigify + RB2B-free + LinkedIn/Sales Nav.
- Benchmarks are directional, not promises. The source's 18–22% / 35–40% reply figures are self-cited by the playbook's author and optimistic. Treat as ceiling; reality is closer to the team's house benchmark (top reply ~10%+). Never quote 35–40% to a client as expected.
Routing Table
| Request | Load |
|---|---|
| Which tool detects signal X · Clay credit cost · 0-credit-first cost optimisation · 1st/2nd/3rd-party sources | {SKILL_BASE}/resources/detection-tools.md ⭐ |
| Signal freshness / decay / optimal outreach window / reliability tiers | {SKILL_BASE}/resources/detection-tools.md (same file) |
| Score & prioritise accounts: weights, recency multipliers, multi-signal stacking, heat tiers + SLAs | {SKILL_BASE}/resources/scoring.md (apply adaptation rule 2 — strip PLG rows) |
| Signal-to-action playbooks (day-by-day sequences, owner, escalation) | {SKILL_BASE}/resources/gtm-plays.md (use agency-relevant plays only) |
| Full trigger taxonomy + INBOUND/POSTBOUND/BRIDGEBOUND/OUTBOUND framing | {SKILL_BASE}/resources/taxonomy.md |
| Set up a signal tool (RB2B, Trigify, Common Room, Bombora…) | {SKILL_BASE}/resources/tool-setup-guides.md (apply GDPR + budget caveats) |
| Track champion/contact job changes in Clay (step-by-step) | {SKILL_BASE}/resources/job-change-tracking.md |
⭐ Integration with hypothesis generation (the answer to "can we use these together")
These skills form a pipeline. Keep the division of labour clean:
STRATEGY (what to test) OPERATIONS (how to source + act)
───────────────────────── ───────────────────────────────
hypo-generator agency-signal-sourcer (this skill)
· reads signals-catalog.md (the signal LIST) · detection-tools.md → HOW to detect each catalog signal,
· builds 10-hyp matrix: ICP × signal × offer which tool, Clay credit cost, freshness window
· scores w/ 5-factor trivial-trigger weight · scoring.md → once detected, SCORE & rank the accounts
hypothesis-builder · gtm-plays.md → the signal-to-action sequence to run
· persona × signal × angle backlog · tool-setup-guides.md → stand up the detection tool
How to run them together:
- Strategy first — run
hypo-generator(from client URL) orhypothesis-builder(from a known ICP+signal set) to pick which signal × ICP × offer hypotheses to test. The signal names come fromhypo-generator/signals-catalog.md, NOT from this skill. - Then operationalise here — for each chosen signal, use this skill to answer: which tool detects it, what it costs in Clay credits, how fresh it stays, how to score accounts that have it, and which GTM play to fire.
- Feedback loop — this skill's
taxonomy.md/detection-tools.mdcan also surface NEW signals worth adding tosignals-catalog.md. When you spot a catalog gap (a detectable trigger not yet listed with a trivial-trigger weight), flag it for Viktor to add — don't silently invent it inside a hypothesis.
Rule of thumb: if the question is "which signal should we bet on?" →
hypo-generator/hypothesis-builder. If it's "how do we actually find / score / act on this signal?" → this skill. If it's "we already have a base of accounts — go find who has a live signal right now" →signal-research, which executes this skill's method over a real list and returns an evidenced, dated, scored file + coverage report.
Hand-off — use the EXISTING skills for these (don't reinvent)
| Ask | Use |
|---|---|
| Pick which signal × ICP × offer to test (from a URL) | hypo-generator |
| Build a persona × signal × angle hypothesis matrix | hypothesis-builder |
| The canonical signal LIST with trivial-trigger weights | hypo-generator/signals-catalog.md |
| Map a single buyer signal to messaging | angle-finder (outbound-engine-skills) |
| Run Clay/LinkedIn signal detection on a company list | signal-research |
| Score leads (general lead scoring) | lead-scoring (outbound-engine-skills) |
| Score meeting/booking intent | reply-objection-handler (outbound-engine-skills, intent triage) |
| Write the actual outreach copy off the signal | sequence-writer (outbound-engine-skills) |
Response format
- State whether the request is strategy (→ hand off to hypo-generator/06) or operations (→ handle here).
- Apply the agency adaptation rules — strip PLG/enterprise noise, flag US-only/GDPR tools, demote enterprise pricing.
- For any signal: give detect (tool + Clay credits) → freshness window → score → GTM play, in that order.
- Quote benchmarks as directional only; never promise 35–40%.
Terms and plain-language output
<!-- glossary:start terms=buying-signal,data-point,freshness-window,heat-tier,sla,recency-multiplier,signal-stacking,signal-play,plg,intent-data,visitor-id,tam,bound-framing,champion-job-change,decision-maker -->Rules for every document a client or their team will read (review, roast, canvas, offer cards, instruction):
- Open with «Словник цього документа»: only the terms that actually appear in it, at most 10, each as «термін: що це простими словами». Like the definitions section of a contract.
- No internal codes or letter scales in the text (A/B/C, D L T E, BLEND numbers without words, Own/Shared/Generic, Z1.4, GATE 2.5, T1–T6). Write the meaning instead: «є цифра з клієнтом», not «A».
- Use the plain form from the table below. English stays only for tool names and for copy that ships in English (promises, hooks, subject lines). If the document is in another language, translate the plain form, never the internal term.
- Do not score what cannot exist yet. A block that depends on work not done (signal catalog, case studies, a previous step) gets «пропущено: спершу потрібно <що саме>», not a score.
- Every section of a review opens with one concrete action («до наступного дзвінка: …»), then at most five lines of why. No paragraph that only restates the framework.
| Internal term (this skill) | Write for the reader | What it means |
|---|---|---|
| buying signal | ознака готовності купувати | факт про компанію, після якого розмова про вашу послугу доречна саме зараз. |
| data point, state signal | факт про компанію (дата-поінт) | Факт з їхнього сайту чи вакансії, з якого відкриваємо лист; подія підказує, коли писати, а факт підказує, що сказати. |
| freshness window, expiry window, decay | термін свіжості сигналу | скільки днів сигнал ще дає привід писати; потім він стає просто фактом |
| Hot / Warm / Cool / Drop, band | гарячий · теплий · прохолодний · відкласти | наскільки терміново писати компанії за сукупністю відповідності і сигналу |
| SLA (marketing ↔ sales) | домовленість між маркетингом і продажами | хто передає ліда, у якому вигляді і за скільки годин на нього реагують. |
| recency multiplier | поправка на свіжість | свіжий сигнал важить більше за давній, тому бал множимо на коефіцієнт за віком сигналу |
| multi-signal stacking | збіг кількох сигналів | коли в компанії одночасно кілька сигналів, шанс угоди вищий і пріоритет піднімаємо |
| signal-to-action play, GTM play | сценарій дій на сигнал | хто, що і в який день робить після того, як спрацював сигнал |
| PLG, product-led signals | сигнали для продуктових компаній | сплески використання продукту, пробні реєстрації; сервісній компанії вони майже не підходять |
| intent data | дані про намір купувати | сигнали, що компанія зараз шукає таку послугу: пошукові запити, відвідування сторінок, вакансії. |
| visitor tracking, website de-anonymization | розпізнавання відвідувачів сайту | визначає, яка компанія чи людина була на сайті; рівень людини дозволений лише в США, у ЄС тільки рівень компанії |
| TAM, TAM reuse | весь ринок (TAM) | Усі компанії, що підходять під ICP; раз на квартал проходимо цей список знову з новим аргументом. |
| INBOUND / POSTBOUND / BRIDGEBOUND / OUTBOUND | звідки прийшов сигнал | чотири типи: людина прийшла сама, відреагувала на ваш контент, є спільний контакт, або ви пишете першими |
| champion job change | ваш прихильник перейшов в іншу компанію | людина, яка вже працювала з вами, на новому місці часто знову купує те саме |
| decision maker | ОПР (особа, що приймає рішення) | той, хто підписує: власник, операційний директор, керівник напряму |
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
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.
- signal-sourcer by Frontal-so · 9
- gt-buying-signal-sourcer by Growth-Today · 6
- growth-signal-charts by ericosiu · 3,767
- personal-strategic-signal-intelligence by ericosiu · 3,767
- gh-issue-to-demand-signal by Varnan-Tech · 688
- signal-monitor by janskuba · 206
- buying-signal-amplification by louisblythe · 195
- niche-signal-discovery by getaero-io · 72
Need help setting it up?
This page tells you what agency-signal-sourcer 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.