---
name: Upgrade Harness
slug: upgrade-harness
category: Automation
description: Upgrade Harness re-renders a scaffolded harness against the latest template, compares added, removed, and changed files, and applies safe updates. Use it to catch template drift and resolve conflicts with markers or .rej files.
github: "https://github.com/ruvnet/metaharness/tree/main/.claude-plugin/skills/upgrade-harness"
language: TypeScript
stars: 609
forks: 72
install: "npx degit https://github.com/ruvnet/metaharness/tree/main/.claude-plugin/skills/upgrade-harness ~/.claude/skills/upgrade-harness"
installs_to: ~/.claude/skills/upgrade-harness
source_path: .claude-plugin/skills/upgrade-harness/SKILL.md
collection_size: 16
category_size: 1523
collection_url: "https://dirskills.com/collections/ruvnet/metaharness"
added: 2026-08-25T05:12:53.980Z
last_synced: 2026-08-25T05:12:53.980Z
canonical_url: "https://dirskills.com/skills/upgrade-harness"
---

# Upgrade Harness

Upgrade Harness re-renders a scaffolded harness against the latest template, compares added, removed, and changed files, and applies safe updates. Use it to catch template drift and resolve conflicts with markers or .rej files.

**Install:**

```bash
npx degit https://github.com/ruvnet/metaharness/tree/main/.claude-plugin/skills/upgrade-harness ~/.claude/skills/upgrade-harness
```

## README

# upgrade-harness

> Codex skill: drift detection + apply for a scaffolded harness.

## What it does

Re-renders the template that produced the harness against the current generator version, using the same `vars` the original scaffold used. Computes a 3-bucket plan:

| Bucket | Meaning |
|---|---|
| **added** | upstream template now has files the harness doesn't |
| **removed** | upstream template no longer has files the harness does |
| **changed** | upstream and harness differ; sub-classified `clean` vs `conflict` |

A **clean** change means the harness's version equals the original generation — apply safely. A **conflict** means the user edited the file post-scaffold; the apply step writes either Git-style inline markers or a `.rej` sidecar for manual merge.

## Usage from Codex

```
/upgrade-harness                                       # dry-run on cwd
/upgrade-harness path=./my-harness
/upgrade-harness path=./my-harness apply=true
/upgrade-harness path=./my-harness apply=true conflict=rej
```

## Equivalent CLI

```bash
harness upgrade ./my-harness                           # dry-run
harness upgrade ./my-harness --apply                   # apply, inline conflicts
harness upgrade ./my-harness --apply --conflict=rej    # apply, .rej sidecars
```

## Lifecycle position

```
scaffold (create-agent-harness)
    ↓
 edit (you)
    ↓
 upgrade (this skill)   <- catches up to the latest template
    ↓
 sign / verify / publish
```

## Exit codes

| Code | Meaning |
|---|---|
| 0 | No drift OR clean apply (no conflicts) |
| 1 | Unresolved conflicts after apply, OR not a generated harness, OR template missing |
| 2 | Bad `--conflict=` value |

CI workflows can gate on exit 1 to flag unresolved conflicts.
