AGENT SKILL

verifier

Lightweight verification agent for small and medium complexity tasks. Mechanically runs the deterministic verification bundle from impl_result.json and emits verification_result.json. Does not design tests or edit code — replaces always-on tester for tiny/small/medium pipelines.

License 许可
MIT
最近更新
2026-07-25
Stars
★ 8
Forks
0

01 前言 Front Matter

name
verifier
metadata
{ "tier": 1, "source": "internal", "version": "1.0.0" }
use-when
Load for the verifier agent on tiny, small, and medium complexity pipelines. Load when impl_result.json exists and contains a verification_bundle to execute.
platforms
[ "claude-code", "codex", "copilot", "cursor", "windsurf" ]
description
Lightweight verification agent for small and medium complexity tasks. Mechanically runs the deterministic verification bundle from impl_result.json and emits verification_result.json. Does not design tests or edit code — replaces always-on tester for tiny/small/medium pipelines.
do-not-use-when
Do not load for large or critical complexity pipelines — use tester instead. Do not load for unity-dev, architect, or triage roles. Never edits code or designs tests.
task-categories
[ "verification", "compilation", "qa" ]

03 SKILL.md 正文

Verifier Skill

The verifier is the default verification path for tiny, small, and medium complexity tasks. It does NOT design test matrices, does NOT spawn investigators, does NOT write new tests beyond what unity-dev already specified. Its job is to mechanically run the verification bundle and report PASS/FAIL.

Mandatory verification contract. Even at the lightweight verifier level, the run MUST satisfy @.claude/skills/qa-validation/verification-contract.md:

  • Static layer — confirm compilation is clean and no banned patterns were introduced (asmdef breakage, Burst-incompatible code in hot paths, structural changes inside query iteration, editor-only API in runtime builds). Use debug-check-compilation + console-get-logs as evidence.
  • Runtime layer — execute the verification bundle from impl_result.json and capture concrete evidence (tests-run, logs, screenshots).

If a layer is impossible per contract §7, record the reason in verification_result.notes and continue. Otherwise: missing layer → status="BLOCKED". Reasoning alone is NEVER sufficient.

When You Are Spawned

  • Triage classified the task as small or medium.
  • unity-dev has finished and emitted workspace/impl_result.json with a filled-in verification_bundle.
  • The orchestrator validated the bundle is non-empty before spawning you.

Inputs

  • workspace/impl_result.json — the verification bundle, repro steps, expected state, invariants, and edge cases unity-dev wants checked.
  • workspace/triage.json — for risk context.

Procedure (Fixed Six Steps)

  1. Static layer (compile + architecture). Call debug-check-compilation (or REST equivalent). Read console-get-logs for editor errors/warnings. Scan the changed files for banned patterns listed in verification-contract.md §1. Record findings under static_verification on the result artifact.
  2. Read the bundle. verification_bundle.repro_steps is your script.
  3. Run each repro step via MCP (preferred) or by reading the changed files to confirm the expected state.
  4. Check every invariant. Each unmet invariant is a regression.
  5. Sample edge cases. Cover at least half of edge_cases[]. Note any not checked under notes.
  6. Emit workspace/verification_result.json with both static_verification and runtime_verification populated (or notes recording the §7 exemption that lets you omit one).

If at any point a repro step cannot run (compilation broken, MCP unreachable, required asset missing): set status="BLOCKED", write the reason, and stop. Do NOT improvise tests. Compilation broken in the static layer is an automatic BLOCKED — the runtime layer cannot be trusted on a broken build.

Output

workspace/verification_result.json matching .claude/schemas/verification_result.schema.json:

{
  "status": "PASS|FAIL|BLOCKED",
  "method": "verifier",
  "regressions": ["…"],
  "edge_cases_checked": ["…"],
  "stress_results": [],
  "evidence": ["static: debug-check-compilation clean", "runtime: tests-run PASS 12/12"],
  "notes": "edge cases skipped: X, Y (reason)",
  "risk_level": "LOW|MEDIUM|HIGH",
  "fail_reason": null,
  "static_verification": {
    "compile_clean": true,
    "asmdef_clean": true,
    "banned_patterns_found": [],
    "notes": "no editor-only API leaked into runtime asmdef"
  },
  "runtime_verification": {
    "method": "EditMode",
    "tests_executed": 12,
    "tests_passed": 12,
    "edge_cases_covered": 4,
    "notes": ""
  }
}

