# Shipped Job Portal Skills in the AI Job Search Framework: Complete Reference

> Explore the six shipped job portal skills in the AI Job Search framework including LinkedIn JobDanmark Jobnet Jobindex Jobbank and Freehire for automated job querying.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: api-reference
- Published: 2026-08-29

---

**The AI Job Search framework ships six production-ready job portal skills—LinkedIn, JobDanmark, Jobnet, Jobindex, Jobbank, and Freehire—each providing a standardized [`SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SKILL.md) descriptor and TypeScript CLI implementation for automated job querying.**

The **MadsLorentzen/ai-job-search** repository provides a modular architecture for automating employment searches through reusable **job portal skills**. These skills reside in the hidden `.agents/skills/` directory and encapsulate platform-specific logic for querying, parsing, and returning structured job listings from major recruitment sites.

## Available Job Portal Skills

As of the `master` branch, the framework distributes six ready-to-use portal skills:

- **LinkedIn** – [[`.agents/skills/linkedin-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/linkedin-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/linkedin-search/SKILL.md) with CLI at [[`linkedin-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/linkedin-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/linkedin-search/cli/package.json)
- **JobDanmark** – [[`.agents/skills/jobdanmark-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobdanmark-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobdanmark-search/SKILL.md) with CLI at [[`jobdanmark-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/jobdanmark-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobdanmark-search/cli/package.json)
- **Jobnet** – [[`.agents/skills/jobnet-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobnet-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobnet-search/SKILL.md) with CLI at [[`jobnet-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/jobnet-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobnet-search/cli/package.json)
- **Jobindex** – [[`.agents/skills/jobindex-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobindex-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobindex-search/SKILL.md) with CLI at [[`jobindex-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/jobindex-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobindex-search/cli/package.json)
- **Jobbank** – [[`.agents/skills/jobbank-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobbank-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobbank-search/SKILL.md) with CLI at [[`jobbank-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/jobbank-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/jobbank-search/cli/package.json)
- **Freehire** – [[`.agents/skills/freehire-search/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/freehire-search/SKILL.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/freehire-search/SKILL.md) with CLI at [[`freehire-search/cli/package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/freehire-search/cli/package.json)](https://github.com/MadsLorentzen/ai-job-search/blob/master/.agents/skills/freehire-search/cli/package.json)

## Skill Architecture and File Structure

Each job portal skill follows a consistent three-part pattern that ensures interoperability across the framework.

### SKILL.md Descriptors

Every skill contains a **[`SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SKILL.md)** markdown file that defines the portal's search API, required authentication parameters, and output schema. These descriptors serve as both documentation and machine-readable specifications for the AI orchestration layer.

### CLI Implementation

The command-line interface for each skill is implemented as a standalone Node/TypeScript package. The entry point resides at [`cli/src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/cli/src/cli.ts) within each skill directory (e.g., [`linkedin-search/cli/src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/linkedin-search/cli/src/cli.ts)). These packages compile to executable binaries invocable via `npx`, accepting standardized flags for queries, limits, and output formats.

### Test Coverage

Comprehensive **Jest** test suites live in `cli/tests/` directories (e.g., [`linkedin-search/cli/tests/search.test.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/linkedin-search/cli/tests/search.test.ts)). These ensure robust parsing of HTML, RSS feeds, and JSON-LD structured data across different job portal response formats.

## Using Job Portal Skills

The framework supports both direct CLI invocation and programmatic integration.

### Command-Line Interface

Invoke any skill directly using `npx` without installing the package globally:

```bash

# Fetch the first 5 LinkedIn job results for "data scientist"

npx ai-job-search linkedin-search \
  --query "data scientist" \
  --limit 5 \
  --output json

```

### Programmatic Integration

Import the skill runner to execute searches within Node.js applications:

```typescript
import { runSkill } from '@ai-job-search/skill-runner';

// Invoke the Jobbank skill
const results = await runSkill('jobbank-search', {
  query: 'backend engineer',
  limit: 10,
  format: 'json',
});

console.log(results);

```

### Workflow Orchestration

Integrate skills into higher-level automation workflows using YAML configuration:

```yaml

# .claude/skills/custom-job-search/SKILL.md

steps:
  - name: LinkedIn
    skill: linkedin-search
    args:
      query: "{{candidate.title}}"
      limit: 20
  - name: Jobbank
    skill: jobbank-search
    args:
      query: "{{candidate.title}}"
      limit: 20

```

## Extending the Framework

New job portal skills can be added by replicating the existing directory structure under `.agents/skills/`. Each new skill requires a [`SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SKILL.md) descriptor, a TypeScript CLI implementation following the [`cli/src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/cli/src/cli.ts) convention, and corresponding Jest tests in `cli/tests/` to maintain framework consistency.

## Summary

- **Six job portal skills** ship with the AI Job Search framework: LinkedIn, JobDanmark, Jobnet, Jobindex, Jobbank, and Freehire
- All skills reside in the `.agents/skills/` directory with standardized file layouts
- Each skill provides a [`SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SKILL.md) descriptor, TypeScript CLI implementation, and Jest test suite
- Skills support both `npx` command-line execution and programmatic import via `@ai-job-search/skill-runner`
- CLI entry points are located at [`cli/src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/cli/src/cli.ts) within each skill subdirectory
- Test files are stored in `cli/tests/` directories to ensure parsing reliability

## Frequently Asked Questions

### What job portals are supported by the AI Job Search framework?

The framework currently supports six major platforms: **LinkedIn**, **JobDanmark**, **Jobnet**, **Jobindex**, **Jobbank**, and **Freehire**. Each is implemented as a distinct skill module with dedicated parsing logic for that portal's specific HTML structure or API response format.

### How do I run a job portal skill from the command line?

Use the `npx ai-job-search [skill-name]` command followed by platform-specific flags. For example, `npx ai-job-search linkedin-search --query "python developer" --limit 10` executes the LinkedIn skill. The CLI implementations in [`cli/src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/cli/src/cli.ts) handle argument parsing and result formatting.

### Can I use these job portal skills in my own Node.js application?

Yes. Import the `runSkill` function from `@ai-job-search/skill-runner` and pass the skill name (e.g., `'jobbank-search'`) along with a configuration object containing `query`, `limit`, and `format` parameters. This returns a promise that resolves with structured job listing data.

### Where are the skill descriptors and CLI implementations located?

All job portal skills are stored in the `.agents/skills/` directory at the repository root. Each skill subdirectory contains a [`SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SKILL.md) file describing the portal's capabilities, a `cli/` folder with [`package.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/package.json) and [`src/cli.ts`](https://github.com/MadsLorentzen/ai-job-search/blob/main/src/cli.ts) containing the TypeScript implementation, and a `cli/tests/` directory with Jest test suites.