# What Framework Powers the MadsLorentzen/ai-job-search Repository?

> Discover the Claude Code framework powering MadsLorentzen/ai-job-search. Learn how Anthropic's AI agent platform streamlines job searches with CLI commands and versioned files.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: getting-started
- Published: 2026-09-02

---

**The MadsLorentzen/ai-job-search repository is built entirely around the Claude Code framework, Anthropic’s CLI-driven AI-agent platform that executes job-search workflows through slash commands and versioned plain-text methodology files.**

The MadsLorentzen/ai-job-search project implements an AI-driven job-search automation system that runs locally using the Claude Code framework. According to the repository source code, all core workflows—including profile setup, job scraping, and application generation—are implemented as Claude Code commands that orchestrate LaTeX, Python, and Bun tooling while maintaining a thin-pointer design for cross-runtime compatibility.

## Claude Code as the Core Runtime

The reference implementation targets **Claude Code**, Anthropic’s command-line interface for AI agents. As stated in [`README.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/README.md) (lines 15–16), this CLI serves as the primary runtime that parses commands and injects prompts into the underlying language model.

When you launch `claude` inside the repository root, the CLI reads command definitions from `.claude/commands/` (e.g., [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md) for the `/apply` workflow). These markdown files contain the prompt templates and methodology that Claude Code executes, transforming natural language instructions into concrete actions like compiling LaTeX résumés or scraping job postings.

## Thin-Pointer Architecture for Multi-Runtime Support

The framework employs a **thin-pointer design** pattern documented in [`AGENTS.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/AGENTS.md) (lines 11–12). This architecture places all agent-specific configuration under the `.claude/` directory, creating a single source of truth that other AI runtimes can reference without duplication.

While Claude Code is the reference runtime, the methodology files are designed to be **runtime-agnostic**. Alternative agents—such as Codex, Google Antigravity, or Gemini CLI—can consume the same skill definitions and command structures stored in `.claude/skills/` and `.claude/commands/` without modifying the core logic.

## Command Structure and Methodology Files

### Slash Commands

Each user-facing action is exposed as a slash command (e.g., `/setup`, `/scrape`, `/rank`, `/apply`). These are defined as individual Markdown files within `.claude/commands/`:

- `/apply` → [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md)
- `/scrape` → [`.claude/commands/scrape.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/scrape.md)
- `/setup` → [`.claude/commands/setup.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/setup.md)

When invoked, Claude Code loads the corresponding file, injects the prompt into the LLM context, and orchestrates surrounding tools.

### Versioned Skills with Framework Markers

Every skill directory (such as [`.claude/skills/job-application-assistant/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/SKILL.md)) includes front-matter metadata containing a `framework_version` marker. This versioning system ensures reproducible behavior across updates.

The repository includes CI tooling to enforce this:

- [`tools/check_framework_version.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/check_framework_version.py) – Validates that any change to a skill or command includes a bumped `framework_version` in its front-matter.
- [`tools/check_upstream_updates.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/check_upstream_updates.py) – Compares local framework versions against upstream to detect drift.

## Security and Continuous Integration

The framework includes dedicated guard scripts to enforce safe execution under Claude Code’s permission model:

- **[`tools/security_guards.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/security_guards.py)** – Enforces allowed permissions and blocks unauthorized system calls.
- **[`tools/lint_skills.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/lint_skills.py)** – Validates skill definitions for syntax errors and schema compliance.

GitHub Actions run these checks automatically, ensuring that only vetted commands execute within the Claude Code environment.

## Running the Framework Locally

To execute the framework on your machine, you must install the Claude Code CLI and invoke commands within a repository session:

```bash

# Install Claude Code (see SETUP.md for detailed prerequisites)

# Navigate to the repository and start the agent

claude

```

Inside the Claude Code session, trigger the specific workflows:

```bash

# Initialize your candidate profile interactively

/setup

# Scrape job portals for new postings

/scrape

# Rank postings against your fit criteria

/rank

# Generate and submit an application

/apply https://jobindex.dk/job/1234567

```

Behind these commands, the framework invokes **LaTeX** for PDF generation, **Python** for data processing, and **Bun** for JavaScript tooling, orchestrating the entire pipeline through Claude Code’s agent loop.

## Summary

- The **Claude Code framework** powers the MadsLorentzen/ai-job-search repository as its primary runtime and command interpreter.
- A **thin-pointer design** stores all configurations under `.claude/`, enabling portability to other AI agents like Codex or Gemini CLI.
- **Versioned methodology files** with `framework_version` markers ensure reproducible, testable workflows enforced by [`check_framework_version.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/check_framework_version.py).
- **Security guards** ([`security_guards.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/security_guards.py)) and linting tools protect the local execution environment.
- All workflows (`/setup`, `/apply`, `/scrape`) are defined as plain-text Markdown files parsed by the Claude Code CLI.

## Frequently Asked Questions

### Is the ai-job-search repository tied exclusively to Claude Code?

No. While Claude Code serves as the reference runtime documented in [`README.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/README.md), the thin-pointer architecture described in [`AGENTS.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/AGENTS.md) allows other agent platforms—such as OpenAI Codex or Google Gemini CLI—to consume the same `.claude/` configuration files without modification.

### How does the framework enforce version consistency?

The CI pipeline runs [`tools/check_framework_version.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/check_framework_version.py) to verify that every modification to `.claude/skills/` or `.claude/commands/` includes an updated `framework_version` marker in the file’s front-matter. This ensures that methodology changes are explicitly versioned and reproducible.

### What file format defines the custom slash commands?

Each slash command (e.g., `/apply`, `/scrape`) is defined as a Markdown file stored in `.claude/commands/` (for example, [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md)). Claude Code parses these files to extract the prompt templates and execution logic.

### Can I run this framework without installing Claude Code?

You can theoretically port the methodology to another runtime, but the repository’s tooling ([`security_guards.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/security_guards.py), [`lint_skills.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/lint_skills.py)) and CI tests specifically target the Claude Code CLI. To use an alternative agent, you would need to implement a parser for the `.claude/` directory structure and command schema as specified in [`AGENTS.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/AGENTS.md).