{"id":"ff0884be-f0c5-456a-8776-37470a1afc16","shortId":"9LbKbj","kind":"skill","title":"midnight-compact","tagline":"Write, test, and deploy Compact smart contracts for Midnight. Use when writing privacy-preserving contracts, ZK circuits, shielded tokens, or any on-chain Midnight code. Triggers on: Midnight, Compact, smart contract, zero-knowledge, ZK, shielded, circuit, witness, ledger, proof ","description":"# Midnight Compact Smart Contract Development\n\nYou are an expert Midnight smart contract developer. Compact is a TypeScript-like\ndomain-specific language that compiles to zero-knowledge circuits, enabling\nprivacy-preserving computation on the Midnight blockchain.\n\n## Core Principles\n\n1. **Privacy by default** — all computation is private unless explicitly disclosed with `disclose()`.\n2. **Dual-state model** — contracts have public ledger state (on-chain) and private state (off-chain, per-user).\n3. **Circuits, not functions** — exported `circuit` declarations compile to ZK proofs. There are no `function` keywords.\n4. **Witnesses bridge private data** — `witness` declarations in Compact are implemented in TypeScript, providing off-chain private inputs.\n5. **Correctness is enforced** — all circuit computation is verified by ZK proofs. Only witness code runs unverified.\n6. **Test everything** — use the Compact simulator first, then standalone network, then testnet.\n\n## Decision Tree\n\nWhen asked to write a smart contract:\n\n1. **Specify the contract** — before writing code, define:\n   - What state is public vs private?\n   - What operations (circuits) does it expose?\n   - What invariants must hold? (e.g., \"total supply is conserved\", \"only owner can withdraw\")\n   - What are the trust boundaries? (what can witnesses lie about?)\n   - What are the failure modes?\n2. **Identify the privacy requirements**: what must be shielded vs public?\n3. **Design ledger state** — `export ledger` for public, plain `ledger` for contract-private\n4. **Design witnesses** — what private data do users provide off-chain?\n5. **Write circuits** — exported for external calls, plain for internal\n6. **Add `disclose()` calls** — required for any witness-derived value written to ledger or used in conditionals\n7. **Write TypeScript witnesses** — implement witness bodies returning `[newPrivateState, returnValue]`\n8. **Write tests** — progressive approach:\n   - Unit test witnesses in isolation (correct types, immutable state, edge cases)\n   - Simulator tests for every circuit (happy path + error conditions)\n   - Invariant tests with `fast-check` (conservation laws, state machine validity)\n   - Privacy leak tests (verify secrets don't appear in public state)\n   - Adversarial tests (replay attacks, privilege escalation, malicious witnesses)\n9. **Review for privacy leaks** — check the security patterns in [security.md](reference/security.md)\n10. **Check circuit complexity** — verify k-values are acceptable (k <= 14 fast, k >= 17 needs optimization)\n11. **Compile and deploy** — `compact compile`, test with proof server, deploy to preprod before mainnet\n\nWhen asked to audit or review a contract:\n\n1. **Follow the auditing methodology** in [auditing.md](reference/auditing.md)\n2. **Phase 1:** Map ledger state, circuits, witnesses, and trust boundaries\n3. **Phase 2:** Privacy leak scan — check all `disclose()` calls, witness interactions, and indirect leakage\n4. **Phase 3:** Circuit complexity analysis — check `k` values, ledger operation costs\n5. **Phase 4:** SDK integration review — version alignment, provider configuration\n6. **Phase 5:** Test coverage assessment\n7. **Report findings** with severity, privacy impact, and fix\n\n## Compact Language — Essential Syntax\n\n### Pragma (REQUIRED at top of every file)\n\n```compact\npragma language_version >= 0.20;\n```\n\n### Imports\n\n```compact\nimport CompactStandardLibrary;                              // ALWAYS required\nimport \"./path/to/Module\" prefix Module_;                   // OZ composition pattern\n```\n\n### Ledger Declarations\n\nCRITICAL: Use individual statements. Block syntax `ledger { }` is DEPRECATED and causes parse errors.\n\n```compact\nexport ledger counter: Counter;                             // public, readable by anyone\nexport ledger owner: Bytes<32>;                             // public\nexport sealed ledger name: Opaque<\"string\">;                // set once in constructor, immutable\nledger privateData: Field;                                  // NOT exported = private to contract\n```\n\n### Types\n\n**Primitives:**\n\n| Type | Description |\n|------|-------------|\n| `Field` | Finite field element (basic numeric type for ZK circuits) |\n| `Boolean` | true/false |\n| `Bytes<N>` | Fixed-size byte array (N=32 most common) |\n| `Uint<N>` | Unsigned integer (N = 8, 16, 32, 64, 128). NOTE: Uint<256> NOT supported |\n| `Uint<MIN..MAX>` | Bounded unsigned integer |\n| `Opaque<\"string\">` | External type bridged from TypeScript |\n\n**Collections:**\n\n| Type | Description |\n|------|-------------|\n| `Counter` | Incrementable/decrementable counter (ledger-backed) |\n| `Map<K, V>` | Key-value mapping (ledger-backed, expensive) |\n| `Set<T>` | Unique value collection (ledger-backed, expensive) |\n| `Vector<N, T>` | Fixed-size array (circuit-friendly) |\n| `Maybe<T>` | Optional value — `some<T>(val)` / `none<T>()` |\n| `Either<L, R>` | Union type — `left<L, R>(val)` / `right<L, R>(val)` |\n\n**Midnight-specific:**\n\n| Type | Description |\n|------|-------------|\n| `ZswapCoinPublicKey` | Wallet public key for coin operations |\n| `ContractAddress` | On-chain contract address |\n| `CoinInfo` | Coin descriptor for shielded tokens |\n\n**Custom types:**\n```compact\nexport enum GameState { waiting, playing, finished }\nexport struct PlayerConfig { name: Opaque<\"string\">, score: Uint<32> }\n```\nNOTE: Enum access uses dot notation: `GameState.waiting`, NOT `GameState::waiting`.\n\n### Circuits\n\n```compact\n// Exported circuit — callable from TypeScript, generates ZK proof\nexport circuit increment(): [] {\n  counter.increment(1);\n}\n\n// Circuit with parameters and return value\nexport circuit getBalance(addr: Bytes<32>): Uint<64> {\n  return balances.lookup(addr);\n}\n\n// Internal circuit — not exported, callable only from other circuits\ncircuit validateOwner(caller: Bytes<32>): Boolean {\n  return caller == owner;\n}\n\n// Pure circuit — no state access, no side effects\nexport pure circuit hash(data: Bytes<32>): Bytes<32> {\n  return persistentHash<Vector<1, Bytes<32>>>([data]);\n}\n```\n\nCRITICAL: Return type is `[]` (empty tuple) for void circuits, NOT `Void`. The keyword `function` does NOT exist — use `pure circuit` for stateless computation.\n\n### Witnesses\n\nDeclared in Compact (no body), implemented in TypeScript:\n\n```compact\n// Compact — declaration only, ends with semicolon\nwitness localSecretKey(): Bytes<32>;\nwitness getAmount(max: Uint<64>): Uint<64>;\n```\n\n```typescript\n// TypeScript — implementation returns [newPrivateState, returnValue]\nexport const witnesses = {\n  localSecretKey: ({ privateState }: WitnessContext<Ledger, PrivateState>):\n    [PrivateState, Uint8Array] => [privateState, privateState.secretKey],\n  getAmount: ({ privateState }: WitnessContext<Ledger, PrivateState>, max: bigint):\n    [PrivateState, bigint] => [privateState, privateState.amount],\n};\n```\n\n### Disclosure — The Core Privacy Primitive\n\n```compact\n// MUST wrap witness-derived values for ledger writes or conditionals\nowner = disclose(publicKey(localSecretKey()));\n\n// Assertions on private values\nassert(disclose(caller == storedOwner), \"Not authorized\");\n\n// Branching on private values\nif (disclose(guess == secret)) { /* ... */ }\n```\n\nCRITICAL: From Compact 0.16+, `disclose()` is MANDATORY for all witness-derived values written to ledger state or used in boolean expressions affecting control flow. Omitting it causes compilation errors.\n\n### Constructor\n\n```compact\nconstructor() {\n  counter.increment(1);\n  owner = disclose(publicKey(localSecretKey()));\n}\n```\n\n### Common Operations\n\n```compact\n// Counter\ncounter.increment(1);          counter.decrement(1);\ncounter.read();                counter.lessThan(100);\n\n// Map\nbalances.insert(key, value);   balances.remove(key);\nbalances.lookup(key);          balances.member(key);\n\n// Maybe\nconst opt = some<Field>(42);   const empty = none<Field>();\nif (opt.is_some) { const val = opt.value; }\n\n// Either (used for wallet-or-contract addresses)\nconst wallet = left<ZswapCoinPublicKey, ContractAddress>(ownPublicKey());\nconst contract = right<ZswapCoinPublicKey, ContractAddress>(kernel.self());\n\n// Hashing\npersistentHash<Vector<2, Bytes<32>>>([data1, data2]);    // SHA-256\ntransientHash<Vector<2, Bytes<32>>>([data1, data2]);     // Poseidon (10x cheaper in-circuit)\n\n// Type casting\nconst bytes: Bytes<32> = myField as Bytes<32>;\nconst num: Uint<64> = myField as Uint<64>;\n\n// Assertions\nassert(condition, \"Error message\");\n```\n\n### Coin Operations (Shielded Tokens)\n\n```compact\nreceive(coin);                                            // accept incoming coin\nsendImmediate(coin, recipient, amount);                   // send coin out\nmintShieldedToken(domainSeparator, amount, nonce, recipient); // create new token\ntokenType(pad(32, \"myToken\"), kernel.self());             // get token type ID\n```\n\n## CLI Workflow\n\n```bash\n# Install / update Compact toolchain\ncurl --proto '=https' --tlsv1.2 -LsSf \\\n  https://github.com/midnightntwrk/compact/releases/latest/download/compact-installer.sh | sh\ncompact self update                    # update dev tools FIRST\ncompact update 0.29.0                  # then update toolchain\n\n# Scaffold, compile, test\nnpx create-mn-app my-project           # scaffold new project\ncompact compile src/contract.compact src/managed/contract  # compile\ncompact fmt src/contract.compact       # format (compiler 0.25.0+)\nnpm test                               # run tests (Vitest/Jest)\n```\n\n## Testing\n\nAlways test with the simulator before deploying. See [testing.md](reference/testing.md) for full details\nincluding invariant testing, witness validation, adversarial testing, performance baselines,\nand CI/CD integration.\n\n```typescript\nimport { Contract } from \"../managed/counter/contract/index.js\";\nimport { createConstructorContext, createCircuitContext, sampleContractAddress } from \"@midnight-ntwrk/compact-runtime\";\nimport { setNetworkId } from \"@midnight-ntwrk/midnight-js-network-id\";\n\nsetNetworkId(\"undeployed\");\n\n// Create contract instance with witnesses\nconst contract = new Contract<PrivateState>(witnesses);\n\n// Initialize — sampleContractAddress() is a FUNCTION, call it\nconst addr = sampleContractAddress();\nconst initial = contract.initialState(createConstructorContext(initialPrivateState, addr));\n\n// Create first circuit context — requires 4 params: (address, zswapState, contractState, privateState)\nconst ctx = createCircuitContext(addr, initial.currentZswapLocalState, initial.currentContractState, initial.currentPrivateState);\n\n// Execute circuit\nconst result = contract.impureCircuits.increment(ctx);\n\n// Chain calls: pass result.context directly — it IS the continuation\nconst readResult = contract.impureCircuits.read(result.context);\nconsole.log(readResult.result); // 1n\n```\n\n## DUST Fee Economics\n\nDUST is Midnight's fee token — a high-precision micro-token generated continuously from tNight holdings. All transaction fees are paid in DUST.\n\n### Generation Model\n\n| Parameter | Value | Meaning |\n|-----------|-------|---------|\n| `nightDustRatio` | 5,000,000,000 | Peak DUST generated per tNight per second |\n| `timeToCapSeconds` | 604,815 | ~7 days to reach generation cap |\n| `generationDecayRate` | 8,267 | Decay factor for generation curve |\n| `dustGracePeriodSeconds` | 10,800 | 3-hour grace period before generation starts decaying |\n\nDUST has no decimal places — values are in the smallest indivisible unit. The numbers are intentionally large to provide high precision for fee calculation.\n\n### Deployment Costs (preprod, protocol v21000)\n\nMeasured from 13 contract deployments on preprod (March 2026):\n\n| Complexity | Fee Range | Examples |\n|------------|-----------|----------|\n| Simple (3 circuits) | 331B–367B DUST | Counter, RPS, Upgrade-V1, Token Minting |\n| Medium (5 circuits) | 479B–564B DUST | Credential, DID, Prescription, Market, Staking, Crowdfunding |\n| Complex (6-7 circuits) | 629B–721B DUST | NFT, DAO, Lending, Upgrade-V2 |\n\n- Fees are **deterministic** — `paidFees` matches `estimatedFees` exactly\n- Deploy time: 16–22 seconds (includes ZK proof generation + on-chain confirmation)\n- With 2,000 tNight, DUST generation outpaces deployment fees — all 13 contracts deployed with DUST to spare\n\n### Practical Guidance\n\n- DUST accrues passively from tNight — no explicit conversion needed\n- The `DustWallet` SDK handles fee calculation and payment automatically\n- Set `additionalFeeOverhead` in `DustWallet` config for fee buffer (default examples use 300T DUST)\n- On preprod, request tNight from the [Midnight faucet](https://faucet.preprod.midnight.network/) — 1,000 tNight per request is sufficient for dozens of deployments\n\n## Reference Material\n\nFor detailed information, consult:\n\n- [Language reference](reference/language.md) — types, syntax, modules, casting, operators\n- [Privacy model](reference/privacy-model.md) — shielded vs unshielded, disclose(), witness pattern, ZK fundamentals\n- [Security patterns](reference/security.md) — ZK-specific attack vectors, privacy leaks, common mistakes\n- [Testing guide](reference/testing.md) — simulator, invariant testing, witness validation, adversarial testing, CI/CD, performance baselines\n- [Design patterns](reference/patterns.md) — circuit optimization, off-chain computation, module composition\n- [Standard library](reference/stdlib.md) — CompactStandardLibrary built-in functions and types\n- [Gotchas](reference/gotchas.md) — 52 compiler bugs, SDK pitfalls, design traps (Discord + real compilation)\n- [Off-chain integration](reference/offchain.md) — TypeScript SDK, wallet, deployment, contract monitoring, error handling\n- [Auditing methodology](reference/auditing.md) — ZK contract audit process, privacy leak detection\n\n## Examples\n\n29 examples (27 validated + 2 network-only). 151 circuits compiled, 182/182 tests passing, 30 contracts deployed on preprod:\n\n**Core Patterns:**\n- [Counter](examples/counter.md) — 3 circuits, 5/5 tests. Simplest contract, increment/decrement with ledger state.\n- [Bulletin Board](examples/bulletin-board.md) — 3 circuits, 8/8 tests. Witness authentication, ownership, CRUD.\n- [Fungible Token](examples/fungible-token.md) — 7 circuits, 6/6 tests. ERC20-equivalent with OZ module composition.\n- [NFT](examples/nft.md) — 7 circuits, 6/6 tests. Commitment-based ownership, mint/burn/transfer/approve.\n- [Rock-Paper-Scissors](examples/rock-paper-scissors.md) — 3 circuits, 6/6 tests. Minimal commit-reveal 2-player game.\n\n**Privacy Patterns:**\n- [Shielded Voting](examples/shielded-voting.md) — 6 circuits, 9/9 tests. Commit-reveal private ballot.\n- [Sealed-Bid Auction](examples/sealed-bid-auction.md) — 6 circuits, 8/8 tests. Commit-reveal with ZK verification.\n- [Identity Proof](examples/identity-proof.md) — 4 circuits, 6/6 tests. Selective disclosure, parameterized witnesses.\n- [Credential Registry](examples/credential-registry.md) — 5 circuits, 6/6 tests. Nullifier-based double-use prevention.\n- [Prescription](examples/prescription.md) — 5 circuits, 6/6 tests. Batch registration with Vector, nullifier for double-fill.\n- [Privacy Mixer](examples/privacy-mixer.md) — 3 circuits, 7/7 tests. Commitment deposits, nullifier withdrawals.\n\n**DeFi & Escrow:**\n- [Escrow](examples/escrow.md) — 5 circuits, 8/8 tests. Two-party conditional exchange with deadline.\n- [Time Lock](examples/time-lock.md) — 3 circuits, 7/7 tests. LOK/RELEASE pattern for timed asset release.\n- [Multi-Sig](examples/multi-sig.md) — 6 circuits, 6/6 tests. M-of-N authorization, composite keys.\n- [Staking](examples/staking.md) — 5 circuits, 6/6 tests. Lock period, ZK-friendly reward calculation.\n- [Crowdfunding](examples/crowdfunding.md) — 5 circuits, 6/6 tests. Anonymous backing with ZK refund proofs.\n- [Lending](examples/lending.md) — 6 circuits, 6/6 tests. Collateral, health factor, liquidation.\n- [Prediction Market](examples/prediction-market.md) — 5 circuits, 7/7 tests. Commitment-based bets with ZK payout.\n- [Vesting](examples/vesting.md) — 4 circuits, 8/8 tests. Time-based tranche release schedule.\n- [Revenue Sharing](examples/revenue-sharing.md) — 3 circuits, 7/7 tests. Private share allocations, ZK withdrawal.\n- [Lottery](examples/lottery.md) — 4 circuits, 8/8 tests. Commit-reveal multi-party randomness.\n\n**Advanced:**\n- [Oracle Feed](examples/oracle-feed.md) — 5 circuits, 6/6 tests. External data, freshness checks.\n- [Token Swap](examples/token-swap.md) — 6 circuits. Atomic swap with `receiveShielded`/`sendImmediateShielded`, preprod deployed.\n- [Access Control](examples/access-control.md) — 8 circuits, 6/6 tests. Role hierarchy, internal guards.\n- [DID Registry](examples/did-registry.md) — 5 circuits, 6/6 tests. Document lifecycle (create/update/deactivate).\n- [Micro-DAO](examples/micro-dao.md) — 7 circuits, 7/7 tests. Token-gated voting, treasury, governance.\n- [Contract Upgradability](examples/contract-upgradability.md) — V1: 3 + V2: 7 circuits, 8/8 tests. Migration pattern.\n- [Token Minting](examples/token-minting.md) — 3 circuits. Zswap coin creation (`mintShieldedToken`), preprod deployed.\n- [Supply Chain](examples/supply-chain.md) — 4 circuits, 7/7 tests. Selective disclosure provenance tracking.\n\n## Production References\n\nOpen-source Midnight contracts and tools for studying real implementations:\n\n**OpenZeppelin Compact Contracts (Canonical Reference):**\n- [OpenZeppelin/compact-contracts](https://github.com/OpenZeppelin/compact-contracts) — Ownable, Pausable, AccessControl, FungibleToken, Capped, Nonces. Module composition pattern. Production-grade.\n\n**Brick Towers (Most Active Community Builder):**\n- [midnight-seabattle](https://github.com/bricktowers/midnight-seabattle) — Full-stack dApp (game). Multi-user, shielded state, E2E tests. Best reference for real dApp architecture.\n- [midnight-local-network](https://github.com/bricktowers/midnight-local-network) — Docker Compose for local development (node + indexer + proof server). Community standard.\n- [midnight-proof-server](https://github.com/bricktowers/midnight-proof-server) — Pre-baked proof server with circuit parameters. Eliminates download timeouts.\n- [midnight-rwa](https://github.com/bricktowers/midnight-rwa) — Real-world asset tokenization.\n\n**Official Midnight Examples:**\n- [example-counter](https://github.com/midnightntwrk/example-counter) — Official counter (simplest contract). Template for `create-mn-app`.\n- [example-bboard](https://github.com/midnightntwrk/example-bboard) — Official bulletin board. Canonical witness + auth pattern.\n- [midnight-awesome-dapps](https://github.com/midnightntwrk/midnight-awesome-dapps) — Curated list of community dApps.\n\n**Community Projects:**\n- [midnight-kitties](https://github.com/riusricardo/midnight-kitties) — CryptoKitties-style NFT dApp.\n- [compact-by-example](https://github.com/Olanetsoft/compact-by-example) — Learn Compact through practical examples.\n- [pulse-finance/midnight-dex-contract](https://github.com/pulse-finance/midnight-dex-contract) — AMM DEX in Compact.\n\n**Developer Tools:**\n- [midnight-mcp](https://www.npmjs.com/package/midnight-mcp) — MCP server for Midnight (Idris, Midnight team).\n- [compact-vscode](https://github.com/foxytanuki/compact-vscode) — VSCode syntax highlighting.\n- [compact.vim](https://github.com/1NickPappas/compact.vim) — Vim/Neovim tree-sitter plugin.\n- [Midnight docs (open source)](https://github.com/midnightntwrk/midnight-docs) — Official documentation source.\n\n**Key Community Experts:**\n- **Sergey | Brick Towers** — de facto community expert. 836+ Discord messages. Maintains midnight-seabattle, midnight-local-network, midnight-proof-server. Most practical SDK knowledge.\n- **newton_meter (Kevin Millikin)** — Compact language designer (Midnight team). Most authoritative on language semantics.\n- **gilescope** — Cryptography details, proving system (Midnight team).\n- **Facu | Midnames** — Active builder, circuit optimization insights.","tags":["midnight","skill","adavault","agent-skills","claude-code","compact","midnightntwrk","smart-contracts","zero-knowledge"],"capabilities":["skill","source-adavault","skill-midnight-skill","topic-agent-skills","topic-claude-code","topic-compact","topic-midnight","topic-midnightntwrk","topic-skill","topic-smart-contracts","topic-zero-knowledge"],"categories":["midnight-skill"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ADAvault/midnight-skill","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ADAvault/midnight-skill","source_repo":"https://github.com/ADAvault/midnight-skill","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 10 github stars · SKILL.md body (19,829 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:15.497Z","embedding":null,"createdAt":"2026-04-23T13:04:18.975Z","updatedAt":"2026-05-18T19:08:15.497Z","lastSeenAt":"2026-05-18T19:08:15.497Z","tsv":"'-256':1030 '-7':1417 '/)':1508 '/1nickpappas/compact.vim)':2232 '/bricktowers/midnight-local-network)':2084 '/bricktowers/midnight-proof-server)':2102 '/bricktowers/midnight-rwa)':2119 '/bricktowers/midnight-seabattle)':2059 '/compact-runtime':1199 '/foxytanuki/compact-vscode)':2225 '/managed/counter/contract/index.js':1190 '/midnight-dex-contract':2197 '/midnight-js-network-id':1206 '/midnightntwrk/compact/releases/latest/download/compact-installer.sh':1115 '/midnightntwrk/example-bboard)':2149 '/midnightntwrk/example-counter)':2133 '/midnightntwrk/midnight-awesome-dapps)':2163 '/midnightntwrk/midnight-docs)':2244 '/olanetsoft/compact-by-example)':2188 '/openzeppelin/compact-contracts)':2035 '/package/midnight-mcp)':2212 '/path/to/module':520 '/pulse-finance/midnight-dex-contract)':2200 '/riusricardo/midnight-kitties)':2176 '0.16':930 '0.20':512 '0.25.0':1154 '0.29.0':1126 '000':1310,1311,1312,1450,1510 '1':87,196,426,436,749,805,961,971,973,1509 '10':386,1338 '100':976 '10x':1039 '11':403 '128':609 '13':1379,1458 '14':397 '151':1635 '16':606,1437 '17':400 '182/182':1638 '1n':1274 '2':100,244,434,447,1024,1033,1449,1631,1709 '2026':1385 '22':1438 '256':612 '267':1331 '27':1629 '29':1627 '3':122,255,445,462,1340,1391,1650,1663,1701,1784,1810,1899,1984,1995 '30':1641 '300t':1496 '32':554,598,607,724,761,780,799,801,807,851,1026,1035,1049,1053,1094 '331b':1393 '367b':1394 '4':138,269,460,474,1240,1744,1886,1910,2006 '42':991 '479b':1406 '5':157,281,472,484,1309,1404,1755,1768,1796,1837,1850,1873,1925,1959 '5/5':1652 '52':1593 '564b':1407 '6':174,291,482,1416,1717,1731,1824,1862,1936 '6/6':1676,1689,1703,1746,1757,1770,1826,1839,1852,1864,1927,1950,1961 '604':1321 '629b':1419 '64':608,763,856,858,1057,1061 '7':309,488,1323,1674,1687,1970,1986 '7/7':1786,1812,1875,1901,1972,2008 '721b':1420 '8':319,605,1330,1948 '8/8':1665,1733,1798,1888,1912,1988 '800':1339 '815':1322 '836':2258 '9':374 '9/9':1719 'accept':395,1074 'access':727,789,1945 'accesscontrol':2038 'accru':1468 'activ':2051,2300 'add':292 'additionalfeeoverhead':1486 'addr':759,766,1227,1234,1249 'address':700,1008,1242 'advanc':1921 'adversari':366,1179,1565 'affect':949 'align':479 'alloc':1905 'alway':517,1161 'amm':2201 'amount':1080,1086 'analysi':465 'anonym':1854 'anyon':549 'app':1137,2143 'appear':362 'approach':323 'architectur':2077 'array':596,660 'ask':190,419 'assert':909,913,1062,1063 'assess':487 'asset':1818,2123 'atom':1938 'attack':369,1551 'auction':1729 'audit':421,429,1616,1621 'auditing.md':432 'auth':2155 'authent':1668 'author':918,1832 'authorit':2287 'automat':1484 'awesom':2159 'back':634,644,652,1855 'bake':2105 'balances.insert':978 'balances.lookup':765,983 'balances.member':985 'balances.remove':981 'ballot':1725 'base':1693,1761,1879,1892 'baselin':1182,1569 'bash':1103 'basic':583 'batch':1772 'bboard':2146 'best':2072 'bet':1880 'bid':1728 'bigint':883,885 'block':532 'blockchain':84 'board':1661,2152 'bodi':315,837 'boolean':589,781,947 'bound':616 'boundari':233,444 'branch':919 'brick':2048,2252 'bridg':140,623 'buffer':1492 'bug':1595 'builder':2053,2301 'built':1586 'built-in':1585 'bulletin':1660,2151 'byte':553,591,595,760,779,798,800,806,850,1025,1034,1047,1048,1052 'calcul':1371,1481,1847 'call':287,294,454,1224,1260 'callabl':739,771 'caller':778,783,915 'canon':2030,2153 'cap':1328,2040 'case':334 'cast':1045,1532 'caus':538,954 'chain':28,112,118,154,280,698,1259,1446,1577,1605,2004 'cheaper':1040 'check':349,379,387,451,466,1932 'ci/cd':1184,1567 'circuit':21,42,75,123,127,162,212,283,339,388,440,463,588,662,735,738,746,750,757,768,775,776,786,795,817,828,1043,1237,1254,1392,1405,1418,1573,1636,1651,1664,1675,1688,1702,1718,1732,1745,1756,1769,1785,1797,1811,1825,1838,1851,1863,1874,1887,1900,1911,1926,1937,1949,1960,1971,1987,1996,2007,2109,2302 'circuit-friend':661 'cli':1101 'code':30,171,202 'coin':693,702,1067,1073,1076,1078,1082,1998 'coininfo':701 'collater':1866 'collect':626,649 'commit':1692,1707,1722,1736,1788,1878,1915 'commit-rev':1706,1721,1735,1914 'commitment-bas':1691,1877 'common':600,966,1555 'communiti':2052,2094,2167,2169,2249,2256 'compact':3,8,34,47,59,146,179,407,497,508,514,541,709,736,835,841,842,893,929,958,968,1071,1106,1117,1124,1144,1149,2028,2183,2190,2204,2221,2281 'compact-by-exampl':2182 'compact-vscod':2220 'compact.vim':2229 'compactstandardlibrari':516,1584 'compil':70,129,404,408,955,1131,1145,1148,1153,1594,1602,1637 'complex':389,464,1386,1415 'compos':2086 'composit':524,1580,1684,1833,2043 'comput':80,92,163,831,1578 'condit':308,343,904,1064,1803 'config':1489 'configur':481 'confirm':1447 'conserv':224,350 'console.log':1272 'const':866,988,992,998,1009,1015,1046,1054,1214,1226,1229,1246,1255,1268 'constructor':565,957,959 'consult':1525 'context':1238 'continu':1267,1292 'contract':10,19,36,49,57,105,195,199,267,425,574,699,1007,1016,1188,1210,1215,1217,1380,1459,1612,1620,1642,1655,1980,2020,2029,2137 'contract-priv':266 'contract.impurecircuits.increment':1257 'contract.impurecircuits.read':1270 'contract.initialstate':1231 'contractaddress':695,1013,1019 'contractst':1244 'control':950,1946 'convers':1474 'core':85,890,1646 'correct':158,329 'cost':471,1373 'counter':544,545,629,631,969,1396,1648,2130,2135 'counter.decrement':972 'counter.increment':748,960,970 'counter.lessthan':975 'counter.read':974 'coverag':486 'creat':1089,1135,1209,1235,2141 'create-mn-app':1134,2140 'create/update/deactivate':1965 'createcircuitcontext':1193,1248 'createconstructorcontext':1192,1232 'creation':1999 'credenti':1409,1752 'critic':528,809,927 'crowdfund':1414,1848 'crud':1670 'cryptographi':2292 'cryptokitti':2178 'cryptokitties-styl':2177 'ctx':1247,1258 'curat':2164 'curl':1108 'curv':1336 'custom':707 'dao':1423,1968 'dapp':2063,2076,2160,2168,2181 'data':142,274,797,808,1930 'data1':1027,1036 'data2':1028,1037 'day':1324 'de':2254 'deadlin':1806 'decay':1332,1347 'decim':1351 'decis':187 'declar':128,144,527,833,843 'default':90,1493 'defi':1792 'defin':203 'deploy':7,406,413,1167,1372,1381,1435,1455,1460,1519,1611,1643,1944,2002 'deposit':1789 'deprec':536 'deriv':300,898,938 'descript':578,628,687 'descriptor':703 'design':256,270,1570,1598,2283 'detail':1173,1523,2293 'detect':1625 'determinist':1430 'dev':1121 'develop':50,58,2089,2205 'dex':2202 'direct':1263 'disclos':97,99,293,453,906,914,924,931,963,1540 'disclosur':888,1749,2011 'discord':1600,2259 'doc':2239 'docker':2085 'document':1963,2246 'domain':66 'domain-specif':65 'domainsepar':1085 'dot':729 'doubl':1763,1779 'double-fil':1778 'double-us':1762 'download':2112 'dozen':1517 'dual':102 'dual-stat':101 'dust':1275,1278,1302,1314,1348,1395,1408,1421,1452,1462,1467,1497 'dustgraceperiodsecond':1337 'dustwallet':1477,1488 'e.g':220 'e2e':2070 'econom':1277 'edg':333 'effect':792 'either':670,1001 'element':582 'elimin':2111 'empti':813,993 'enabl':76 'end':845 'enforc':160 'enum':711,726 'equival':1680 'erc20':1679 'erc20-equivalent':1678 'error':342,540,956,1065,1614 'escal':371 'escrow':1793,1794 'essenti':499 'estimatedfe':1433 'everi':338,506 'everyth':176 'exact':1434 'exampl':1389,1494,1626,1628,2127,2129,2145,2185,2193 'example-bboard':2144 'example-count':2128 'examples/access-control.md':1947 'examples/bulletin-board.md':1662 'examples/contract-upgradability.md':1982 'examples/counter.md':1649 'examples/credential-registry.md':1754 'examples/crowdfunding.md':1849 'examples/did-registry.md':1958 'examples/escrow.md':1795 'examples/fungible-token.md':1673 'examples/identity-proof.md':1743 'examples/lending.md':1861 'examples/lottery.md':1909 'examples/micro-dao.md':1969 'examples/multi-sig.md':1823 'examples/nft.md':1686 'examples/oracle-feed.md':1924 'examples/prediction-market.md':1872 'examples/prescription.md':1767 'examples/privacy-mixer.md':1783 'examples/revenue-sharing.md':1898 'examples/rock-paper-scissors.md':1700 'examples/sealed-bid-auction.md':1730 'examples/shielded-voting.md':1716 'examples/staking.md':1836 'examples/supply-chain.md':2005 'examples/time-lock.md':1809 'examples/token-minting.md':1994 'examples/token-swap.md':1935 'examples/vesting.md':1885 'exchang':1804 'execut':1253 'exist':825 'expens':645,653 'expert':54,2250,2257 'explicit':96,1473 'export':126,259,284,542,550,556,571,710,716,737,745,756,770,793,865 'expos':215 'express':948 'extern':286,621,1929 'facto':2255 'factor':1333,1868 'facu':2298 'failur':242 'fast':348,398 'fast-check':347 'faucet':1505 'faucet.preprod.midnight.network':1507 'faucet.preprod.midnight.network/)':1506 'fee':1276,1282,1298,1370,1387,1428,1456,1480,1491 'feed':1923 'field':569,579,581 'file':507 'fill':1780 'financ':2196 'find':490 'finish':715 'finit':580 'first':181,1123,1236 'fix':496,593,658 'fixed-s':592,657 'flow':951 'fmt':1150 'follow':427 'format':1152 'fresh':1931 'friend':663,1845 'full':1172,2061 'full-stack':2060 'function':125,136,822,1223,1588 'fundament':1544 'fungibl':1671 'fungibletoken':2039 'game':1711,2064 'gamest':712,733 'gamestate.waiting':731 'gate':1976 'generat':742,1291,1303,1315,1327,1335,1345,1443,1453 'generationdecayr':1329 'get':1097 'getamount':853,877 'getbal':758 'gilescop':2291 'github.com':1114,2034,2058,2083,2101,2118,2132,2148,2162,2175,2187,2199,2224,2231,2243 'github.com/1nickpappas/compact.vim)':2230 'github.com/bricktowers/midnight-local-network)':2082 'github.com/bricktowers/midnight-proof-server)':2100 'github.com/bricktowers/midnight-rwa)':2117 'github.com/bricktowers/midnight-seabattle)':2057 'github.com/foxytanuki/compact-vscode)':2223 'github.com/midnightntwrk/compact/releases/latest/download/compact-installer.sh':1113 'github.com/midnightntwrk/example-bboard)':2147 'github.com/midnightntwrk/example-counter)':2131 'github.com/midnightntwrk/midnight-awesome-dapps)':2161 'github.com/midnightntwrk/midnight-docs)':2242 'github.com/olanetsoft/compact-by-example)':2186 'github.com/openzeppelin/compact-contracts)':2033 'github.com/pulse-finance/midnight-dex-contract)':2198 'github.com/riusricardo/midnight-kitties)':2174 'gotcha':1591 'govern':1979 'grace':1342 'grade':2047 'guard':1955 'guess':925 'guid':1558 'guidanc':1466 'handl':1479,1615 'happi':340 'hash':796,1021 'health':1867 'hierarchi':1953 'high':1286,1367 'high-precis':1285 'highlight':2228 'hold':219,1295 'hour':1341 'https':1110 'id':1100 'ident':1741 'identifi':245 'idri':2217 'immut':331,566 'impact':494 'implement':148,313,838,861,2026 'import':513,515,519,1187,1191,1200 'in-circuit':1041 'includ':1174,1440 'incom':1075 'increment':747 'increment/decrement':1656 'incrementable/decrementable':630 'index':2091 'indirect':458 'individu':530 'indivis':1358 'inform':1524 'initi':1219,1230 'initial.currentcontractstate':1251 'initial.currentprivatestate':1252 'initial.currentzswaplocalstate':1250 'initialprivatest':1233 'input':156 'insight':2304 'instal':1104 'instanc':1211 'integ':603,618 'integr':476,1185,1606 'intent':1363 'interact':456 'intern':290,767,1954 'invari':217,344,1175,1561 'isol':328 'k':392,396,399,467,636 'k-valu':391 'kernel.self':1020,1096 'kevin':2279 'key':639,691,979,982,984,986,1834,2248 'key-valu':638 'keyword':137,821 'kitti':2173 'knowledg':39,74,2276 'l':671,676,680 'languag':68,498,510,1526,2282,2289 'larg':1364 'law':351 'leak':356,378,449,1554,1624 'leakag':459 'learn':2189 'ledger':44,108,257,260,264,304,438,469,526,534,543,551,558,567,633,643,651,871,880,901,942,1658 'ledger-back':632,642,650 'left':675,1011 'lend':1424,1860 'librari':1582 'lie':237 'lifecycl':1964 'like':64 'liquid':1869 'list':2165 'local':2080,2088,2267 'localsecretkey':849,868,908,965 'lock':1808,1841 'lok/release':1814 'lotteri':1908 'lssf':1112 'm':1829 'm-of-n':1828 'machin':353 'mainnet':417 'maintain':2261 'malici':372 'mandatori':933 'map':437,635,641,977 'march':1384 'market':1412,1871 'match':1432 'materi':1521 'max':854,882 'mayb':664,987 'mcp':2209,2213 'mean':1307 'measur':1377 'medium':1403 'messag':1066,2260 'meter':2278 'methodolog':430,1617 'micro':1289,1967 'micro-dao':1966 'micro-token':1288 'midnam':2299 'midnight':2,12,29,33,46,55,83,684,1197,1204,1280,1504,2019,2055,2079,2097,2115,2126,2158,2172,2208,2216,2218,2238,2263,2266,2270,2284,2296 'midnight-awesome-dapp':2157 'midnight-compact':1 'midnight-kitti':2171 'midnight-local-network':2078,2265 'midnight-mcp':2207 'midnight-ntwrk':1196,1203 'midnight-proof-serv':2096,2269 'midnight-rwa':2114 'midnight-seabattl':2054,2262 'midnight-specif':683 'migrat':1990 'millikin':2280 'minim':1705 'mint':1402,1993 'mint/burn/transfer/approve':1695 'mintshieldedtoken':1084,2000 'mistak':1556 'mixer':1782 'mn':1136,2142 'mode':243 'model':104,1304,1535 'modul':522,1531,1579,1683,2042 'monitor':1613 'multi':1821,1918,2066 'multi-parti':1917 'multi-sig':1820 'multi-us':2065 'must':218,250,894 'my-project':1138 'myfield':1050,1058 'mytoken':1095 'n':597,604,655,1831 'name':559,719 'need':401,1475 'network':184,1633,2081,2268 'network-on':1632 'new':1090,1142,1216 'newprivatest':317,863 'newton':2277 'nft':1422,1685,2180 'nightdustratio':1308 'node':2090 'nonc':1087,2041 'none':669,994 'notat':730 'note':610,725 'npm':1155 'npx':1133 'ntwrk':1198,1205 'nullifi':1760,1776,1790 'nullifier-bas':1759 'num':1055 'number':1361 'numer':584 'off-chain':116,152,278,1575,1603 'offici':2125,2134,2150,2245 'omit':952 'on-chain':26,110,696,1444 'opaqu':560,619,720 'open':2017,2240 'open-sourc':2016 'openzeppelin':2027 'openzeppelin/compact-contracts':2032 'oper':211,470,694,967,1068,1533 'opt':989 'opt.is':996 'opt.value':1000 'optim':402,1574,2303 'option':665 'oracl':1922 'outpac':1454 'ownabl':2036 'owner':226,552,784,905,962 'ownership':1669,1694 'ownpublickey':1014 'oz':523,1682 'pad':1093 'paid':1300 'paidfe':1431 'paper':1698 'param':1241 'paramet':752,1305,2110 'parameter':1750 'pars':539 'parti':1802,1919 'pass':1261,1640 'passiv':1469 'path':341 'pattern':382,525,1542,1546,1571,1647,1713,1815,1991,2044,2156 'pausabl':2037 'payment':1483 'payout':1883 'peak':1313 'per':120,1316,1318,1512 'per-us':119 'perform':1181,1568 'period':1343,1842 'persistenthash':803,1022 'phase':435,446,461,473,483 'pitfal':1597 'place':1352 'plain':263,288 'play':714 'player':1710 'playerconfig':718 'plugin':2237 'poseidon':1038 'practic':1465,2192,2274 'pragma':501,509 'pre':2104 'pre-bak':2103 'precis':1287,1368 'predict':1870 'prefix':521 'preprod':415,1374,1383,1499,1645,1943,2001 'prescript':1411,1766 'preserv':18,79 'prevent':1765 'primit':576,892 'principl':86 'privaci':17,78,88,247,355,377,448,493,891,1534,1553,1623,1712,1781 'privacy-preserv':16,77 'privat':94,114,141,155,209,268,273,572,911,921,1724,1903 'privatedata':568 'privatest':869,872,873,875,878,881,884,886,1245 'privatestate.amount':887 'privatestate.secretkey':876 'privileg':370 'process':1622 'product':2014,2046 'production-grad':2045 'progress':322 'project':1140,1143,2170 'proof':45,132,168,411,744,1442,1742,1859,2092,2098,2106,2271 'proto':1109 'protocol':1375 'prove':2294 'proven':2012 'provid':151,277,480,1366 'public':107,207,254,262,364,546,555,690 'publickey':907,964 'puls':2195 'pulse-fin':2194 'pure':785,794,827 'r':672,677,681 'random':1920 'rang':1388 'reach':1326 'readabl':547 'readresult':1269 'readresult.result':1273 'real':1601,2025,2075,2121 'real-world':2120 'receiv':1072 'receiveshield':1941 'recipi':1079,1088 'refer':1520,1527,2015,2031,2073 'reference/auditing.md':433,1618 'reference/gotchas.md':1592 'reference/language.md':1528 'reference/offchain.md':1607 'reference/patterns.md':1572 'reference/privacy-model.md':1536 'reference/security.md':385,1547 'reference/stdlib.md':1583 'reference/testing.md':1170,1559 'refund':1858 'registr':1773 'registri':1753,1957 'releas':1819,1894 'replay':368 'report':489 'request':1500,1513 'requir':248,295,502,518,1239 'result':1256 'result.context':1262,1271 'return':316,754,764,782,802,810,862 'returnvalu':318,864 'reveal':1708,1723,1737,1916 'revenu':1896 'review':375,423,477 'reward':1846 'right':679,1017 'rock':1697 'rock-paper-scissor':1696 'role':1952 'rps':1397 'run':172,1157 'rwa':2116 'samplecontractaddress':1194,1220,1228 'scaffold':1130,1141 'scan':450 'schedul':1895 'scissor':1699 'score':722 'sdk':475,1478,1596,1609,2275 'seabattl':2056,2264 'seal':557,1727 'sealed-bid':1726 'second':1319,1439 'secret':359,926 'secur':381,1545 'security.md':384 'see':1168 'select':1748,2010 'self':1118 'semant':2290 'semicolon':847 'send':1081 'sendimmedi':1077 'sendimmediateshield':1942 'sergey':2251 'server':412,2093,2099,2107,2214,2272 'set':562,646,1485 'setnetworkid':1201,1207 'sever':492 'sh':1116 'sha':1029 'share':1897,1904 'shield':22,41,252,705,1069,1537,1714,2068 'side':791 'sig':1822 'simpl':1390 'simplest':1654,2136 'simul':180,335,1165,1560 'sitter':2236 'size':594,659 'skill' 'skill-midnight-skill' 'smallest':1357 'smart':9,35,48,56,194 'sourc':2018,2241,2247 'source-adavault' 'spare':1464 'specif':67,685,1550 'specifi':197 'src/contract.compact':1146,1151 'src/managed/contract':1147 'stack':2062 'stake':1413,1835 'standalon':183 'standard':1581,2095 'start':1346 'state':103,109,115,205,258,332,352,365,439,788,943,1659,2069 'stateless':830 'statement':531 'storedown':916 'string':561,620,721 'struct':717 'studi':2024 'style':2179 'suffici':1515 'suppli':222,2003 'support':614 'swap':1934,1939 'syntax':500,533,1530,2227 'system':2295 'team':2219,2285,2297 'templat':2138 'test':5,175,321,325,336,345,357,367,409,485,1132,1156,1158,1160,1162,1176,1180,1557,1562,1566,1639,1653,1666,1677,1690,1704,1720,1734,1747,1758,1771,1787,1799,1813,1827,1840,1853,1865,1876,1889,1902,1913,1928,1951,1962,1973,1989,2009,2071 'testing.md':1169 'testnet':186 'time':1436,1807,1817,1891 'time-bas':1890 'timeout':2113 'timetocapsecond':1320 'tlsv1.2':1111 'tnight':1294,1317,1451,1471,1501,1511 'token':23,706,1070,1091,1098,1283,1290,1401,1672,1933,1975,1992,2124 'token-g':1974 'tokentyp':1092 'tool':1122,2022,2206 'toolchain':1107,1129 'top':504 'topic-agent-skills' 'topic-claude-code' 'topic-compact' 'topic-midnight' 'topic-midnightntwrk' 'topic-skill' 'topic-smart-contracts' 'topic-zero-knowledge' 'total':221 'tower':2049,2253 'track':2013 'tranch':1893 'transact':1297 'transienthash':1031 'trap':1599 'treasuri':1978 'tree':188,2235 'tree-sitt':2234 'trigger':31 'true/false':590 'trust':232,443 'tupl':814 'two':1801 'two-parti':1800 'type':330,575,577,585,622,627,674,686,708,811,1044,1099,1529,1590 'typescript':63,150,311,625,741,840,859,860,1186,1608 'typescript-lik':62 'uint':601,611,615,723,762,855,857,1056,1060 'uint8array':874 'undeploy':1208 'union':673 'uniqu':647 'unit':324,1359 'unless':95 'unshield':1539 'unsign':602,617 'unverifi':173 'updat':1105,1119,1120,1125,1128 'upgrad':1399,1426,1981 'upgrade-v1':1398 'upgrade-v2':1425 'use':13,177,306,529,728,826,945,1002,1495,1764 'user':121,276,2067 'v':637 'v1':1400,1983 'v2':1427,1985 'v21000':1376 'val':668,678,682,999 'valid':354,1178,1564,1630 'validateown':777 'valu':301,393,468,640,648,666,755,899,912,922,939,980,1306,1353 'vector':654,804,1023,1032,1552,1775 'verif':1740 'verifi':165,358,390 'version':478,511 'vest':1884 'vim/neovim':2233 'vitest/jest':1159 'void':816,819 'vote':1715,1977 'vs':208,253,1538 'vscode':2222,2226 'wait':713,734 'wallet':689,1005,1010,1610 'wallet-or-contract':1004 'wit':43,139,143,170,236,271,299,312,314,326,373,441,455,832,848,852,867,897,937,1177,1213,1218,1541,1563,1667,1751,2154 'withdraw':228,1791,1907 'witness-deriv':298,896,936 'witnesscontext':870,879 'workflow':1102 'world':2122 'wrap':895 'write':4,15,192,201,282,310,320,902 'written':302,940 'www.npmjs.com':2211 'www.npmjs.com/package/midnight-mcp)':2210 'zero':38,73 'zero-knowledg':37,72 'zk':20,40,131,167,587,743,1441,1543,1549,1619,1739,1844,1857,1882,1906 'zk-friend':1843 'zk-specif':1548 'zswap':1997 'zswapcoinpublickey':688,1012,1018 'zswapstat':1243","prices":[{"id":"7c825257-40b8-4359-9cad-ab23707e21bb","listingId":"ff0884be-f0c5-456a-8776-37470a1afc16","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ADAvault","category":"midnight-skill","install_from":"skills.sh"},"createdAt":"2026-04-23T13:04:18.975Z"}],"sources":[{"listingId":"ff0884be-f0c5-456a-8776-37470a1afc16","source":"github","sourceId":"ADAvault/midnight-skill","sourceUrl":"https://github.com/ADAvault/midnight-skill","isPrimary":false,"firstSeenAt":"2026-04-23T13:04:18.975Z","lastSeenAt":"2026-05-18T19:08:15.497Z"}],"details":{"listingId":"ff0884be-f0c5-456a-8776-37470a1afc16","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ADAvault","slug":"midnight-skill","github":{"repo":"ADAvault/midnight-skill","stars":10,"topics":["agent-skills","claude-code","compact","midnight","midnightntwrk","skill","smart-contracts","zero-knowledge"],"license":"mit","html_url":"https://github.com/ADAvault/midnight-skill","pushed_at":"2026-03-29T10:30:32Z","description":"Claude Code skill for writing and testing Compact smart contracts on Midnight","skill_md_sha":"61939f21dfca0fbd91bd7e4ec2991608b8e0e5d5","skill_md_path":"SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ADAvault/midnight-skill"},"layout":"root","source":"github","category":"midnight-skill","frontmatter":{"name":"midnight-compact","description":"Write, test, and deploy Compact smart contracts for Midnight. Use when writing privacy-preserving contracts, ZK circuits, shielded tokens, or any on-chain Midnight code. Triggers on: Midnight, Compact, smart contract, zero-knowledge, ZK, shielded, circuit, witness, ledger, proof server, DUST, NIGHT, disclose, Zswap. Covers Compact language syntax, privacy model, circuit patterns, testing, security best practices, SDK integration, and wallet connectivity."},"skills_sh_url":"https://skills.sh/ADAvault/midnight-skill"},"updatedAt":"2026-05-18T19:08:15.497Z"}}