skill
claude-signal-with-a-link
Buying signal skill for agents: dated, linkable event — or it is not a signal. MIT. Zero paid APIs.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/cmj-hub/claude-signal-with-a-link itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 28, 2026Buying signal skill for Claude Code
A buying signal is a dated, linkable event: something the prospect did publicly, on a day you can name, at a URL you can open. State is not a signal. An intent score without a URL and a date is refused.
In 60 seconds
/plugin marketplace add cmj-hub/claude-signal-with-a-link
/plugin install signal-with-a-link@claude-signal-with-a-link
/signal-with-a-link:signal-with-a-link kickoff
Or score the sample without an agent:
python3 skills/signal-with-a-link/scripts/score.py --file skills/signal-with-a-link/examples/signal-good.json --as-of 2026-10-08
# exit 0 → a dated, linkable signal → Next: /psp:psp
python3 skills/signal-with-a-link/scripts/score.py --file skills/signal-with-a-link/examples/signal-intent-only.json --as-of 2026-10-08
# exit 1 → intent score without a URL and a date
The build guide teaches a human. The pack teaches an agent.
GOOD Posted Demand Gen Lead · linkedin.com/jobs/… · 2026-10-04 → exit 0
BAD intent_score: 87 · no url · no date → exit 1
BAD "Series B" · example.com/about · 2026-10-01 → exit 1
Install
npx skills add cmj-hub/claude-signal-with-a-link --all -g --full-depth
One host:
npx skills add cmj-hub/claude-signal-with-a-link --skill '*' -g --full-depth -y -a claude-code
Swap claude-code for cursor, codex, grok, github-copilot, windsurf, cline, or opencode.
Claude Code plugin path: see In 60 seconds.
From npm
The same pack is on npm as @jmc-gtm/claude-signal-with-a-link, released from this repo's version tags with npm provenance. It has no dependencies and no install scripts.
In a project, for any agent host the skills installer knows (experimental_sync is still marked experimental there):
npm install -D @jmc-gtm/claude-signal-with-a-link
npx skills experimental_sync -a claude-code -y
In your own Claude Code plugin marketplace, point an entry at the package:
{ "name": "signal-with-a-link", "source": { "source": "npm", "package": "@jmc-gtm/claude-signal-with-a-link" } }
What you walk out with in 15 minutes
Artifact: gtm/signal.json (from kickoff), scored against the sample first.
cd skills/signal-with-a-link
python3 scripts/score.py --file examples/signal-good.json --as-of 2026-10-08
python3 scripts/score.py --file examples/signal-intent-only.json --as-of 2026-10-08
python3 scripts/score.py --file examples/signal-no-url.json --as-of 2026-10-08
The good draft exits 0 and prints the event, URL, date, and age. The intent-only draft exits 1 with - intent score without a URL and a date → add both url and date, or drop intent_score. Then write yours.
What's in the pack
| Path | What it is |
|---|---|
skills/signal-with-a-link/SKILL.md | The instrument: definition, banned list, kickoff, validate. |
skills/signal-with-a-link/scripts/score.py | Deterministic scorer. Exit 0 / 1 / 2. |
skills/signal-with-a-link/examples/ | Good, with-intent, no-url, no-date, intent-only, firmographic. |
.claude-plugin/ | Plugin + marketplace manifests. |
tests/ | python3 -m unittest discover -s tests |
What this pack will not do
It will not hunt LinkedIn for you. It will not buy intent data. It will not write the email or the five-part PSP.
This pack drafts and scores. It will not pick this quarter's signal sources, ingest your CRM, or refresh when a job board changes its URL shape.
What is a buying signal?
A buying signal is a dated, linkable event: a public action with a URL you can open and an ISO date you can name. A job post four days ago with a LinkedIn URL is a signal. "Series B" is state. An intent score of 87 with no link is a guess.
Do I need a paid intent vendor to start?
No. The Northwind sample is in examples/. Score it. Then paste one URL from your book. Paid lookup is out of scope here, and an intent score is refused until both url and date are present.
Does this score intent for me?
Only after the link and the date exist. The banned line is public: no intent score without a URL and a date. The scorer enforces it.
Will this invent a URL if I do not have one?
No. If you cannot open a page, you do not have a signal yet. Leave the account off.
On the site
- Skill packs catalog: install paths + every pack
- Pain Signal Profiles: what a passing signal feeds next
Free, by email
Growth Audit: where your go-to-market stack is leaking, sent to your inbox.
The Friday Signal: free emails on building GTM systems. No pitch in it. One click unsubscribes.
Part of the suite
Part of the GTM operator suite: see gtm-operator-skills.
Privacy and security
The scorer is standard-library Python and opens no network connection. It reads only the draft you hand it. The skill writes gtm/signal.json and nothing else. No telemetry, no credentials, no paid APIs. See SECURITY.md.
License
MIT. See LICENSE.
About
Built by JMC Go-to-Market Systems.