fp-errors – Coding skill for AI agents
Stop throwing everywhere - handle errors as values using Either and TaskEither for cleaner, more predictable code
Install the fp-errors skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/fp-errors-2e344.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /fp-errors – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/fp-errors-2e344.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $fp-errors – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/fp-errors-2e344.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /fp-errors – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/fp-errors-2e344.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /fp-errors – then describe the task you want done.
SKILL.md content
Practical Error Handling with fp-ts
This skill teaches you how to handle errors without try/catch spaghetti. No academic jargon - just practical patterns for real problems.
The core idea: Errors are just data. Instead of throwing them into the void and hoping someone catches them, return them as values that TypeScript can track.
Detailed Guide
Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
When to Use
- You need to replace exception-heavy code with
EitherorTaskEither. - The task involves validation, domain errors, or clearer error contracts in TypeScript.
- You want pragmatic fp-ts error-handling guidance for real application code.
---
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Type and side-effect boundaries
These are separate fragments, not one compilable module: imports, domain types and application helpers must be supplied. FormData means a custom record with email/password/age fields here, not the browser FormData class. Import Task as T wherever T.of is used and Array as A in the bulk fragment. fp-ts Either can still be ignored; a return type does not force a caller to inspect it. Functions inside map/chain must not throw outside an explicitly wrapped boundary, and TaskEither does not automatically catch every rejection.
JSON parsing or as T checks syntax/type assertions, not runtime shape; decode unknown data using a real schema. Do not use the default-user fallback for authentication/authorization failures. Retry only transient idempotent operations, validate positive integer attempt counts and finite bounded delay, and include SDK retries/deadlines. ApplyPar starts all operations and does not cancel siblings on Left; the bulk example uses sequential tasks to avoid unbounded parallel deletion. Actual mutations still need authorization, tenant checks, idempotency and partial-success reconciliation. Do not expose raw causes, credentials or submitted password values in logs/UI. No TypeScript compilation or service operation was performed.
Related skills
- fp-pragmatic – A practical, jargon-free guide to functional programming - the 80/20 approach that gets…
- fp-react – Practical patterns for using fp-ts with React - hooks, state, forms, data fetching…
- fp-refactor – Comprehensive guide for refactoring imperative TypeScript code to fp-ts functional…
- fp-taskeither-ref – Quick reference for TaskEither. Use when user needs async error handling, API calls, or…
- fp-ts-errors – Handle errors as values using fp-ts Either and TaskEither for cleaner, more predictable…
- fp-ts-pragmatic – A practical, jargon-free guide to fp-ts functional programming - the 80/20 approach that…
- fp-ts-react – Practical patterns for using fp-ts with React - hooks, state, forms, data fetching. Use…
- framework-migration-code-migrate – You are a code migration expert specializing in transitioning codebases between…