---
name: Score Harness
slug: score-harness
category: AI Engineering
description: Score Harness assigns scaffolded harnesses a 0-100 grade across repo understanding, agent usefulness, MCP safety, test coverage, and publish readiness. It also emits a 6-field badge block and exit codes for A/B, C, and F results.
github: "https://github.com/ruvnet/metaharness/tree/main/.claude-plugin/skills/score-harness"
language: TypeScript
stars: 609
forks: 72
install: "npx degit https://github.com/ruvnet/metaharness/tree/main/.claude-plugin/skills/score-harness ~/.claude/skills/score-harness"
installs_to: ~/.claude/skills/score-harness
source_path: .claude-plugin/skills/score-harness/SKILL.md
collection_size: 16
category_size: 2451
collection_url: "https://dirskills.com/collections/ruvnet/metaharness"
added: 2026-08-25T05:12:53.503Z
last_synced: 2026-08-25T05:12:53.503Z
canonical_url: "https://dirskills.com/skills/score-harness"
---

# Score Harness

Score Harness assigns scaffolded harnesses a 0-100 grade across repo understanding, agent usefulness, MCP safety, test coverage, and publish readiness. It also emits a 6-field badge block and exit codes for A/B, C, and F results.

**Install:**

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

## README

# score-harness

> Codex skill: 5-dimension harness scorecard with README-ready badges
> (iter 111 → iter 114).

## What it does

Every generated harness gets a single 0-100 score and a 6-field badge
block. The user roadmap target: **A grade (>=85) without manual edits.**

| Dimension | Weight | Reads |
|---|---|---|
| Repo understanding | 25% | `.harness/manifest.json` (surface + kernel_version + host) |
| Agent usefulness | 25% | `src/agents/*.ts` + `.claude/skills/*` + `.claude/commands/*` counts |
| MCP safety | 20% | `.harness/mcp-policy.json` (default-deny + audit + perm gates) |
| Test coverage | 15% | `__tests__/` + `npm test` + `.github/workflows/` |
| Publish readiness | 15% | `witness.json` + `sbom.json` + `package.json#bin` |

Grade + exit code:

| Grade | Range | Exit |
|---|---|---|
| **A** | 85-100 | 0 — the user's target |
| **B** | 70-84 | 0 |
| **C** | 50-69 | 1 (needs work) |
| **F** | 0-49 | 2 (blocked) |

## Badge block (the 6-field shape)

```json
{
  "score": 87,
  "mcpRisk": "Low",
  "releaseReady": true,
  "testsDetected": true,
  "sbom": true,
  "witnessSigned": true
}
```

`mcpRisk` is one of `None` / `Low` / `Medium` / `High`. Drop this block
into the generated harness README as visible badges — see ADR-030 for the
propagation discipline.

## Usage from Codex

```
/score-harness path=./my-harness
/score-harness path=./my-harness bundle=true
```

## Equivalent CLI

```bash
harness score ./my-harness                # text + bars + dimension breakdown
harness score ./my-harness --json         # 6-field badges JSON
harness score ./my-harness --bundle       # ADR-031 schema-1 envelope
harness score ./my-harness --out badges.json
```

## Related skills

- `validate-harness` (iter 22) — release-readiness umbrella that the
  score subcommand inherits signals from
- `diag-harness` (iter 70) — kernel-version skew (one of the
  Repo-understanding signals)
- `threat-model` (iter 114) — focused MCP threat artifact

## See also

- [ADR-030](../../../docs/adrs/ADR-030-discovery-loop.md) · [ADR-031](../../../docs/adrs/ADR-031-bundle-json-pattern.md)
