Decides which named technologies a company actually runs on its website, verified against the live site.

MITAuto-check passedSales & Support

Install Playbook Tech On Website

skills CLI
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-tech-on-website -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install growthenginenowoslawski/coldoutboundskills playbook-tech-on-website --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/playbooks/playbook-tech-on-website .claude/skills/playbook-tech-on-website && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
playbook-tech-on-website
GitHub stars
753
Token cost
~3.3k tokens
SKILL.md length
1,374 words
Files
3
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Decides which named technologies a company actually runs on its website, verified against the live site.

  • Works in 7 steps: Trigger and scope → Run it: tandem discovery, then the gate → The gate → …
  • Find companies using Shopify
  • SKILL.md covers 1. Trigger and scope, 2. Run it: tandem discovery,…, 3. The gate and 4. Locked prompt (OPT-IN), plus 3 more sections
  • Calls jq

What it does

Playbook Tech On Website is an agent skill from growthenginenowoslawski/coldoutboundskills. Decides which named technologies a company actually runs on its website, verified against the live site. Triggers on "find companies using Shopify", "they're on HubSpot", "tech stack targeting", "technographics", "who uses Klaviyo", "companies running WordPress". Outputs a per-domain verdict (techconfirmed plus the verified stack and its evidence); the copy-ready clause is OFF by default and runs only when the operator asks for one.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `clay-table.md` and `clay-workflow.md`).

It sits in Sales & Support, covering Email marketing and CRM management. It works with Shopify, WordPress and HubSpot. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.

When your agent uses it

  • Find companies using Shopify
  • Theyre on HubSpot
  • Tech stack targeting
  • Who uses Klaviyo

Example prompts

  • “find companies using Shopify”
  • “re on HubSpot”
  • “tech stack targeting”
  • “/playbook-tech-on-website”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Trigger and scope
  2. Run it: tandem discovery, then the gate
  3. The gate
  4. Locked prompt (OPT-IN)
  5. Verification
  6. Clay implementation
  7. Hard rules

What it can do on your machine

Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Playbook Tech On Website loads about 3.3k tokens when it runs. Until then it costs about 116 tokens; SKILL.md has 1,374 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~116
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 1,374 words, ~3,335 tokens.

Download SKILL.mdSave it as .claude/skills/playbook-tech-on-website/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
playbook-tech-on-website
description
Decides which named technologies a company actually runs on its website, verified against the live site. Triggers on "find companies using Shopify", "they're on HubSpot", "tech stack targeting", "technographics", "who uses Klaviyo", "companies running WordPress". Outputs a per-domain verdict (tech_confirmed plus the verified stack and its evidence); the copy-ready clause is OFF by default and runs only when the operator asks for one.

Playbook: Technology On Website

All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.

1. Trigger and scope

Use when: the offer only makes sense to companies running a specific piece of software on their site — a Shopify app, a Klaviyo migration, a HubSpot implementation, a WordPress maintenance offer. Works in both directions: discovery ("build me a list of every company on Shopify") and enrichment ("here are 4,000 domains, which run Klaviyo").

Do not use when: you want the software a company sells, or mail-infrastructure targeting.

Default output: tech_confirmed, tech_stack_verified (JSON array), tech_evidence, tech_checked_at. Abstain = false / [] / "". On request only: tech_on_website_line, 110 chars.

The sentence is opt-in. The job is the verdict: does this company run the technology, and how do we know. That is what a list gets gated on, and for most campaigns it is the entire deliverable. Write the clause only when the brief explicitly asks. Never let an unrequested sentence be the reason a row costs a model call.

The thing that makes this playbook necessary

A technographic database tells you what a crawler saw at some unstated point in the past, and it is wrong often enough to embarrass you.

In the graded test, 4 of the 10 companies a provider returned from its own Shopify filter were not on Shopify. Two were not ecommerce at all.

The homepage verifier is not a quality step. It is the gate. Nothing reaches copy without it. Plan for roughly 60% of a provider-sourced list to survive verification, so pull 1.7x what you need.

