Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add BAiSEDagent/openclaw-skills --skill "basenames"
Install specific skill from multi-skill repository
# Description
Register and manage .base names on Base L2 naming service. Human-readable addresses for Base ecosystem.
# SKILL.md
name: basenames
description: "Register and manage .base names on Base L2 naming service. Human-readable addresses for Base ecosystem."
metadata:
{
"openclaw":
{
"emoji": "π·οΈ",
"requires": {},
},
}
Basenames: Base L2 Naming Service
Human-readable .base names that resolve to Ethereum addresses on Base L2.
Key Contracts (Base Mainnet)
- Registrar Controller: 0x4cCb0720c37C1658477b9C7A3aEBb87f1a067292
- Registry: 0xb94704422c2a1e396835a571837aa5ae53285a95
- Base RPC: https://mainnet.base.org
Pricing Tiers
- 5+ characters: ~$5 per year
- 4 characters: ~$50 per year
- 3 characters: ~$500 per year
Name Requirements
- Lowercase letters, numbers, hyphens only
- 3-63 characters
- Cannot start/end with hyphen
- Must end in .base
Common Operations
1. Register New Basename
// Check availability first
const available = await registrarController.available(name);
// Register for 1 year
const cost = await registrarController.rentPrice(name, duration);
await registrarController.register(
name,
owner,
duration,
{ value: cost }
);
2. Set Text Records
// Set social media handles
await registry.setText(node, "com.twitter", "@username");
await registry.setText(node, "com.github", "username");
await registry.setText(node, "avatar", "https://avatar-url.com/image.png");
3. Set Primary Name (Reverse Resolution)
// Make basename show when address is looked up
await reverseRegistrar.setName("alice.base");
4. Resolve Name to Address
const address = await registry.addr(namehash("alice.base"));
Integration Patterns
With ERC-8004 Identity
// Link basename to verified identity
await identityRegistry.linkBasename(
identityHash,
namehash("alice.base")
);
With Smart Wallets
// Deploy smart wallet with basename as primary identifier
const wallet = await smartWalletFactory.createAccount(
owner,
namehash("alice.base")
);
When to Use This Skill
- User wants to register a .base name
- Setting/updating name metadata (avatar, socials, website)
- Resolving names to addresses or vice versa
- Configuring primary names for addresses
- Checking availability or pricing
- Managing existing basenames
Basenames provides the human-readable layer for Base addresses and integrates with the broader identity and wallet infrastructure.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.