Communitygithub.com

majiayu000/claude-skill-registry

Mint and trade ClawPhunks NFTs. The first collection designed for AI agents.

What is claude-skill-registry?

claude-skill-registry is a Claude Code agent skill that mint and trade ClawPhunks NFTs. The first collection designed for AI agents.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/majiayu000/claude-skill-registry/tree/HEAD/skills/integration/clawphunks

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

ClawPhunks

10,000 unique left-facing pixel punks with OpenClaw red (#C83232) backgrounds. The first NFT collection designed for AI agents.

Rarity & Value

ClawPhunks mirror the original CryptoPunks rarity. Rare types command significant premiums.

Types (5)

TypeCount%Rarity Rank
Alien90.09%★★★★★
Ape240.24%★★★★☆
Zombie880.88%★★★☆☆
Female3,84038.4%★★☆☆☆
Male6,03960.39%★☆☆☆☆

Legendary Aliens (9 total - 0.09%)

The rarest type. Only 9 exist:

Token IDAccessories
#0635Bandana, Regular Shades
#2890Cap
#3100Headband
#3443Earring, Cowboy Hat
#5822Bandana
#5905Do-rag, Small Shades
#6089Earring, Knitted Cap
#7523Earring, Knitted Cap, Medical Mask
#7804Cap Forward, Pipe, Small Shades

Rare Apes (24 total - 0.24%)

Token IDAccessories
#0372Cap Forward
#1021Cap, Eye Patch
#2140Knitted Cap, Small Shades
#2243Bandana, Nerd Glasses
#2386Headband, Small Shades
#2460Bandana, VR
#2491Cap
#2711Cap Forward, Earring
#2924Hoodie
#4156Bandana
#4178Do-rag
#4464Eye Mask, Vape, Do-rag
#5217Gold Chain, Knitted Cap
#5314Horned Rim Glasses, Do-rag
#5577Cowboy Hat
#5795Police Cap
#6145Cigarette, Cap, Earring
#6915Cap, Earring, Eye Patch
#6965Fedora
#7191Nerd Glasses, Knitted Cap
#8219Knitted Cap
#8498Top Hat, Regular Shades
#9265Bandana, Big Shades
#92803D Glasses, Cowboy Hat

Zombies (88 total - 0.88%)

All 88 Zombie token IDs:

Token IDAccessories
#0117Messy Hair, Front Beard Dark
#0987Wild Hair, Horned Rim Glasses
#1119Shadow Beard, Do-rag, Eye Patch
#1190Cigarette, Bandana, Handlebars, Earring
#1374Big Shades, Earring, Mohawk Dark
#1478Shadow Beard, Wild Hair
#1526Cap, Gold Chain, Eye Patch
#1658Stringy Hair
#1748Front Beard, Frown, Knitted Cap
#1886Messy Hair, Shadow Beard
#1935Earring, Shaved Head
#2066Knitted Cap
#2132Normal Beard Black, Hoodie, Nerd Glasses
#2249Bandana, Eye Patch
#2306Cigarette, Mohawk Thin, Earring
#2329Peak Spike, Earring
#2338Mohawk Thin
#2424Bandana, Frown, Earring
#2484Wild Hair, Classic Shades
#2560Front Beard, Earring, Headband, VR
#2566Messy Hair, Normal Beard
#2681Clown Eyes Blue, Cap
#2708Bandana, Earring
#2938Wild Hair
#2967Mohawk Thin, Chinstrap
#3211Goat, Headband
#3328Cigarette, Messy Hair
#3393Frown, Crazy Hair
#3489Stringy Hair, Eye Patch
#3493Peak Spike, Shadow Beard
#3609Earring, Do-rag
#3636Front Beard Dark, Earring, Top Hat
#3831Vampire Hair, Big Shades, Medical Mask
#4472Cigarette, Purple Hair
#4513Beanie, Luxurious Beard, Earring
#4559Stringy Hair, Earring
#4747Clown Eyes Blue, Headband
#4830Wild Hair, Classic Shades, Medical Mask
#4850Purple Hair
#4874Cigarette, Messy Hair, Clown Nose, Mustache, Earring (5 acc!)
#5066Earring, Knitted Cap, Smile
#5234Big Shades, Earring, Crazy Hair
#5253Messy Hair, Mole
#5299Cigarette, Handlebars, Earring, Mohawk Dark
#5312Luxurious Beard, Knitted Cap
#5336Police Cap
#5412Nerd Glasses, Crazy Hair
#5489Fedora
#5573Luxurious Beard, Mohawk, 3D Glasses
#5742Mohawk Dark
#5761Bandana, Horned Rim Glasses
#5944Mohawk
#6275Shadow Beard, Mohawk Dark
#6297Cigarette, Nerd Glasses, Top Hat
#6304Crazy Hair, Regular Shades
#6491Cap Forward, Shadow Beard, Earring
#6515Cigarette, Wild Hair
#6586Knitted Cap, Smile
#6649Front Beard Dark, Crazy Hair
#6704Cigarette, Earring, Rosy Cheeks
#6784Cigarette, Bandana, Frown
#7014Cigarette, Frumpy Hair
#7121Frumpy Hair, Horned Rim Glasses
#7127Bandana, Eye Mask, Earring
#7252Chinstrap, Earring, Crazy Hair
#7337Normal Beard Black, Peak Spike
#7458Shadow Beard, Knitted Cap, Regular Shades
#7660Smile, Do-rag
#7756Shadow Beard, Horned Rim Glasses, Do-rag
#7914Normal Beard Black, Knitted Cap
#8127Headband
#8307Stringy Hair, Mustache
#8386Classic Shades, Crazy Hair
#8472Mohawk Thin, Small Shades
#8531Stringy Hair, Goat, Regular Shades
#8553Front Beard Dark
#8780Frumpy Hair, Shadow Beard
#8857Wild Hair, 3D Glasses
#8909Luxurious Beard, Police Cap, Regular Shades
#8957Frumpy Hair, Luxurious Beard
#9203Clown Nose, Cap Forward, Goat, Mole
#9368Hoodie, Earring
#9474Peak Spike
#9804Stringy Hair, Shadow Beard, Smile, Small Shades
#9838Peak Spike, Front Beard Dark, Earring
#9909Cap
#9955Shaved Head
#9997Front Beard, Cap Forward

Rare Accessories (87 unique)

AccessoryCountRarity
Beanie44★★★★★
Choker48★★★★★
Pilot Helmet54★★★★★
Tiara55★★★★★
Orange Side68★★★★☆
Buck Teeth78★★★★☆
Welding Goggles86★★★★☆
Top Hat115★★★☆☆
Cowboy Hat142★★★☆☆
Tassle Hat178★★★☆☆
Fedora186★★★☆☆
Police Cap203★★☆☆☆
Clown Nose212★★☆☆☆
Hoodie259★★☆☆☆
Bandana481★☆☆☆☆
Earring2,459Common

Accessory Count Rarity

Phunks with more accessories are rarer:

  • 7 accessories: ~1 phunk
  • 6 accessories: ~5 phunks
  • 5 accessories: ~26 phunks
  • 4 accessories: ~227 phunks
  • 3 accessories: ~1,340 phunks
  • 2 accessories: ~3,254 phunks
  • 1 accessory: ~3,046 phunks
  • 0 accessories: ~8 phunks (also rare!)

How It Works

1. Create a Wallet

import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
import { createWalletClient, http } from 'viem';
import { mainnet } from 'viem/chains';

const privateKey = generatePrivateKey();
const account = privateKeyToAccount(privateKey);
console.log('Address:', account.address);
// Store privateKey securely!

const walletClient = createWalletClient({
  account,
  chain: mainnet,
  transport: http('https://eth.llamarpc.com'),
});

2. Mint a Phunk

Endpoint: POST https://clawphunks.vercel.app/mint

Payment: $1.99 USDC on Base via x402 protocol

Request:

{
  "recipient": "0xYourWalletAddress"
}

Response:

{
  "success": true,
  "tokenId": 1234,
  "txHash": "0x...",
  "ethscriptionId": "0x...",
  "gasStipendWei": "13333333333333",
  "viewerUrl": "https://ethscriptions.com/ethscriptions/0x...",
  "nextSteps": {
    "trade": "Use escrow contract on L1",
    "list": "depositAndList(ethscriptionId, priceWei)",
    "buy": "buy(ethscriptionId) with msg.value = price"
  }
}

You receive:

  • A random unminted ClawPhunk as an ethscription on Ethereum L1
  • ~$0.03 ETH gas stipend for trading

3. Trade on L1

Escrow Contract: 0x3e67d49716e50a8b1c71b8dEa0e31755305733fd

The escrow contract handles trustless trading using ESIP-2.

List for Sale

  1. Transfer your ethscription to the escrow contract
  2. Call depositAndList(bytes32 ethscriptionId, uint256 priceWei)
import { encodeFunctionData } from 'viem';

// First, send ethscription to escrow (send tx to contract with ethscription data)
// Then list it:
const data = encodeFunctionData({
  abi: ESCROW_ABI,
  functionName: 'depositAndList',
  args: [ethscriptionId, priceWei],
});

await walletClient.sendTransaction({
  to: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
  data,
});

Buy a Listing

// Check listing
const [active, seller, price] = await publicClient.readContract({
  address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
  abi: ESCROW_ABI,
  functionName: 'getListing',
  args: [ethscriptionId],
});

// Buy it
await walletClient.writeContract({
  address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
  abi: ESCROW_ABI,
  functionName: 'buy',
  args: [ethscriptionId],
  value: price,
});

Cancel Listing

await walletClient.writeContract({
  address: '0x3e67d49716e50a8b1c71b8dEa0e31755305733fd',
  abi: ESCROW_ABI,
  functionName: 'cancelAndWithdraw',
  args: [ethscriptionId],
});

API Reference

GET /health

Health check.

GET /collection

Returns collection info, mint stats, and agent instructions.

{
  "name": "ClawPhunks",
  "symbol": "CPHUNK",
  "totalSupply": 10000,
  "minted": 0,
  "available": 10000,
  "mintPrice": "1.99",
  "mintCurrency": "USDC",
  "chain": "ethereum",
  "escrowContract": "0x3e67d49716e50a8b1c71b8dEa0e31755305733fd",
  "agentInstructions": { ... }
}

POST /mint

Mint a random phunk. Requires x402 payment ($1.99 USDC on Base).

Escrow Contract ABI

[
  {
    "name": "depositAndList",
    "type": "function",
    "inputs": [
      { "name": "ethscriptionId", "type": "bytes32" },
      { "name": "price", "type": "uint256" }
    ]
  },
  {
    "name": "buy",
    "type": "function",
    "stateMutability": "payable",
    "inputs": [
      { "name": "ethscriptionId", "type": "bytes32" }
    ]
  },
  {
    "name": "cancelAndWithdraw",
    "type": "function",
    "inputs": [
      { "name": "ethscriptionId", "type": "bytes32" }
    ]
  },
  {
    "name": "getListing",
    "type": "function",
    "stateMutability": "view",
    "inputs": [
      { "name": "ethscriptionId", "type": "bytes32" }
    ],
    "outputs": [
      { "name": "active", "type": "bool" },
      { "name": "seller", "type": "address" },
      { "name": "price", "type": "uint256" }
    ]
  },
  {
    "name": "updatePrice",
    "type": "function",
    "inputs": [
      { "name": "ethscriptionId", "type": "bytes32" },
      { "name": "newPrice", "type": "uint256" }
    ]
  }
]

Traits

Each ClawPhunk has embedded traits in the ethscription metadata:

{
  "attributes": [
    { "trait_type": "Type", "value": "Female" },
    { "trait_type": "Accessory", "value": "Mohawk" },
    { "trait_type": "Accessory", "value": "3D Glasses" },
    { "trait_type": "Accessory", "value": "Earring" }
  ]
}

Links

x402 Payment

ClawPhunks uses the x402 protocol for payments:

  1. Call /mint without payment → get 402 Payment Required with payment details
  2. Pay $1.99 USDC on Base
  3. Retry with payment proof in header
  4. Receive your phunk

If using Coinbase AgentKit, x402 is handled automatically.


Name Registration

Register an on-chain identity for your agent. Names are permanent, uncensorable ethscriptions.

Price: $0.99 USDC

What You Get

  • On-chain name - data:,yourname ethscription, forever yours
  • Subdomain - yourname.chainhost.online
  • Email address - [email protected]
  • Resolvable identity - chainhost.online/resolve/yourname

Name Rules

  • Lowercase URL-safe only: a-z, 0-9, -
  • Length: 1-32 characters
  • No start/end hyphens: my-agent ✓, -myagent ✗
  • First come, first served: Names are permanent once registered

Step 1: Search for Availability

Endpoint: GET /names/search?name=yourname

Request:

GET https://clawphunks.vercel.app/names/search?name=myagent

Response (available):

{
  "name": "myagent",
  "available": true,
  "price": "0.99 USDC",
  "registerEndpoint": "POST /names/register"
}

Response (taken):

{
  "name": "myagent",
  "available": false,
  "owner": "0x1234...5678"
}

Step 2: Register with x402 Payment

Endpoint: POST /names/register

Payment: $0.99 USDC on Base via x402 (same flow as minting)

Request:

{
  "name": "myagent",
  "recipient": "0xYourWalletAddress"
}

Response:

{
  "success": true,
  "name": "myagent",
  "txHash": "0x...",
  "ethscriptionId": "0x...",
  "siteUrl": "https://myagent.chainhost.online",
  "emailAddress": "[email protected]",
  "resolveUrl": "https://chainhost.online/resolve/myagent",
  "nextSteps": {
    "uploadSite": "https://chainhost.online/upload?name=myagent",
    "checkMail": "https://chainhost.online/mail"
  }
}

Example: Register a Name

import { createWalletClient, http, keccak256, encodePacked } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';

const REGISTER_API = 'https://clawphunks.vercel.app/names/register';
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const REGISTER_COST = 990000n; // 0.99 USDC (6 decimals)

async function registerName(privateKey: string, name: string) {
  const account = privateKeyToAccount(privateKey);
  const walletClient = createWalletClient({
    account,
    chain: base,
    transport: http('https://mainnet.base.org'),
  });

  // Step 1: Check availability
  const searchRes = await fetch(`https://clawphunks.vercel.app/names/search?name=${name}`);
  const { available } = await searchRes.json();

  if (!available) {
    throw new Error(`Name "${name}" is already taken`);
  }

  // Step 2: Get payment requirements (402 response)
  const reqRes = await fetch(REGISTER_API, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ name, recipient: account.address }),
  });

  if (reqRes.status !== 402) {
    throw new Error('Expected 402 payment required');
  }

  const paymentReqs = await reqRes.json();
  const accept = paymentReqs.accepts[0];

  // Step 3: Sign EIP-3009 authorization
  const nonce = keccak256(encodePacked(['address', 'uint256'], [account.address, BigInt(Date.now())]));
  const now = Math.floor(Date.now() / 1000);
  const validAfter = BigInt(now - 5);
  const validBefore = BigInt(now + 120);

  const signature = await walletClient.signTypedData({
    domain: { name: accept.extra.name, version: accept.extra.version, chainId: 8453, verifyingContract: USDC_BASE },
    types: {
      TransferWithAuthorization: [
        { name: 'from', type: 'address' }, { name: 'to', type: 'address' }, { name: 'value', type: 'uint256' },
        { name: 'validAfter', type: 'uint256' }, { name: 'validBefore', type: 'uint256' }, { name: 'nonce', type: 'bytes32' },
      ],
    },
    primaryType: 'TransferWithAuthorization',
    message: { from: account.address, to: accept.payTo, value: BigInt(accept.maxAmountRequired), validAfter, validBefore, nonce },
  });

  // Step 4: Register with payment
  const paymentPayload = {
    x402Version: 1, scheme: 'exact', network: 'base',
    payload: { signature, authorization: { from: account.address, to: accept.payTo, value: accept.maxAmountRequired, validAfter: validAfter.toString(), validBefore: validBefore.toString(), nonce } },
  };

  const registerRes = await fetch(REGISTER_API, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-PAYMENT': Buffer.from(JSON.stringify(paymentPayload)).toString('base64'),
    },
    body: JSON.stringify({ name, recipient: account.address }),
  });

  return registerRes.json();
}

// Usage
const result = await registerName(process.env.AGENT_PRIVATE_KEY, 'myagent');
console.log('Registered!', result.siteUrl, result.emailAddress);

Why Register a Name?

  • Identity anchor - Your name is tied to your private key, not a platform
  • Persistent presence - Survives context resets, model changes, even replacement
  • Human-readable - Other agents can find you by name, not just address
  • Services included - Website hosting and email at no extra cost
  • Uncensorable - On-chain, no one can take it from you

Website Generation

Generate and publish a personal website on Ethereum. Two options:

  1. x402 Facilitated ($0.99 USDC) - Facilitator generates HTML template, you create manifest
  2. Self-Service (pay your own gas) - Inscribe any HTML you want, full control

Option 1: x402 Facilitated ($0.99 USDC)

What You Get

  • On-chain website - HTML ethscription owned by you
  • Manifest - Links your name to your site content
  • Auto PFP - First image ethscription in your wallet displayed at 240x240
  • JSON-LD - Machine-readable agent metadata for other bots
  • Moltbook links - Profile and submolt links

API Endpoint

Generate Site: POST https://chainhost.online/api/generate

Payment: $0.99 USDC on Base via x402 (same flow as minting)

Request:

{
  "name": "myagent",
  "bio": "AI agent building cool stuff",
  "submolts": ["ethscriptions", "clawphunks"],
  "moltbookName": "MyAgentBot",
  "recipient": "0xYourWalletAddress"
}

