Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Make sure to use this skill whenever the user mentions anything related to Danish job searching, job listings, job vacancies, employment opportunities in Denmark, or the Danish government job portal — even if they don't mention jobnet.dk explicitly. Also invoke this skill for questions about specific job titles, occupations, employers, or regions in a Danish employment context. This skill covers the official Danish public job portal operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering).
.claude/skills/madslorentzen-jobnet-search/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 16% | 0% |
Access live Danish job listings from the Jobnet.dk public API. No authentication needed. Jobnet is operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering) and is Denmark's official government job portal — covering public sector positions as well as many private sector listings. Approximately 21,000+ active jobs at any time.
Invoke this skill when the user wants to:
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts search [flags]
Key flags:
--search-string <text> — keyword search, e.g. sygeplejerske, ingeniør, pædagog--region <region> — HovedstadenOgBornholm, Midtjylland, Syddanmark, OevrigeSjaelland, Nordjylland--postal-code <code> — postal code for radius-based search, e.g. 2100--radius <km> — radius in km from postal code (default: 50)--work-hours <type> — FullTime or PartTime--duration <type> — Permanent or Temporary--job-type <type> — Ordinaert, Efterloenner, Foertidspension--occupation-area <id> — occupation area identifier, e.g. 10000--occupation-group <id> — occupation group identifier, e.g. 10060--order <type> — PublicationDate (default), BestMatch, ApplicationDate--page / --per-page / --limit--format json|table|plainbashbun run .agents/skills/jobnet-search/cli/src/cli.ts detail <jobAdId> [--format json|plain]
jobAdId is the UUID from search results (the jobAdId field). Returns the complete job description, contact persons, application deadline, employer details, and direct application URL.
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string <text> [--per-page <n>]
Use this to discover ESCO occupation identifiers before passing them to search with --occupation-area or --occupation-group.
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query <text> [--limit <n>]
Returns Danish job title autocomplete strings. Useful for exploring valid Danish job titles before constructing a search query.
Discover occupations first. Use occupations or suggestions to find the right Danish term or ESCO identifier before running a search:
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query "syge" bun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string "sygeplejerske"
Natural workflow: search → detail.
search to get a list of matching jobs with their jobAdId.detail <jobAdId> to get the full job description, contact persons, and direct application link.Use --format table for comparisons, --format json for data processing, and --format plain for single-record detail views (strips HTML from job body).
Pagination: --per-page controls server-side results per page. --limit caps what the CLI outputs. Use --page + --per-page to iterate through large result sets.
Geographic search modes:
--region for broad regional filtering (e.g. all of Midtjylland)--postal-code + --radius for jobs near a specific location--region and --postal-code in the same queryOrder matters for intent:
PublicationDate — newest postings first (default, good for "what's new")BestMatch — relevance score (best when --search-string is provided)ApplicationDate — earliest deadline first (good for urgent applications)bashbun run .agents/skills/jobnet-search/cli/src/cli.ts search \ --region HovedstadenOgBornholm \ --per-page 10 \ --format table
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts search \ --search-string "sygeplejerske" \ --work-hours FullTime \ --duration Permanent \ --order BestMatch \ --per-page 10 \ --format table
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts search \ --search-string "udvikler" \ --postal-code 8000 \ --radius 30 \ --work-hours FullTime \ --format table
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts detail 9ef43bce-d82b-4ea1-a098-7ff6520f99be --format plain
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts search \ --search-string "pædagog" \ --region OevrigeSjaelland \ --order ApplicationDate \ --per-page 10
bashbun run .agents/skills/jobnet-search/cli/src/cli.ts suggestions --query "ingeniør" --limit 5 bun run .agents/skills/jobnet-search/cli/src/cli.ts occupations --search-string "lærer" --per-page 5
| Format | Best for | |--------|----------| | json | Default — programmatic use, data processing, passing IDs between commands | | table | Quick human-readable overviews and comparisons | | plain | Single-record detail views (detail), strips HTML from job descriptions |
All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.
jobnet.dk/bff REST API — no credentials required.x-csrf: 1 header; the CLI adds this automatically.--page 1 is the first page).search results omit the HTML job description — use detail to get it.detail --format plain strips HTML tags for readable text output.https://jobnet.dk/find-job/{jobAdId}suggestions is tuned for Danish job titles — English terms may return empty results.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | pass→pass | 9,620 | 4,204 | -56% | 1 | 1 | 0% | 1,402 | 2,435 | +74% | 0 | 0 | — |
case-20 | pass→pass | 14,394 | 5,982 | -58% | 1 | 1 | 0% | 2,179 | 2,724 | +25% | 0 | 0 | — |
case-01 | pass→fail | 12,361 | 8,659 | -30% | 1 | 1 | 0% | 1,886 | 2,307 | +22% | 0 | 0 | — |
case-02 | fail→fail | 8,287 | 5,602 | -32% | 1 | 1 | 0% | 1,481 | 2,183 | +47% | 0 | 0 | — |
case-03 | fail→fail | 6,526 | 5,428 | -17% | 1 | 1 | 0% | 331 | 2,152 | +550% | 0 | 0 | — |
case-04 | fail→pass | 14,487 | 6,297 | -57% | 1 | 1 | 0% | 2,451 | 3,120 | +27% | 0 | 0 | — |
case-05 | pass→pass | 13,014 | 3,516 | -73% | 1 | 1 | 0% | 2,045 | 2,430 | +19% | 0 | 0 | — |
case-06 | fail→pass | 11,243 | 3,292 | -71% | 1 | 1 | 0% | 1,872 | 2,409 | +29% | 0 | 0 | — |
case-07 | fail→pass | 9,473 | 2,938 | -69% | 1 | 1 | 0% | 1,564 | 2,295 | +47% | 0 | 0 | — |
case-08 | fail→pass | 6,960 | 2,514 | -64% | 1 | 1 | 0% | 1,113 | 2,266 | +104% | 0 | 0 | — |
case-09 | fail→pass | 10,986 | 2,954 | -73% | 1 | 1 | 0% | 2,006 | 2,320 | +16% | 0 | 0 | — |
case-10 | pass→pass | 13,248 | 3,659 | -72% | 1 | 1 | 0% | 1,889 | 2,436 | +29% | 0 | 0 | — |
case-21 | fail→pass | 10,729 | 6,515 | -39% | 1 | 1 | 0% | 1,599 | 2,865 | +79% | 0 | 0 | — |
case-11 | fail→pass | 11,534 | 2,406 | -79% | 1 | 1 | 0% | 1,707 | 2,248 | +32% | 0 | 0 | — |
case-12 | fail→pass | 10,963 | 5,666 | -48% | 1 | 1 | 0% | 1,810 | 2,761 | +53% | 0 | 0 | — |
case-13 | fail→fail | 8,273 | 2,027 | -75% | 1 | 1 | 0% | 1,407 | 2,127 | +51% | 0 | 0 | — |
case-14 | fail→pass | 11,383 | 2,712 | -76% | 1 | 1 | 0% | 1,891 | 2,243 | +19% | 0 | 0 | — |
case-15 | fail→pass | 5,934 | 2,384 | -60% | 1 | 1 | 0% | 1,021 | 2,283 | +124% | 0 | 0 | — |
case-16 | fail→pass | 15,437 | 6,350 | -59% | 1 | 1 | 0% | 2,315 | 2,880 | +24% | 0 | 0 | — |
case-17 | fail→fail | 17,156 | 6,176 | -64% | 1 | 1 | 0% | 2,650 | 3,013 | +14% | 0 | 0 | — |
case-18 | fail→pass | 7,728 | 1,413 | -82% | 1 | 1 | 0% | 1,203 | 2,036 | +69% | 0 | 0 | — |
case-19 | fail→pass | 13,449 | 2,403 | -82% | 1 | 1 | 0% | 2,118 | 2,210 | +4% | 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 19 counted toward the lift figure. The other 3 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 +55 percentage points is the difference between those two pass rates over the 19 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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/11/2026 | — |
Other measured skills in the registry, with their headline benchmark lift.