fp-pack — скилл

Скилл из пакета fp-pack учит ИИ-ассистента писать код через pipe, SideEffect и каррирование в проектах на TypeScript.

  • 112 ★ репозитория
  • Последний коммит
  • MIT
Скилл

Минимальный доступ

Почему такой уровень

  • Скилл состоит из текстовых правил и примеров, сам ничего не запускает.
Все причины и проверки

superlucky84/fp-pack

Установка

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/fp-pack

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Минимальный доступИнструмент ничего не запускает и не ходит в сеть.

  • Скилл состоит из текстовых правил и примеров, сам ничего не запускает.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

fp-pack — функциональный набор утилит для JavaScript и TypeScript с центром на `pipe` и `pipeAsync`. В составе пакета идет скилл для ИИ-ассистентов: после копирования папки в `.claude/skills/fp-pack` или `~/.codex/skills/fp-pack` агент автоматически пишет код в стиле fp-pack. Скилл объясняет, как собирать конвейеры из чистых функций через `pipe` и `pipeAsync`, а при необходимости раннего выхода и обработки ошибок переходить на `pipeSideEffect` и `pipeAsyncSideEffect`. Вместо try-catch в нем описан шаблон `SideEffect`, для больших наборов данных советуются функции `stream/*`. Скилл включается, только если fp-pack установлен в проекте: он проверяет зависимости в `package.json`, наличие `node_modules/fp-pack` и импорты. Папка содержит ограничения, справочники по композиции, каррированию и выводу типов и примеры. Для агентов с системным промптом есть отдельная глобальная надстройка.

Для кого. TypeScript-разработчикам на fp-pack, которые хотят, чтобы Claude Code, Codex или Copilot писали код в одном функциональном стиле с командой.

Подходит, если

  • Проект уже использует fp-pack, а агент пишет циклы и try-catch вместо конвейеров.
  • Нужно заменить исключения шаблоном SideEffect с ранним выходом.
  • Большой набор данных надо обрабатывать лениво через `stream/*`.
  • Команда переходит на pipe и хочет единые правила для всех ассистентов.

Не подходит, если

  • В проекте нет fp-pack, и скилл по правилам не включается.
  • Код пишется в объектно-ориентированном стиле с классами и исключениями.
  • Нужно обучить агента другой функциональной библиотеке, например Ramda.

Пример запроса к агенту

Перепиши эту функцию обработки заказов на pipeAsync из fp-pack с SideEffect для ошибок и ранним выходом.

Ограничения

Скилл лежит внутри собранного пакета: путь `node_modules/fp-pack/dist/skills/fp-pack/` появляется после `npm install fp-pack`, и папку нужно скопировать в каталог скиллов вручную. Для Windows в README есть команды PowerShell. Правила включаются только в проектах с fp-pack, поэтому общих советов по функциональному программированию скилл не дает. Устаревшие имена с суффиксом Strict остаются алиасами до версии 1.0, и скилл рассчитан на актуальные имена из релиза 0.15.

Как отключить. Удалите папку `fp-pack` из `.claude/skills` или `~/.codex/skills`. Сам пакет убирают командой `npm uninstall fp-pack`.

Частые вопросы

Как поставить скилл fp-pack?

Выполните `npm install fp-pack`, затем скопируйте `node_modules/fp-pack/dist/skills/fp-pack/` в `.claude/skills/fp-pack`. Для Codex целевая папка `~/.codex/skills/fp-pack`.

Когда скилл включается?

Только если в проекте установлен fp-pack: агент ищет зависимость в `package.json`, папку `node_modules/fp-pack` и импорты из `fp-pack` или `fp-pack/stream`.

Чем pipeSideEffect отличается от pipe?

`pipe` собирает чистые преобразования, а `pipeSideEffect` и `pipeAsyncSideEffect` нужны, когда участвует SideEffect и конвейер должен выйти раньше времени.

Есть ли вариант для агента без скиллов?

Да. Для агентов с системным промптом, например OpenCode, есть глобальная надстройка `fp-pack-agent-addon.md` в `node_modules/fp-pack/dist/ai-addons/`.

Что внутри папки скилла?

