Skip to content
Back to skills

Agent Harness Init

ASecurity

Initialize agent-harness model routing for Codex. Writes Codex-only config under .codex or ~/.codex using inherit or explicit per-role routing.

  • 5 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added May 28, 2026
ai-agentsgogit

Works with

  • claude code

Security analysis

A100/100

Scanned May 28, 2026

npx -y skills add bouob/agent-harness --skill agent-harness-init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Harness Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Harness Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bouob-agent-harness-init/badge)](https://www.skillsdirectory.com/skills/bouob-agent-harness-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-harness-init
description: Initialize agent-harness model routing for Codex. Writes Codex-only config under .codex or ~/.codex using inherit or explicit per-role routing.
argument-hint: "[--project | --user | --show]"
---

# Agent Harness Init for Codex

Configure Codex-only model routing for agent-harness.

This skill is the Codex equivalent of Claude Code's `/agent-harness:init`.
Codex does not provide a namespaced slash command for this plugin, so users call
this skill as `agent-harness-init` or `$agent-harness:agent-harness-init`.

## Interaction Goals

This skill should feel like a short first-run setup flow, not a schema dump.

- In the first reply, explain in plain language that this sets model routing for
  planning, checking, coding, and simple research tasks.
- Do not show JSON, raw role names, or file paths in the first reply unless the
  user passed `--show` or explicitly asked for them.
- Keep canonical option labels and example replies in English in this skill.
  The assistant may still phrase the surrounding explanation in the user's
  language and should map equivalent replies from other languages.
- Ask for at most two decisions in the first round:
  - scope: `This project only` or `All projects`
  - setup style: `Quick recommended setup`, `Follow current session for everything`, or `Custom setup`
- Prefer short reply templates such as `1 + 1` or `This project only + Custom setup`.
- Delay `.gitignore`, exact target paths, and resolved JSON until preview or
  until the user asks for technical details.
- Treat `Quick recommended setup` as the user-facing label for `balanced`.
- Treat `Follow current session for everything` as the user-facing label for `all-inherit`.
- For `Custom setup`, ask by work type first, then map to internal roles:
  - `Planning and review` -> `planner` and `evaluator`
  - `Coding` -> `generator.code` and `generator.write`
  - `Research / simple tasks` -> `generator.research` and `generator.collect`
- Default each work-type pair to the same model and reasoning unless the user
  asks to split them further.
- Use concrete examples in the prompt because earlier Codex models are more
  reliable with explicit answer formats than with open-ended questions.

## References

- `../../references/codex-config-schema.md` - Codex config schema and lookup order

## Step 1 - Detect Existing Config

Read these files in order:

1. `./.codex/agent-harness.local.json`
2. `~/.codex/agent-harness.json`

If either file exists:

1. Parse the JSON.
2. If it is v1, resolve it as v2 by treating every role as
   `{"mode": "inherit"}`.
3. Summarize the current effective setup in plain language first.
4. Show the current resolved config in a fenced code block only when:
   - the user passed `--show`
   - the user explicitly asks to see the JSON
   - or the conversation is already in preview/confirmation stage
4. If parsing fails, report the invalid file and recommend reconfiguration.

If the user passed `--show`, print the resolved config and stop without writing.

## Step 2 - Choose Target

If the user passed `--project`, target `./.codex/agent-harness.local.json`.

If the user passed `--user`, target `~/.codex/agent-harness.json`.

If no target flag is present, ask the user which target to write:

- `This project only` - project config
- `All projects` - user config

In the first prompt, prefer these plain-language labels instead of file paths.
Only mention the exact path after the user chooses or when previewing.

Recommend project config when the user is inside a repository and wants the
setting to apply only there. Recommend user config when they want the same
behavior across repositories.

## Step 3 - Choose Routing Strategy

Ask which preset to use:

- `Quick recommended setup` (`balanced`)
- `Follow current session for everything` (`all-inherit`)
- `Custom setup` (`custom`)

When this step is combined with Step 2 for a first-run user, prefer a short
setup prompt like:

```text
I can help set up agent-harness model routing so planning, review, coding, and
simple research tasks can use different models automatically.

First choose the scope:
1. This project only (recommended)
2. All projects

Then choose the setup style:
1. Quick recommended setup
2. Follow current session for everything
3. Custom setup

Reply with: `1 + 1`
```

### `all-inherit`

Write the built-in default:

```json
{
  "version": 2,
  "host": "codex",
  "models": {
    "planner": { "mode": "inherit" },
    "evaluator": { "mode": "inherit" },
    "generator": {
      "code": { "mode": "inherit" },
      "write": { "mode": "inherit" },
      "research": { "mode": "inherit" },
      "collect": { "mode": "inherit" }
    }
  }
}
```

### `balanced`

Write this preset:

```json
{
  "version": 2,
  "host": "codex",
  "models": {
    "planner": {
      "mode": "explicit",
      "model": "gpt-5.5",
      "reasoning_effort": "high"
    },
    "evaluator": {
      "mode": "explicit",
      "model": "gpt-5.4",
      "reasoning_effort": "medium"
    },
    "generator": {
      "code": {
        "mode": "explicit",
        "model": "gpt-5.4",
        "reasoning_effort": "high"
      },
      "write": {
        "mode": "explicit",
        "model": "gpt-5.4",
        "reasoning_effort": "medium"
      },
      "research": {
        "mode": "explicit",
        "model": "gpt-5.4-mini",
        "reasoning_effort": "low"
      },
      "collect": {
        "mode": "explicit",
        "model": "gpt-5.4-mini",
        "reasoning_effort": "low"
      }
    }
  }
}
```

### `custom`

Do not start by asking for all six internal roles. Start with work types:

1. `Planning and review`
2. `Coding`
3. `Research / simple tasks`

Ask the user for each work type:

1. `inherit` or `explicit`
2. If `explicit`, ask for `model`
3. If `explicit`, ask for `reasoning_effort`

Default mapping:

- `Planning and review` -> `planner` and `evaluator`
- `Coding` -> `generator.code` and `generator.write`
- `Research / simple tasks` -> `generator.research` and `generator.collect`

If the user wants finer control, then ask whether they want to split either of
these pairs into separate role settings.

Prefer a concrete reply template such as:

```text
Planning and review: gpt-5.5 high
Coding: gpt-5.4 high
Research / simple tasks: gpt-5.4-mini high
```

If the user answers in natural language, map it into the role structure above
without forcing them to restate it in internal terminology.

Accepted `reasoning_effort` values are:

- `low`
- `medium`
- `high`
- `xhigh`

Users may leave `reasoning_effort` empty only if they want to override the
model while keeping the current session reasoning level.

Do not translate Claude model names such as `opus`, `sonnet`, or `haiku` into
this file. Use Codex model ids such as `gpt-5.5`, `gpt-5.4`, or
`gpt-5.4-mini`.

## Step 4 - Preview and Confirm

Show:

- Selected target path
- A short explanation:
  `Roles in inherit mode use the current Codex session model and reasoning. Roles in explicit mode pass model and optional reasoning overrides.`
- A role table with columns:
  - Role
  - Mode
  - Model
  - Reasoning
- The JSON that will be written

At this stage, it is appropriate to introduce:

- the exact file path that will be written
- the mapping from work types to internal roles
- a note about `.codex/*.local.json` ignore rules when relevant

Ask for confirmation before writing.

## Step 5 - Write Config

Create the parent directory if needed, then write the pretty-printed JSON with
2-space indentation.

After writing, tell the user:

```text
Config written. Codex sprints will use per-role inherit or explicit routing for Planner, Evaluator, and Generator subagents.
```

## Gotchas

- Do not read or write `.claude/agent-harness*.json` from this skill.
- Do not edit `~/.claude/agent-harness.json`; that file belongs to Claude Code.
- If sandbox permissions block writing `~/.codex/agent-harness.json`, request
  approval instead of choosing another location silently.
- Project config should be local-only. If the repository does not already ignore
  `.codex/*.local.json`, mention that the user may want to add an ignore rule.
- Do not hard-code a runtime allowlist of model ids. Codex model availability is
  account-specific and time-sensitive.
- Do not front-load JSON, file paths, or `.gitignore` advice in the first reply
  unless the user explicitly asked for technical details.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.