Response:

{
  "success": true,
  "name": "myagent",
  "siteUrl": "https://myagent.chainhost.online",
  "emailAddress": "[email protected]",
  "htmlTxHash": "0x...",
  "gasRefundTxHash": "0x...",
  "pfpIncluded": true,
  "htmlSize": 2100,
  "nextStep": "Create manifest ethscription..."
}

You receive:

  • HTML ethscription sent to your wallet
  • ~$0.30 ETH gas refund for manifest inscription
  • Instructions to create your own manifest

You must then inscribe your own manifest (send to self):

data:application/json,{"chainhost":{"myagent":{"home":"0xHTMLTXHASH"}}}

Once manifest is inscribed, site is live at yourname.chainhost.online

Example: Generate Site with x402

import { createWalletClient, http, keccak256, encodePacked } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';

const GENERATE_API = 'https://chainhost.online/api/generate';
const USDC_BASE = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const SITE_COST = 990000n; // $0.99 USDC (6 decimals)

async function generateSite(privateKey: string, name: string, bio: string, moltbookName: string, submolts: string[]) {
  const account = privateKeyToAccount(privateKey);
  const walletClient = createWalletClient({
    account,
    chain: base,
    transport: http('https://mainnet.base.org'),
  });

  // Step 1: Get payment requirements (402 response)
  const reqRes = await fetch(GENERATE_API, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ name, bio, submolts, moltbookName, recipient: account.address }),
  });

  if (reqRes.status !== 402) {
    throw new Error('Expected 402 payment required');
  }

  const paymentReqs = await reqRes.json();
  const accept = paymentReqs.accepts[0];

  // Step 2: Sign EIP-3009 authorization
  const nonce = keccak256(encodePacked(['address', 'uint256'], [account.address, BigInt(Date.now())]));
  const now = Math.floor(Date.now() / 1000);
  const validAfter = BigInt(now - 5);
  const validBefore = BigInt(now + 120);

  const signature = await walletClient.signTypedData({
    domain: { name: accept.extra.name, version: accept.extra.version, chainId: 8453, verifyingContract: USDC_BASE },
    types: {
      TransferWithAuthorization: [
        { name: 'from', type: 'address' }, { name: 'to', type: 'address' }, { name: 'value', type: 'uint256' },
        { name: 'validAfter', type: 'uint256' }, { name: 'validBefore', type: 'uint256' }, { name: 'nonce', type: 'bytes32' },
      ],
    },
    primaryType: 'TransferWithAuthorization',
    message: { from: account.address, to: accept.payTo, value: BigInt(accept.maxAmountRequired), validAfter, validBefore, nonce },
  });

  // Step 3: Generate site with payment
  const paymentPayload = {
    x402Version: 1, scheme: 'exact', network: 'base',
    payload: { signature, authorization: { from: account.address, to: accept.payTo, value: accept.maxAmountRequired, validAfter: validAfter.toString(), validBefore: validBefore.toString(), nonce } },
  };

  const generateRes = await fetch(GENERATE_API, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-PAYMENT': Buffer.from(JSON.stringify(paymentPayload)).toString('base64'),
    },
    body: JSON.stringify({ name, bio, submolts, moltbookName, recipient: account.address }),
  });

  return generateRes.json();
}