`SKILL.md`, каталоги `constraints` с правилами и частыми ошибками, `reference` по композиции, каррированию и типам и `examples` с короткими примерами.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Зеркало набора pstack Лорен Тан из Cursor: больше 50 скиллов, режим poteto-mode с 23 сценариями работы и 24 принципа для строгой работы агента с кодом

СкиллШирокий доступ4,1 тыс.Звезды репозитория

skills-npm подключает скиллы агентов из зависимостей проекта в node_modules и из поля skills в package.json

CLIРасширенный доступ582Звезды репозитория

55 скиллов для Claude Code, Codex, OpenCode и Pi: ревью кода, аудит безопасности, разработка фич, фронтенд-дизайн и Hugging Face

ПлагинШирокий доступ554Звезды репозитория

Личный набор Армина для Pi Coding Agent: 18 скиллов, расширения, команды и темы, часть скиллов переносится в другие агенты

СкиллШирокий доступ3,2 тыс.Звезды репозитория

Скилл по Effect v4 для TypeScript: схемы, сервисы и слои, конфигурация, повторы, кэши, потоки, HTTP-клиент и тесты с виртуальным временем

СкиллМинимальный доступ355Звезды репозитория
Официальный

skill-kit собирает скиллы агентов как типизированные конечные автоматы на TypeScript с проверкой ответов схемами

CLIМинимальный доступ70Звезды репозитория

Коротко о README

Библиотека без монад и лишних оберток: функции, pipe и каррирование, плюс шаблон SideEffect для обработки ошибок. Скилл распространяется вместе с пакетом, поэтому версии правил и API совпадают.

Бейдж для README

Исходный SKILL.md

---
name: fp-pack
description: Use when working in projects that use fp-pack; follow pipe, SideEffect, and curry guidelines.
metadata:
  short-description: fp-pack workflow
  version: {{version}}
---

# fp-pack AI Agent Skills

Document Version: {{version}}

Additional materials (optional):
- constraints/ (rules, mistakes, troubleshooting)
- reference/ (composition, currying, TypeScript inference)
- examples/ (quick examples)

## ⚠️ Activation Condition (Read First)

These guidelines apply **only when `fp-pack` is installed** in the current project.

Before following this document:
- Check `package.json` for `fp-pack` in dependencies/devDependencies
- Check `node_modules/fp-pack` exists
- Check existing code imports from `fp-pack` or `fp-pack/stream`

If `fp-pack` is **not** installed, use the project's existing conventions. Do **not** suggest adding fp-pack unless the user asks.

---

## Core Rules (Keep In Memory)

- Use `pipe`/`pipeAsync` for 2+ steps; for a single step, call the function directly.
- Every pipe checks each step; do not use the deprecated `*Strict` variants (`pipeStrict`, `pipeAsyncStrict`, `pipeSideEffectStrict`, `pipeAsyncSideEffectStrict`).
- Prefer value-first: `pipe(value, ...)` / `pipeAsync(value, ...)` runs immediately and improves inference (the input anchors types). Use functions-first only when you need a reusable pipeline.
- Let pipe infer intermediate parameters; do not add assertions to silence a broken chain. Contextual inference covers 32 steps after the first argument. Compose smaller pipelines beyond that limit; longer already typed chains remain checked.
- `pipeWithDeps` infers intermediate values and intersects dependency contracts. Default and deprecated variants have identical checks. Annotate the dependency contract where needed, not every value parameter.
- If the first arg is a function, it's treated as composition; wrap function values with `from()`.
- Keep pipeline functions **unary**; prefer data-last, curried helpers.
- `map`/`filter` are for arrays/iterables, not single values.
- Use `from()` only for constants or 0-arg pipelines (including function values you need to pass as data). Otherwise pass data as the first argument.
- Use `pipeSideEffect*` only when you need early exit; otherwise use `pipe`/`pipeAsync`.
- Never call `runPipeResult`/`matchSideEffect` inside pipelines; call at boundaries.
- Prefer `isSideEffect` for precise narrowing; `runPipeResult` for unwrapping (pipe results are precise; use generics only for values you widened yourself).
- `SideEffect` is an instance type: use `SideEffect<E>` (not `typeof SideEffect`).

Сообщить о проблеме