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
How do you install this skill?
- 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.
- Shell / CLI
- Network access
- Local filesystem
BunJobindex.dk public API (no auth)
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.
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/jobindex-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:
- find developer jobs in Copenhagen
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.
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 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 |
|---|---|---|---|---|
| Jobindex Denmark Job Search this page | 58 · Recommended | ★ 47k | 17d ago | MIT |
| Jobdanmark Search (Denmark Job Listings) | 60 · Recommended | ★ 47k | 17d ago | MIT |
| Jobnet-Search: Danish Official Job Portal Skill | 59 · Recommended | ★ 47k | 17d ago | MIT |
| Job Scraper — Local-First Job Search Skill | 54 · Use with care | ★ 47k | 17d ago | MIT |
| LinkedIn Search Skill | 55 · Use with care | ★ 47k | 17d ago | MIT |
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.
How did FollowSkills review this skill?
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.
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 →