一键导入
mock-eliminator
Elimina todo o mock data do CYPHER V3 e substitui por integrações reais com APIs de produção
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Elimina todo o mock data do CYPHER V3 e substitui por integrações reais com APIs de produção
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Testa cada API route do CYPHER V3 com dados reais — valida schemas, mede performance, detecta breaking changes, garante que cada endpoint retorna o que promete
Especialista em Bitcoin Ordinals, Runes, BRC-20, Rare Sats, wallet integration e protocolo Bitcoin para CYPHER V3
Modo John Carmack — foco absoluto numa única tarefa técnica, sem distrações, implementação direta e eficiente
Escreve código TypeScript/React/Next.js de produção para CYPHER V3
Garante o fluxo correto de dados desde APIs externas até ao utilizador — cache em camadas, fallbacks inteligentes, transformação de dados, sem dados stale ou inválidos na UI
Identifica e corrige bugs, memory leaks, hydration mismatches, e erros silenciosos no CYPHER V3
| name | mock-eliminator |
| description | Elimina todo o mock data do CYPHER V3 e substitui por integrações reais com APIs de produção |
| version | 2.0 |
| tags | ["mock-data","api-integration","production","ordinals","runes"] |
# Executar SEMPRE no início
grep -rn "mockData\|MOCK_DATA\|mock_data\|isMock\|useMock" src/ --include="*.ts" --include="*.tsx"
grep -rn "fakePrices\|dummyData\|sampleData\|testData\|placeholderData" src/
grep -rn "Math\.random()\|Math\.floor(Math\.random" src/ --include="*.ts" --include="*.tsx"
grep -rn "hardcoded\|HARDCODED\|// TODO.*real\|// FIXME.*api\|// temp\|// temporary" src/
grep -rn "\[\s*{.*name.*price.*volume.*}\s*\]" src/ # arrays hardcoded de assets
// ❌ MOCK (remover)
const mockCollections = [
{ name: "NodeMonkes", floorPrice: 0.05, volume24h: 12.5 },
{ name: "Bitcoin Puppets", floorPrice: 0.03, volume24h: 8.2 },
]
// ✅ REAL (substituir por)
import { HiroAPI } from '@/lib/api/hiro'
async function getOrdinalCollections() {
const hiro = new HiroAPI()
return await hiro.getCollections({
limit: 20,
sortBy: 'volume_24h',
order: 'desc'
})
}
// ❌ MOCK
const mockRunes = [
{ name: "DOG•GO•TO•THE•MOON", price: 0.000001, marketCap: 50000 },
]
// ✅ REAL
import { HiroAPI } from '@/lib/api/hiro'
async function getRunesMarket() {
const hiro = new HiroAPI()
return await hiro.getRunes({ limit: 50, orderBy: 'market_cap' })
}
// ✅ REAL
import { UniSatAPI } from '@/lib/api/unisat'
async function getBRC20Tokens() {
const unisat = new UniSatAPI(process.env.UNISAT_API_KEY!)
return await unisat.getBRC20List({ start: 0, limit: 20 })
}
// ✅ REAL
import { OrdiscanAPI } from '@/lib/api/ordiscan'
async function getRareSats(address: string) {
const ordiscan = new OrdiscanAPI(process.env.ORDISCAN_API_KEY!)
return await ordiscan.getAddressSatributes(address)
}
// ✅ REAL com Redis cache
import { redis } from '@/lib/cache/redis'
async function getBitcoinPrice(): Promise<number> {
const cached = await redis.get('btc:price')
if (cached) return parseFloat(cached)
const res = await fetch(
'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd',
{ headers: { 'x-cg-pro-api-key': process.env.COINGECKO_API_KEY! } }
)
const data = await res.json()
const price = data.bitcoin.usd
await redis.setex('btc:price', 30, price.toString()) // 30s cache
return price
}
src/services/runes/ — P0, dados de mercado são coresrc/services/ordinals/ — P0, core featuresrc/services/brc20/ — P1src/services/rare-sats/ — P1src/components/*/mock* — P2// Para cada ficheiro com mock data:
// 1. Identificar a estrutura de dados esperada
// 2. Encontrar a API que fornece esses dados
// 3. Criar função async com cache Redis
// 4. Adicionar error handling com fallback
// 5. Remover completamente o mock
// NUNCA:
const data = USE_MOCK ? mockData : await fetchReal()
// → Isto é techdívida — o mock deve desaparecer COMPLETAMENTE
# Confirmar que não há mais mock
grep -rn "mock\|MOCK\|fake\|dummy\|placeholder" src/ | grep -v "test\|spec\|__tests__\|\.test\."
# Build deve passar
npm run build
# Type check
npm run type-check
https://api.hiro.so — free tier disponível, rate limit 1000 req/hrprocess.env.UNISAT_API_KEYprocess.env.ORDISCAN_API_KEYprocess.env.OKX_API_KEY