Agent skill

Pain Language Engagers

by gooseworks-ai in gooseworks-ai/goose-skills

Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly.

MITAuto-check: notesSales & Support

Install Pain Language Engagers

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill pain-language-engagers -a claude-code

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

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills pain-language-engagers --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/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/lead-generation/capabilities/pain-language-engagers .claude/skills/pain-language-engagers && 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
pain-language-engagers
GitHub stars
1.2k
Used in
1 other repo
Token cost
~2.1k tokens
SKILL.md length
876 words
Files
12 (incl. scripts)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly.

  • Works in 5 steps: Intake → Generate Pain-Language Keywords → Run LinkedIn Scraping Pipeline → …
  • Someone wants to find leads who are complaining about X
  • SKILL.md covers Phase 0: Intake, Phase 1: Generate…, Phase 2: Run LinkedIn Scraping… and Phase 3: Review & Refine, plus 3 more sections
  • Runs Python scripts from its folder; calls python3; reaches linkedin.com; needs APIFY_API_TOKEN

What it does

Pain Language Engagers is an agent skill from gooseworks-ai/goose-skills. Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly. Asks clarifying questions to understand your product, ICP, and their pain points, then generates pain-language search keywords, scrapes LinkedIn for posts and engagers, enriches profiles, and ICP-filters the results. Use when someone wants to "find leads who are complaining about X" or "find people discussing problems we solve" or "LinkedIn pain-based prospecting."

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts (for example `configs/artisan-ai.json`, `configs/happy-robot.json` and `configs/outset-ai.json`).

It sits in Sales & Support, covering Web scraping, Requirements gathering and Cold outreach. It works with LinkedIn. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.

When your agent uses it

  • Someone wants to find leads who are complaining about X
  • Find people discussing problems we solve
  • LinkedIn pain-based prospecting

Example prompts

  • “find leads who are complaining about X”
  • “find people discussing problems we solve”
  • “LinkedIn pain-based prospecting.”
  • “/pain-language-engagers”

Requirements

  • Python 3
  • A credential in APIFY_API_TOKEN

Workflow steps

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

  1. Intake
  2. Generate Pain-Language Keywords
  3. Run LinkedIn Scraping Pipeline
  4. Review & Refine
  5. Output

What it can do on your machine

Read from SKILL.md and the folder at commit c650c6d. 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

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • linkedin.com

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • APIFY_API_TOKEN

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

Context cost

Pain Language Engagers loads about 2.1k tokens when it runs. Until then it costs about 135 tokens; SKILL.md has 876 words of instructions outside code blocks.

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

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

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:163
    I token** — set as `APIFY_API_TOKEN` in `.env`

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); the scripts in this folder are not scanned.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 876 words, ~2,137 tokens.

Download SKILL.mdSave it as .claude/skills/pain-language-engagers/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.
name
pain-language-engagers
description
Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly. Asks clarifying questions to understand your product, ICP, and their pain points, then generates pain-language search keywords, scrapes LinkedIn for posts and engagers, enriches profiles, and ICP-filters the results. Use when someone wants to "find leads who are complaining about X" or "find people discussing problems we solve" or "LinkedIn pain-based prospecting."
tags
lead-generation

Pain-Language Engagers

Find warm leads by scraping LinkedIn for pain-language posts and their engagers. People who write about, react to, or comment on posts expressing operational frustrations are signaling they live with a problem your product solves. This skill turns those signals into a qualified lead list.

Core principle: Search for pain-language, not solution-language. Solution keywords ("AI automation", "workflow optimization") attract builders and VCs. Pain keywords ("can't find drivers", "check calls are killing us") attract operators living with the problem.

Phase 0: Intake

Before generating keywords or running anything, ask the user these questions. Present them as a numbered list and tell the user to answer what's relevant and skip what's not.

Product & Pain Context
  1. What does your product/service do in one sentence?
  2. What specific problem does it solve? Who feels this pain most acutely?
  3. What does your ICP's day-to-day look like WITHOUT your product? (The frustrations, workarounds, manual processes)
  4. What phrases would someone use when complaining about this problem on LinkedIn? (e.g., "check calls are killing us", "can't find drivers", "spending hours on manual data entry")
ICP Definition
  1. What industries/verticals are your target buyers in?
  2. What job titles or roles are your ideal buyers? (e.g., "VP Operations", "Broker owner", "Head of Logistics")
  3. What titles should be EXCLUDED? (e.g., "Software Engineer", "AI researcher")
  4. Any specific competitors whose employees should be filtered out?
  5. Geographic focus? (e.g., "United States only", "global")
LinkedIn Signal Sources
  1. Any LinkedIn company pages where your ICP is likely to engage? (Industry publications, communities, competitor pages)
  2. Any specific LinkedIn posts or content creators your ICP follows?

Phase 1: Generate Pain-Language Keywords

Based on the intake answers, generate ~15-25 pain-language keywords in LinkedIn boolean search syntax. Organize into categories:

  • Staffing/Resource Pain — hiring difficulties, turnover, burnout
  • Operational Friction — manual processes, missed SLAs, communication breakdowns
  • Margin/Growth Pain — cost pressure, scaling challenges
  • Process Complaints — specific workflow frustrations

Key principle: Every keyword should be something a frustrated operator would actually type or say, not marketing language or solution framing.

Also generate:

  • ICP keyword list — industry terms for ICP classification (from answer #5)
  • Tech vendor exclusion list — competitor names + generic tech titles (from answers #7, #8)
  • Pain-pattern regexes — for filtering company page posts (derived from the keywords)
  • Broad topic patterns — industry terms for known industry page filtering
  • Hardcoded company pages — from answer #10, plus any the agent suggests based on the industry

Present the full keyword list to the user for approval/refinement before running. This is the most critical step — bad keywords = bad leads.

Once approved, save the complete config as JSON:

bash
# Save config
skills/pain-language-engagers/configs/{client-name}.json

Config JSON structure:

json
{
  "client_name": "example-client",
  "pain_keywords": ["\"can't find X\"", "\"hiring Y\" problems"],
  "pain_patterns": ["can.t find X", "hiring Y", "manual.*process"],
  "icp_keywords": ["industry-term-1", "industry-term-2"],
  "tech_vendor_keywords": ["software engineer", "competitor-name"],
  "hardcoded_companies": ["https://www.linkedin.com/company/example/"],
  "industry_pages": ["https://www.linkedin.com/company/example/"],
  "broad_topic_patterns": ["industry", "sector", "niche-term"],
  "country_filter": "United States",
  "days_back": 60,
  "max_posts_per_keyword": 50,
  "max_posts_per_company": 100
}

Phase 2: Run LinkedIn Scraping Pipeline

Execute the pipeline script with the saved config:

bash
python3 skills/pain-language-engagers/scripts/pain_language_engagers.py \
  --config skills/pain-language-engagers/configs/{client-name}.json \
  [--test] [--companies "url1,url2"]

Flags:

  • --config (required) — path to the client config JSON
  • --test — limit to 3 keywords, 5 posts per company (for validation)
  • --skip-discovery — skip keyword search, only scrape hardcoded/extra companies
  • --companies "url1,url2" — add extra company URLs to scrape

What the script does:

  1. Keyword search — apimaestro/linkedin-posts-search-scraper-no-cookies for each pain keyword
  2. Post author extraction — People who wrote pain posts = direct leads (free, no API call)
  3. Company page discovery — Extract company pages from keyword results
  4. Company page engager scraping — harvestapi/linkedin-company-posts for each company page, pain-filtered
  5. Profile enrichment — harvestapi/linkedin-profile-scraper for all profiles (gets headline + location)
  6. ICP classification — Using the client-specific ICP/vendor keyword lists from config
  7. Dedup + CSV export

Cost estimate:

  • Keyword search: $0.10 per keyword ($2 for 20 keywords)
  • Company page scraping: $0.002 per post per company ($0.20 per company)
  • Profile enrichment: ~$0.003 per profile
  • Full run with 20 keywords + 10 companies: ~$5-10

Always run with --test first to validate the config produces relevant results before a full run.

Show full SKILL.md (270 more words)Show less

Phase 3: Review & Refine

After the script completes, present results to the user:

  • ICP breakdown — counts by tier (Likely / Possible / Unknown / Tech Vendor)
  • Top 15 Likely ICP leads — name, role, company, engagement type
  • Sample of filtered-out leads — so user can catch false negatives
  • Keyword performance — which keywords produced the most leads, which were duds

If the user wants adjustments:

  1. Update the config JSON (add/remove keywords, adjust ICP lists)
  2. Re-run the script
  3. Repeat until the user is satisfied

Common adjustments:

  • Too many Tech Vendor results — add more vendor names to tech_vendor_keywords
  • Missing obvious ICP leads — add more industry terms to icp_keywords
  • Irrelevant posts — refine pain_patterns to be more specific
  • Not enough results — add more keywords or reduce days_back constraint

Phase 4: Output

CSV exported to the current working directory as {client-name}-{date}.csv with columns:

ColumnDescription
NameFull name
LinkedIn Profile URLProfile link
RoleParsed from headline
Company NameParsed from headline
LocationFrom profile enrichment
Source PageWhich company page(s) they engaged on
Post URL(s)Links to the post(s) they engaged with
Engagement TypePost Author, Comment, or Reaction
Comment TextTheir comment (if applicable — personalization gold)
ICP TierLikely ICP, Possible ICP, Unknown, or Tech Vendor
Niche KeywordWhich pain keyword matched

Tools Required

  • Apify API token — set as APIFY_API_TOKEN in .env
  • Apify actors used:
    • apimaestro/linkedin-posts-search-scraper-no-cookies (keyword search)
    • harvestapi/linkedin-company-posts (company page scraping)
    • harvestapi/linkedin-profile-scraper (profile enrichment)

Example Usage

Trigger phrases:

  • "Find people complaining about [problem] on LinkedIn"
  • "LinkedIn pain-based prospecting for [product]"
  • "Find leads who are discussing [pain point]"
  • "Scrape LinkedIn for [industry] pain posts"
  • "Run the pain-language engagers pipeline for [client]"

With existing config:

bash
python3 skills/pain-language-engagers/scripts/pain_language_engagers.py \
  --config skills/pain-language-engagers/configs/happy-robot.json

Test mode:

bash
python3 skills/pain-language-engagers/scripts/pain_language_engagers.py \
  --config skills/pain-language-engagers/configs/happy-robot.json --test

© gooseworks-ai, 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 11 other files (scripts) in skills/lead-generation/capabilities/pain-language-engagers of gooseworks-ai/goose-skills.

  • SKILL.md
  • configs/artisan-ai.json
  • configs/happy-robot.json
  • configs/outset-ai.json
  • output/artisan-ai-20260225_1237.csv
  • output/artisan-ai-20260225_1344.csv
  • output/outset-ai-20260225_1232.csv
  • output/outset-ai-20260225_1237.csv
  • output/outset-ai-20260225_1250-cleaned.csv
  • output/outset-ai-20260225_1250.csv
  • scripts/pain_language_engagers.py
  • skill.meta.json

Open the folder on GitHubat commit c650c6d

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in gooseworks-ai/goose-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Pain Language Engagers 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.

Pain Language Engagers compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pain Language Engagers this skillgooseworks-ai/goose-skills1.2k1 repos~2.1kAutomated safety check: NotesMIT
Personalize MessageOthmane-Khadri/YALC-the-GTM-operating-system318—~1.3kAutomated safety check: NotesMIT
Apify Buying Signal Detectionapify/awesome-skills266—~5.1kAutomated safety check: NotesApache-2.0
Linkedin Comment To Outreachgethouston/houston118—~2.1kAutomated safety check: PassMIT
Prospectingcoreyhaines31/marketingskills54k—~5kAutomated safety check: PassMIT
Sales OsromangojiberryAI/gojiberryai-sales-os139—~2kAutomated safety check: PassMIT

Similar skills

  • Personalize Message

    Othmane-Khadri/YALC-the-GTM-operating-system

    Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals.

    318 GitHub stars~1.3k tokensUpdated 1 mo ago
    Sales & SupportAuto-check: notes
  • Apify Buying Signal Detection

    apify/awesome-skills

    Official

    Set up a recurring buying-signal detection pipeline that finds companies showing buying intent across three signal types — job postings (hiring for the persona), fundraising events (recent raises)…

    266 GitHub stars~5.1k tokensUpdated 18 days ago
    Business, Finance & HRAuto-check: notes
  • Turn a single LinkedIn post URL into a paused cold email campaign in Instantly.

    118 GitHub stars~2.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Prospecting

    coreyhaines31/marketingskills

    When the user wants to find, qualify, and build a list of prospects to reach out to, across B2B SaaS, general B2B, or local small businesses.

    54k GitHub stars~5k tokensUpdated 2 days ago
    Sales & SupportAuto-check passed
  • Sales Os

    romangojiberryAI/gojiberryai-sales-os

    A complete outbound sales department in one skill. An agent skill from romangojiberryAI/gojiberryai-sales-os.

    139 GitHub stars~2k tokensUpdated 1 mo ago
    Sales & SupportAuto-check passed
  • Cold Outreach Personalizer

    aiskilloftheweek/claude-ai-skill-of-the-week

    Generates hyper-personalized cold outreach messages (email, LinkedIn DM, connection request) from raw prospect research.

    149 GitHub stars~2.6k tokensUpdated 4 mo ago
    Sales & SupportAuto-check passed

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    gooseworks-ai/goose-skills

    Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.

    1.2k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Render Hook Replacement

    gooseworks-ai/goose-skills

    Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.

    1.2k GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Render Chatgpt Chat

    gooseworks-ai/goose-skills

    Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…

    1.2k GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Pain Language Engagers

What does Pain Language Engagers do?

Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly. Pain Language Engagers is an agent skill from gooseworks-ai/goose-skills. Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly.

When should I use Pain Language Engagers?

Pain Language Engagers fits situations like: someone wants to find leads who are complaining about X; find people discussing problems we solve; linkedIn pain-based prospecting.

How do I install Pain Language Engagers in Claude Code?

Run `npx skills add gooseworks-ai/goose-skills --skill pain-language-engagers -a claude-code`. Or copy the skill folder (skills/lead-generation/capabilities/pain-language-engagers in gooseworks-ai/goose-skills) into .claude/skills/pain-language-engagers in your project. Claude Code loads it when a task matches its description.

How do I install Pain Language Engagers in Codex?

Run `npx skills add gooseworks-ai/goose-skills --skill pain-language-engagers -a codex`. Or copy the skill folder (skills/lead-generation/capabilities/pain-language-engagers in gooseworks-ai/goose-skills) into .agents/skills/pain-language-engagers in your project. Codex loads it when a task matches its description.

Can I use Pain Language Engagers 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 gooseworks-ai/goose-skills --skill pain-language-engagers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pain-language-engagers, .gemini/skills/pain-language-engagers, .github/skills/pain-language-engagers and .opencode/skills/pain-language-engagers in your project.

What does Pain Language Engagers need to run?

Going by SKILL.md and its folder, Pain Language Engagers needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named APIFY_API_TOKEN. Our summary lists: Python 3; A credential in APIFY_API_TOKEN.

Does Pain Language Engagers access the network?

SKILL.md names 1 domain. In commands or code: linkedin.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Pain Language Engagers safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Pain Language Engagers use?

Pain Language Engagers 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 Pain Language Engagers use?

About 2.1k tokens (SKILL.md is roughly 8.5k 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 Pain Language Engagers?

Skills that share tags, products or a category with Pain Language Engagers: Personalize Message (Othmane-Khadri/YALC-the-GTM-operating-system, 318 stars), Apify Buying Signal Detection (apify/awesome-skills, 266 stars), Linkedin Comment To Outreach (gethouston/houston, 118 stars) and Prospecting (coreyhaines31/marketingskills, 54k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pain Language Engagers?

gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.

Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.