What does this skill do, and when should you use it?
This is a skill inside the MadsLorentzen/ai-job-search repository that wraps the public API of the Danish job board Jobdanmark.dk. Through a Bun-run CLI it offers five operations — job search, job detail, category counts, job-title autocomplete, and location suggestions — covering 10 categories and every Danish municipality. No authentication or API key is needed and the data is live. It is one of the repo's Danish demo portal skills, ships disabled (opt-in), and fits people job-hunting in or moving to Denmark.
The skill instructs the AI client to call a local CLI (bun run .agents/skills/jobdanmark-search/cli/src/cli.ts) to: 1) search — filter listings by free text, category ID, job-title ID, municipality, zip, region and employment type; pagination is fixed at 30 items per page (server-enforced) with --limit capping CLI output; 2) detail <slug> — fetch the job page and parse embedded Schema.org JSON-LD (falling back to the rendered HTML when absent) to return description, deadline and organization data; 3) categories — list all 10 categories with current live job counts; 4) autocomplete — resolve a search term into precise job-title or category IDs; 5) locations — return matching municipalities, zip codes and regions. Output supports , table and plain formats; errors go to stderr as structured JSON with exit code 1.
- A job seeker in Denmark who wants to filter full-time, part-time or student jobs by city or zip code (e.g. Copenhagen, Odense, zip 8000)
- A candidate who needs the full description and application deadline of a specific posting (e.g. the detail for an IT-manager slug)
- Someone surveying the Danish job market who wants a live count of openings across all 10 categories
- A user targeting a specific role (e.g. sygeplejerske/nurse, elektriker/electrician) who first resolves a job-title ID via autocomplete for precise filtering
- An applicant looking for apprentice (elev) or internship (praktik) positions across all of Denmark by employment type
How do you install this skill?
- Core function depends entirely on the Danish jobdanmark.dk public API; reachability from mainland China is undeclared, so Chinese users may not be able to use it directly.
- The SKILL.md description contains many broad trigger phrases and may fire falsely in conversations unrelated to Danish job search; it ships disabled by default and users should enable it only when needed.
- The detail command parses rendered HTML from jobdanmark.dk; site redesigns can break parsing (a PARSE_ERROR is reported, but output may be incomplete).
- This is a static source review with no execution; real result quality and API stability are not independently verified.
- Shell / CLI
- Network access
- Local filesystem
Bun (CLI is run via `bun run`)Jobdanmark.dk public API (network access, no credentials)
The skill ships with the MIT-licensed MadsLorentzen/ai-job-search repository under .agents/skills/. Clone it: gh repo fork MadsLorentzen/ai-job-search --clone && cd ai-job-search, then install the CLI dependencies: cd .agents/skills/jobdanmark-search/cli && bun install. The skill is disabled by default (enabled: false — a Danish demo portal): enable it via the repo's /setup when your market is Denmark, or manually set enabled to true in the SKILL.md frontmatter.
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/.agents/skills/jobdanmark-search" ~/.claude/skills/
rm -rf "$tmp"Generated from the source repository and skill path; it copies only this skill's folder. If the author's install steps above differ, follow those first. To scope it to one project, replace ~/.claude/skills with that project's .claude/skills.
How do you use this skill?
Once installed, send your agent any of these to trigger it:
- IT job denmark
In Claude Code, the skill triggers when the user mentions Danish jobs, jobdanmark, or trigger phrases like 'find job', 'ledige stillinger', or 'IT job denmark', then follows SKILL.md guidance to run the CLI. Example — full-time IT jobs in Copenhagen: bun run .agents/skills/jobdanmark-search/cli/src/cli.ts search --category 227978 --municipality "København" --job-type fuldtid --format table. The intended workflow: resolve the exact municipality and job-title ID with locations and autocomplete, run search to get slugs, then call detail <slug> for the complete posting.
What are this skill's strengths and limitations?
- Uses the public Jobdanmark.dk API — no signup, API key or credentials of any kind
- Live data; the categories command returns current open-job counts, a direct read on the market
- Rich filtering: text, category, job-title ID, municipality, zip, region and six employment types all combine in one request
- Three output formats (/table/plain) serve both data processing and human reading; errors are structured JSON on stderr
- The detail command prefers JSON-LD structured data with an HTML fallback, giving decent page-coverage
- Covers Denmark only (Jobdanmark.dk) — useless for job seekers in other markets
- Ships disabled (enabled: false); you must opt in via /setup or edit the frontmatter, so it is not turnkey
- Pagination is fixed at 30 items per page (server-enforced), so large result sets require manual paging
- detail depends on parsing the job page's JSON-LD/HTML and may break if page structure changes; the source provides no evidence of a dedicated test suite for this skill
- applicationDeadline can be null in search results, so deadline information is not guaranteed complete
How does this skill compare with similar options?
Side by side with related skills; every score comes from the same FSRS standard.
| Skill | FS score | Stars | Last updated | License |
|---|---|---|---|---|
| Jobdanmark Search (Denmark Job Listings) this page | 60 · Recommended | ★ 47k | 17d ago | MIT |
| Jobindex Denmark Job Search | 58 · Recommended | ★ 47k | 17d ago | MIT |
| Jobnet-Search: Danish Official Job Portal Skill | 59 · Recommended | ★ 47k | 17d ago | MIT |
| LinkedIn Search Skill | 55 · Use with care | ★ 47k | 17d ago | MIT |
| Job Scraper — Local-First Job Search Skill | 54 · Use with care | ★ 47k | 17d ago | MIT |
The same repository ships sibling skills for other Danish boards (Jobindex, Jobnet, Jobbank) plus cross-market options: linkedin-search (LinkedIn public guest endpoints; personal use only per ToS) and freehire-search (freehire.me tech-job aggregator REST API). If you are not targeting Denmark, those may suit you better; this skill's edge is the structured category taxonomy and local-depth coverage of Jobdanmark.dk.
How did FollowSkills review this skill?
Read-only public-API querying; allowed-tools scoped strictly to its own CLI (bun run .../jobdanmark-search/cli/src/cli.ts *); no credentials, no user-data writes, ships opt-in (enabled:false). CLI includes unknown-flag rejection preventing silently dropped filters; no exfiltration, no destructive defaults. Deductions: unverified publisher identity; the detail command's HTML-parsing path depends on site structure; apiFetch lacks runtime response validation (self-acknowledged in code comments) — not full marks.
High internal consistency: SKILL.md and README agree on endpoints, flags, category IDs; errors uniformly emitted as stderr JSON with exit 1; known defects (#421 null text, #426 short-flag) patched. Deductions: static review cannot execute; the fixture tests are not present in the provided evidence; reliance on Jobdanmark.dk HTML selectors is fragile to upstream site changes — capped at 10 per static calibration.
Clear scenario (Danish job search) with rich triggers, but the description's keyword stuffing of very common phrases (e.g. studiejob, find job) risks false semantic triggering; Denmark-only market is stated. Deductions: jobdanmark.dk reachability from mainland China undeclared, no Chinese-language support; non-fit boundaries not explicitly declared.
Good layered docs (progressive SKILL.md, README with endpoints/request bodies/response shapes), version 1.0.0, MIT license, repo CI (typecheck plus discovered CLI test matrix) and security guards. Deductions: no per-skill changelog; maintenance responsibility rests on repo-level governance only; example dates (2026) are illustrative only; unverified publisher weakens the attribution chain.
Well-bounded task (five commands), three output formats, cross-portal contract fields, and deliberate dropping of unusable presentation fields show real attention to downstream usability. Deductions: static review cannot confirm live output usability; claimed coverage (~15,000 listings) is self-reported and unverified; marginal value depends on third-party API stability — 6.
Code is directly auditable: endpoints, request construction, filtering, and error handling are verifiable in source; CI is real (ci.yml's discover-clis matrix typechecks and bun-tests it). Deductions: this skill's fixture/mock test files are absent from the provided evidence, so key-path coverage is unconfirmed; no third-party execution evidence; static cap 5, awarded 4.
Open a dimension to read why it scored that way
Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.
See the full review method →