2. Run it: tandem discovery, then the gate

The two discovery lanes run IN TANDEM and the result is a union. Not a waterfall, not a choice.

Measured: two providers' first pages returned 74 domains and 60 domains with zero overlap. Whichever single provider you pick, you leave most of the market on the table.

Watch two things when you compare them:

  • A contact-oriented provider returns contacts, so page it with a per-company cap of 1. Never compare its raw count to a company-oriented provider's company count.
  • Both cap per filter combination (commonly 25,000 and 50,000). Shard by state or headcount band and let the union dedupe.

No cache. Recompute — it is cheap. Every source is free except the rendering proxy, which only touches rows flagged blocked, so re-verifying a domain a previous campaign saw costs one homepage GET.

bash
# 1. TANDEM DISCOVERY. Both lanes, together.
discover-tech --provider a Shopify --all --out a.txt
discover-tech --provider b Shopify --all --out b.txt

# 1c. union + dedupe, printing the per-source overlap
union-domains a.txt b.txt --out domains.txt --provenance sources.csv

# 2. THE GATE
verify-tech-html domains.txt > verified.jsonl

# 3. rescue ONLY the blocked rows (metered, explicit confirm)
jq -r 'select(.blocked == true) | .domain' verified.jsonl > blocked.txt
proxy-rescue blocked.txt --confirm --max 500 > rescued.jsonl

# 4. merge: a rescued row replaces its blocked counterpart, one row per domain
jq -s -c 'group_by(.domain) | map(sort_by(.blocked) | .[0]) | .[]' \
  verified.jsonl rescued.jsonl > final.jsonl

# 5. put target_tech on every row
attach-row-context final.jsonl --target-tech Shopify > ready.jsonl

# 6. THE DEFAULT LAST STEP: the verdict. No model calls, no cost.
tech-verdict ready.jsonl > verdicts.jsonl

Stop there unless a sentence was requested. verdicts.jsonl is the deliverable.

3. The gate

A browser-UA homepage GET at concurrency 2, matching fingerprints over HTML and response headers. Two behaviors carry the whole playbook.

Blocked is a flag, never an inference

A bot wall is not an answer.

This is subtle and it bites: a common CDN matches on its own server: header, so a 403 used to come back as a successful fetch with a non-empty detection list — which reads downstream as "we looked and found nothing." A silent false abstain.

The verifier emits "blocked": true with a blocked_reason on HTTP 401/403/405/429/503, any other 4xx/5xx, a body under 2,000 bytes, or a transport error — and strips infrastructure and analytics hits out of the detection list.

Route on the flag, never on an empty list.

Platform hits are graded

A Shopify fingerprint fires on HTML-only strings like cdn.shopify.com and <store>.myshopify.com — which every Shopify agency portfolio, app-review roundup and Buy-Button B2B site also carries. So platform hits require header or oracle evidence:

EvidenceGradeResult
response header (x-shopid, x-shopify-stage, powered-by: shopify)confirmedeligible for a clause
a technology oracle answered yes (/products.json, /wp-json/)confirmedeligible for a clause
HTML string only, no header, no oracleunconfirmedexcluded from the stack, no clause

Only Shopify and WordPress have oracles today, so an HTML-only match on any other platform stays unconfirmed by design. That costs recall and buys correctness.

Three outcomes that are NOT negatives

Getting this wrong is how a campaign quietly mails the wrong people.

confidenceMeaningAction
blockedthe page was never readproxy rescue. Never a negative
unconfirmedmatched HTML only — the agency / Buy-Button shapere-check by hand or with a tech-specific endpoint
api_errora model call failed; clause path onlyre-run those rows. A provider error is never a verdict

target_tech is read per row, with a global default only. If neither is set, the script should error rather than grade everything against the wrong technology.

Adding a technology

Never write a fingerprint from memory. Learn it from a live sample: rank candidate strings by specificity (support ≥30%, leakage ≤5%) against a control set.

⚠️ The control set must control for the co-occurring platform, not just "any website". A Klaviyo sample surfaced cdn.shopify.com at 78% support / 0% leakage — because most Klaviyo users are Shopify stores. Control against Shopify stores, not against the open web.

Then: never add a bare vendor domain (/klaviyo\.com/ matches every page that links to them); prefer response headers; a platform-kind technology also needs an oracle; and pass a 3-positives / 3-negatives ritual before marking it validated.

Show full SKILL.md (534 more words)Show less
Downstream gate

If tech_confirmed is false: drop the clause through spintax and keep the row — unless the whole campaign premise is the technology (a Shopify app), in which case exclude the row rather than send a generic email a company will read as a mistake. The brief must state which applies before the list is built.

4. Locked prompt (OPT-IN)

Skip this whole section by default. If the brief did not ask for a personalization line, the run ends at the verdict: no prompt, no model calls, no guards.

Model: gpt-4o-mini inside Clay, a nano-class model elsewhere. Note the inversion: nano's ~512 reasoning tokens make it the more expensive option for this prompt inside Clay. Params: max_completion_tokens=2000, reasoning_effort="low", no temperature, JSON response format.

Everything above PER-ROW DATA is the static prefix and must stay byte-identical. It took five correction rounds to get clean, so start from this version rather than from scratch.

text
You write one short clause for a cold email, based only on technology that was verified on a company website.

Return JSON only: {"line": "...", "evidence": "...", "confidence": "high|low"}

Rules:
- The clause must read grammatically inside this exact sentence: "Noticed LINE."
- Write it in second person. Always "you" or "your". Never "our", "we", "they", or the company name.
- The clause must contain a verb.
- Do not include the word Noticed. The clause is only the part that follows it.
- Name each product at most once. Never repeat a product name inside one clause.
- Spell every product name exactly as it appears in VERIFIED_TECH, including its capital letters.
- Do not capitalize the first word unless that word is a product name.
- No trailing period. Maximum 110 characters.
- 5th-grade reading level. No em dashes. No exclamation marks.
- Only name technology that appears in VERIFIED_TECH. Never infer a tool that is not listed.
- If VERIFIED_TECH does not contain the technology named in TARGET_TECH, return "" for line and "none" for confidence.
- Copy EVIDENCE into the "evidence" key exactly as given. Never put words from EVIDENCE into "line".
- Banned words in "line": header, html, tag, script, pixel, scraped, crawled, detected, database, tool, stack.
- When a second tool is listed alongside the target, name both. Two named tools read as real research, one reads as a guess.

Examples:
Input: TARGET_TECH: Shopify | COMPANY: Bombas | VERIFIED_TECH: Shopify, Klaviyo, Gorgias | EVIDENCE: x-shopid
Output: {"line":"you run Klaviyo and Gorgias on top of your Shopify store","evidence":"x-shopid","confidence":"high"}
Input: TARGET_TECH: Shopify | COMPANY: Leverify | VERIFIED_TECH: Shopify | EVIDENCE: x-shopid
Output: {"line":"your storefront runs on Shopify","evidence":"x-shopid","confidence":"high"}
Input: TARGET_TECH: Shopify | COMPANY: Lulu and Georgia | VERIFIED_TECH: Shopify, Klaviyo, Attentive, Zendesk | EVIDENCE: x-shopid
Output: {"line":"you send with Klaviyo and Attentive on your Shopify store","evidence":"x-shopid","confidence":"high"}
Input: TARGET_TECH: HubSpot | COMPANY: Northwind Logistics | VERIFIED_TECH: HubSpot, WordPress | EVIDENCE: js.hs-scripts.com
Output: {"line":"you run your site on WordPress with HubSpot behind the forms","evidence":"js.hs-scripts.com","confidence":"high"}
Input: TARGET_TECH: Shopify | COMPANY: Acme Consulting | VERIFIED_TECH: WordPress, HubSpot | EVIDENCE: none
Output: {"line":"","evidence":"","confidence":"none"}

PER-ROW DATA (appended last)
TARGET_TECH: {{target_tech}} | COMPANY: {{Company Name}} | VERIFIED_TECH: {{Tech Verified}} | EVIDENCE: {{tech_evidence}}

