btc-connect
btc-connect is a wallet connection toolkit for Bitcoin Web3 applications that enables unified integration of UniSat and OKX wallets in React, Vue, Next.js, and Nuxt 3 projects. Use this skill when implementing Bitcoin wallet connectivity, configuring network switching between mainnet and testnets, resolving SSR compatibility issues, or upgrading to btc-connect v0.4.0 and later versions with enhanced type safety and unified Hook APIs.
git clone --depth 1 https://github.com/Microck/ordinary-claude-skills /tmp/btc-connect && cp -r /tmp/btc-connect/skills_all/btc-connect ~/.claude/skills/btc-connectSKILL.md
# BTC-Connect 专业集成技能
## 技能概述
btc-connect 是专为比特币 Web3 应用设计的钱包连接工具包,提供统一的连接接口、事件监听和适配层。此技能支持在 React、Vue、Next.js、Nuxt 3 项目中完整集成最新版本的 btc-connect (v0.5.0+),实现 UniSat 和 OKX 钱包的连接、网络切换、状态管理,并解决 SSR 环境兼容性问题。
**最新特性 (v0.5.0)**: 统一Hook API设计、智能主题检测系统、代码质量全面优化、完善类型安全、增强构建性能、完整测试覆盖。
## 使用场景
在以下情况下使用此技能:
- 需要在 React/Vue 项目中集成比特币钱包连接功能
- 需要在 Next.js/Nuxt 3 SSR 项目中配置 btc-connect
- 需要实现比特币网络切换(主网/测试网/回归测试网)
- 需要集成 UniSat 或 OKX 钱包
- 遇到 btc-connect API 集成或配置问题
- 需要排查钱包连接失败或 SSR 兼容性问题
- 需要升级到最新版本的 btc-connect 包 (v0.4.0+)
## 核心功能
### 1. 依赖安装和版本管理
- 自动安装最新版本的 @btc-connect/core、@btc-connect/react、@btc-connect/vue
- 最低版本要求 v0.4.0+,自动选择最新稳定版本
- 版本兼容性检查和智能验证
- 依赖关系验证和冲突解决
- Bun 包管理器优化
### 2. 框架集成配置
- React 项目配置和 Hooks 使用(Context Provider 模式)
- Vue 项目配置和 Composables 使用(插件系统)
- Next.js SSR 环境配置(客户端组件模式)
- Nuxt 3 SSR 环境配置(客户端插件模式)
### 3. 🆕 网络切换功能 (v0.3.11+)
- 支持主网 (livenet)、测试网 (testnet)、回归测试网 (regtest)
- UniSat 钱包完全支持程序化网络切换
- OKX 钱包网络切换指导
- 网络变化事件监听和处理
### 4. 钱包适配和增强检测
- UniSat 钱包集成和完整 API 使用
- OKX 钱包集成和适配处理
- 🆕 增强钱包检测机制(20秒内每300ms轮询延迟注入)
- 钱包状态管理和事件监听
- 多钱包兼容性处理
### 5. 错误排查和性能优化
- 连接失败诊断和解决方案
- SSR 环境问题排查和修复
- 版本兼容性问题解决
- 🆕 性能优化(缓存系统、错误处理、连接优化)
## 使用流程
### 1. 项目评估和环境检查
首先检查项目类型和当前环境:
- 检查项目框架类型(React/Vue/Next.js/Nuxt 3)
- 检查现有的依赖和配置(确保无版本冲突)
- 确定SSR或CSR环境
- 检查 Node.js 版本(需要 >= 18)和 Bun 包管理器
### 2. 依赖安装和版本管理
根据项目类型安装相应包:
```bash
# 使用 Bun(推荐)
bun add @btc-connect/core @btc-connect/react # React 项目
bun add @btc-connect/core @btc-connect/vue # Vue 项目
# 或使用 npm
npm install @btc-connect/core @btc-connect/react
```
**版本要求**:
- @btc-connect/core: v0.4.0+ (自动安装最新版本)
- @btc-connect/react: v0.4.0+ (自动安装最新版本)
- @btc-connect/vue: v0.4.0+ (架构优化版本,自动安装最新版本)
> **💡 安装策略**: 安装脚本自动选择最新稳定版本,确保最低版本要求为 v0.4.0+
### 3. 框架集成配置
根据框架和环境进行配置:
**React 配置**:
- 配置 BTCWalletProvider 包装应用
- 使用 useWallet、useNetwork、useAccount 等 Hooks
- SSR 环境使用 'use client' 指令或动态导入
**Vue 配置**:
- 配置 BTCWalletPlugin 插件系统
- 使用 useWallet、useNetwork、useAccount 等 Composables
- 🆕 v0.4.0+ 统一 API 使用 `useWallet()`
**SSR 环境配置**:
- Next.js:客户端组件模式 + 动态导入
- Nuxt 3:客户端插件模式 + onMounted 生命周期
### 4. 🆕 网络切换功能配置
实现比特币网络切换:
```typescript
// React Hook 使用
const { network, switchNetwork } = useNetwork()
await switchNetwork('testnet') // 切换到测试网
// Vue Composable 使用
const { network, switchNetwork } = useNetwork()
await switchNetwork('mainnet') // 切换到主网
```
**支持网络**:livenet(主网)、testnet(测试网)、regtest(回归测试网)
### 5. 钱包集成和检测
选择并集成目标钱包:
- UniSat 钱包:完全支持程序化操作和网络切换
- OKX 钱包:基础连接和签名,网络切换需要手动操作
- 🆕 增强检测:自动检测延迟注入的钱包(20秒内轮询)
### 6. 问题排查和性能优化
如遇问题,按以下步骤排查:
1. 检查版本兼容性(确保使用最新版本)
2. 验证配置文件和框架集成
3. 测试钱包连接和网络切换
4. 查看 SSR 环境错误日志
5. 检查缓存系统和性能优化设置
## 框架集成指南
### React 集成(最新版本 v0.4.0+)
1. **安装依赖**:@btc-connect/core + @btc-connect/react
2. **配置 Provider**:使用 BTCWalletProvider 包装应用
3. **使用 Hooks**:useWallet、useNetwork、useAccount、useAutoConnect 等
4. **网络切换**:使用 useNetwork Hook 实现网络切换
5. **SSR 注意**:使用 'use client' 指令或动态导入
**快速示例**:
```tsx
'use client'
import { BTCWalletProvider, useWallet } from '@btc-connect/react'
function App() {
return (
<BTCWalletProvider>
<WalletComponent />
</BTCWalletProvider>
)
}
function WalletComponent() {
const { isConnected, connect, account, network } = useWallet()
// 实现钱包连接逻辑
}
```
### Vue 集成(最新版本 v0.4.0+ 架构优化)
1. **安装依赖**:@btc-connect/core + @btc-connect/vue (v0.4.0+)
2. **配置插件**:使用 BTCWalletPlugin
3. **🆕 统一 API**:使用 `useWallet()` 获取所有功能
4. **组件使用**:ConnectButton、WalletModal 等
5. **网络切换**:内置网络切换功能
**快速示例**:
```vue
<template>
<div>
<ConnectButton @connect="handleConnect" />
<!-- v0.4.0+ 已集成模态框到 ConnectButton -->
</div>
</template>
<script setup>
import { ConnectButton, useWallet } from '@btc-connect/vue'
const wallet = useWallet() // 🆕 统一 API
const handleConnect = (walletId) => {
console.log('连接到钱包:', walletId)
}
</script>
```
### Next.js SSR 集成(完整兼容)
1. **动态导入**:钱包组件必须动态导入
2. **客户端组件**:使用 'use client' 指令标记
3. **状态同步**:避免 SSR/客户端状态不匹配
4. **错误边界**:配置客户端错误处理
**关键配置**:
```tsx
// components/WalletConnect.tsx
'use client'
import { useWallet } from '@btc-connect/react'
export default function WalletConnect() {
const { connect, isConnected } = useWallet()
// 钱包连接逻辑
}
// pages/index.tsx
import dynamic from 'next/dynamic'
const WalletConnect = dynamic(() => import('./WalletConnect'), {
ssr: false
})
```
### Nuxt 3 SSR 集成(完整支持)
1. **客户端插件**:创建客户端专用插件
2. **生命周期**:使用 onMounted 确保客户端执行
3. **运行时配置**:配置客户端环境变量
4. **组件保护**:使用 ClientOnly 组件包装
**关键配置**:
```typescript
// plugins/btc-connect.client.ts
import { BTCWalletPlugin } from '@btc-connect/vue'
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.vueApp.use(BTCWalletPlugin)
})
```
```vue
<template>
<ClientOnly>
<ConnectButton />
</ClientOnly>
</template>
```
## 钱包特定处理
### UniSat 钱包(完全支持)
- ✅ **完整程序化网络切换**:支持主网、测试网、回归测试网
- ✅ **完整 API 支持**:消息签名、PSBT 签名、比特币发送
- ✅ **事件监听完整**:账户变化、网络变化、连接状态
- ✅ **增强检测机制**:自动检测延迟注入(20秒内轮询)
- ✅ **性能优化**:缓存系统、错误处理、连接优化
**网络切换示例**:
```typescript
// 完全支持程序化切换
await switchNetwork('testnet') // 立即切换到测试网
await switchNetwork('mainnet') // 立即切换到主网
```
### OKX 钱包(部分支持)
- ⚠️ **有限网络切换**:通常需要用户在钱包中手动切换
- ✅ **基础连接和签名**:支持钱包连接和基础签名功能
- ✅ **账户管理**:支持多账户和余额查询
- ⚠️ **特殊错误处理**:需要针对 OKX 的错误处理逻辑
- ⚠️ **用户体验提示**:需要引导用户进行手动操作
**网络切换指导**:
```typescript
// OKX 钱包网络切换需要用户手动操作
try {
await switchNetwork('testnet')
} catch (error) {
// 提示用户在 OKX 钱包中手动切换网络
console.log('请在 OKX 钱包中手动切换到测试网')
}
```
## 🆕 网络切换功能详解 (v0.3.11+)
### 支持的网络类型
- **livenet/mainnet**: 比特币主网
- **testnet**: 比特币测试网
- **regtest**: 回归测试网
### 核心包网络切换
```typescript
import { BTCWalletManager } from '@btc-connect/core'
const manager = new BTCWalletManager()
await manager.switchNetwork('testnet')
// 监听网络变化
manager.on('networkChange', ({ walletId, network }) => {
console.log(`钱包 ${walletId} 切换到 ${network} 网络`)
})
```
### React Hook 网络切换
```typescript
import { useNetwork } from '@btc-connect/react'
function NetworkSwitcher() {
const { network, switchNetwork, isSwitching } = useNetwork()
const handleSwitch = async () => {
try {
await switcTesting patterns for PHPUnit and Playwright E2E tests. Use when writing tests, debugging test failures, setting up test coverage, or implementing test patterns for ActivityPub features.
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use for submitting experiments via API, tracking experiment status, downloading results, optimizing protein sequences for better expression using computational tools (NetSolP, SoluProt, SolubleMPNN, ESM), or managing protein design workflows with wet-lab validation.
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid search, and distributed systems integration. Use when building distributed AI systems, multi-agent coordination, or advanced vector search applications.
Create and train AI learning plugins with AgentDB's 9 reinforcement learning algorithms. Includes Decision Transformer, Q-Learning, SARSA, Actor-Critic, and more. Use when building self-learning agents, implementing RL, or optimizing agent behavior through experience.
Implement persistent memory patterns for AI agents using AgentDB. Includes session memory, long-term storage, pattern learning, and context management. Use when building stateful agents, chat systems, or intelligent assistants.
Optimize AgentDB performance with quantization (4-32x memory reduction), HNSW indexing (150x faster search), caching, and batch operations. Use when optimizing memory usage, improving search speed, or scaling to millions of vectors.