Skip to content
Development
Skill

/surrogate-verifier

Generates structured test assertions and failure diagnostics for skill packages from a definition and task prompt. Triggers on: "verify this skill", "generate assertions", "surrogate verification", "diagnose skill failure". NOT for code review, use pr-review.

From plugin
armory
33998 skills2 agents1 command

Claude Code

$ npx -y skills add Mathews-Tom/armory --skill surrogate-verifier --agent claude-code

SKILL.md

surrogate-verifier.SKILL.md
name: surrogate-verifier
description: 'Generates structured test assertions and failure diagnostics for skill packages from a definition and task prompt. Triggers on: "verify this skill", "generate assertions", "surrogate verification", "diagnose skill failure". NOT for code review, use pr-review.'
metadata:
  version: 1.0.1
  category: review
  tags: [verification, assertions, testing, co-evolution, diagnostics, eval]
  difficulty: advanced
  phase: verify

Surrogate Verifier

Generate structured test assertions and failure diagnostics for skill packages through information-isolated verification. The verifier operates without access to the skill generator's reasoning — it sees only the skill definition, a task prompt, and the output artifacts. This isolation prevents confirmation bias and is the single largest contributor to skill quality in co-evolutionary generation (+30pp per EvoSkills).

Reference Files

| File | Contents | Load When | | ----------------------------------- | ---------------------------------------------------------------- | ------------------------------ | | `references/assertion-patterns.md` | Assertion catalog by skill category with weight guidance | Always | | `references/diagnostic-templates.md`| Failure diagnostic templates with root-cause categories | When producing failure reports |

Information Isolation Protocol

This is the most critical constraint. Violating isolation degrades verification quality.

**The verifier MUST NOT access:**

  • The generator's conversation history or reasoning chain
  • Prior evolution iterations or refinement context
  • The generator's internal notes or decision rationale
  • Any context beyond what is explicitly listed below

**The verifier receives ONLY:** 1. The skill's `SKILL.md` content (the definition file) 2. One or more task prompts representing intended use 3. The skill's output (when diagnosing failures) 4. The assertion results from `scripts/eval_assertions.py` (when diagnosing)

**Implementation:** When invoked by the `test-engineer` agent, this skill MUST be loaded into a **separate Agent spawn** using `isolation: "worktree"` or at minimum a fresh session with no shared context. The invoking agent passes artifacts as explicit text, not as conversation references.

Workflow

Mode 1: Assertion Generation

Generate assertions for a skill given its definition and task prompts.

Phase 1: Skill Analysis

Read the `SKILL.md` definition and extract:

1. **Stated capabilities** — what the skill claims to do (from description + workflow sections) 2. **Output format** — expected structure of the skill's output (markdown, JSON, tables, etc.) 3. **Error handling** — documented failure modes and recovery paths 4. **Prerequisites** — required tools, dependencies, or context 5. **Trigger boundaries** — what the skill does NOT handle (negative scope)

Phase 2: Assertion Design

For each task prompt, generate 5-10 assertions covering these dimensions:

| Dimension | Assertion Types to Use | Purpose | | --------------------- | ------------------------------- | ------------------------------------------ | | Output completeness | `contains`, `matches_regex` | All claimed sections/components present | | Format compliance | `output_format`, `contains` | Output matches declared structure | | Factual signals | `contains`, `not_contains` | Key domain terms present, hallmarks absent | | Tool usage | `calls_tool` | Expected tools were invoked | | Negative constraints | `not_contains` | Forbidden patterns absent |

**Weight assignment:**

  • Output completeness assertions: weight 1.0 (must have)
  • Format compliance: weight 0.8 (structural correctness)
  • Factual signals: weight 0.6 (content quality)
  • Tool usage: weight 0.5 (method verification)
  • Negative constraints: weight 0.3 (absence checks are weaker signals)

See `references/assertion-patterns.md` for category-specific assertion catalogs.

Phase 3: Output

Produce assertions in the `evals/cases.yaml` schema format:

assertions:
  - type: contains
    target: "## Scalability"
    weight: 1.0
  - type: output_format
    target: markdown_table
    weight: 0.8
  - type: not_contains
    target: "TODO"
    weight: 0.3
  - type: calls_tool
    target: Read
    weight: 0.5

**Context cap:** Do not consume more than 70% of the available context window. If the skill definition is very long, focus assertion generation on the workflow phases and output format sections. Summarize rather than quote verbatim.

Mode 2: Failure Diagnostics

When an oracle returns `fail`, produce a structured diagnostic explaining why.

Input

  • The skill's `SKILL.md` (same as Mode 1)
  • The task prompt that was executed
  • The output that failed
  • The assertion results: which passed, which failed, with details

Phase 1: Failure Classification

Categorize each failed assertion into a root-cause category:

| Category | Signal | Severity | | --------------------- | -------------------------------------------------------------- | ---------- | | Missing capability | `contains` assertion failed for a claimed feature | HIGH | | Format mismatch | `output_format` assertion failed | HIGH | | Incomplete output | Multiple `contains` assertions failed in the same section | MEDIUM | | Hallucinated content | `not_contains` assertion failed (forbidden pattern present) | HIGH | | Wrong tool usage | `calls_tool` assertion failed | MEDIUM | | Partial success | Some

Read more
@mathews-tom
Ships witharmory

Curated, production-grade skills, agents, hooks, rules, commands, utilities, and presets for AI coding agents. No magic, no demos — battle-tested workflows built for developers who use AI seriously.

33998 skills2 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
339
Star history of Mathews-Tom/armory on GitHub, a chart by star-history.com

Other skills on armory.

doc-condenser

doc-condenser

**DEPRECATED** — Modern Claude models condense and summarize technical documentation natively with comparable quality. The output…

@mathews-tom@mathews-tomInstall Skill
opus-4-7-migration

opus-4-7-migration

DEPRECATED: The Opus 4.7 migration scanner is retired from the active skill catalog. Retained for archival reference only; not…

@mathews-tom@mathews-tomInstall Skill
regex-builder

regex-builder

**DEPRECATED** — Modern Claude models produce accurate, well-explained regex patterns with edge-case test suites natively,…

@mathews-tom@mathews-tomInstall Skill
sequential-thinking

sequential-thinking

**DEPRECATED** — Opus 4.7 uses adaptive thinking (optional at each step) and Sonnet 4.6 handles structured chain-of-thought…

@mathews-tom@mathews-tomInstall Skill
adr-writer

adr-writer

Generates Architecture Decision Records capturing context, rationale, alternatives, and consequences in numbered status-tracked…

@mathews-tom@mathews-tomInstall Skill
agent-builder

agent-builder

Build AI agents and automate Claude Code programmatically via the Claude Agent SDK and headless CLI mode. Covers Python SDK,…

@mathews-tom@mathews-tomInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about surrogate-verifier.

Which coding agents can use surrogate-verifier?
surrogate-verifier installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.