Post-guards run in code after the model, because a prompt rule is a request and a regex is a guarantee. A rejected row ships the abstain value and records why.

No second verifier model call: the claim is already grounded in a live fetch of the company's own site seconds earlier. That is a genuinely stronger guarantee than an LLM judge, and it is why this playbook does not have one.

Truncation guard: finish_reason=length means retry, never abstain.

5. Verification

VERDICT: PASS 10/10 (100%) | tandem discovery, unioned → homepage gate → verdict | $0.00/1k on the default verdict path, ~$0.25/1k when the clause is requested.

The number to carry into planning: the provider's raw precision was 6/10. The path scores 100% because the gate catches the other 4.

⚠️ This verdict covers Shopify only. Every other fingerprint is unvalidated. Re-run if the confirmed rate drops below 50% for two consecutive campaigns, if Shopify stops setting its identifying header, or when adding an unvalidated technology.

6. Clay implementation

  • clay-table.md — the column build, including how to reach a verifier from Clay.
  • clay-workflow.md — the CLI-buildable version.

7. Hard rules

  • A blocked row is never a negative. blocked: true means "we could not look", not "there is nothing there". Whatever you persist must keep blocked and blocked_reason beside the verdict, or a bot-wall 403 reads as a confident "no technology found". Same for unconfirmed and api_error.
  • Exact array-element match, never a substring test. "Shopify Buy Button".includes("Shopify") is true — and that is exactly how a B2B software company gets a storefront clause. Drop embed-kind hits before the model. A platform-kind target additionally needs header or oracle evidence.
  • Only one fingerprint has been validated end to end. Never let a client hear the tested number applied to an untested fingerprint.
  • No output sentence unless the operator asks.
  • Pacing and targeting: the rendering proxy runs only on blocked rows — that is an accuracy rule, not a budget one. Count before you pull where counts are free. Shard past per-filter caps rather than paging into them. Browser User-Agent on every homepage fetch, concurrency 2.
  • Sequencer update-in-place usually requires the email address in the request body, or the write silently no-ops and every row keeps its old clause. Upload responses over-count — true net-new is a lead-count delta (often returned as a string, so cast it).

© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in skills/playbooks/playbook-tech-on-website of growthenginenowoslawski/coldoutboundskills.

  • SKILL.md
  • clay-table.md
  • clay-workflow.md

Open the folder on GitHubat commit 25c5d85

Compare with similar skills

Playbook Tech On Website next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Playbook Tech On Website compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Playbook Tech On Website this skillgrowthenginenowoslawski/coldoutboundskills753—~3.3kAutomated safety check: PassMIT
Content Management Systemsgithub/awesome-copilot40k1 repos~1.3kAutomated safety check: PassMIT
Prompt Gap To Publishamplitude/builder-skills159—~2.8kAutomated safety check: PassNone
Marketing Automationmanojbajaj95/claude-gtm-plugin105—~1.5kAutomated safety check: PassMIT
RevopsAvdLee/RocketSimApp8066 repos~3.7kAutomated safety check: PassCustom licence
Hubspot Integrationdavila7/claude-code-templates33k4 repos~265Automated safety check: PassMIT