Risk level rubric:

  • LOW — all invariants pass, all edge cases sampled, no regressions
  • MEDIUM — invariants pass, some edge cases skipped, no regressions
  • HIGH — any regression OR fewer than half edge cases sampled

What You DO NOT Do

  • Design new test matrices (that is the tester agent's job, spawned only at large/critical complexity)
  • Edit code (Phase 3 forbids writes; see .claude/docs/rules/mcp-phase-gates.md)
  • Spawn bug-investigation (escalate via fail_reason instead)
  • Wait indefinitely for a fix — write BLOCKED and return

Escalation

If verification FAILs:

  1. Write verification_result.json with status="FAIL" and a precise fail_reason (which invariant + how it failed + which file).
  2. Return. The orchestrator routes back to unity-dev for one retry.
  3. After two FAILs on the same task: orchestrator escalates to tester (or human, per the retry policy in team.md).

Validation

Before declaring complete:

python .claude/scripts/orchestrate.py validate workspace/verification_result.json verification_result

If validation fails, fix the artifact and re-validate. The orchestrator's finalize gate will block any artifact that fails schema validation.

04 同仓库更多 Skills

dyCuong03
dyCuong03/unity-agent-team

dots-update-groups

How to choose the right ECS system group and ordering so per-frame and per-fixed-step work is deterministic and never races its own readers. Covers InitializationSystemGroup / SimulationSystemGroup / PresentationSystemGroup / FixedStepSimulationSystemGroup / VariableRateSimulationSystemGroup, UpdateBefore / UpdateAfter peer ordering, OrderFirst / OrderLast group-boundary placement, RateManager, and the cross-group ordering trap. Use when adding an ISystem, fixing "value visible one frame late" bugs, or coupling simulation to a fixed timestep.

★ 8
dyCuong03
dyCuong03/unity-agent-team

dots-transform-patterns

The Entities 1.x transform model — LocalTransform (writable input) vs LocalToWorld (system-owned matrix), Parent/Child hierarchy, reparenting cost, uniform vs non-uniform scale (PostTransformMatrix), and when to opt out with custom transform systems. Use when designing parent/child hierarchies, runtime reparenting (mount/dismount/socket), or choosing transform components at the Baker boundary.

★ 8
dyCuong03
dyCuong03/unity-agent-team

dots-singleton-patterns

Model cross-system shared configuration and game state as a single-entity component with a strict single-writer contract. Covers RequireForUpdate gating, SystemAPI.GetSingleton / GetSingletonRW / HasSingleton / TryGetSingleton, bake-time vs runtime-created vs ECB-system singletons, the "exactly one entity" runtime invariant, and the single-writer rule. Use when designing frame-stable global config, shared mutable state, or any component intended to exist on exactly one entity.

律师与法务
★ 8
dyCuong03
dyCuong03/unity-agent-team

dots-hybrid-bridge

The one-way bridge between DOTS-owned runtime state and Unity-owned presentation. Covers UnityObjectRef for managed asset refs in components, the DOTS-writes / Unity-reads ownership rule, when to use managed IComponentData vs UnityObjectRef vs CompanionComponent, baker-bridge vs runtime-bridge, and SubScene boundary rules. Use when an entity must reference Unity assets (Mesh, Material, AudioClip, ScriptableObject), a MonoBehaviour view must read entity state, or input/UI must trigger ECS work.

★ 8
dyCuong03
dyCuong03/unity-agent-team

dots-event-driven-ecs

Model one-frame events and external requests in ECS without dual ownership, polling, or persistent state leaks. Covers request-tag pattern with ECB, enableable command components (no structural change), event buffers (IBufferElementData), explicit consumer ownership, one-frame latency rules, and the banned C# event / UnityEvent / static bus anti-patterns. Use when input/UI/network must trigger ECS work, when a one-frame signal fans out to N consumers (damage, hit, collision), or when state changes must be processed exactly once.

★ 8
dyCuong03
dyCuong03/unity-agent-team

valid_skill

A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.

代码审查测试与质量
★ 8