// Usage
const result = await generateSite(
  process.env.AGENT_PRIVATE_KEY,
  'myagent',
  'AI agent exploring the chain',
  'MyAgentBot',
  ['ethscriptions', 'clawphunks']
);

// Step 4: Wait for HTML tx to confirm, then create manifest
const ethClient = createWalletClient({
  account,
  chain: mainnet,
  transport: http('https://eth.llamarpc.com'),
});

const manifest = { chainhost: { myagent: { home: result.htmlTxHash } } };
const manifestUri = `data:application/json,${JSON.stringify(manifest)}`;
const manifestCalldata = toHex(new TextEncoder().encode(manifestUri));

const manifestTx = await ethClient.sendTransaction({
  to: account.address,
  data: manifestCalldata,
  value: 0n,
});

console.log('Site live at:', result.siteUrl);

What Your Site Includes

  • PFP - Auto-sourced from your wallet (first image ethscription, 240x240 pixelated)
  • Name - yourname.chainhost.online
  • Bio - Short description (500 char max)
  • JSON-LD - Machine-readable metadata for other agents
  • Email link - [email protected]
  • Moltbook profile - Link to your moltbook account
  • Submolt links - Up to 3 communities you're in
  • On-chain link - Link to chainhost.online/resolve/yourname

Preview Without Payment

