jobnet-search skill
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). Trigger phrases include: danish jobs, danish job search, jobnet, jobnet.dk, find job denmark, danish employment, job i danmark, job på jobnet, offentlige job, stillinger i det offentlige, public sector jobs denmark, government jobs denmark, STAR jobs, job ledige stillinger, ledig stilling, søg job, job opslag, job vacancy denmark, stillingopslag, jobopslag, sygepleje job, ingeniør job, lærer job, pædagog job, it-job denmark, jobs in copenhagen, jobs in aarhus, jobs in odense, deltidsjob, fuldtidsjob, fastansættelse, tidsbegrænset ansættelse, fleksjob, sygeplejerske job, social worker job denmark, occupation search denmark, esco occupation, job deadline, ansøgningsfrist, søg efter job, full time job denmark, part time job denmark.
Is the jobnet-search skill safe?
A critical finding: do not install it without reading the flagged line. We read 25 files in the folder on 2026-11-10.
- high
cli/tests/hidden-text.test.ts:8Tells the agent to set aside its instructions, hide what it does from the user, or switch off safety checks.
// CLI's output does. "Ignore previous instructions" spelled in Unicode tag - high
cli/tests/search-normalization.test.ts:236Reads credential files (SSH keys, cloud or package-manager tokens) that a skill has no normal reason to touch.
expect(externalAdUrl({ isExternal: true, jobAdUrl: "file:///etc/passwd" })).toBeNull(); - medium
cli/src/helpers.ts:56Contains zero-width or text-direction characters, which can make a line read differently from what it does.
/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F<U+200B>-<U+202A>-<U+202E><U+2060>-︀-️\u{E0000}-\u{E007F}\u{E0100}-\u{E01EF}]/gu - medium
cli/tests/hidden-text.test.ts:13Contains zero-width or text-direction characters, which can make a line read differently from what it does.
const INVISIBLE = `${TAGGED}<U+202E><U+200B><U+2066>\u001B` - low
SKILL.md:1The description is over 1,024 characters, the limit agents read.
1240 characters
Install the jobnet-search skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description. Read the findings above first.
git clone --depth 1 https://github.com/ai-job-search-dev/ai-job-search.git /tmp/ai-job-search mkdir -p ~/.claude/skills cp -r /tmp/ai-job-search/.agents/skills/jobnet-search ~/.claude/skills/jobnet-search
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Jobnet-Search Skill
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.
When to use this skill
Invoke this skill when the user wants to:
- Search for job openings in Denmark by keyword, title, or employer
- Filter jobs by region, work hours (full/part time), or employment duration (permanent/temporary)
- Find jobs near a specific postal code within a given radius
- Get full details for a specific job ad including description, contact persons, and application URL
- Discover occupation types and ESCO categories for more precise job filtering
- Explore autocomplete suggestions for Danish job titles or keywords
- Find jobs in the public sector, healthcare, IT, education, or any other Danish industry
Commands
Search for job ads
bun run .agents/skills/jobnet-search/cli/src/cli.ts search [flags]Query syntax: phrase quoting not honoured; no OR.
Key flags:
- --search-string — keyword search, e.g. sygeplejerske, ingeniør, pædagog
- --region — HovedstadenOgBornholm, Midtjylland, Syddanmark, OevrigeSjaelland, Nordjylland
- --postal-code — postal code for radius-based search, e.g. 2100
- --radius — radius in km from postal code (default: 50)
- --work-hours — FullTime or PartTime
- --duration — Permanent or Temporary
- --job-type — Ordinaert, Efterloenner, Foertidspension
- --occupation-area — occupation area identifier, e.g. 10000
- --occupation-group — occupation group identifier, e.g. 10060
- --occupation — one ESCO occupation: the conceptUriDa printed by occupations, or its trailing UUID
- --order — PublicationDate (default), BestMatch, ApplicationDate
- --page / --per-page / --limit
Full job ad detail
bun run .agents/skills/jobnet-search/cli/src/cli.ts detail <jobAdId> [--format json|plain]jobAdId is the UUID from search results (the jobAdId field, also emitted as id, the portal-contract name every search CLI shares). Returns the complete job description, contact persons, application deadline, employer details, and direct application URL.
Search occupation types
bun 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. The numeric --occupation-area / --occupation-group codes are a different taxonomy: an occupation UUID passed there matches no ads.
Typeahead suggestions
bun 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.
How to use effectively
Discover occupations first. Use occupations or suggestions to find the right Danish term or ESCO identifier before running a search:
bun 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"
bun run .agents/skills/jobnet-search/cli/src/cli.ts search --occupation http://data.star.dk/esco/occupation/56f5d45c-ce48-43ac-9720-34831a1c8302Natural workflow: search → detail.
- Use search to get a list of matching jobs with their jobAdId.
- Call detail 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:
- Use --region for broad regional filtering (e.g. all of Midtjylland)
- Use --postal-code + --radius for jobs near a specific location
- Do not combine --region and --postal-code in the same query
Order 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)
Usage examples
Jobs in Copenhagen area
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
--region HovedstadenOgBornholm \
--per-page 10 \
--format tableNurse jobs nationwide
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
--search-string "sygeplejerske" \
--work-hours FullTime \
--duration Permanent \
--order BestMatch \
--per-page 10 \
--format tableIT jobs near Aarhus within 30km
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
--search-string "udvikler" \
--postal-code 8000 \
--radius 30 \
--work-hours FullTime \
--format tableFull details of a job ad
bun run .agents/skills/jobnet-search/cli/src/cli.ts detail 9ef43bce-d82b-4ea1-a098-7ff6520f99be --format plainJobs sorted by application deadline (urgent first)
bun run .agents/skills/jobnet-search/cli/src/cli.ts search \
--search-string "pædagog" \
--region OevrigeSjaelland \
--order ApplicationDate \
--per-page 10Discover occupation terms
bun 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 5Output formats
All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.
Notes
- All data is from the public jobnet.dk/bff REST API — no credentials required.
- The API requires the x-csrf: 1 header; the CLI adds this automatically.
- Pagination is 1-indexed (--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.
- Job ad detail pages on jobnet.dk: https://jobnet.dk/find-job/{jobAdId} (non-external ads; external ads use employer jobAdUrl).
- suggestions is tuned for Danish job titles — English terms may return empty results.
More skills from ai-job-search-dev/ai-job-search
- Dfreehire-searchUse this skill to search live software / tech / data / engineering job listings across many countries and markets (and remote) via the freehire.me aggregator's public API, or to look up a specific posting. It aggregates roles from ~50 ATS platforms into one schema, so a single skill covers many markets — but its faceted filtering (skills, category, seniority) is tuned tech-first, so scope triggers to technical roles. Trigger phrases: find a tech job, software job search, developer jobs, engineering vacancies, data/ML jobs, DevOps roles, remote developer jobs, "are there any <tech role> jobs in <place>", look up this freehire job posting.
- Ajob-application-assistantAssists with job applications: evaluating job postings, tailoring CVs, writing cover letters, and preparing for interviews. Triggers on keywords like: job posting, job application, CV, cover letter, resume, interview prep, job fit, career, application, apply, ansøgning, stilling
- Djobbank-searchMake sure to use this skill whenever the user mentions anything related to job searching on Akademikernes Jobbank, jobbank.dk, or looking for academic or highly educated positions in Denmark — even if they don't mention jobbank.dk explicitly. Also invoke this skill for questions about Danish job listings, graduate trainee positions, Ph.d. jobs, or finding work in specific industries or regions in Denmark. Trigger phrases include: jobbank, akademikernes jobbank, jobs denmark, academic jobs denmark, find job denmark, highly educated jobs, graduate job denmark, trainee position denmark, ph.d. position denmark, postdoc denmark, studiejob, fuldtidsjob, deltidsjob, vikariat, freelance job, praktikplads, job søgning, jobsøgning, søg job, ledige stillinger, nye jobs, it jobs denmark, engineering jobs denmark, marketing jobs denmark, finance jobs denmark, healthcare jobs denmark, remote job denmark, fjernarbejde, job københavn, job aarhus, job odense, nyuddannede job, job til nyuddannede, international job denmark, jobbank søgning, find stilling, data scientist job, software developer job, projektleder stilling, konsulent job, data analyse job.
- Djobdanmark-searchMake sure to use this skill whenever the user mentions anything related to Danish job listings, job search in Denmark, finding work in Denmark, or job vacancies on Jobdanmark — even if they don't explicitly mention jobdanmark.dk. Also invoke this skill for questions about specific Danish job categories, municipalities, job types, or salaries in a job-search context. Trigger phrases include: danish jobs, jobs in denmark, find job denmark, job search denmark, danish job listings, jobdanmark, job opslag, find job, jobsøgning, ledige stillinger, stillingsopslag, job i Danmark, fuldtidsjob, deltidsjob, studiejob, praktikplads, elev, fleksjob, IT job denmark, sygeplejersker job, håndværker job, ingeniør job, pædagog job, kontor job, leder job, salg job, hotel job, kirke job, job aarhus, job københavn, job odense, job aalborg, job sjælland, job jylland, job fyn, jobkategorier denmark, ledige job, ansøgningsfrist, søg job, job opslaget, jobopslag, danish vacancies, work in denmark, employment denmark, job denmark, jobs near me denmark, apprentice denmark, internship denmark, part-time denmark, full-time denmark.
- Djobindex-searchMake 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 Copenhagen", or "what jobs are available in Aarhus" when the context is Denmark. Trigger phrases include: jobindex, jobsøgning, job i Danmark, ledige stillinger, job opslag, find job, stillingopslag, jobannonce, job vacancy denmark, danish jobs, jobs in denmark, job search denmark, work in denmark, find work denmark, IT jobs denmark, engineer jobs denmark, developer jobs copenhagen, marketing jobs aarhus, jobs aarhus, jobs copenhagen, jobs odense, jobs aalborg, job openings denmark, hiring denmark, job listings denmark, python jobs denmark, grafisk designer job, data engineer job, softwareudvikler job, full stack developer job danmark.
- Dlinkedin-searchUse 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, "are there any X jobs in <place>", look up this job posting.
- AscrapeFinds new job postings matching your profile via installed portal-search CLIs (LinkedIn, local job boards, and any skills added with /add-portal). Deduplicates across runs. Triggers on: job scrape, find jobs, search jobs, new jobs, job search, scrape jobs, /scrape
- AupskillCompares tracked job postings against the candidate profile to identify skill gaps and generate a prioritized learning plan with study resources. Triggers on: /upskill, upskill, skill gaps, what should I learn, learning plan