evm-nfts

Implement ERC-721 and ERC-1155 NFT contracts with minting, metadata, royalties, and Seaport marketplace integration.

6|20|Updated Mar 14, 2026
One-click install
npx skills add https://github.com/andresdefi/cryptoskills --skill evm-nfts-andresdefi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: evm-nfts
Source: https://github.com/andresdefi/cryptoskills/tree/main/skills/evm-nfts
Command: npx skills add https://github.com/andresdefi/cryptoskills --skill evm-nfts-andresdefi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? NFT development on EVM chains is full of subtle traps: reentrancy through _safeMint, replayable allowlist signatures, broken OpenZeppelin v4-to-v5 migrations, misunderstood ERC-1155 URI substitution, and marketplace integrations built on deprecated protocols like Reservoir or Seaport 1.4. This Skill provides correct, current patterns for ERC-721 and ERC-1155 development using OpenZeppelin v5.6.1 and Seaport 1.6. ## Core Features & Use Cases - Secure Minting Patterns: Ready-to-use Solidity contracts for Merkle allowlists, EIP-712 signed allowlists with nonces and deadlines, Dutch auctions, commit-reveal, and free claims, all guarded with ReentrancyGuard. - Metadata & Royalties: Complete JSON metadata schemas, ERC-4906 update events, ERC-2981 royalty implementation, and ERC-721C enforced-royalty patterns via transfer validators. - Marketplace Integration: Seaport 1.6 listing and fulfillment examples in TypeScript with viem and the Seaport SDK, plus verified contract addresses across all EVM chains. - Use Case: You need to launch a 10,000-item ERC-721 collection with an allowlist phase, per-wallet limits, 5% royalties, and OpenSea compatibility. Use the provided AllowlistCollection contract, Merkle tree generation script, and Foundry tests to deploy with confidence. ## Quick Start Ask the AI to generate an ERC-721 collection contract with a Merkle allowlist mint, supply cap, and ERC-2981 royalties using OpenZeppelin v5.6.1.

Frequently Asked Questions about evm-nfts

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create an ERC-721 allowlist mint in Solidity?

Use a Merkle proof or EIP-712 signature allowlist with OpenZeppelin v5.6.1. Verify the proof against a stored merkleRoot, track claimed addresses in a mapping, and apply ReentrancyGuard because _safeMint makes an external call to the receiver.

What changed in OpenZeppelin v5 for ERC-721 contracts?

OpenZeppelin v5 removed Counters, replaced _beforeTokenTransfer with the _update hook, and requires an initialOwner argument in the Ownable constructor. Use uint256 _nextTokenId directly and check _ownerOf(tokenId) != address(0) instead of _exists.

How does ERC-1155 URI id substitution work?

The uri() function returns a template containing {id}, which clients replace with the token ID in hex, zero-padded to 64 characters, lowercase, without a 0x prefix. Token ID 1 becomes 0000...0001. The substitution is client-side per the ERC-1155 spec.

Are ERC-2981 royalties enforced onchain?

No, ERC-2981 is a read-only interface that marketplaces can ignore. For onchain enforcement, use ERC-721C with a transfer validator that whitelists royalty-paying marketplaces and blocks non-compliant operator transfers.

Why does my NFT metadata not show on OpenSea?

Common causes are tokenURI returning an image URL instead of JSON, missing contractURI for collection metadata, or stale caches. Emit ERC-4906 MetadataUpdate events and call the OpenSea metadata refresh API endpoint to trigger re-indexing.

What Seaport version should I use for NFT marketplace integration?

Use Seaport 1.6 at 0x0000000000000068F116A894984e2DB1123eB395, deployed at the same address on all EVM chains. Seaport 1.4 and 1.5 have known issues, and Reservoir shut down in October 2025.