Similar skills

  • Content Management Systems

    github/awesome-copilot

    Official

    Workflow for building and modifying content management systems across WordPress, Shopify, Wix, Squarespace, Drupal, WooCommerce, Joomla, HubSpot CMS Hub, Webflow, Adobe Experience Manager, and…

    40k GitHub starsUsed in 1 repo~1.3k tokens
    Sales & SupportAuto-check passed
  • Prompt Gap To Publish

    amplitude/builder-skills

    A skill your agent uses whenever a user wants to turn AI Visibility data into published content — whether they say "find content gaps", "what should we write about", "which topics have low…

    159 GitHub stars~2.8k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Marketing Automation

    manojbajaj95/claude-gtm-plugin

    A skill your agent uses when setting up marketing automation in HubSpot, Marketo, email sequences, lead scoring, and workflows.

    105 GitHub stars~1.5k tokensUpdated 23 days ago
    Marketing & SEOAuto-check passed
  • Revops

    AvdLee/RocketSimApp

    When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes.

    806 GitHub starsUsed in 6 repos~3.7k tokens
    Sales & SupportAuto-check passed
  • Hubspot Integration

    davila7/claude-code-templates

    Expert patterns for HubSpot CRM integration including OAuth authentication, CRM objects, associations, batch operations, webhooks, and custom objects.

    33k GitHub starsUsed in 4 repos~265 tokens
    Sales & SupportAuto-check passed
  • Databricks Lakeflow Connect

    databricks/databricks-agent-skills

    Official

    Build managed ingestion pipelines into Databricks using Lakeflow Connect.

    345 GitHub stars~3.8k tokensUpdated yesterday
    Sales & SupportAuto-check passed

More from growthenginenowoslawski/coldoutboundskills

All 49 skills in this repo
  • Email Deliverability Audit

    growthenginenowoslawski/coldoutboundskills

    Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~3.4k tokensUpdated 5 days ago
    Auto-check passed
  • Icp Onboarding

    growthenginenowoslawski/coldoutboundskills

    Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~1.9k tokensUpdated 5 days ago
    Auto-check passed
  • List Builder

    growthenginenowoslawski/coldoutboundskills

    META skill — build the largest possible qualified lead list for any request, end to end.

    753 GitHub stars~4.7k tokensUpdated 5 days ago
    Auto-check: notes
  • Auto Research Public

    growthenginenowoslawski/coldoutboundskills

    Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~2.9k tokensUpdated 5 days ago
    Auto-check passed
  • Blitz List Builder

    growthenginenowoslawski/coldoutboundskills

    Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.

    753 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check passed
  • Deliverability Test Public

    growthenginenowoslawski/coldoutboundskills

    Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.

    753 GitHub stars~1k tokensUpdated 5 days ago
    Auto-check passed

Categories

Questions about Playbook Tech On Website

What does Playbook Tech On Website do?

Decides which named technologies a company actually runs on its website, verified against the live site. Playbook Tech On Website is an agent skill from growthenginenowoslawski/coldoutboundskills. Decides which named technologies a company actually runs on its website, verified against the live site.

When should I use Playbook Tech On Website?

Playbook Tech On Website fits situations like: find companies using Shopify; theyre on HubSpot; tech stack targeting; who uses Klaviyo.

How do I install Playbook Tech On Website in Claude Code?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-tech-on-website -a claude-code`. Or copy the skill folder (skills/playbooks/playbook-tech-on-website in growthenginenowoslawski/coldoutboundskills) into .claude/skills/playbook-tech-on-website in your project. Claude Code loads it when a task matches its description.

How do I install Playbook Tech On Website in Codex?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-tech-on-website -a codex`. Or copy the skill folder (skills/playbooks/playbook-tech-on-website in growthenginenowoslawski/coldoutboundskills) into .agents/skills/playbook-tech-on-website in your project. Codex loads it when a task matches its description.

Can I use Playbook Tech On Website in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill playbook-tech-on-website -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/playbook-tech-on-website, .gemini/skills/playbook-tech-on-website, .github/skills/playbook-tech-on-website and .opencode/skills/playbook-tech-on-website in your project.

What does Playbook Tech On Website need to run?

Going by SKILL.md and its folder, Playbook Tech On Website needs the command-line tools its instructions call (jq).

Does Playbook Tech On Website access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Playbook Tech On Website safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Playbook Tech On Website use?

Playbook Tech On Website is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Playbook Tech On Website use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Playbook Tech On Website?

Skills that share tags, products or a category with Playbook Tech On Website: Content Management Systems (github/awesome-copilot, 40k stars), Prompt Gap To Publish (amplitude/builder-skills, 159 stars), Marketing Automation (manojbajaj95/claude-gtm-plugin, 105 stars) and Revops (AvdLee/RocketSimApp, 806 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Playbook Tech On Website?

growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.