Jobindex Denmark Job Search
Query the public Jobindex.dk API to search live Danish job listings across all sectors from Claude Code — no account or key required.
Least privilege is well done: allowed-tools scoped to a single CLI script, no credentials, opt-in by default (enabled: false); SECURITY.md states untrusted-input rules and a no-personal-data-egress posture; CI security-guards block permission widening. Deducted for: scraping jobindex.dk with no stated ToS-compliance assessment; up-to-6-retry backoff may add request pressure on the target; no documented user-confirmation/rollback story.
Error contract is strong: stderr JSON error codes, unknown-flag rejection (including short-flag regression fix #426), and zod numeric validation all have offline tests that CI runs; source files are self-consistent. Deducted for: core live paths (Stash-blob parsing in search, dual-shape detail parsing) rely on regex scraping of site-internal HTML with no live tests (CI explicitly excludes network tests), so site redesigns fail silently; version mismatch between cli.ts 0.1.0 and SKILL.md 1.0.0.
Triggers, inputs/outputs, command flags, and known limits (no area filtering, fixed 20/page, companyUrl always null) are clearly disclosed; semantic invocation boundaries are precise. Deducted for: Danish-market-only with Danish-language results — limited fit for FollowSkills' Chinese users though jobindex.dk reachability is not the blocker; the SKILL.md trigger list is extremely broad ('whenever the user wants...'), raising false-trigger risk.
Good doc layering: SKILL.md → README → inline comments, explicit MIT license, install notes, response shapes, and parsing notes; repo has CI, security policy, and maintenance tooling. Deducted for: no changelog; version inconsistency (SKILL.md 1.0.0 vs cli.ts 0.1.0); README install path written as skills/jobindex-search/cli versus actual .agents/skills/... path; unverified publisher with single-maintainer update responsibility.
The claimed task (search + detail) has a complete path: clean output formats, thorough field notes, sensible parsing fallbacks (meta description fallback), and real marginal value over manual browsing. Deducted for: static review cannot verify actual output correctness; brittle regex/Stash parsing breaks on site redesign; no committed representative output samples to inspect.
Auditable primary material exists: source, committed offline test suites, CI workflows (dependency-review, typechecks, bun test), and parsing comments with verification dates. Deducted for: no independent reproduction of live paths (CI deliberately excludes network tests); response-shape examples cannot be cross-corroborated within the repo; claims like 'verified live 2026-08-19' are author statements only.
- Core function depends on regex-scraping jobindex.dk's internal HTML; a site redesign will silently break parsing — run a manual search to verify before relying on it.
- Version inconsistency (SKILL.md 1.0.0 vs cli.ts 0.1.0) and no changelog; diff manually when updating.
- Danish-market-only with Danish-language results; nearly useless outside Denmark, and the overly broad trigger description risks false invocation.
- Scraping compliance with the target site's ToS/robots is not documented; built-in retries (up to 6 with backoff) warrant rate awareness.
- Publisher is unverified by FollowSkills and the repo is singly maintained; long-term availability depends on one maintainer.
What does this skill do, and when should you use it?
jobindex-search is one skill inside the ai-job-search repository. It runs a Bun-based CLI that calls the public Jobindex.dk API to search real-time Danish job postings. You can filter by keyword, posting age, sort order, and pagination, and fetch the full description, deadline, and apply link for any listing. The skill ships disabled by default and is only enabled when Denmark is your target market, via /setup or manual configuration. It does not handle applications themselves — CV tailoring and cover letters belong to other skills in the repo.
The skill is authorized via allowed-tools to run bun run .agents/skills/jobindex-search/cli/src/cli.ts. It exposes two commands: search filters listings by keyword (--query), posting age (--jobage: 1/7/14/30/9999 days), sort order (--sort score or date), page (--page, fixed 20 results per page), and output format (--format /table/plain); detail <id> takes a job ID from search results (e.g. h1647303, or a full Jobindex URL) and returns the full description, deadline, employment type, hours, and apply link. All data comes from the public jobindex.dk API with no authentication; errors are written to stderr as JSON with exit code 1.
- A developer job-hunting in Denmark who wants recently posted Python roles via `--query python --jobage 7 --sort date`
- A job seeker in Copenhagen or Aarhus who needs to append the city to the query (e.g. --query "data engineer københavn") since the API has no separate area parameter
- A candidate using the ai-job-search framework who needs a live Danish-market data source for the /scrape workflow
- A user researching the Danish market for a profession (e.g. graphic designer, full-stack developer) using an all-time relevance-sorted search
- Anyone in Claude Code who naturally asks things like "find me a job" or "jobs in Copenhagen" and gets this skill triggered automatically
What are this skill's strengths and limitations?
- Zero signup, credentials, or API keys — works out of the box
- Real-time data covering thousands of Danish postings across all sectors
- Structured output (/table/plain) suited to downstream processing or the /apply pipeline
- Thorough SKILL.md with trigger phrases, full flag documentation, and multiple worked examples
- Denmark-only (Jobindex.dk); useless for other markets unless you extend via the repo's /add-portal pattern
- No API-level area filtering — city search relies on keywords, limiting precision
- Page size fixed at 20 results, non-configurable
- Ships disabled; requires /setup or manual enabling, and trigger phrases skew Danish
- Depends on a third-party public API whose availability and terms the repo does not control
How do you install this skill?
The skill ships with the ai-job-search repository: fork and clone (gh repo fork MadsLorentzen/ai-job-search --clone), then run bun install inside .agents/skills/jobindex-search/cli. The skill is disabled by default (enabled: false, a Danish demo portal that is opt-in); /setup enables it when your market is Denmark, or set enabled to true manually in SKILL.md. Note: the README's quick-start install loops cover this tool among the six listed CLI tools.
How do you use this skill?
Mention Danish job searching in Claude Code (e.g. "find developer jobs in Copenhagen") to trigger it. The natural workflow is search → detail: first bun run .agents/skills/jobindex-search/cli/src/cli.ts search --query python --jobage 7 --format table to find listings and their IDs, then ... detail h1647303 --format plain for the full description and apply link. City filtering must go inside --query; pages are fixed at 20 results — use --page to navigate and --limit to cap output.
How does this skill compare with similar options?
The same repo ships sibling portal skills: linkedin-search (LinkedIn public endpoints, country-agnostic) and freehire-search (freehire.me aggregator, multi-market, zero runtime dependencies). Outside Denmark, those are better starting points; within Denmark, jobindex-search typically has the broadest coverage.