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
verifierlevel, 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-logsas evidence.- Runtime layer — execute the verification bundle from
impl_result.jsonand capture concrete evidence (tests-run, logs, screenshots).If a layer is impossible per contract §7, record the reason in
verification_result.notesand 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.jsonwith a filled-inverification_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)
- Static layer (compile + architecture). Call
debug-check-compilation(or REST equivalent). Readconsole-get-logsfor editor errors/warnings. Scan the changed files for banned patterns listed inverification-contract.md§1. Record findings understatic_verificationon the result artifact. - Read the bundle.
verification_bundle.repro_stepsis your script. - Run each repro step via MCP (preferred) or by reading the changed files to confirm the expected state.
- Check every invariant. Each unmet invariant is a regression.
- Sample edge cases. Cover at least half of
edge_cases[]. Note any not checked undernotes. - Emit
workspace/verification_result.jsonwith bothstatic_verificationandruntime_verificationpopulated (ornotesrecording 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 regressionsMEDIUM— invariants pass, some edge cases skipped, no regressionsHIGH— 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/criticalcomplexity) - Edit code (Phase 3 forbids writes; see
.claude/docs/rules/mcp-phase-gates.md) - Spawn
bug-investigation(escalate viafail_reasoninstead) - Wait indefinitely for a fix — write
BLOCKEDand return
Escalation
If verification FAILs:
- Write
verification_result.jsonwithstatus="FAIL"and a precisefail_reason(which invariant + how it failed + which file). - Return. The orchestrator routes back to unity-dev for one retry.
- 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
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.
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.
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.
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.
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.
valid_skill
A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.