Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Make sure to use this skill whenever the user wants to search for jobs in Denmark, find Danish job listings, look up a specific job posting, or asks anything about the Danish job market — even if they don't mention jobindex.dk explicitly. Invoke this skill for questions about open positions, job vacancies, hiring in Denmark, job opportunities in Danish cities or sectors, or when the user wants to find work in Denmark. Also trigger for phrases like "find me a job", "are there any jobs for X in Co
.claude/skills/madslorentzen-jobindex-search/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 15% | 0% |
| case-16 | ✓→✗ | ▼ Worse | -41% | 0% |
Search live Danish job listings from Jobindex.dk. No authentication needed. Covers thousands of job postings across all sectors, updated in real time.
Invoke this skill when the user wants to:
python aarhus)bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search [flags]
Key flags:
--query <text> / -q <text> — keyword search (job title, skill, company, city). Required for meaningful results.--jobage <days> — filter by posting age: 1 (today), 7, 14, 30, or 9999 (all, default)--sort <order> — score (relevance, default) or date (newest first)--page <n> — page number (1-indexed, 20 results per page, fixed)--limit <n> — cap total results the CLI outputs (client-side)--format json|table|plain> Area note: The Jobindex API does not support area filtering via params. To find jobs in a specific city, include the city in --query (e.g. --query "data engineer københavn" or --query "python aarhus").
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts detail <id> [--format json|plain]
id is the job ID from search results (e.g. h1647303). You may also pass the full Jobindex URL. Returns the full job description, deadline, employment type, hours, and apply link.
Always start with search. Pass the job title, skill, or profession as --query. Combine with a city name in the query to narrow by location (e.g. --query "frontend developer odense").
Use --jobage 7 or --jobage 1 for fresh listings. Without it, results include all historical postings.
Use --sort date to see the most recently posted jobs first. Default score sorts by relevance.
Natural workflow: search → detail.
search to find matching jobs and their id values.detail <id> to get the full description, deadline, and apply link.Use --format table for quick scanning, --format json for data processing, and --format plain for reading a single job's full details.
Pagination: The API always returns 20 results per page. Use --page to navigate pages. Use --limit to cap results across one page fetch.
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --query python \ --jobage 7 \ --sort date \ --format table
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --query "data engineer københavn" \ --sort score \ --format table
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --query "grafisk designer" \ --limit 10 \ --format table
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --query "full stack developer" \ --page 2 \ --format json
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --jobage 1 \ --sort date \ --limit 20 \ --format table
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts detail h1647303 --format plain
bashbun run .agents/skills/jobindex-search/cli/src/cli.ts search \ --query "marketing aarhus" \ --jobage 30 \ --sort date \ --format table
| Format | Best for | |--------|----------| | json | Default — programmatic use, data processing, passing IDs to detail | | table | Quick human-readable overview and 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.
jobindex.dk API — no credentials required.--query instead.--jobage 9999 is the default and includes all postings regardless of age.meta.total uses Danish dot-thousands notation internally (e.g. 18.903) — the CLI normalizes this to a plain integer.h1647303) — pass them as-is to detail.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | pass→fail | 9,452 | 7,116 | -25% | 1 | 1 | 0% | 1,641 | 1,886 | +15% | 0 | 0 | — |
case-01 | fail→fail | 7,916 | 4,939 | -38% | 1 | 1 | 0% | 1,429 | 1,671 | +17% | 0 | 0 | — |
case-02 | fail→fail | 3,983 | 4,737 | +19% | 1 | 1 | 0% | 656 | 1,663 | +154% | 0 | 0 | — |
case-03 | fail→fail | 4,586 | 5,201 | +13% | 1 | 1 | 0% | 203 | 1,605 | +691% | 0 | 0 | — |
case-04 | fail→fail | 8,804 | 21,949 | +149% | 1 | 1 | 0% | 1,424 | 1,727 | +21% | 0 | 0 | — |
case-05 | fail→fail | 13,355 | 5,230 | -61% | 1 | 1 | 0% | 2,109 | 1,727 | -18% | 0 | 0 | — |
case-06 | fail→pass | 9,578 | 1,429 | -85% | 1 | 1 | 0% | 1,806 | 1,605 | -11% | 0 | 0 | — |
case-07 | fail→pass | 9,191 | 5,911 | -36% | 1 | 1 | 0% | 1,630 | 2,052 | +26% | 0 | 0 | — |
case-08 | fail→fail | 9,264 | 4,763 | -49% | 1 | 1 | 0% | 1,416 | 1,614 | +14% | 0 | 0 | — |
case-09 | fail→fail | 13,184 | 5,208 | -60% | 1 | 1 | 0% | 2,532 | 1,662 | -34% | 0 | 0 | — |
case-10 | fail→pass | 5,721 | 1,918 | -66% | 1 | 1 | 0% | 1,056 | 1,690 | +60% | 0 | 0 | — |
case-11 | fail→fail | 4,742 | 4,569 | -4% | 1 | 1 | 0% | 269 | 1,645 | +512% | 0 | 0 | — |
case-12 | fail→fail | 7,178 | 4,168 | -42% | 1 | 1 | 0% | 1,251 | 1,641 | +31% | 0 | 0 | — |
case-13 | fail→fail | 8,636 | 4,339 | -50% | 1 | 1 | 0% | 1,454 | 1,608 | +11% | 0 | 0 | — |
case-14 | fail→fail | 2,644 | 3,967 | +50% | 1 | 1 | 0% | 430 | 1,575 | +266% | 0 | 0 | — |
case-15 | fail→fail | 11,479 | 4,889 | -57% | 1 | 1 | 0% | 1,495 | 1,625 | +9% | 0 | 0 | — |
case-16 | pass→fail | 13,920 | 5,247 | -62% | 1 | 1 | 0% | 2,868 | 1,690 | -41% | 0 | 0 | — |
case-17 | fail→fail | 9,612 | 4,076 | -58% | 1 | 1 | 0% | 1,913 | 1,571 | -18% | 0 | 0 | — |
case-18 | fail→fail | 7,831 | 5,557 | -29% | 1 | 1 | 0% | 1,343 | 1,746 | +30% | 0 | 0 | — |
case-19 | fail→fail | 8,864 | 6,381 | -28% | 1 | 1 | 0% | 1,437 | 1,749 | +22% | 0 | 0 | — |
case-21 | pass→pass | 14,595 | 14,856 | +2% | 1 | 1 | 0% | 2,831 | 4,441 | +57% | 0 | 0 | — |
case-22 | pass→pass | 4,073 | 3,263 | -20% | 1 | 1 | 0% | 642 | 1,912 | +198% | 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 5 counted toward the lift figure. The other 17 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 +5 percentage points is the difference between those two pass rates over the 5 comparable cases. 2 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.
Other measured skills in the registry, with their headline benchmark lift.