Skip to content

Guide · Agent skill

How to use the freehire Tech Job Search agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

The freehire-search skill lets an AI agent search a public aggregator of software, data and engineering job postings, collected from about 50 job-board platforms across many countries. This guide explains what an agent skill is, how to install this one, how to ask for jobs in plain language, and what the skill needs and touches on your machine. By the end you will be able to run a tech job search through your agent and look up a specific posting by its slug.

freehire Tech Job Searchai-job-search-dev/ai-job-search · MIT

Quick start

  1. 1Install Bun. Install the Bun runtime, which the skill's CLI needs to run.
  2. 2Download the skill ZIP. Download the freehire-search ZIP from this page.
  3. 3Unzip the skill. Unzip it into ~/.claude/skills/ for all projects, or into a project's .claude/skills/ folder.
  4. 4Or upload it in the Claude apps. Under Settings, Capabilities, Skills, upload the ZIP instead.
  5. 5Ask for tech jobs. Make a request such as finding remote developer jobs in a given country. The agent runs the search for you.
  6. 6Narrow with facets. Add region, country, seniority, skill, remote mode or posting age to refine results.
  7. 7Look up a posting. Give the agent a freehire slug to fetch one specific posting, including a closed one.

What an agent skill is and what this one does

An agent skill is a folder with a SKILL.md file and supporting files that an AI agent loads when a request matches the skill's description. This skill tells the agent how to query the freehire.me job aggregator through its public API and read back structured results.

Once installed, you can ask by keyword, region, country, seniority, skill, work mode or how recently a job was posted. Each result includes the full job description, so the agent does not need to open each posting separately. The skill can also look up one posting by its freehire slug, including a posting that has since closed.

  • Keyword search over title, skill and role, with OR alternatives and title-only matching
  • Facet filters for region, country, city, seniority, category, skill, company and remote mode
  • Posted-within-N-days filtering through --jobage
  • Lookup of one posting by slug with detail

Install the freehire-search skill

Option one: download the ZIP for this skill from this page and unzip it into ~/.claude/skills/ to make it available in all your projects, or into a project's .claude/skills/ folder to limit it to that project.

Option two: in the Claude apps, open Settings, go to Capabilities, then Skills, and upload the ZIP there.

The skill's CLI runs with Bun, so you also need the Bun runtime installed. The CLI has zero runtime dependencies, so no package install is required to run it.

  • Download the ZIP from this page
  • Unzip into ~/.claude/skills/ (all projects) or .claude/skills/ inside a project
  • Or upload the ZIP under Settings → Capabilities → Skills in the Claude apps
  • Make sure the Bun runtime is installed

Ask for jobs with natural requests

You do not need to type the CLI command yourself. The skill triggers on requests about tech roles, such as finding a tech job, software job search, developer jobs, engineering vacancies, data or ML jobs, DevOps roles, remote developer jobs, or asking whether there are any jobs for a given tech role in a given place.

The skill is scoped to technical roles. Requests for non-technical jobs are outside its tuned filtering and coverage.

  • "Are there any Go backend jobs in Germany?"
  • "Find remote senior DevOps roles posted in the last 7 days."
  • "Look up this freehire job posting: <slug>"

Filter a search by region, country, seniority and skills

Location is a facet, not free text. Use --region for macro-regions such as eu, uk or north_america, and --country for ISO alpha-2 country codes such as DE or GB. Use --region eu,uk to cover Europe as a whole, since eu alone does not include the UK. The base search command is shown below; the agent builds the flags from your request.

Use -q for keywords. Two operators are supported: OR between alternatives, written in uppercase, and a leading title: to match only the job title. Plain space-separated words are not treated as a union, so use OR for alternatives.

  • --seniority: junior, middle, senior, staff, principal, lead
  • --category: for example backend, frontend, fullstack, devops, ml_ai, qa
  • --skill: canonical skill names, comma-separated
  • --remote: remote, hybrid or onsite
  • --jobage: posted within N days
  • --limit defaults to 25 results per page
bun run .agents/skills/freehire-search/cli/src/cli.ts search [-q "<keywords>"] [facet flags]

Keep searches cheap and read descriptions only when needed

Full descriptions are verbose. Keep --limit modest and filter by title and company before reading bodies. For a quick scan, add --no-description, which keeps every other field and drops the bodies. Fetch the body of a shortlisted job with detail, or rerun the search without the flag.

Use detail only to look up one posting by slug, for example one from your tracker or a posting that is closed and no longer appears in search. Do not loop detail over search results, because search already returns full descriptions.

  • Use --no-description for a discovery pass
  • Use --description-format markdown (default), text or html when you need a specific rendering
  • Use --format json (default), table or plain for output

Safety notes: scripts, network and what the skill does not do

This skill runs scripts and uses the network. It sends requests to freehire.me, or to the URL set in FREEHIRE_API_URL if you point it at a self-hosted instance. Reads are public and need no login, no API key and no account.

The skill only reads public listings. It does not apply to jobs, does not automate applications and does not access private accounts. Its tool permission is limited to running the skill's cli/src/cli.ts with bun.

  • Network access is needed to freehire.me or your FREEHIRE_API_URL
  • No authentication or API key is used
  • The skill's allowed tool is bun run on its cli/src/cli.ts
  • Automatic job applications and private account access are out of scope

Point the skill at a self-hosted freehire API

The freehire backend is a separate MIT-licensed project that runs with Docker Compose via make up, serving the API on port 8080. Set FREEHIRE_API_URL to use it. Be aware that a full, continuously fresh mirror of the corpus is resource-heavy, so most self-hosters either crawl a subset of sources or point the variable back at the hosted API.

FREEHIRE_API_URL=http://localhost:8080 bun run .agents/skills/freehire-search/cli/src/cli.ts search -q "go"

What people use it for

  • Scanning current backend or ML openings in one country before a move
  • Finding remote senior engineering roles posted in the last few days
  • Checking whether a specific tech role exists in a market, using a quick --no-description pass
  • Pulling structured job data into a self-hosted job-search workflow
  • Looking up a saved freehire posting by slug from a tracker

Frequently asked questions

How do I install the freehire-search skill?

Download the ZIP from this page and unzip it into ~/.claude/skills/ for all projects, or into a project's .claude/skills/ folder. In the Claude apps you can instead upload the ZIP under Settings, Capabilities, Skills. You also need the Bun runtime installed.

Is the freehire-search skill free?

The skill is published under the MIT licence. The freehire.me search API is read without authentication or an API key, and this source page does not list any pricing.

What do I need to run it?

You need the Bun runtime, since the CLI runs with bun run and has zero runtime dependencies. You also need network access to freehire.me, or to a self-hosted freehire API set through FREEHIRE_API_URL.

Does the skill log in to job sites or apply for me?

No. The skill only reads public listings and needs no login. It does not apply to jobs or handle private accounts.

Why does a search fail or return an error?

freehire.me is a personal project run on a best-effort basis with no formal SLA. If the API is unreachable, the CLI exits with a non-zero code and an error message. You can retry later or point FREEHIRE_API_URL at a self-hosted instance.

Does it cover non-tech jobs or only tech roles?

The skill is scoped to tech roles because its seniority, category and skill filtering is tuned for them. Non-tech coverage exists but is still maturing, so it is not recommended for general job searches.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use this skill if you are a software, data or ML professional looking for remote or overseas tech roles, a recruiter scanning tech openings in one market, or a developer who wants a structured job data source. Pick another tool if you need non-technical job coverage, guaranteed uptime, or automatic applications, since freehire.me runs best-effort and the skill only reads public listings.

Download the skill