Skip to content
compact-reviewer:best-practices logo

compact-reviewer:best-practices

Use when reviewing Compact contracts for idiomatic patterns, learning recommended practices, or identifying common mistakes to avoid in Midnight smart contract development.

SKILL.md

Full skill instructions

Best Practices Skill

Guidance on idiomatic Compact patterns and common mistakes to avoid.

When to Use

This skill activates for queries about:

  • Idiomatic Compact code
  • Best practices and conventions
  • Common mistakes
  • Recommended patterns
  • Library usage

Trigger words: best practices, idiomatic, convention, pattern, recommended, should, ought

Quick Reference

Idiomatic Patterns

PatternGoodAvoid
Authorizationrequire_owner() helperInline auth in every circuit
ConstantsNamed constantsMagic numbers
Error handlingDescriptive assertionsSilent failures
State accessControlled via helpersDirect ledger access everywhere
Namingverb_noun for circuitsCryptic abbreviations

Common Mistakes

// ❌ Missing language pragma
// Should be at the top of every file
export circuit example(): [] { }

// ✅ With pragma
pragma language_version >= 0.18.0;
export circuit example(): [] { }
// ❌ Not using Counter for counts
ledger count: Cell<Uint<64>>;
export circuit increment(): [] {
    count.write(count.read() + 1);
}

// ✅ Using Counter ADT
ledger count: Counter;
export circuit increment(): [] {
    count.increment(1);
}

Review Process

1. Pragma and Imports

Check file structure:

  • Pragma present and version specified
  • Imports at top (when supported)
  • Logical ordering of declarations

2. Type Choices

Verify appropriate types:

  • Counter for counts
  • Map for key-value pairs
  • Set for membership
  • Cell for single values
  • Vector for fixed-size arrays

3. Pattern Compliance

Check against idioms:

  • Authorization extracted to helpers
  • Constants defined at top
  • Consistent naming
  • Documented public interfaces

References

Related Skills

More skills from aaronbassett

dapp-sdd:implement logo
aaronbassett/midnight-knowledgebase

dapp-sdd:implement

Use when executing implementation tasks with commits after each task and reviews after each phase.

0 0
View
compact-core:clone-examples logo
aaronbassett/midnight-knowledgebase

compact-core:clone-examples

Use when starting a new Midnight project, cloning example contracts (counter, tokens, NFTs, DEX), scaffolding from OpenZeppelin templates, or bootstrapping a Compact contract development environment with working starter code.

0 0
View
midnight-proofs:proof-caching logo
aaronbassett/midnight-knowledgebase

midnight-proofs:proof-caching

Use when caching ZK proofs for performance, implementing proof cache invalidation, storing verification results, caching intermediate proof components, or building distributed proof caches with Redis.

0 0
View
midnight-tooling:midnight-ci logo
aaronbassett/midnight-knowledgebase

midnight-tooling:midnight-ci

Use when setting up CI/CD for Midnight projects, configuring GitHub Actions for Compact contract compilation, running TypeScript tests in CI, validating version consistency, or automating contract builds.

0 0
View
midnight-dapp:proof-handling logo
aaronbassett/midnight-knowledgebase

midnight-dapp:proof-handling

Use when building witness data for ZK proofs, showing proof generation progress to users, implementing disclosure consent flows, handling proof timeouts and retries, or explaining privacy guarantees.

0 0
View
dapp-sdd:constitution logo
aaronbassett/midnight-knowledgebase

dapp-sdd:constitution

Use when implementing any Midnight example dApp to ensure compliance with quality standards and project conventions.

0 0
View
compact-core:typescript-integration logo
aaronbassett/midnight-knowledgebase

compact-core:typescript-integration

Use when implementing witness functions in TypeScript, mapping Compact types to TypeScript (Field→bigint, Bytes→Uint8Array), deploying contracts, calling circuits from TypeScript, reading ledger state, or building Midnight DApps with the JavaScript SDK.

0 0
View
midnight-dapp:state-management logo
aaronbassett/midnight-knowledgebase

midnight-dapp:state-management

Use when reading public ledger state, implementing reactive UI that updates with chain state, caching state for performance, or understanding public vs private state in Midnight DApps.

0 0
View
midnight-proofs:prover-optimization logo
aaronbassett/midnight-knowledgebase

midnight-proofs:prover-optimization

Use when optimizing prover performance, reducing proof generation memory usage, configuring prover infrastructure in Docker or Kubernetes, implementing parallel proof generation, or diagnosing prover bottlenecks.

0 0
View
dapp-sdd:plan logo
aaronbassett/midnight-knowledgebase

dapp-sdd:plan

Use when creating a phased implementation plan from a specification, with review gates after each phase.

0 0
View
dapp-sdd:specify logo
aaronbassett/midnight-knowledgebase

dapp-sdd:specify

Use when expanding a README-based dApp description into a full specification with user stories and acceptance criteria.

0 0
View
midnight-tooling:contract-calling logo
aaronbassett/midnight-knowledgebase

midnight-tooling:contract-calling

Use when calling deployed Midnight contracts from Node.js backends, querying contract state, executing state-changing transactions, building API endpoints that interact with contracts, or automating contract interactions.

0 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View