Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
hairyf avatar

Circom

  • 4 installs
  • 4 repo stars
  • Updated February 25, 2026
  • hairyf/blockchain-master

Define arithmetic circuits for zero-knowledge proofs in circom: signals, constraints, templates, components, and R1CS compilation.

About

An agent-oriented reference for the circom 2.x language and compiler covering circuit semantics, constraint generation, and safety. A developer uses it to build ZK circuits compiled to R1CS for proving systems like snarkjs.

  • Signal types, assignment operators, and constraint immutability rules
  • Parameterized templates/components compiling to R1CS with WASM/C++ witness generators

Circom by the numbers

  • 4 all-time installs (skills.sh)
  • Ranked #347 of 479 Web3 & Blockchain skills by installs in the Skillselion catalog
  • Data as of Jul 13, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hairyf/blockchain-master --skill circom

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs4
repo stars4
Last updatedFebruary 25, 2026
Repositoryhairyf/blockchain-master

What it does

Define arithmetic circuits for zero-knowledge proofs in circom: signals, constraints, templates, components, and R1CS compilation.

Files

SKILL.mdMarkdownGitHub ↗
Skill is based on circom 2.x, generated at 2026-02-24.

circom is a domain-specific language and compiler for defining arithmetic circuits used in zero-knowledge proving systems (e.g. with snarkjs). Circuits are built from parameterized templates and components; the compiler outputs R1CS (and optionally WASM/C++ witness generators). This skill focuses on language semantics, constraint generation, and practical usage for agents.

Core References

TopicDescriptionReference
SignalsInput/output/intermediate, assignment operators, public/private, immutabilitycore-signals
Templates and componentsDefinition, instantiation, dot notation, arrays, parallel and custom templatescore-templates-components
Constraint generationQuadratic constraints, ===, <== vs <-- + ===core-constraints
Main componentEntry point, public input list, single maincore-main-component
Pragma and includeVersion, custom_templates, include, -lcore-pragma-include

Features

TopicDescriptionReference
OperatorsField, boolean, relational, bitwise; precedence; conditional ? :features-operators
Control flowif/for/while, known vs unknown conditions, instantiation orderfeatures-control-flow
FunctionsPure computations, no signals/constraints, return on every pathfeatures-functions
Variables and data typesvar, arrays (known size), field and signal arraysfeatures-variables-data-types
Anonymous components and tuplesInline instantiation, multiple outputs, _, array <==features-anonymous-tuples
TagsSignal tags (e.g. binary, maxbit), inheritance, valued tagsfeatures-tags
BusesStruct-like signal groups, tagging, nested/parameterized, input formatfeatures-buses
CompilationCLI flags (r1cs, wasm, c, sym, O0/O1/O2, prime, -l, inspect)features-compilation
ScopingSignals/components at top-level or known-condition if; var block scopefeatures-scoping

Best Practices

TopicDescriptionReference
Signal safetyPrefer <==/==>; use <-- only when needed and add ===; use --inspectbest-practices-signal-safety
Assert and logCompile-time vs witness-time assert; log() for debuggingbest-practices-assert-log
Known vs unknownSignals unknown; constraints and indices under known control flowbest-practices-unknowns
SimplificationWhen to use O0/O1/O2; PLONK vs Groth16; large circuitsbest-practices-simplification

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.