Help us improve
Share bugs, ideas, or general feedback.
From midnight-verify
Witness claim classification and method routing. Determines what kind of witness claim is being verified and dispatches to the witness-verifier. Handles claims about witness type correctness, name matching, return tuple shape, type mappings, behavioral correctness, private state patterns, and two-file verification. Loaded by the /midnight-verify:verify command alongside the hub skill.
npx claudepluginhub devrelaicom/midnight-expert --plugin midnight-verifyHow this skill is triggered — by the user, by Claude, or both
Slash command
/midnight-verify:verify-witnessThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill classifies witness-related claims and determines which agent(s) to dispatch. The /midnight-verify:verify command loads this alongside the `midnight-verify:verify-correctness` hub skill.
Cross-domain witness verification pipeline. Compiles the Compact contract, type-checks the TypeScript witness against the compiled contract's generated Witnesses type, runs structural checklist analysis (name matching, return tuple shape, WitnessContext usage, private state immutability, side effects), executes the circuit with the witness via JS runtime, and recommends devnet E2E to the orchestrator if needed. Loaded by @"midnight-verify:witness-verifier (agent)".
This skill should be used when classifying fact-check claims into verification domains (Compact, SDK, ZKIR, Witness). Covers how to tag claims with their domain, assign classification confidence, handle cross-domain claims, and resolve boundary cases between domains like compiler behavior vs compiled output. Triggered by queries like "classify these claims", "tag claims by domain", "which domain does this claim belong to", or "run domain classification on the claims file". Used by the domain-classifier agent in the midnight-fact-check pipeline.
This skill should be used when the user asks about implementing Compact witness functions in TypeScript, the WitnessContext pattern, private state management, Compact-to-TypeScript type mappings (Field to bigint, Bytes to Uint8Array, Uint to bigint), compiler-generated .d.ts files (Witnesses interface, Circuits type, Contract class), the Compact JavaScript runtime, how contract.circuits works, pure circuits in TypeScript, reading ledger state from TypeScript, the witness return tuple pattern [PrivateState, ReturnValue], or how to connect a Compact contract to its TypeScript implementation.
Share bugs, ideas, or general feedback.
This skill classifies witness-related claims and determines which agent(s) to dispatch. The /midnight-verify:verify command loads this alongside the midnight-verify:verify-correctness hub skill.
When you receive a witness-related claim, classify it using this table:
| Claim Type | Example | Dispatch |
|---|---|---|
| Witness type correctness | "This witness correctly implements the contract interface" | @"midnight-verify:witness-verifier (agent)" |
| Witness name matching | "The witness names match the contract declarations" | @"midnight-verify:witness-verifier (agent)" |
| Witness return type | "This witness returns the correct [PrivateState, ReturnValue] tuple" | @"midnight-verify:witness-verifier (agent)" |
| Type mapping correctness | "The Field parameters map to bigint in the witness" | @"midnight-verify:witness-verifier (agent)" |
| WitnessContext usage | "This witness correctly uses the ledger from WitnessContext" | @"midnight-verify:witness-verifier (agent)" |
| Private state patterns | "This witness doesn't mutate private state in place" | @"midnight-verify:witness-verifier (agent)" |
| Claim Type | Example | Dispatch |
|---|---|---|
| Behavioral correctness | "This contract + witness combination produces valid results" | @"midnight-verify:witness-verifier (agent)" |
| Two-file verification | /midnight-verify:verify contracts/counter.compact src/witnesses.ts | @"midnight-verify:witness-verifier (agent)" (both files) |
| Witness + devnet E2E | "This witness works correctly when deployed" | @"midnight-verify:witness-verifier (agent)" + @"midnight-verify:sdk-tester (agent)" (concurrent) |
| Claim Type | Example | Dispatch |
|---|---|---|
| Witness + ZK proof | "This contract + witness produces a valid ZK proof" | @"midnight-verify:witness-verifier (agent)" first, then @"midnight-verify:zkir-checker (agent)" (sequential — witness-verifier passes build output path) |
When in doubt:
For Witness + ZKIR claims: dispatch @"midnight-verify:witness-verifier (agent)" first (it compiles and verifies), then pass the build output path to @"midnight-verify:zkir-checker (agent)". These are sequential, not concurrent, because the zkir-checker depends on the compiled artifacts.
The @"midnight-verify:witness-verifier (agent)" may load these skills for context. They are hints only — never cite skill content as evidence.
compact-core:compact-witness-ts skill — witness implementation patterns, WitnessContext API, type mappingscompact-core:compact-structure skill — witness declarations, disclosure rulescompact-core:compact-review skill — witness consistency review checklist