CtrlK
BlogDocsLog inGet started
Tessl Logo

linkedin-job-scraper

Scrapes LinkedIn job postings using the JobSpy library (python-jobspy). Use this skill whenever the user wants to find jobs on LinkedIn, search for open roles, pull job listings, build a job pipeline, source job targets for GTM research, or monitor hiring signals. Even if the user just says "find me some jobs" or "what roles is [company] hiring for", use this skill. It runs a local Python script that outputs a CSV of job postings with title, company, location, salary, job type, description, and direct URLs.

69

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

71%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, highly actionable body with excellent parameter/output/error tables and worked examples, undermined by inconsistent references to its own bundled script (three different paths, one wrong) and some duplicated content between Quick Start, Workflow, and Script Location sections. Fixing the script path to its actual bundle location (scripts/jobspy_scraper.py) and de-duplicating would lift it substantially.

Suggestions

Reference the bundled script at its actual path (scripts/jobspy_scraper.py relative to the skill root) everywhere, and remove the contradictory 'skills/linkedin-scraper/scripts/...' path in the Script Location section — currently the body gives three different locations for the same file.

De-duplicate: the Quick Start run command repeats the Step 2 template and the Script Location section repeats Step 3's fallback instruction; merge these into one place to save tokens.

Standardize the interpreter invocation — the install step uses python3.12 while run examples use python — and add a brief note on where to find a LinkedIn company ID, since the company-monitoring use case currently assumes the user has one.

DimensionReasoningScore

Conciseness

The body is dominated by efficient tables and executable commands with no padding explaining known concepts, but the Quick Start command duplicates the Workflow template and the 'Script Location' section restates Step 3's instructions, so a few tokens could be trimmed. Fits anchor 4 (efficient, minor over-explanation to trim) better than 5 because of the duplicated install/run and script-location content.

4 / 5

Actionability

Commands are copy-paste ready with full parameter, output-column, and error-fix tables plus three worked use cases, but the script is referenced via three inconsistent paths (tools/, skills/linkedin-job-scraper/scripts/, and prose saying skills/linkedin-scraper/scripts/) and the interpreter flips between python3.12 and python — minor gaps that keep it below fully-executable. Anchor 4 ('mostly executable; concrete commands with minor gaps') is the best fit; not 5 because of the path and interpreter inconsistencies.

4 / 5

Workflow Clarity

The four-step workflow is clearly sequenced with defaults guidance, a zero-results feedback loop, and an error-recovery table; scraping is read-only so the destructive-cap doesn't apply, but validation checkpoints are implicit (error table) rather than explicit steps in the sequence. Anchor 4 ('clear sequence with most checkpoints present; minor validation gaps') fits; not 5 because there is no explicit validate-and-retry step in the workflow itself.

4 / 5

Progressive Disclosure

Sections are well organized and tables are appropriately inline for a skill this size, but the only bundle file (scripts/jobspy_scraper.py) is never referenced at its actual location — the body points to tools/jobspy_scraper.py and a wrong skills/linkedin-scraper/ path, so the reference to bundled material is mis-signaled. Anchor 3 ('references present but not clearly signaled') fits; not 4 because the script reference is actively inconsistent across three paths rather than merely having minor organization gaps.

3 / 5

Total

15

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: third-person, concrete about mechanism and output, with an explicit 'Use this skill whenever...' clause and both enumerated use cases and literal example phrases users would say. No changes needed.

DimensionReasoningScore

Specificity

The description names the concrete mechanism ('runs a local Python script that outputs a CSV of job postings'), the library (python-jobspy), and every output field (title, company, location, salary, job type, description, direct URLs), which is comprehensive coverage of the skill's capabilities with no gaps.

5 / 5

Completeness

It explicitly answers both what ('Scrapes LinkedIn job postings using the JobSpy library... outputs a CSV') and when ('Use this skill whenever the user wants to...') with concrete trigger phrases, matching the top anchor exactly.

5 / 5

Trigger Term Quality

It covers natural synonyms ('find jobs', 'open roles', 'job listings', 'hiring signals', 'job pipeline') plus literal user phrasings ('find me some jobs', 'what roles is [company] hiring for'), giving comprehensive natural-term coverage.

5 / 5

Distinctiveness Conflict Risk

It occupies a clear niche (LinkedIn job scraping) with distinct, unambiguous triggers that would not plausibly fire for a different skill.

5 / 5

Total

20

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
gooseworks-ai/goose-skills
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.