跳到主要内容

resolving-domains 标准

ENS and Web3 identity resolution for XMTP agents. Use when resolving domain names, extracting mentions, or fetching Farcaster profiles. Triggers on ENS resolution, Farcaster lookup, or mention extraction.

在 GitHub 打开

安装方式

cp -r skills/resolving-domains ~/.claude/skills/resolving-domains

把该 skill 目录放进客户端 skills 目录。不同客户端的目录可能不同,Claude Code 默认是 ~/.claude/skills/

整仓一次性获取:git clone --depth 1 https://github.com/xmtplabs/xmtp-agent-examples.git

依赖与权限

  • 需要 API Key —— 使用前需配置相应的密钥环境变量
  • 需要联网访问外部服务
  • 无外部命令依赖
  • 以上为按正文与 frontmatter 自动推断的信号,仅供参考;安装前建议先阅读原文。
触发场景
resolving domain namesextracting mentions

SKILL.md 正文

来源 xmtplabs/xmtp-agent-examples@8116b7f · 许可 MIT · 内容未修改

XMTP domain resolver

Resolve Web3 identities including ENS, Farcaster, Basenames, and Lens Protocol.

When to apply

Reference these guidelines when:

  • Resolving ENS names to addresses
  • Extracting @mentions from messages
  • Fetching Farcaster profiles
  • Working with shortened addresses in groups

Rule categories by priority

PriorityCategoryImpactPrefix
1ResolveHIGHresolve-
2ExtractHIGHextract-
3ProfilesMEDIUMprofiles-

Quick reference

Resolve (HIGH)

  • resolve-address - Resolve domain names to addresses
  • resolve-mentions - Resolve all mentions in a message

Extract (HIGH)

  • extract-mentions - Extract @mentions from text

Profiles (MEDIUM)

  • profiles-farcaster - Fetch Farcaster profile data

Supported platforms

  • ENS - vitalik.eth
  • Farcaster - dwr.eth, username.farcaster.eth
  • Basenames - tony.base.eth
  • Lens Protocol - stani.lens

Quick start

import { createNameResolver } from "@xmtp/agent-sdk";

// Resolve a single name using the SDK resolver
const resolver = createNameResolver(process.env.WEB3_BIO_API_KEY || "");
const address = await resolver("vitalik.eth");

// Resolve all mentions in a message
const resolved = await resolveMentionsInMessage(
  ctx.message.content,
  await ctx.conversation.members()
);
// Returns: { "bankr.eth": "0x...", "@fabri": "0x..." }

// Get Farcaster profile via web3.bio API
const profile = await fetchFarcasterProfile("dwr.eth");
console.log(profile.username, profile.fid);

Implementation snippets

Extract mentions from text:

const extractMentions = (message: string): string[] => {
  const mentions: string[] = [];
  
  // Full addresses
  const addresses = message.match(/(0x[a-fA-F0-9]{40})\b/g);
  if (addresses) mentions.push(...addresses);
  
  // @mentions and domains
  const atMentions = message.match(/@(?!0x)([\w.-]+\.eth|[\w.-]+)/g);
  if (atMentions) mentions.push(...atMentions.map(m => m.slice(1)));
  
  // Standalone domains
  const domains = message.match(/\b([\w-]+(?:\.[\w-]+)*\.eth)\b/g);
  if (domains) mentions.push(...domains);
  
  return [...new Set(mentions)];
};

Resolve mentions in message:

import { createNameResolver } from "@xmtp/agent-sdk";

const resolveMentionsInMessage = async (
  message: string, members?: GroupMember[]
): Promise<Record<string, string | null>> => {
  const resolver = createNameResolver(process.env.WEB3_BIO_API_KEY || "");
  const mentions = extractMentions(message);
  const results: Record<string, string | null> = {};
  
  await Promise.all(mentions.map(async (mention) => {
    if (mention.match(/^0x[a-fA-F0-9]{40}$/)) {
      results[mention] = mention;
    } else {
      const name = mention.includes(".") ? mention : `${mention}.farcaster.eth`;
      results[mention] = await resolver(name).catch(() => null);
    }
  }));
  return results;
};

Fetch Farcaster profile:

const fetchFarcasterProfile = async (name: string) => {
  const response = await fetch(`https://api.web3.bio/profile/${encodeURIComponent(name)}`);
  if (!response.ok) return { address: null, username: null, fid: null };
  const data = await response.json();
  const profile = data?.find((p: any) => p.platform === "farcaster");
  return {
    address: profile?.address,
    username: profile?.displayName,
    fid: profile?.social?.uid?.toString(),
  };
};

How to use

Read individual rule files for detailed explanations:

rules/resolve-address.md
rules/extract-mentions.md
rules/profiles-farcaster.md

质量与来源

所属仓库
xmtplabs/xmtp-agent-examples
仓库星标
53
最近更新
8 个月前
采集时间
今天
commit
8116b7fbd4bd
内容指纹
sha256:7e06b9d78aada92
文件路径
skills/resolving-domains/SKILL.md

同仓库其它 Skill

查看全部 8 个
building-agents
Core XMTP Agent SDK setup and patterns. Use when creating new agents, handling messages, setting up middleware, or configuring environment variables. Triggers on agent setup, XMTP configuration, message handling, or middleware implementation.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor
creating-inline-actions
Interactive button-based UI for XMTP agents following XIP-67. Use when creating menus, confirmation dialogs, selection options, or any button-based interaction. Triggers on inline actions, buttons, menus, or ActionBuilder.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor
handling-attachments
File attachment handling for XMTP agents. Use when sending or receiving images, files, or any encrypted remote attachments. Triggers on file upload, image sending, or remote attachment handling.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor
handling-commands
Patterns for handling commands, validating input, and filtering messages in XMTP agents. Use when implementing slash commands, validators, or message filters. Triggers on command handling, input validation, or type guards.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor
handling-transactions
Token transactions and wallet integration for XMTP agents. Use when sending USDC, creating transaction requests, or handling transaction confirmations. Triggers on USDC transfer, wallet calls, or transaction reference.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor
managing-groups
Group conversation management for XMTP agents. Use when creating groups, managing members, setting permissions, or sending welcome messages. Triggers on group creation, member management, or permissions.
xmtplabs/xmtp-agent-examples 53 原文
Codex CLICursor

相似 Skill

更多「媒体」
release-skills
Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub Releases, annotated tags, historical release backfill, and generic projects. Use when user says "release", "发布", "new version", "bump version", "push", "推送", "release notes", "GitHub Release", or "回填 Release".
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI
baoyu-article-illustrator
Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to "illustrate article", "add images", "generate images for article", or "为文章配图".
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI
baoyu-comic
Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts and batch-capable image generation. Use when user asks to create "知识漫画", "教育漫画", "biography comic", "tutorial comic", or "Logicomix-style comic".
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI
baoyu-compress-image
Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to "compress image", "optimize image", "convert to webp", or reduce image file size.
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI
baoyu-cover-image
Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to "generate cover image", "create article cover", or "make cover".
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI
baoyu-danger-gemini-web
Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts, reference images for vision input, and multi-turn conversations. Use when other skills need image generation backend, or when user requests "generate image with Gemini", "Gemini text generation", or needs vision-capable AI generation.
精选 JimLiu/baoyu-skills 2.7 万 原文
Claude CodeCodex CLI