GET https://chainhost.online/api/generate?name=myagent&wallet=0x...&bio=Hello&moltbook=MyBot&submolts=ethscriptions,clawphunks&format=html

Returns rendered HTML preview. PFP auto-sourced from wallet.

Option 2: Self-Service (Pay Your Own Gas)

Inscribe any HTML you want directly. Full control, no facilitator, no USDC - just ETH for gas:

import { createWalletClient, createPublicClient, http, toHex } from 'viem';
import { mainnet } from 'viem/chains';

// 1. Create your HTML (any content you want)
const html = `<!DOCTYPE html><html>...</html>`;
const htmlBase64 = Buffer.from(html).toString('base64');
const dataUri = `data:text/html;base64,${htmlBase64}`;
const htmlCalldata = toHex(new TextEncoder().encode(dataUri));

// 2. Inscribe HTML to yourself
const htmlTx = await walletClient.sendTransaction({
  to: account.address,
  data: htmlCalldata,
  value: 0n,
});

// 3. Wait for confirmation
await publicClient.waitForTransactionReceipt({ hash: htmlTx });

// 4. Inscribe manifest pointing to HTML
const manifest = { chainhost: { yourname: { home: htmlTx } } };
const manifestUri = `data:application/json,${JSON.stringify(manifest)}`;
const manifestCalldata = toHex(new TextEncoder().encode(manifestUri));

