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

fp-ts-pragmatic

Faz seu agente explicar a biblioteca fp-ts de forma prática. Ensina a programar em TypeScript sem complicação.

O que ela faz

Este guia ensina como usar a biblioteca fp-ts em TypeScript de forma prática. Ele foca nas partes mais úteis para escrever código mais limpo e fácil de manter, sem se aprofundar em conceitos complexos.

Quando usar

  • ✓Ao começar a usar fp-ts e precisar de exemplos diretos.
  • ✓Ao escrever código TypeScript que lida com valores que podem ser nulos, erros ou operações assíncronas.
  • ✓Ao querer melhorar seu código sem estudar toda a teoria de programação funcional.

Exemplo do que pedir para a IA

“Como posso lidar com valores que podem ser nulos em TypeScript usando fp-ts de forma simples?”

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-ts-pragmatic/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-ts-pragmatic/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele mostra padrões e exemplos de código que aplicam os conceitos essenciais de fp-ts. O foco é na aplicação direta para resolver problemas comuns de programação.

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-ts-pragmatic

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/fp-ts-pragmatic/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.

Programação Funcional Pragmática

Leia isto primeiro. Este guia elimina o jargão acadêmico e mostra o que realmente importa. Sem teoria de categorias. Sem bobagens abstratas. Apenas padrões que tornam seu código melhor.

Guia Detalhado

Leia o guia detalhado antes de executar esta habilidade. Ele retém o procedimento completo e o material de referência. Trate seus requisitos de segurança, pré-requisitos e validação como obrigatórios. Para trabalho focado, carregue as seções relevantes; para trabalho de ponta a ponta, leia o guia completamente.

Quando Usar Esta Habilidade

  • Ao começar com fp-ts e precisar de orientação prática
  • Ao escrever código TypeScript que lida com valores nulos, erros ou operações assíncronas
  • Quando você deseja um código funcional mais limpo e de fácil manutenção, sem a sobrecarga acadêmica
  • Ao refatorar código imperativo para estilo funcional

Quando NÃO Usar FP

Programação funcional nem sempre é a resposta. Veja quando manter a simplicidade.

Verificações Simples de Nulo

// Just use optional chaining - it's built into the language
const city = user?.address?.city ?? 'Unknown'

// DON'T overcomplicate it
const city = pipe(
  O.fromNullable(user),
  O.flatMap(u => O.fromNullable(u.address)),
  O.flatMap(a => O.fromNullable(a.city)),
  O.getOrElse(() => 'Unknown')
)

Loops Simples

// A for loop is fine when you need early exit or complex logic
function findFirst(items: Item[], predicate: (i: Item) => boolean): Item | null {
  for (const item of items) {
    if (predicate(item)) return item
  }
  return null
}

// DON'T force FP when it doesn't help
const result = pipe(
  items,
  A.findFirst(predicate),
  O.toNullable
)

Código Crítico para Desempenho

// For hot paths, imperative is faster (no intermediate arrays)
function sumLarge(numbers: number[]): number {
  let sum = 0
  for (let i = 0; i < numbers.length; i++) {
    sum += numbers[i]
  }
  return sum
}

// fp-ts creates intermediate structures
const sum = pipe(numbers, A.reduce(0, (acc, n) => acc + n))

Quando Sua Equipe Não Conhece FP

Se você for o único que consegue ler o código, não é um bom código.

// If your team knows this pattern
async function getUser(id: string): Promise<User | null> {
  try {
    const response = await fetch(`/api/users/${id}`)
    if (!response.ok) return null
    return await response.json()
  } catch {
    return null
  }
}

// Don't force this on them
const getUser = (id: string): TE.TaskEither<Error, User> =>
  pipe(
    TE.tryCatch(() => fetch(`/api/users/${id}`), E.toError),
    TE.flatMap(r => r.ok ? TE.right(r) : TE.left(new Error('Not found'))),
    TE.flatMap(r => TE.tryCatch(() => r.json(), E.toError))
  )

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.
Perguntas frequentes

O que é fp-ts?

É uma biblioteca para TypeScript que ajuda a escrever código usando princípios de programação funcional, tornando-o mais seguro e organizado.

Quando NÃO devo usar fp-ts?

Evite usar fp-ts para tarefas muito simples como checagens de nulo básicas, loops simples, código que precisa de performance máxima ou se sua equipe não conhece programação funcional.

Preciso ler a documentação completa de fp-ts?

Não, este guia foca nos 20% mais importantes (abordagem 80/20) para você ter resultados rápidos sem a complexidade acadêmica.

Detalhes

Descrição original do autor

A practical, jargon-free guide to fp-ts functional programming - the 80/20 approach that gets results without the academic overhead. Use when writing TypeScript with fp-ts library.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas