# Configuration Files in the AI Job Search Repository: Complete Guide

> Explore configuration files in the ai-job-search repository, including opencode.json and GitHub Actions, to manage tooling and CI pipelines effectively.

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

---

**The ai-job-search repository uses explicit configuration files including `.gitignore`, [`opencode.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/opencode.json), GitHub Actions workflows, and Claude framework markdown specs to control tooling, CI pipelines, and environment handling.**

The MadsLorentzen/ai-job-search codebase relies on a concise set of configuration files to manage permissions, automate testing, and define skill behaviors. Understanding these configuration files in the ai-job-search repository is essential for contributors who need to modify CI pipelines, adjust TypeScript compiler settings, or customize Claude framework commands.

## Core Configuration Files

### Version Control and Environment Rules

The `.gitignore` file defines which files and patterns Git must ignore, ensuring sensitive environment variables and build artifacts remain untracked. According to the repository source code, this file explicitly excludes `.env` files and local build outputs from version control.

The [`opencode.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/opencode.json) file serves as the central permission and model configuration for the Instagit sandbox. Located at the repository root, this JSON file controls read, write, and execute policies for automated tooling.

```python
import json
import pathlib

config_path = pathlib.Path("opencode.json")
permissions = json.loads(config_path.read_text())
print(permissions["permission"]["read"])

# Output shows the read-allow rules for the repository

```

## CI/CD Configuration Files

### Main CI Pipeline

The [`.github/workflows/ci.yml`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.github/workflows/ci.yml) file defines the primary GitHub Actions workflow. This YAML configuration runs tests, linting, and security checks on every push and pull request.

To execute this workflow locally for testing purposes:

```bash

# Install act (https://github.com/nektos/act) and then:

act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest

```

### Upstream Monitoring

The [`.github/workflows/upstream-watch.yml`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.github/workflows/upstream-watch.yml) file contains a specialized CI job that monitors upstream repositories for changes. This configuration flags missing updates automatically, ensuring the ai-job-search project stays synchronized with its dependencies.

### Contribution Templates

The repository uses structured templates to standardize contributions:

- [`.github/PULL_REQUEST_TEMPLATE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.github/PULL_REQUEST_TEMPLATE.md) provides the markdown template for PR descriptions
- [`.github/ISSUE_TEMPLATE/config.yml`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.github/ISSUE_TEMPLATE/config.yml) organizes issue categories for bug reports and feature requests using YAML definitions

## Claude Framework Configuration

### Command Specifications

The `.claude/commands/` directory contains markdown files that serve as declarative command specifications for the Claude thin-pointer framework. Files such as [`setup.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/setup.md) and [`reset.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/reset.md) configure how interactive setup, system reset, and job ranking behaviors execute.

### Job Scraper Skill Configuration

Located at [`.claude/skills/job-scraper/SKILL.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-scraper/SKILL.md), this markdown file describes the job-scraper skill configuration, including which portals to query and geographic filters to apply during search operations.

## TypeScript and Build Configuration

### Compiler Settings for JobDanmark Skill

The [`.agents/skills/jobdanmark-search/cli/tsconfig.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobdanmark-search/cli/tsconfig.json) file contains the TypeScript compiler configuration specific to the JobDanmark-search skill. This JSON configuration controls target ECMAScript versions, module resolution, and strict type-checking options.

To customize the TypeScript build:

```bash

# Edit the tsconfig.json (e.g., change target ES version)

npx tsc -p .agents/skills/jobdanmark-search/cli/tsconfig.json

```

## Documentation and Policy Files

### Setup and Security Guides

[`SETUP.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SETUP.md) functions as both human-readable documentation and a configuration reference, containing command-line flags that can be re-run to re-configure parts of the system. [`SECURITY.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SECURITY.md) defines security-related policies, including secret handling procedures and references to the `.env` ignore rule.

### Project Governance

While not runtime configurations, [`CONTRIBUTING.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CONTRIBUTING.md), [`CHANGELOG.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CHANGELOG.md), and `LICENSE` guide contributor workflows and describe version history. These files are tracked in the repository and help maintain project standards.

## Summary

- The ai-job-search repository uses a minimal, explicit configuration strategy with files tracked directly in version control
- **`.gitignore`** prevents sensitive environment files from being committed, while **[`opencode.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/opencode.json)** manages sandbox permissions
- **GitHub Actions workflows** in `.github/workflows/` automate testing and upstream monitoring
- **Claude framework specs** in `.claude/commands/` and `.claude/skills/` define interactive behaviors using markdown
- **TypeScript configuration** at [`.agents/skills/jobdanmark-search/cli/tsconfig.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.agents/skills/jobdanmark-search/cli/tsconfig.json) controls build parameters for specific skills

## Frequently Asked Questions

### What is the main configuration file for permissions in ai-job-search?

The [`opencode.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/opencode.json) file at the repository root controls permissions for the Instagit sandbox environment. It defines read, write, and execute policies using JSON structure, as implemented in MadsLorentzen/ai-job-search.

### How are GitHub Actions workflows configured in this repository?

Workflows are defined in YAML files within the `.github/workflows/` directory. The [`ci.yml`](https://github.com/MadsLorentzen/ai-job-search/blob/main/ci.yml) file handles testing and linting, while [`upstream-watch.yml`](https://github.com/MadsLorentzen/ai-job-search/blob/main/upstream-watch.yml) monitors external dependencies for changes.

### Where are the Claude framework commands defined?

Commands are specified as markdown files in the `.claude/commands/` directory, including [`setup.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/setup.md) and [`reset.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/reset.md). These files use declarative syntax to configure interactive behaviors for the thin-pointer framework.

### Are environment variables stored in configuration files?

No environment variables are committed to the repository. The `.gitignore` file explicitly excludes `.env` files, and [`SECURITY.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SECURITY.md) references this rule to ensure secrets remain outside version control.