An Agent Skill that teaches AI coding agents how to integrate VeeFriends Global Wallet into Next.js apps using Privy's cross-app SDK.
- Guides adding VeeFriends wallet to an existing PrivyAuth setup (default path)
- Supports new PrivyAuth setup with Email + Google plus VeeFriends wallet connect flow
- Provides production-tested code for login, message signing, typed data signing (EIP-712), and transactions
- Documents critical gotchas: SSG crashes, camelCase SDK quirk, single-popup limit, no-account-creation constraint, and env var newline/whitespace pitfalls
- Includes the official VeeFriends wallet icon (
assets/vf-logo.svg) — required branding for all integrations - Includes security headers (CSP) with all required Privy domains
- Covers deployment to Vercel with environment variable configuration
git clone https://github.com/jeremyknows/vf-global-wallet-skill.git ~/.claude/skills/vf-global-walletgit clone https://github.com/jeremyknows/vf-global-wallet-skill.git ~/.cursor/skills/vf-global-walletCopy SKILL.md into your agent's skills directory. See Agent Skills spec for platform-specific paths.
- Create a Privy Dashboard account
- Create a new app to get your Requester App ID
- Use the VeeFriends Provider App ID:
cm5158iom02kdwmj4wj527lc4 - Set environment variables:
NEXT_PUBLIC_PRIVY_APP_ID=your_requester_app_id NEXT_PUBLIC_VF_PROVIDER_APP_ID=cm5158iom02kdwmj4wj527lc4
Just describe what you need:
- "Add VeeFriends wallet login to my Next.js app"
- "Set up cross-app authentication with VeeFriends"
- "I need to sign messages with the VeeFriends wallet"
- "Add EIP-712 typed data signing"
- "Send a transaction through the VeeFriends wallet"
- "What CSP headers do I need for Privy?"
/vf-global-wallet
| Section | Description |
|---|---|
| Branding | Official VeeFriends logo — required for all integrations |
| Prerequisites | Privy Dashboard setup, app ID creation |
| Environment Variables | Config validation, fail-fast pattern |
| PrivyProvider Setup | Disable embedded wallets, theme config |
| SSG Prevention | force-dynamic export (critical) |
| Cross-App Login | Programmatic login, error mapping |
| Wallet Address Extraction | camelCase SDK quirk, address validation |
| Sign Message | No gas, popup consent |
| Sign Typed Data (EIP-712) | BigInt usage, as const for TypeScript |
| Send Transaction | Gas costs, chain selection |
| Auth Guard | Route protection, redirect pattern |
| Security Headers | CSP with all Privy domains |
| Account Funding | Gas sponsorship for production apps |
| Common Gotchas | 8 documented pitfalls with solutions |
| Error Boundary | Crash recovery component |
A complete working example is available:
- Repo: vf-global-wallet
- Live: vf-wallet-test.vercel.app
- Next.js 14+ (App Router)
- React 18+
- TypeScript
@privy-io/react-authv3.13.x
For a full repository map and agent navigation guide, see docs/CODEBASE_MAP.md.
- Users must have an existing VeeFriends account — the SDK cannot create new accounts
- Ethereum and Base chains only — VeeFriends wallets are ETH-based
- Popup-based consent — users with aggressive popup blockers may need to allowlist your domain
- Single concurrent operation — only one wallet popup can be active at a time
vf-global-wallet-skill/
├── docs/
│ └── CODEBASE_MAP.md # Architecture map and navigation guide
├── CLAUDE.md # Agent-facing project reference
├── SKILL.md # Integration guide (loaded by AI agents)
├── assets/
│ └── vf-logo.svg # Official VeeFriends wallet icon (required branding)
├── LICENSE.txt # MIT license
├── README.md # This file (GitHub-facing documentation)
└── .gitignore # OS artifacts
MIT