The framework ships with search skills for four Danish job portals — Jobindex, Jobnet, Akademikernes Jobbank, and Jobdanmark — plus the country-agnosticDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/MadsLorentzen/ai-job-search/llms.txt
Use this file to discover all available pages before exploring further.
linkedin-search skill that works for any market. If your job market uses different portals, /add-portal lets you add them. Give it a public job board URL and it investigates the portal’s search structure, scaffolds a complete CLI skill matching the architecture of the shipped tools, and test-runs a live query before registering anything. The generator is country-agnostic; the skills it produces are market-specific and live in your fork.
Usage
/add-portal starts an interview to collect the portal details. Passing a URL skips straight to the investigation step. --list prints a table of all portal skills currently installed in .agents/skills/.
How It Works
Interview: portal basics
/add-portal collects four things: the portal URL, a skill name in kebab-case with a -search suffix (e.g. seek-search, stepstone-search), the market and language the portal covers — including local-language trigger phrases for the skill definition — and a realistic test query (a job title or skill you’d actually search for) used for the live test later.Investigate the portal
Before writing any code,
/add-portal fetches the portal and does reconnaissance: it identifies the search URL pattern, query parameters (keyword, location, posting age, pagination), and result fields (id, title, company, location, date, url). It also finds the detail-page pattern — the URL structure for a single posting and where the description, deadline, and apply link live. Finally, it checks robots.txt and the portal’s terms of service to determine access rules.Scaffold the skill
Using the canonical All generated skills follow the same command contract as the shipped tools:
linkedin-search skill as the structural reference, /add-portal generates a complete skill directory at .agents/skills/<name>/:search and detail commands, standard flags (--query, --jobage, --page, --limit, --format, and --location where the portal supports it), JSON output with { "meta": { "count", "page" }, "results": [...] }, and errors on stderr as { "error": "...", "code": "..." } with exit code 1. This contract makes every generated skill interchangeable with the built-in ones for /scrape.Test and register
/add-portal installs dev types, runs a typecheck, then executes a live search with the test query and verifies that titles, companies, and URLs come back populated. It also runs detail on one result from the search. If any field comes back null or garbled, parsers are fixed and the test re-runs. The full test suite must pass before the skill is registered to .agents/skills/. Optionally, the portal can be added to the search strategy in .claude/skills/job-scraper/search-queries.md so /scrape includes it automatically.Access Rules
Generated Skill Structure
Every skill generated by/add-portal follows this directory layout:
bun and use fetch plus regex parsing, so bun install only pulls TypeScript dev types. A parsing library is only added when the portal’s markup genuinely requires it, and that decision is documented in the README.
The url-reference.md file is particularly important: it records the specific endpoints, parameter names, and HTML/JSON field anchors discovered during investigation, so that if the portal changes its markup later, you know exactly what to update.
Country-Agnostic Starting Point
Thelinkedin-search skill included in the framework is a zero-dependency universal starting point for any market. Because it uses LinkedIn’s public, unauthenticated jobs-guest endpoints and accepts search location as an explicit flag (-l), it works anywhere:
linkedin-search is the place to start. Keep request volume low — automated access is against LinkedIn’s Terms of Service, and the skill carries a personal-use-only warning.
For the full reference of built-in portals, see Job Portals.