Systems Lab

Agent skill

agency-signal-sourcer

Operational buying-signal engine for B2B service agencies (BIM/MEP, custom dev, GIS, AI/SaaS engineering outsourcing).

activeSelf-containedInstructions only1,564 words

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-tools in 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.

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/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.

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:

  1. Glob for **/agency-signal-sourcer/SKILL.md
  2. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

RequestLoad
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:

  1. Strategy first — run hypo-generator (from client URL) or hypothesis-builder (from a known ICP+signal set) to pick which signal × ICP × offer hypotheses to test. The signal names come from hypo-generator/signals-catalog.md, NOT from this skill.
  2. 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.
  3. Feedback loop — this skill's taxonomy.md / detection-tools.md can also surface NEW signals worth adding to signals-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)

AskUse
Pick which signal × ICP × offer to test (from a URL)hypo-generator
Build a persona × signal × angle hypothesis matrixhypothesis-builder
The canonical signal LIST with trivial-trigger weightshypo-generator/signals-catalog.md
Map a single buyer signal to messagingangle-finder (outbound-engine-skills)
Run Clay/LinkedIn signal detection on a company listsignal-research
Score leads (general lead scoring)lead-scoring (outbound-engine-skills)
Score meeting/booking intentreply-objection-handler (outbound-engine-skills, intent triage)
Write the actual outreach copy off the signalsequence-writer (outbound-engine-skills)

Response format

  1. State whether the request is strategy (→ hand off to hypo-generator/06) or operations (→ handle here).
  2. Apply the agency adaptation rules — strip PLG/enterprise noise, flag US-only/GDPR tools, demote enterprise pricing.
  3. For any signal: give detect (tool + Clay credits) → freshness window → score → GTM play, in that order.
  4. 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):

  1. Open with «Словник цього документа»: only the terms that actually appear in it, at most 10, each as «термін: що це простими словами». Like the definitions section of a contract.
  2. 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».
  3. 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.
  4. 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.
  5. 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 readerWhat 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ОПР (особа, що приймає рішення)той, хто підписує: власник, операційний директор, керівник напряму
<!-- glossary:end -->

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.

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.

Build my GTM engine

Tell us what you want to improve. Fedor reviews the workflow and replies by email when there is a useful fit.

Fedor reviews every request personally. If there is a useful fit, he will reply by email.