Harness Setup
SkillDocs & knowledgeInitializes and configures Harness in a project — CI, memory, duo workflow, Codex. Use when setting up a new project or adding Harness configuration.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Harness Setup skill
What this skill tells your AI
The instructions your AI receives, as published by tim-hub/powerball-harness in harness/skills/harness-setup/SKILL.md and read by ahel’s review.
Quick Reference
| User Input | Subcommand | Behavior |
|---|---|---|
harness-setup (no args) | init | Runs gitignore → project initialization (CLAUDE.md + plans.json + settings.json) |
harness-setup init | init | New project initialization: gitignore → CLAUDE.md + plans.json + settings.json |
harness-setup gitignore | gitignore | Merge harness-managed block into .gitignore (runs scripts/merge-gitignore.sh) |
harness-setup cleanup | cleanup | Periodic maintenance: delete old logs, archive completed phases (harness plan-cli archive), trim traces |
harness-setup codex | codex | Set up Codex CLI: copy config, rules, and skills to project .codex/ |
harness-setup opencode | opencode | Set up OpenCode: copy config, commands, and skills to project .opencode/ |
harness-setup duo | duo | Set up both Codex and OpenCode in one step |
Subcommand Details
init — Project Initialization
Introduce Harness to a new project.
Generated files (user's project):
project/
├── CLAUDE.md # Project configuration
├── .gitignore # Standard ignore rules (harness-managed block appended)
└── .claude/
├── settings.json # Claude Code permissions/sandbox/env
├── harness/plans.json # Task tracking (auto-created by harness plan-cli)
├── memory/ # Trace archive + schemas (archive/, schemas/)
├── output-styles/ # Custom output styles (if any)
├── rules/ # Custom rules (if any)
├── scripts/ # Custom scripts (if any)
└── skills/ # Custom skills (if any)
└── settings.local.json # Local custom settings (gitignored) for user overrides
Note: Neither
hooks/norharness.tomlis generated into a user's project.
- Hooks ship inside the installed plugin (
.claude-plugin/hooks.json) — Claude Code loads them from there automatically.harness.toml+harness syncis a plugin-author workflow for regenerating.claude-plugin/*files from a single TOML SSOT. User projects have no.claude-plugin/to regenerate, so the TOML would be an orphaned file. Users who want unified TOML authoring for their own.claude/settings.jsoncan opt in later via a dedicated subcommand (future work).
Flow:
- Run the
gitignoresubcommand (idempotent — callsscripts/merge-gitignore.sh) - Detect project type (Node.js/Python/Go/Rust/Other)
- Generate minimal CLAUDE.md
- Create
.claude/harness/directory (plans.json is auto-created on firstharness plan-cli add-phasecall) - Generate
.claude/settings.json(permissions/sandbox/env — safe defaults)
gitignore — Harness .gitignore Block
Merges the harness-managed block into the project's .gitignore. Safe to run multiple times — skips if the marker is already present.
Implementation: scripts/merge-gitignore.sh
bash "${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh"
# Or with an explicit target path:
bash "${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh path/to/.gitignore"
The block ignores .claude/sessions/, logs/, settings.local.json, and states/,
while force-tracking .claude/memory/, .claude/output-styles/, .claude/rules/,
.claude/scripts/, .claude/skills/, and .claude/settings.json.
codex — Codex CLI Setup
Sets up the project for Codex CLI by copying Harness config templates and skills. See Codex CLI Setup Reference for full file layout and troubleshooting.
Prerequisites: Codex CLI installed (npm install -g @openai/codex)
What it does:
- Checks that
codexis installed; prints install instructions if not - Copies
templates/codex/*→.codex/(config.toml, rules/harness.rules, .codexignore) - Copies
AGENTS.mdto the project root - Copies all skills from plugin
skills/→.codex/skills/withdisable-model-invocation: truepatched into each SKILL.md frontmatter - Overlays
templates/codex-skills/→.codex/skills/(codex-native variants of breezing and harness-work override the generic copies)
bash "${CLAUDE_SKILL_DIR}/scripts/setup-codex.sh"
Note: Excluded from the no-args
initrun — requires an external@openai/codexinstall that should be explicit opt-in.
opencode — OpenCode Setup
Sets up the project for OpenCode by copying Harness config templates, commands, and skills.
Prerequisites: OpenCode installed (see https://opencode.ai/)
What it does:
- Checks that
opencodeis installed; prints install instructions if not - Copies
templates/opencode/opencode.json→.opencode/opencode.json - Copies
templates/opencode/commands/→.opencode/commands/ - Copies
AGENTS.mdto the project root - Copies all skills from plugin
skills/→.opencode/skills/as-is (opencode ignores unknown frontmatter fields)
bash "${CLAUDE_SKILL_DIR}/scripts/setup-opencode.sh"
Note: Excluded from the no-args
initrun — requires OpenCode to be installed explicitly.
duo — Codex + OpenCode Setup
Runs both codex and opencode setup subcommands in sequence.
bash "${CLAUDE_SKILL_DIR}/scripts/setup-codex.sh"
bash "${CLAUDE_SKILL_DIR}/scripts/setup-opencode.sh"
Cleanup
Periodic maintenance tasks:
| Task | Command |
|---|---|
| Delete old logs | find .claude/logs -mtime +30 -delete |
| Archive completed phases | harness plan-cli archive |
| Delete old traces | tail -1000 .claude/state/agent-trace.jsonl > /tmp/trace && mv /tmp/trace .claude/state/agent-trace.jsonl |
Related Skills
harness-plan— Create project plans after setupharness-work— Execute tasks after setupharness-review— Review setup configuration
Signals
- GitHub stars
- 34
- Last commit
- Aug 2026
ahel review
K1binfo
installs-packagesK6low
bundled executables the agent is told to runK1binfo
installs-packages (in scripts/setup-codex.sh)K1binfo
installs-packages (in references/codex.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
harness-setup-tim-hub- Source
- github.com/tim-hub/powerball-harness