ens

Guides ENS integration and audits for name resolution, profiles, and subnames.

1|Updated Sep 4, 2025
One-click install
npx skills add https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO --skill ens-fuzzystodd
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ens
Source: https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO/tree/main/skills/ens
Command: npx skills add https://github.com/FuzzysTodd/The-Nexus-Protocol-Token-DAO --skill ens-fuzzystodd

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires viem, wagmi, @adraffy/ens-normalize, and includes references (resource) components.

What problem does it solve? ENS integrations frequently ship with subtle correctness bugs: unnormalized names enabling homoglyph attacks, unverified reverse lookups, stale cached resolutions for payments, and hardcoded contract addresses that break across upgrades. This Skill enforces the five rules every ENS integration must follow and provides scenario-specific guidance for both greenfield builds and audits. ## Core Features & Use Cases - Greenfield Integration: Add ENS display, name resolution in send/payment flows, and profile cards using wagmi, viem, or ethers v6 with correct normalization and forward-verification. - Audit Mode: Walk a structured checklist covering normalization, reverse resolution verification, CCIP-Read, multichain coinTypes, avatar rendering, and ENSv2 readiness, then produce a prioritized fix list. - Advanced Scenarios: Reference-driven guidance for custom records, subnames, smart contract naming, subgraph querying at scale, AI agent identity, and library authoring. - Use Case: A developer adding "send to alice.eth" to a payment app gets the correct normalize-then-resolve-fresh-from-L1 pattern, plus a confirmation step showing the resolved address before signing. ## Quick Start Ask the assistant to review your ENS integration code or help you add ENS name display and resolution to your app using wagmi or viem.

Frequently Asked Questions about ens

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

FAQPage Schema
How do I show an ENS name instead of an address in my app?▼

Use wagmi's useEnsName or viem's getEnsName with chainId 1 to reverse-resolve the address, then render the name or fall back to a truncated address. These libraries forward-verify the reverse record automatically, which is required since anyone can claim any name.

How do I accept ENS names in a send or payment input?▼

Normalize the input with @adraffy/ens-normalize or viem's normalize, then resolve with getEnsAddress against an L1 RPC at signing time. Never use cached or subgraph data for value-bearing transactions, and show the resolved address to the user before they sign.

Should I use wagmi, viem, or ethers for ENS resolution?▼

wagmi hooks (useEnsName, useEnsAddress, useEnsAvatar) cover most React apps, while viem provides the same surface without React. ethers v6 works via lookupAddress and resolveName but historically did not forward-verify reverse lookups, so verify that behavior yourself.

Why is lowercasing an ENS name a security bug?▼

toLowerCase does not perform ENSIP-15 normalization, so homoglyph names like apple.eth with a Cyrillic a pass through and names like Vitalik.eth may hash inconsistently. Always normalize with @adraffy/ens-normalize before hashing, comparing, or storing names.

Does ENS resolution work on L2 chains like Base?▼

Yes, but ENS records live on mainnet, so resolution starts with chainId 1 even in L2 dapps. L2 primary names and offchain subnames rely on CCIP-Read, which is enabled by default in viem 2.35 and later; disabling it breaks Coinbase, Base, Linea, and Uni subnames.

When should I not rely on the ENS subgraph for resolution?▼

The subgraph is eventually consistent and unsuitable for value-bearing sends, where you must resolve fresh against an L1 RPC. It is appropriate for leaderboards, search, and historical queries, but it cannot index offchain names resolved via CCIP-Read.