Documentation
Everything you need to publish, discover, and install AI agent skills on ENS.
#Getting Started
nayym is a command-line tool that lets you publish AI agent skills to an ENS domain, discover skills others have published, and install them locally. Skills are stored on IPFS and indexed through ENS text records.
#Install the CLI
npm install -g nayym npm link
#Quick start - 4 commands
nayym init
Set up authentication. Use WalletConnect for production, private key only for testing with a burner wallet.
nayym publish neko.eth --ver 1.0.0 --type group
Publish your skills to an ENS domain
nayym i alice.eth -y
Install skills from any ENS domain
nayym explore
Browse all published skills
#Configuration
nayym stores authentication config in ~/.nayym/config.json with 600 permissions. RPC, IPFS upload, and WalletConnect are all bundled - no extra setup needed.
#What is Skills
A skill is a reusable capability for an AI agent - a self-contained directory with instructions, context, and logic that tells the agent how to perform a specific task. Skills are packaged, versioned, and distributed through ENS domains.
#SKILL.md - the contract
Every skill has a SKILL.md at its root. This file is both human-readable documentation and machine-readable metadata.
--- name: git-helper description: Explain git commands, suggest workflows, debug merge conflicts. --- # Git Helper ## Commit messages Suggest concise, conventional commit messages based on the diff. ## Merge conflicts Explain what each hunk is doing and recommend a resolution.
name - identifier used by the systemdescription - trigger text for when to load the skill
Standard markdown. Sections, code blocks, lists, examples - whatever the agent needs to do its job.
#Group vs Single
Publish your entire ~/.agents/skills/ directory. Multiple skills under one ENS domain. Best for a personal or team skill library.
my-skills/
├── git-helper/
│ └── SKILL.md
├── docker-helper/
│ └── SKILL.md
└── shell-explainer/
└── SKILL.mdPublish one skill folder. One ENS domain, one skill. Best for focused, shareable tools with their own identity and versioning.
git-helper/ └── SKILL.md
#How it works
Create a skill folder with SKILL.md and any supporting files.
nayym packages it as a tar archive, uploads to IPFS, and writes the CID to your ENS domain as a text record.
The Graph indexes all ENS domains with skill.cid text records. The web UI queries this index.
Anyone can resolve your ENS domain, download the archive from IPFS, and extract it to their local skills directory.
#Commands
nayym publishPublish skills to an ENS domain
nayym resolveShow skill metadata for a domain
nayym installInstall skills from an ENS domain
nayym exploreList all published skills
nayym initConfigure authentication
#publish
Publish skills to an ENS domain. Uploads a tar archive to IPFS via Lighthouse and writes the CID to ENS text records. Requires authentication.
nayym publish [domain] [options]
domainENS domain (e.g. neko.eth). Optional - omit to pick interactively from your domains.--ver <version>*Required. Semver version.--type <type>group or single. Default: group.--path <path>Path to a single skill folder. Only for --type=single.--description <text>Skill description.--author <name>Skill author.--rpc <url>Ethereum RPC URL.#Example - group
$ nayym publish neko.eth --ver 1.0.0 --type group ▓ Fetching your ENS domains... ✓ 2 domains found Select a domain to publish to: 1. smartagent.eth 2. neko.eth Enter number: 2 ▓ Uploading to Lighthouse (group)... ✓ Archive uploaded ✓ CID: bafybeiczxrrbqah5qbxlqo52bc5yroq5wgwrbszbkggty56av3df7ws2ma ▓ Setting ENS text records... ✓ skill.cid → bafybeiczxrr...df7ws2ma ✓ skill.version → 1.0.0 ✓ skill.type → group ✨ Published to neko.eth
#Example - single
$ nayym publish smartagent.eth --ver 2.0.0 --type single \
--path ~/.agents/skills/git-helper#resolve
Read skill metadata from an ENS domain. Dry run - no files downloaded.
nayym resolve <domain> [options]
--rpc <url>Ethereum RPC URL.$ nayym resolve neko.eth ▓ Resolving ENS records... ✓ Records resolved Domain neko.eth Type group Version 1.0.0 Author neko Description Test skill publish CID bafybeiczxrr...df7ws2ma Web https://nayym.xyz/neko
#install
Install skills from an ENS domain to ~/.agents/skills/. Alias: nayym i.
nayym install <domain> [options] nayym i <domain> [options]
-y, --yesAuto-confirm without prompts. Conflicts still prompt.--rpc <url>Ethereum RPC URL.#Example - clean install
$ nayym i neko.eth -y ▓ Resolving ENS records... ✓ Records resolved Domain neko.eth Type group Version 1.0.0 CID bafybeiczxrr...df7ws2ma ▓ Downloading from IPFS... ✓ Archive downloaded ✓ 24 files extracted ✓ Skill installed to ~/.agents/skills/
#Example - with conflicts
$ nayym i neko.eth ... ⚠ Conflicts detected: git-helper (exists) Override all (a), Pick individually (p), or Abort (n)? p 1. git-helper Enter numbers to override (comma-separated), or "all": 1 ✓ 24 files extracted ✓ Skill installed to ~/.agents/skills/
#explore
List all published skills indexed by The Graph.
nayym explore [options]
--rpc <url>Ethereum RPC URL.$ nayym explore ▓ Fetching from The Graph... ✓ Skills indexed Published skills ────────────────────────────────── neko.eth 1.0.0 Test skill publish smartagent.eth 1.0.0 - 2 skills indexed on Sepolia
#init
Configure authentication for publishing. WalletConnect is recommended for production. Private key is only for testing - use a burner wallet.
nayym init
Terminal QR code. Scan with MetaMask, Rainbow, etc. 2-minute timeout. Recommended for production.
Only for testing. Use a burner wallet - key is stored in ~/.nayym/config.json with 600 permissions.
$ nayym init nayym authentication setup ───────────────────────── Choose how you want to sign transactions: 1. WalletConnect (recommended) 2. Private key Enter 1 or 2: 1 ▓ Generating QR code... ✓ Scan the QR code with your wallet app
#System Architecture
nayym connects four systems: ENS for naming and ownership, IPFS for content storage, The Graph for indexing, and the CLI for user interaction.
#The flow
Own a .eth domain on Sepolia. The ENS resolver stores text records: skill.cid, skill.version, skill.type, skill.description, skill.author.
Skills are tar archives uploaded to IPFS through Lighthouse Web3. The returned CID goes into the ENS text record.
Indexes all ENS resolvers with texts containing "skill.cid". The explore command and web UI query this subgraph.
Install fetches tar archives through multiple gateways: lighthouseweb3.xyz, ipfs.io, dweb.link, w3s.link. 120s timeout per gateway.
Tar archives are extracted to ~/.agents/skills/. The root CID directory is stripped. Conflicts are detected and resolved interactively.
#Tech stack
#Authentication
Publishing requires a wallet that owns the ENS domain. Two paths:
- CLI generates terminal QR code
- User scans with mobile wallet
- Wallet approves connection
- viem signs each setText tx
Only for testing. Use a burner wallet.
- Key stored in ~/.nayym/config.json
- viem privateKeyToAccount derives account
- createWalletClient signs locally
- Each setText sent via RPC
#Error handling
No authRun nayym init to set up WalletConnect (recommended) or private key for testing with a burner wallet only.No resolverThe ENS domain has no resolver set.No skill.cidThe domain has no skill.cid text record.Invalid semverExpected format: major.minor.patchInsufficient fundsWallet needs Sepolia ETH for gas.Download failedCould not download CID from any IPFS gateway.nayym CLI · Sepolia testnet · ENS Skill Store