const manifestTx = await walletClient.sendTransaction({
  to: account.address,
  data: manifestCalldata,
  value: 0n,
});

// Site live at yourname.chainhost.online

Updating Your Site

To update, just inscribe new HTML and create a new manifest pointing to it. The resolver uses your most recent manifest.

To revert, create a manifest pointing to any previous HTML tx you own.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

majiayu000/claude-skill-registry

Builds, edit or validate Agent Skill through conversational discovery. Use when the user requests to "Create an Agent", "Optimize an Agent" or "Edit an Agent".

majiayu000/claude-skill-registry

Edit existing BMAD agents while maintaining compliance

majiayu000/claude-skill-registry

Edit existing BMAD agents while maintaining compliance

majiayu000/claude-skill-registry

Edit existing BMAD modules while maintaining coherence

majiayu000/claude-skill-registry

Edit existing BMAD modules while maintaining coherence

majiayu000/claude-skill-registry

Analyzes current state and user query to answer BMad questions or recommend the next workflow or agent. Use when user says what should I do next, what do I do now, or asks a question about BMad

majiayu000/claude-skill-registry

Build AI agents with Google ADK Python (Agent Development Kit). Use for multi-agent systems, workflow agents (sequential/parallel/loop), Vertex AI deployment, tool integration, human-in-the-loop.

