fp-pack — скилл
Скилл из пакета fp-pack учит ИИ-ассистента писать код через pipe, SideEffect и каррирование в проектах на TypeScript.
- 112 ★ репозитория
- Последний коммит
- MIT
Минимальный доступ
Почему такой уровень
- Скилл состоит из текстовых правил и примеров, сам ничего не запускает.
Установка
- Работает в
В терминале, через 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 принципа для строгой работы агента с кодом
skills-npm подключает скиллы агентов из зависимостей проекта в node_modules и из поля skills в package.json
55 скиллов для Claude Code, Codex, OpenCode и Pi: ревью кода, аудит безопасности, разработка фич, фронтенд-дизайн и Hugging Face
Личный набор Армина для Pi Coding Agent: 18 скиллов, расширения, команды и темы, часть скиллов переносится в другие агенты
Скилл по Effect v4 для TypeScript: схемы, сервисы и слои, конфигурация, повторы, кэши, потоки, HTTP-клиент и тесты с виртуальным временем
skill-kit собирает скиллы агентов как типизированные конечные автоматы на TypeScript с проверкой ответов схемами
Коротко о 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`).