원클릭으로
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