Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill whenever the user wants to search for jobs in any location or market, find job listings, or look up a specific job posting — in any country, city, or remotely. Invoke for open positions, vacancies, and hiring across any sector or role (software, data, design, marketing, finance, legal, operations, etc.). The location is always supplied explicitly by the user. Trigger phrases: find a job, job search, search for jobs, job openings, vacancies, hiring, positions open, remote jobs, "ar
.claude/skills/madslorentzen-linkedin-search/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-10 | ✓→✗ | ▼ Worse | -6% | 0% |
Search live job listings from LinkedIn's public job board for any country/region (and remote). No authentication, no API key, and zero runtime dependencies — it runs with just bun. The location is always passed explicitly, so the same skill works for a forker in any market out of the box.
> This is a country-agnostic worked example of the repo's job-portal-skill pattern. > LinkedIn's jobs-guest endpoints are global and the HTML parsing is country-independent; > only the --location you pass changes per market.
This uses LinkedIn's public job pages; automated access is against LinkedIn's Terms of Service, so keep volume low and don't use it commercially or for bulk data collection. Run it on your own responsibility.
bashbun run .agents/skills/linkedin-search/cli/src/cli.ts search --location "<place>" [flags]
Key flags:
--location <text> / -l <text> — required. A LinkedIn place string, e.g. "Mumbai, Maharashtra, India", "Berlin, Germany", "London, United Kingdom", or "Remote".--query <text> / -q <text> — keyword search (title, skill, role). Recommended.--jobage <days> — posted within N days: 1, 7, 14, 30. Omit for all postings.--jobage-minutes <n> — posted within N minutes (sub-day precision, e.g. 30). Conflicts with --jobage — pass only one.--remote <mode> — remote, hybrid, or onsite (workplace-type filter).--page <n> — page number (1-indexed, 10 results per page).--limit <n> / -n <n> — cap total results emitted (client-side).--format json|table|plain — default json.bashbun run .agents/skills/linkedin-search/cli/src/cli.ts detail <id|url> [--format json|plain]
id is the job ID from search results (e.g. 4426311357). You may also pass a full LinkedIn jobs/view/... URL or a urn:li:jobPosting:... URN. Returns the full description, seniority, employment type, job function, and industries.
bash# Data engineer roles in Bengaluru, last 30 days bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "data engineer" -l "Bengaluru, Karnataka, India" --jobage 30 --format table # Product manager roles in Berlin, remote bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "product manager" -l "Berlin, Germany" --remote remote --format table # Any role, fully remote bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "paralegal" -l "Remote" --format table # Engineer roles, remote, posted in the last 30 minutes bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "engineer" -l "Remote" --jobage-minutes 30 --format table # Full details for a specific job bun run .agents/skills/linkedin-search/cli/src/cli.ts detail 4426311357 --format plain
| Format | Best for | |--------|----------| | json | Default — programmatic use, passing IDs to detail | | table | Quick human-readable scanning | | plain | Reading a single job's full detail (detail command) |
All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.
jobs-guest endpoints — no credentials required.4426311357) — pass them as-is to detail.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 8,446 | 12,299 | +46% | 1 | 1 | 0% | 1,237 | 2,111 | +71% | 0 | 0 | — |
case-02 | fail→fail | 4,265 | 4,730 | +11% | 1 | 1 | 0% | 653 | 1,350 | +107% | 0 | 0 | — |
case-03 | fail→pass | 10,219 | 2,622 | -74% | 1 | 1 | 0% | 1,955 | 1,558 | -20% | 0 | 0 | — |
case-04 | fail→pass | 8,523 | 1,763 | -79% | 1 | 1 | 0% | 1,628 | 1,352 | -17% | 0 | 0 | — |
case-05 | pass→pass | 10,855 | 4,886 | -55% | 1 | 1 | 0% | 1,682 | 1,324 | -21% | 0 | 0 | — |
case-06 | fail→fail | 6,648 | 5,296 | -20% | 1 | 1 | 0% | 580 | 1,373 | +137% | 0 | 0 | — |
case-07 | fail→fail | 2,385 | 5,494 | +130% | 1 | 1 | 0% | 385 | 1,512 | +293% | 0 | 0 | — |
case-08 | fail→fail | 6,402 | 4,842 | -24% | 1 | 1 | 0% | 1,106 | 1,371 | +24% | 0 | 0 | — |
case-09 | fail→fail | 13,213 | 5,406 | -59% | 1 | 1 | 0% | 1,903 | 1,466 | -23% | 0 | 0 | — |
case-10 | pass→fail | 9,033 | 5,747 | -36% | 1 | 1 | 0% | 1,453 | 1,360 | -6% | 0 | 0 | — |
case-11 | fail→fail | 13,048 | 5,212 | -60% | 1 | 1 | 0% | 1,631 | 1,340 | -18% | 0 | 0 | — |
case-12 | fail→pass | 8,180 | 3,454 | -58% | 1 | 1 | 0% | 1,511 | 1,358 | -10% | 0 | 0 | — |
case-13 | fail→fail | 7,878 | 5,606 | -29% | 1 | 1 | 0% | 1,330 | 1,452 | +9% | 0 | 0 | — |
case-14 | fail→fail | 7,419 | 5,055 | -32% | 1 | 1 | 0% | 1,077 | 1,405 | +30% | 0 | 0 | — |
case-15 | fail→fail | 10,553 | 4,996 | -53% | 1 | 1 | 0% | 1,750 | 1,465 | -16% | 0 | 0 | — |
case-16 | fail→pass | 11,359 | 3,219 | -72% | 1 | 1 | 0% | 1,910 | 1,633 | -15% | 0 | 0 | — |
case-17 | pass→pass | 2,519 | 10,844 | +330% | 1 | 1 | 0% | 356 | 2,235 | +528% | 0 | 0 | — |
case-18 | pass→pass | 3,999 | 3,657 | -9% | 1 | 1 | 0% | 566 | 1,710 | +202% | 0 | 0 | — |
case-19 | pass→fail | 6,066 | 5,733 | -5% | 1 | 1 | 0% | 907 | 2,011 | +122% | 0 | 0 | — |
case-20 | fail→fail | 2,478 | 4,435 | +79% | 1 | 1 | 0% | 357 | 1,412 | +296% | 0 | 0 | — |
case-21 | fail→fail | 7,914 | 4,259 | -46% | 1 | 1 | 0% | 1,213 | 1,286 | +6% | 0 | 0 | — |
case-22 | fail→fail | 11,325 | 4,325 | -62% | 1 | 1 | 0% | 2,337 | 1,372 | -41% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 8 counted toward the lift figure. The other 14 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 8 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/11/2026 | +68% |
| gemini-3.6-flash | verified | 8/10/2026 | +9% |
Other measured skills in the registry, with their headline benchmark lift.