Pular para o conteúdo
Skillpedia
Código em geral48 mil · #3027

fp-either-ref

Ajuda seu agente a lidar com erros de forma segura. É útil para gerenciar operações que podem falhar, tornando o código mais confiável.

O que ela faz

Esta ferramenta ajuda a lidar com erros em programas de computador de forma organizada. Ela permite que você saiba se algo deu certo (com um valor) ou deu errado (com uma mensagem de erro específica), sem que o programa pare de funcionar inesperadamente.

Quando usar

  • ✓Quando você precisa verificar se um dado está correto antes de usá-lo.
  • ✓Ao realizar uma operação que pode falhar, como ler um arquivo.
  • ✓Para transformar um código que pode gerar erros em um formato que o programa entende como 'sucesso' ou 'falha'.

Exemplo do que pedir para a IA

“Como posso verificar se um email é válido e, se não for, mostrar uma mensagem de erro clara?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/fp-either-ref/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/fp-either-ref/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela funciona definindo dois caminhos: um para o sucesso (com o resultado esperado) e outro para o erro (com a descrição do problema). Você pode então escolher qual caminho seguir dependendo do resultado.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill fp-either-ref

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/fp-either-ref/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Referência Rápida de Either

Either = sucesso ou falha. Right(value) ou Left(error).

Quando Usar

  • Você precisa de uma referência rápida de fp-ts para tratamento de erros síncronos tipados.
  • A tarefa envolve validação, operações falíveis ou conversão de código que lança exceções para Either.
  • Você quer um resumo conciso em vez de um tutorial longo.

Criar

import * as E from 'fp-ts/Either'

E.right(value)           // Success
E.left(error)            // Failure
E.fromNullable(err)(x)   // null → Left(err), else Right(x)
E.tryCatch(fn, toError)  // try/catch → Either

Transformar

E.map(fn)                // Transform Right value
E.mapLeft(fn)            // Transform Left error
E.flatMap(fn)            // Chain (fn returns Either)
E.filterOrElse(pred, toErr) // Right → Left if pred fails

Extrair

E.getOrElse(err => fallbackValue)  // Get Right or default
E.match(onLeft, onRight)     // Pattern match
E.toUnion(either)            // E | A (loses type info)

Padrões Comuns

import { pipe, identity } from 'fp-ts/function'
import * as E from 'fp-ts/Either'

// Toy validation; an @ check is not complete email validation
const validateEmail = (s: string): E.Either<string, string> =>
  s.includes('@') ? E.right(s) : E.left('Invalid email')

// Chain validations (stops at first error)
pipe(
  E.right({ email: 'test@example.com', age: 25 }),
  E.flatMap(d => pipe(validateEmail(d.email), E.map(() => d))),
  E.flatMap(d => d.age >= 18 ? E.right(d) : E.left('Must be 18+'))
)

// Convert throwing code
const parseJson = (s: string) => E.tryCatch(
  () => JSON.parse(s),
  (e) => `Parse error: ${e}`
)

vs try/catch

// ❌ try/catch - errors not in types
try {
  const data = JSON.parse(input)
  process(data)
} catch (e) {
  handleError(e)
}

// ✅ Either - errors explicit in types
pipe(
  E.tryCatch(() => JSON.parse(input), String),
  E.flatMap(data => E.tryCatch(() => process(data), String)),
  E.match(handleError, identity)
)

Use Either quando o tipo de erro importa e você quer encadear operações.

Limitações

  • Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
  • Não trate a saída como substituta para validação específica do ambiente, testes ou revisão de especialistas.
  • Pare e peça esclarecimentos se os inputs necessários, permissões, limites de segurança ou critérios de sucesso estiverem faltando.

Escopo de Referência

Estes são fragmentos de fp-ts 2.x. Forneça variáveis de aplicação, tipos, validadores e imports, e verifique a versão instalada. map não captura exceções lançadas. Task não tem um canal de erro tipado; uma promise incorretamente encapsulada ainda pode rejeitar. Use tryCatch em limites falíveis.

API Oficial: Módulos fp-ts.

Perguntas frequentes

Qual a diferença entre 'Right' e 'Left'?

'Right' representa o sucesso, contendo o valor que você esperava. 'Left' representa o erro, contendo a mensagem ou o tipo de erro que ocorreu.

Posso usar isso com código que pode dar erro (como ler um arquivo)?

Sim, a ferramenta tem uma função específica (`tryCatch`) para transformar operações que podem gerar erros em um resultado 'Right' (sucesso) ou 'Left' (erro).

Como eu pego o resultado final se ele pode ser um sucesso ou um erro?

Você pode usar funções como `getOrElse` para definir um valor padrão caso ocorra um erro, ou `match` para executar ações diferentes dependendo se foi sucesso ou erro.

Detalhes

Descrição original do autor

Quick reference for Either type. Use when user needs error handling, validation, or operations that can fail with typed errors.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3027
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas