evm-nfts

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

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? AI agents frequently produce outdated or insecure NFT contract code, such as missing reentrancy guards on mint functions, replayable allowlist signatures, deprecated OpenZeppelin v4 patterns, and wrong marketplace addresses. This Skill provides current, security-hardened ERC-721 and ERC-1155 development patterns based on OpenZeppelin v5.6.1 and Seaport 1.6. ## Core Features & Use Cases - Secure Minting Patterns: Production-ready contracts for Merkle allowlists, EIP-712 signed allowlists with nonces and deadlines, Dutch auctions, commit-reveal, and free claims, all protected with ReentrancyGuard. - Metadata & Royalties: Complete JSON metadata schemas, ERC-4906 update events, ERC-2981 royalty implementation, and ERC-721C enforced royalty patterns with 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: A developer asks an agent to build a 10,000-supply PFP collection with an allowlist phase, per-wallet limits, 5% royalties, and OpenSea compatibility, and receives a complete Foundry-tested contract with correct v5.6.1 patterns. ## Quick Start Use the evm-nfts skill to write 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 between OpenZeppelin v4 and v5 for NFT contracts?

OpenZeppelin v5 removes Counters in favor of plain uint256, replaces _beforeTokenTransfer hooks with a single _update override, requires an initialOwner argument in the Ownable constructor, and replaces _exists with _ownerOf(tokenId) != address(0).

Are ERC-2981 royalties enforced onchain?

No, ERC-2981 is a read-only interface that marketplaces can ignore. For practical enforcement, use ERC-721C with a transfer validator that blocks transfers through non-compliant operators, at the cost of an operator whitelist and extra gas per transfer.

Why is my NFT metadata not showing on OpenSea?

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

How does ERC-1155 {id} URI substitution work?

The uri() function returns a template containing the literal {id} placeholder. Clients replace it with the token ID in hex, zero-padded to 64 characters, lowercase, with no 0x prefix, per the ERC-1155 specification.

Which Seaport version should I use for NFT marketplace integration?

Use Seaport 1.6 at the deterministic address 0x0000000000000068F116A894984e2DB1123eB395 on all EVM chains. Seaport 1.4 and 1.5 are superseded, and Reservoir shut down in October 2025.