From hl-design-systems
This skill should be used when the user asks to "assess a verifier crate", "assess verifier feasibility", "evaluate a ZK crate for zkVerify", "check if a crate can be a zkVerify verifier", "analyze unsafe in a verifier crate", "create a verifier assessment", "full verifier assessment", or mentions assessing whether a ZK proof verification crate can be integrated as a zkVerify verifier pallet. This is a comprehensive assessment that first checks no_std and stable toolchain compatibility, and only then proceeds to verifier-specific analysis.
npx claudepluginhub horizenlabs/hl-claude-marketplace --plugin hl-design-systemsThis skill uses the workspace's default tool permissions.
Comprehensive feasibility assessment for integrating a ZK proof verification crate as a zkVerify
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Performs token-optimized structural code search using tree-sitter AST parsing to discover symbols, outline files, and unfold code without reading full files.
Comprehensive feasibility assessment for integrating a ZK proof verification crate as a zkVerify verifier pallet. The assessment is structured in stages:
no_std compatibility and stable toolchain support (delegated to specialized
subagents running in parallel)Verifier trait, unsafe code analysis, removal
strategies, and Substrate compatibilityThe assessment proceeds to stage 2 only if the prerequisite checks in stage 1 yield a positive result (Go or Conditional Go). If either prerequisite is a No Go, the process stops early and reports the blockers to the user.
Scope: assessment and reporting only — never modify the crate's code or create PRs.
Operate as a senior Rust developer with strong zero-knowledge background. As applied cryptographer, understand what a zero-knowledge proof is and what verifying a proof means. Understand the distinction between Vk (verification key), Proof, and Pubs (public inputs) as described below.
The target interface is the zkVerify Verifier trait from pallet-verifiers. Read and follow
references/zkverify-verifier-trait.md for the full trait definition, type mapping patterns, and
two worked examples (fflonk as simple, risc0 as complex).
Collect the crate coordinates from the user. Accepted forms:
https://github.com/org/repo with crate my-verifier/home/user/code/my-verifiermy-verifier (fetch from crates.io)If the user does not provide coordinates, ask before proceeding. Do not guess.
Before any analysis, create a plan and present it to the user for approval. The plan should outline:
Spawn two subagents in parallel, each with a clean context (no inherited state from this conversation). Each subagent receives the crate coordinates and the full content of its respective skill file as instructions.
Spawn a general-purpose subagent with the Agent tool. Build its prompt as follows:
${CLAUDE_PLUGIN_ROOT}/skills/zkverify-verifier-assessment/no-std-assessment/SKILL.mdno-std-assessment/ directory:
references/report-template.md, references/analysis-guide.md)reports/<crate-name>-no-std-assessment.mdSpawn a general-purpose subagent with the Agent tool. Build its prompt as follows:
${CLAUDE_PLUGIN_ROOT}/skills/zkverify-verifier-assessment/rust-stable-assessment/SKILL.mdrust-stable-assessment/ directory:
references/report-template.md, references/audit-prompt.md)reports/<crate-name>-stable-assessment.mdBoth subagents must be launched in the same tool-call message to run in parallel.
After both subagents complete, read their reports and evaluate the verdicts:
When presenting the gate result to the user, include a brief summary of each prerequisite report's verdict and key findings.
This phase analyzes the crate's suitability for implementing the zkVerify Verifier trait.
Search the crate for the verify function or equivalent. Identify:
verify(vk, proof, pubs) API or a more complex interfaceFor each of the three core types (Vk, Proof, Pubs), determine:
Verifier trait's associated types[u8; N]) or variable-size (Vec<u8>) representation is appropriateClassify the facade as simple (fflonk-like) or complex (risc0-like). Read and follow
references/zkverify-verifier-trait.md for the decision criteria.
Perform a two-level unsafe analysis:
unsafe blocks, unsafe fn, unsafe implFor each unsafe occurrence, classify it (FFI, transmute, pointer, asm, unsafe trait impl) and assess
removability. Read and follow references/unsafe-assessment-rules.md for the full strategy framework.
Using the findings from the prerequisite reports (Phase 2) plus additional checks:
Encode, Decode, TypeInfo derives (or feasibility of adding them)alloc usage compatibilityGenerate the final consolidated report following the template in references/report-template.md.
The report must incorporate and reference the prerequisite findings:
Rules for the report:
references/unsafe-assessment-rules.mdOutput path: reports/<crate-name>-verifier-assessment.md
If a report already exists at any target path (including prerequisite reports), ask the
user whether to overwrite or append a timestamp to the new filename (e.g.,
<crate-name>-verifier-assessment-20260316.md).
After writing the final report, spawn a clean subagent with no prior context to audit it. The subagent receives ONLY the final report text, the two prerequisite report texts, and the crate coordinates. It must:
Update the report based on audit findings.
unsafe and
the functions called from the underlying crate should not use unsafe. If this is not achievable,
the report must clearly state why and what the alternatives are.references/zkverify-verifier-trait.md — Full Verifier trait definition, type mapping
patterns, fflonk (simple) and risc0 (complex) worked examples, weight system, pallet structurereferences/unsafe-assessment-rules.md — Two-level unsafe analysis methodology, five removal
strategies (A–E) with pros/cons/PR feasibility, confidence evaluation rules, audit processreferences/report-template.md — Complete report template with all sections, tables, legend,
and writing rules${CLAUDE_PLUGIN_ROOT}/skills/zkverify-verifier-assessment/no-std-assessment/ — Full no_std
compatibility assessment with scanner script, analysis guide, and report template${CLAUDE_PLUGIN_ROOT}/skills/zkverify-verifier-assessment/rust-stable-assessment/ — Stable
toolchain assessment with feature-by-feature evaluation, audit prompt, and report template