fp-taskeither-ref
Faz seu agente dar referências rápidas sobre TaskEither. É útil para lidar com erros em operações assíncronas.
O que ela faz
TaskEither é uma forma de lidar com operações assíncronas (que levam tempo para acontecer) que podem dar errado. Ele garante que os erros sejam tratados de forma clara e organizada.
Quando usar
- ✓Ao fazer chamadas para APIs externas que podem falhar.
- ✓Ao trabalhar com Promises que precisam de tratamento de erro explícito.
- ✓Ao construir sequências de operações assíncronas onde cada passo pode gerar um erro.
Exemplo do que pedir para a IA
“Como posso usar TaskEither para buscar dados de um usuário e garantir que erros de rede ou de formato sejam tratados?”
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
Mensagem pronta para colar
Como funciona
Ele funciona como uma promessa que, em vez de apenas ter sucesso ou falhar, retorna um resultado que pode ser um sucesso (com dados) ou um erro específico. Você pode encadear operações, transformando sucessos ou recuperando de erros.
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-taskeither-refOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/fp-taskeither-ref/SKILL.md -o SKILL.mdConteú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 TaskEither
TaskEither = operação assíncrona que pode falhar. Sua forma é () => Promise<Either<E, A>>: a construção é preguiçosa.
Quando Usar
- Você precisa de uma referência rápida de fp-ts para operações assíncronas que podem falhar.
- A tarefa envolve chamadas de API, encapsulamento de Promise, ou composição de pipelines assíncronos de tratamento de erros.
- Você quer uma folha de cola concisa para operadores e padrões
TaskEither.
Criar
import * as TE from 'fp-ts/TaskEither'
import * as T from 'fp-ts/Task'
TE.right(value) // Async success
TE.left(error) // Async failure
TE.tryCatch(asyncFn, toError) // Promise → TaskEither
TE.fromEither(either) // Either → TaskEither
Transformar
TE.map(fn) // Transform success value
TE.mapLeft(fn) // Transform error
TE.flatMap(fn) // Chain (fn returns TaskEither)
TE.orElse(fn) // Recover from error
Executar
// TaskEither is lazy - must call () to run
const result = await myTaskEither() // Either<E, A>
// Or pattern match
await pipe(
myTaskEither,
TE.match(
(err) => console.error(err),
(val) => console.log(val)
)
)()
Padrões Comuns
import { pipe } from 'fp-ts/function'
import * as TE from 'fp-ts/TaskEither'
import * as T from 'fp-ts/Task'
// Wrap fetch
const fetchUser = (id: string, signal: AbortSignal) => TE.tryCatch(
async () => {
const response = await fetch(`/api/users/${encodeURIComponent(id)}`, { signal })
if (!response.ok) throw new Error(`HTTP ${response.status}`)
const body: unknown = await response.json()
return validateUser(body) // Application schema validator; throws on invalid data
},
(e) => ({ type: 'NETWORK_ERROR', message: String(e) })
)
// Chain async calls
pipe(
fetchUser('123', signal),
TE.flatMap(user => fetchPosts(user.id)),
TE.map(posts => posts.length)
)
// Parallel calls
import { sequenceT } from 'fp-ts/Apply'
sequenceT(TE.ApplyPar)(
fetchUser('1', signal),
fetchPosts('1'),
fetchComments('1')
)
// With recovery
pipe(
fetchUser('123', signal),
TE.orElse(() => TE.right(defaultUser)),
TE.getOrElse(() => T.of(defaultUser))
)
vs async/await
// ❌ async/await - errors hidden
async function getUser(id: string) {
try {
const res = await fetch(`/api/users/${id}`)
return await res.json()
} catch (e) {
return null // Error info lost
}
}
// ✅ TaskEither - errors typed and composable
const getUser = (id: string, signal: AbortSignal) => pipe(
TE.tryCatch(() => fetch(`/api/users/${encodeURIComponent(id)}`, { signal }), toNetworkError),
TE.flatMap(res => TE.tryCatch(async () => {
if (!res.ok) throw new Error(`HTTP ${res.status}`)
return validateUser(await res.json())
}, toParseError))
)
Use TaskEither quando você precisar de erros tipados para operações assíncronas.
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 faltarem entradas necessárias, permissões, limites de segurança ou critérios de sucesso.
Escopo de Referência
Estes são fragmentos de fp-ts 2.x. Forneça variáveis de aplicação, tipos, validadores e importações, 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.
Forneça um timeout/sinal de abortamento de propriedade do chamador e valide esquemas de resposta. Chamadas de aplicação paralelas precisam de concorrência limitada e autorização para seus dados, custos e efeitos; ApplyPar não cancela o trabalho automaticamente em caso de falha. Callbacks de erro devem redigir segredos e payloads privados.
API Oficial: Módulos fp-ts.
Perguntas frequentes
O que significa 'construção é lazy'?
Significa que a operação só é executada quando você explicitamente a chama, não no momento em que a define.
Qual a diferença entre `map` e `flatMap`?
`map` transforma o valor de sucesso, mas o resultado ainda é um TaskEither. `flatMap` encadeia operações, onde a função passada também retorna um TaskEither, permitindo sequências mais complexas.
Como eu executo a operação?
Você precisa chamar a função definida (ela retorna uma Promise) e usar `await` para obter o resultado, que será um `Either` (sucesso ou erro).
Detalhes
Descrição original do autor
Quick reference for TaskEither. Use when user needs async error handling, API calls, or Promise-based operations that can fail.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3034
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC