ワンクリックで
ux-analyst
Analisa UX/UI do CYPHER V3 na perspetiva de um trader profissional que usa Bloomberg Terminal diariamente
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Analisa UX/UI do CYPHER V3 na perspetiva de um trader profissional que usa Bloomberg Terminal diariamente
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 | ux-analyst |
| description | Analisa UX/UI do CYPHER V3 na perspetiva de um trader profissional que usa Bloomberg Terminal diariamente |
| version | 2.0 |
| tags | ["ux","ui","bloomberg","trader-experience","accessibility"] |
Utilizador típico do CYPHER V3:
# Verificar skeleton loaders
grep -rn "isLoading\|isFetching" src/components/ | grep -v "skeleton\|Skeleton\|pulse\|animate"
# → Todos os estados de loading DEVEM ter skeleton, não spinners genéricos
Padrão obrigatório:
// ❌ MAU — spinner genérico
if (isLoading) return <Spinner />
// ✅ BOM — skeleton que preserva layout
if (isLoading) return (
<div className="space-y-2 animate-pulse">
<div className="h-4 bg-[#1a1a1a] rounded w-3/4" />
<div className="h-8 bg-[#1a1a1a] rounded" />
<div className="h-4 bg-[#1a1a1a] rounded w-1/2" />
</div>
)
# Verificar timeouts em fetch calls
grep -rn "fetch(" src/ | grep -v "timeout\|AbortController\|signal"
Regra: MÁXIMO 10 segundos de espera visível ao utilizador:
const controller = new AbortController()
const timeout = setTimeout(() => controller.abort(), 10_000)
try {
const res = await fetch(url, { signal: controller.signal })
} catch (err) {
if (err.name === 'AbortError') {
// mostrar mensagem amigável: "Dados indisponíveis — tentar novamente"
}
} finally {
clearTimeout(timeout)
}
// Para ações de trading — resposta IMEDIATA, sync em background
const mutation = useMutation({
mutationFn: submitOrder,
onMutate: async (newOrder) => {
// Cancelar queries em curso
await queryClient.cancelQueries({ queryKey: ['orders'] })
// Snapshot anterior
const previous = queryClient.getQueryData(['orders'])
// Atualizar otimisticamente
queryClient.setQueryData(['orders'], (old: Order[]) => [...old, { ...newOrder, status: 'pending' }])
return { previous }
},
onError: (err, variables, context) => {
// Reverter se falhar
queryClient.setQueryData(['orders'], context?.previous)
toast.error('Ordem falhou: ' + err.message)
},
onSettled: () => {
queryClient.invalidateQueries({ queryKey: ['orders'] })
},
})
O padrão Bloomberg usa:
font-mono para números, font-sans para labels// Componente de preço Bloomberg-style
function PriceCell({ value, change }: { value: number; change: number }) {
return (
<div className="font-mono text-right tabular-nums">
<span className="text-[#FFFFFF] text-sm">{value.toLocaleString('en-US', { minimumFractionDigits: 2 })}</span>
<span className={cn(
"text-xs ml-1",
change >= 0 ? "text-[#00FF41]" : "text-[#FF0040]"
)}>
{change >= 0 ? "+" : ""}{change.toFixed(2)}%
</span>
</div>
)
}
Verificar:
Atalhos de teclado (Bloomberg-style):
// Adicionar em componentes de trading
useEffect(() => {
const handler = (e: KeyboardEvent) => {
if (e.key === 'Escape') closeModal()
if (e.key === 'Enter' && e.ctrlKey) submitOrder()
if (e.key === 'r' && e.metaKey) refreshData()
}
document.addEventListener('keydown', handler)
return () => document.removeEventListener('keydown', handler)
}, [])
// NUNCA usar alert() ou confirm() nativo
// SEMPRE usar toast system com cores Bloomberg
// Sucesso
toast.success('Ordem executada: +0.05 BTC @ $95,420', { duration: 5000 })
// Erro
toast.error('Falha na ordem: saldo insuficiente', { duration: 8000 })
// Info
toast.info('Magic Eden a deprecar — dados via OKX NFT', { duration: 10000 })
# Verificar inconsistências de cor
grep -rn "text-green\|text-red\|bg-green\|bg-red" src/components/ | grep -v "text-\[#00FF41\]\|text-\[#FF0040\]"
# → Cores de sucesso/erro DEVEM ser as do design system
## Análise UX — [módulo]
**Perspetiva:** Trader profissional, Bloomberg Terminal user
### 🔴 Bloqueia produtividade
- item: descrição | fix: solução
### 🟡 Degrada experiência
- item: descrição | fix: solução
### 🟢 Quick wins
- item: descrição | fix: solução
### 💡 Features que traders vão adorar
- sugestão baseada em padrões Bloomberg/Reuters