diag-harness
The diag-harness skill performs kernel-version skew detection for scaffolded metaharness projects by comparing the `@metaharness/kernel` version recorded in `.harness/manifest.json` against the locally installed version. Run this diagnostic immediately after cloning a harness, after upgrading the kernel dependency, or when encountering shape-mismatch errors in harness operations, as version skew is the root cause of most cross-machine compatibility failures.
git clone --depth 1 https://github.com/ruvnet/agent-harness-generator /tmp/diag-harness && cp -r /tmp/diag-harness/.claude-plugin/skills/diag-harness ~/.claude/skills/diag-harnessSKILL.md
# diag-harness
> Codex skill: kernel-version skew check for a scaffolded harness — the ADR-027 diagnostic UX loop.
## What it does
Single-question check: **does my local `@metaharness/kernel` match what this harness was scaffolded against?** That's the cross-machine compatibility question almost every "this harness doesn't work" support ticket turns out to be.
Reads `.harness/manifest.json`:
| Field | Source | Meaning |
|---|---|---|
| `meta.surface` | iter 56 | Which surface produced the harness (`cli` or `web-ui`) |
| `meta.kernel_version` | iter 58 | The `@metaharness/kernel` version stamped at scaffold time |
Resolves the local `@metaharness/kernel` via `createRequire` rooted at the harness's own `package.json` (real Node resolution). Computes the skew verdict and prints a copy-pasteable next step.
| Verdict | Exit | Message |
|---|---|---|
| `match` | 0 | `PASS kernel versions match exactly` |
| `patch-diff` | 0 | `WARN patch-level skew (usually safe; may include bugfixes)` |
| `minor-diff` | 1 | `WARN minor-level skew (new kernel features may be missing)` + `Run: npm install @metaharness/kernel@X.Y.Z` |
| `major-diff` | 1 | `FAIL MAJOR skew — APIs may have changed; expect breakage` + `Run: npm install @metaharness/kernel@X.Y.Z` |
| no `.harness/manifest.json` at path | 2 | `FAIL no .harness/manifest.json found at this path` |
## Usage from Codex
```
/diag-harness # cwd
/diag-harness path=./my-harness
```
## Equivalent CLI
```bash
harness diag # cwd
harness diag ./my-harness # explicit path
harness diag ./my-harness --json # machine-readable for CI
harness diag ./my-harness --bundle # support-ticket JSON (iter 90)
```
The `--bundle` form (iter 90) emits a single JSON snapshot of the diag report + sanitised manifest + `@metaharness/*` deps + Node/platform info — everything a maintainer needs to triage a bug report. Object keys matching `secret|token|key|password|api_key` are redacted so the bundle is safe to paste into a public GitHub issue.
## Sample output
```
harness diag — checking /tmp/my-harness
surface: cli
manifest kernel: 0.1.0
installed kernel: 0.1.0
PASS kernel versions match exactly
```
## When to run
- After cloning someone else's harness — first thing
- After bumping `@metaharness/kernel` in a harness's `package.json`
- When `harness doctor` fails with cryptic shape errors (skew is the usual cause)
- In CI before any other harness subcommand — fail fast
## Lifecycle position
```
scaffold (create-agent-harness)
↓
your code lives in the harness
↓
diag (this skill) <- before anything else, check compatibility
↓
doctor / validate / sign / publish
```
## Related
- ADR-027 — CLI ↔ Web-UI integration (the parity contract diag enforces)
- iter 56 — `manifest.meta.surface` added
- iter 58 — `manifest.meta.kernel_version` stamped at scaffold time
- iter 66 — `harness diag` subcommandDiff two scaffolded harnesses (ADR-031). Reports manifest meta drift + host list + per-file fingerprint changes (added/removed/changed). Exits 0 IDENTICAL, 1 DRIFT, 2 missing manifest. Use --bundle for the ADR-031 schema-1 JSON envelope.
Scaffold your own focused AI agent harness — pick host (Claude Code, Codex, pi.dev, Hermes), template, agents, skills, and ship a npm-publishable harness with its own npx CLI. Use when a user asks to "create my own agent harness", "scaffold a harness", "make a custom Claude Code plugin like ruflo", or "build a vertical AI assistant for X".
Scaffold a ready-made AI agent harness in one command from the 19 published @metaharness/* example packages — 9 host integrations (Claude Code, Codex, Hermes, pi.dev, OpenClaw, RVM, Copilot, OpenCode, GitHub Actions) + 10 vertical pods (devops, research, trading, support, legal, coding, education, sales, gaming, repo-maintainer).
GCP Secret Manager integration: validate setup, fetch values, or confirm an NPM_TOKEN is non-revoked via `npm whoami`. Used for publish-time token rotation without long-lived keys in CI.
List the available harness templates and what each one ships with. Use when the user asks "what templates are available", "what verticals does the harness generator support", or "show me what I can scaffold".
Emit .harness/oia-manifest.json declaring layer alignment with the OIA v0.1 9-layer reference architecture. Self-describes the harness's MCP wiring, witness signing, audit log, identity posture (always 'none' at v0.1). --check verifies an existing manifest, --dry-run prints without writing, --json emits to stdout.
Publish a generated harness to npm — runs the smoke test, signs the witness manifest, and dispatches `npm publish --provenance` from your tagged release.
7-section readiness scorecard for a LOCAL repo. Reports repo type + agent topology + MCP risk + test confidence + release readiness + recommended harness plan + scorecard. Exit 0 ready, 1 needs-work, 2 blocked. --json for the 6-field scorecard, --bundle for the ADR-031 schema-1 envelope.