# How Career‑Ops Integrates with Different AI Coding CLIs: A Developer Guide

> Learn how Career-Ops integrates with AI coding CLIs using a thin wrapper architecture. Explore uniform command invocations and canonical skill definitions for developers. Read the guide now.

- Repository: [Santiago Fernández de Valderrama/career-ops](https://github.com/santifer/career-ops)
- Tags: how-to-guide
- Published: 2026-08-28

---

**Career‑Ops integrates with AI coding CLIs through a thin wrapper architecture where [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) provides a single canonical skill definition and CLI‑specific markdown files translate native commands into uniform `career‑ops` invocations.**

The **santifer/career-ops** repository demonstrates a clean, **AI‑agnostic** approach to CLI integration. Rather than baking vendor logic into the core, the project isolates business logic and exposes it through lightweight adapters. This pattern lets developers use the same job‑tracking and application workflow across Claude, Codex, OpenCode, Grok, Qwen, Kimi, and other agent‑style tools.

---

## How Career‑Ops CLI Integration Works: Core Architecture

The **Career‑Ops AI CLI integration** follows a strict separation of concerns. Understanding this architecture helps you extend support to new agents or debug invocation issues.

### [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md): The Central Skill Contract

Every supported CLI ultimately points to **[`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md)** in the repository root. This file defines:

- **Skill name**: `career‑ops`
- **Prompt template**: The workflow driver
- **Sub‑modes**: `scan`, `apply`, `interview‑prep`, `pipeline`, `add`, `set‑status`, etc.

No CLI‑specific code lives here. It is pure, portable skill definition.

### CLI‑Specific Wrappers: Minimal Glue Code

Each supported CLI receives a short markdown file that imports [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md) and adds invocation syntax:

- **[`CLAUDE.md`](https://github.com/santifer/career-ops/blob/main/CLAUDE.md)** – Claude Code interactive and headless patterns
- **[`CODEX.md`](https://github.com/santifer/career-ops/blob/main/CODEX.md)** – OpenAI Codex wrapper with `exec` command mapping
- **[`OPENCODE.md`](https://github.com/santifer/career-ops/blob/main/OPENCODE.md)** – OpenCode slash‑command and `run` syntax
- **[`KIMI.md`](https://github.com/santifer/career-ops/blob/main/KIMI.md)** – Kimi CLI integration
- **[`GEMINI.md`](https://github.com/santifer/career-ops/blob/main/GEMINI.md)** – Legacy Gemini wrapper (redirects to Antigravity CLI)

These files typically contain 10–30 lines: import statement, command syntax, and optional flag translation notes.

---

## Running Career‑Ops Across Different AI Coding CLIs

The **Career‑Ops commands** remain identical regardless of which CLI you use. The wrappers only translate how you *enter* the skill.

### Claude Code Integration

**Interactive mode** – start the CLI, then invoke directly:

```bash
claude

# then type:

/career-ops scan

```

**Headless / batch mode** – pass via `-p` flag:

```bash
claude -p "career-ops scan --query senior backend"

```

The **[`CLAUDE.md`](https://github.com/santifer/career-ops/blob/main/CLAUDE.md)** wrapper documents both patterns and notes that slash commands require the leading `/`.

### Codex CLI Integration

**Interactive mode**:

```bash
codex

# then type:

career-ops scan

```

**Headless execution** via `exec`:

```bash
codex exec "career-ops scan --data engineer"

```

Notice: Codex omits the leading slash in interactive mode, and headless uses `exec` instead of `-p`.

### OpenCode CLI Integration

**Interactive mode** uses a leading slash:

```bash
opencode

# then type:

/career-ops apply --url https://example.com/job

```

**Headless mode** uses `run`:

```bash
opencode run "career-ops apply --url https://example.com/job"

```

The **[`OPENCODE.md`](https://github.com/santifer/career-ops/blob/main/OPENCODE.md)** wrapper explicitly maps these two invocation styles to the same underlying skill.

### Antigravity, Grok, Qwen, and Other CLIs

These tools share a common pattern: `-p` flag for headless prompt passing.

**Antigravity CLI**:

```bash
agy -p "career-ops pipeline"

```

**Grok Build CLI**:

```bash
grok -p "career-ops scan"

```

**Qwen**:

```bash
qwen -p "career-ops add --role 'Senior ML Engineer'"

```

**GitHub Copilot CLI**:

```bash
copilot -p "career-ops interview-prep --company Acme --role Engineer"

```

The **[`GEMINI.md`](https://github.com/santifer/career-ops/blob/main/GEMINI.md)** wrapper redirects Gemini users to the Antigravity CLI command, maintaining backward compatibility without duplicating logic.

---

## Token‑Free and Headless Modes

Some **Career‑Ops** operations require **zero LLM tokens**. The CLI wrappers expose these directly by calling Node.js scripts:

| Mode | Script | CLI Example |
|------|--------|-------------|
| ATS‑free scanner | `node scan.mjs` | Any wrapper can invoke |
| Status tracker | `node set-status.mjs` | Direct script call |

This design means the **AI coding CLI** is optional for deterministic operations. You can run `node scan.mjs` standalone, or wrap it for consistency within your preferred agent workflow.

---

## Extending Career‑Ops to New AI Coding CLIs

Adding support for an emerging CLI requires only three steps:

1. **Create `[CLI_NAME].md`** in the repository root.
2. **Import [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md)** at the top of the file.
3. **Document the invocation syntax** – interactive prefix (if any), headless flag, and any quirks.

The core logic in **`career‑ops`** remains untouched. Data contracts, trackers, and pipeline stages need no modification.

Reference **[`docs/SUPPORTED_CLIS.md`](https://github.com/santifer/career-ops/blob/main/docs/SUPPORTED_CLIS.md)** for the canonical table of all supported CLIs and their current invocation patterns.

---

## Summary

- **[`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md)** provides the single source of truth for all **Career‑Ops AI CLI integration**.
- Thin wrapper files ([`CLAUDE.md`](https://github.com/santifer/career-ops/blob/main/CLAUDE.md), [`CODEX.md`](https://github.com/santifer/career-ops/blob/main/CODEX.md), [`OPENCODE.md`](https://github.com/santifer/career-ops/blob/main/OPENCODE.md), etc.) translate CLI‑native syntax into uniform skill calls.
- All CLIs expose identical commands: `scan`, `apply`, `pipeline`, `interview‑prep`, `add`, `set‑status`.
- Token‑free modes bypass the LLM entirely by invoking Node.js scripts directly.
- New CLI support requires ~10 lines of markdown documentation, zero core code changes.

---

## Frequently Asked Questions

### Does Career‑Ops require a specific AI coding CLI?

No. According to the **santifer/career‑ops** source code, the repository is explicitly **AI‑agnostic**. You can use Claude, Codex, OpenCode, Antigravity, Grok, Qwen, Kimi, or any future CLI that supports skill definitions. The core logic lives in [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md); wrappers only handle translation.

### Why do some CLIs use `/career-ops` and others use `career-ops`?

The leading slash is a CLI‑specific convention. Claude Code and OpenCode use `/career-ops` for interactive slash commands, while Codex omits it. The wrappers in [`CLAUDE.md`](https://github.com/santifer/career-ops/blob/main/CLAUDE.md) and [`CODEX.md`](https://github.com/santifer/career-ops/blob/main/CODEX.md) document these differences so users know the correct syntax for their tool.

### Can I run Career‑Ops without any AI CLI installed?

Yes. Operations like `scan` and `set-status` are **token‑free** and execute via `node scan.mjs` or `node set-status.mjs`. The AI CLI wrappers are convenience layers; the underlying scripts run independently with Node.js.

### How do I add support for a new AI coding CLI?

Create a new markdown file in the repository root (e.g., [`NEWCLI.md`](https://github.com/santifer/career-ops/blob/main/NEWCLI.md)), import [`AGENTS.md`](https://github.com/santifer/career-ops/blob/main/AGENTS.md), and document the interactive and headless invocation patterns. See **[`OPENCODE.md`](https://github.com/santifer/career-ops/blob/main/OPENCODE.md)** or **[`KIMI.md`](https://github.com/santifer/career-ops/blob/main/KIMI.md)** as minimal templates. No changes to skill logic or data contracts are required.