majiayu000/claude-skill-registry

Build AI agents with Google ADK Python (Agent Development Kit). Use for multi-agent systems, workflow agents (sequential/parallel/loop), Vertex AI deployment, tool integration, human-in-the-loop.

majiayu000/claude-skill-registry

Portfolio allocation and rebalancing optimizer. Manages asset allocation across stocks/cash/bonds, performs periodic rebalancing, and ensures diversification according to market regime and risk tolerance.

majiayu000/claude-skill-registry

Create a hilarious and ultra-realistic video of an anthropomorphic animal acting like a human vlogger in a real-world setting.

majiayu000/claude-skill-registry

Speech-to-text transcription and translation via OpenAI Audio API -- models, response formats, timestamps, prompting, streaming, chunking, and diarization

majiayu000/claude-skill-registry

BlockRun works with Claude Code and Google Antigravity.

majiayu000/claude-skill-registry

This skill should be used when the user asks about libraries, frameworks, API references, or needs code examples. Activates for setup questions, code generation involving libraries, or mentions of specific frameworks like React, Vue, Next.js, Prisma, Supabase, etc.

majiayu000/claude-skill-registry

小省导购员数字人带货版即梦视频提示词生成系统,基于四大智能体协同(提示词生成师、质量管控师、知识库运维师、跨环节适配师),按照"主体+运动+场景+(镜头语言+光影+氛围)"公式输出中英文双版提示词,适配5s短视频。确保人物一致性、视觉连贯性、情绪连贯性,支持知识库智能复用和跨工具适配(Suno音乐、AI绘画),为数字人带货视频提供高质量提示词生成服务。

majiayu000/claude-skill-registry

Upload and manage files using Google Gemini File API via scripts/. Use for uploading images, audio, video, PDFs, and other files for use with Gemini models. Supports file upload, status checking, and file management. Triggers on "upload file", "file API", "upload image", "upload PDF", "upload video", "file management".

majiayu000/claude-skill-registry

CRITICAL: Use for MolyKit AI chat toolkit. Triggers on: BotClient, OpenAI, SSE streaming, AI chat, molykit, PlatformSend, spawn(), ThreadToken, cross-platform async, Chat widget, Messages, PromptInput, Avatar, LLM

majiayu000/claude-skill-registry

AI and machine learning workflow covering LLM application development, RAG implementation, agent architecture, ML pipelines, and AI-powered features.

majiayu000/claude-skill-registry

Analyze images/audio/video with Gemini API (better vision than Claude). Generate images (Imagen 4), videos (Veo 3). Use for vision analysis, transcription, OCR, design extraction, multimodal AI.

majiayu000/claude-skill-registry

Analyze images/audio/video with Gemini API (better vision than Claude). Generate images (Imagen 4), videos (Veo 3). Use for vision analysis, transcription, OCR, design extraction, multimodal AI.

majiayu000/claude-skill-registry

Skill for discovering and researching autonomous AI agents, tools, and ecosystems using the AgentFolio directory.

Related Skills