Awesome-omni-skill thirdweb
Thirdweb v5 SDK usage in AutoClaw. Use when working with wallet connection, social login, SIWE authentication, or thirdweb client/provider setup. Triggers on: "thirdweb", "wallet connect", "inAppWallet", "social login", "SIWE", "ConnectButton", "thirdweb auth", "thirdweb provider".
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/thirdweb-0xkemcho" ~/.claude/skills/diegosouzapw-awesome-omni-skill-thirdweb && rm -rf "$T"
manifest:
skills/development/thirdweb-0xkemcho/SKILL.mdsource content
Critical: Thirdweb v5 Sub-Path Imports
Thirdweb v5 uses sub-path imports. Never import from the root
thirdweb package for specialized modules:
// CORRECT import { createThirdwebClient } from 'thirdweb'; import { inAppWallet, createWallet } from 'thirdweb/wallets'; import { darkTheme } from 'thirdweb/react'; import { createAuth } from 'thirdweb/auth'; import { privateKeyToAccount } from 'thirdweb/wallets'; // WRONG — do not import wallet/auth/react from root import { inAppWallet } from 'thirdweb'; // ❌
Project Setup
Client (Web — apps/web/src/lib/thirdweb.ts
)
apps/web/src/lib/thirdweb.tsimport { createThirdwebClient } from 'thirdweb'; export const client = createThirdwebClient({ clientId: process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID!, });
Client (API — apps/api/src/lib/thirdweb.ts
)
apps/api/src/lib/thirdweb.tsimport { createThirdwebClient } from 'thirdweb'; export const thirdwebClient = createThirdwebClient({ secretKey: process.env.THIRDWEB_SECRET_KEY, });
Wallets Configuration
import { inAppWallet, createWallet } from 'thirdweb/wallets'; export const wallets = [ inAppWallet({ auth: { options: ['email', 'google', 'apple', 'passkey'] }, }), createWallet('io.metamask'), createWallet('com.coinbase.wallet'), createWallet('walletConnect'), ];
SIWE Auth (Server-Side)
import { createAuth } from 'thirdweb/auth'; import { privateKeyToAccount } from 'thirdweb/wallets'; const adminAccount = privateKeyToAccount({ client: thirdwebClient, privateKey: process.env.THIRDWEB_ADMIN_PRIVATE_KEY as `0x${string}`, }); export const thirdwebAuth = createAuth({ domain: process.env.AUTH_DOMAIN, client: thirdwebClient, adminAccount, });
Auth flow:
thirdwebAuth.generatePayload() → client signs → thirdwebAuth.verifyPayload() → JWT via thirdwebAuth.generateJWT().
Provider Stack (Web)
Wrap app with
QueryClientProvider (from @tanstack/react-query) + ThirdwebProvider:
import { ThirdwebProvider } from 'thirdweb/react'; <QueryClientProvider client={queryClient}> <ThirdwebProvider>{children}</ThirdwebProvider> </QueryClientProvider>
Theme
This project uses
darkTheme() from thirdweb/react with custom indigo accent colors. See apps/web/src/lib/thirdweb.ts for the full theme config.
Environment Variables
| Variable | Location | Description |
|---|---|---|
| Web | Public client ID |
| API | Server-side secret key |
| API | Admin wallet for SIWE signing |
| API | SIWE auth domain |
Key Hooks
— Get connected wallet accountuseActiveAccount()
— Get connected wallet instanceuseActiveWallet()
— Connect a wallet programmaticallyuseConnect()
— Disconnect current walletuseDisconnect()
Chain Configuration
This project targets Celo mainnet (chain ID 42220). When using
ConnectButton, set chain={celo} from thirdweb/chains.