[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-02bed013-ba53-4efa-94ff-5a2f19b34b09":3,"$fQ5JUeL0lycUK0aktcR65OZulpQpPZs4c202K1mgUBLk":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"02bed013-ba53-4efa-94ff-5a2f19b34b09","fp-pipe-ref","管道和流快速参考。当用户需要链式调用函数、组合操作或构建fp-ts中的数据处理管道时使用。","cat_life_career","mod_other","sickn33,other","---\nname: fp-pipe-ref\ndescription: Quick reference for pipe and flow. Use when user needs to chain functions, compose operations, or build data pipelines in fp-ts.\nrisk: unknown\nsource: community\nversion: 1.0.0\ntags: [fp-ts, pipe, flow, composition, quick-reference]\n---\n\n# pipe & flow Quick Reference\n\n## pipe - Transform a Value\n\n```typescript\nimport { pipe } from 'fp-ts\u002Ffunction'\n\n\u002F\u002F pipe(startValue, fn1, fn2, fn3)\n\u002F\u002F = fn3(fn2(fn1(startValue)))\n\nconst result = pipe(\n  '  hello world  ',\n  s => s.trim(),\n  s => s.toUpperCase(),\n  s => s.split(' ')\n)\n\u002F\u002F ['HELLO', 'WORLD']\n```\n\n## flow - Create Reusable Pipeline\n\n```typescript\nimport { flow } from 'fp-ts\u002Ffunction'\n\n\u002F\u002F flow(fn1, fn2, fn3) returns a new function\nconst process = flow(\n  (s: string) => s.trim(),\n  s => s.toUpperCase(),\n  s => s.split(' ')\n)\n\nprocess('  hello world  ') \u002F\u002F ['HELLO', 'WORLD']\nprocess('  foo bar  ')     \u002F\u002F ['FOO', 'BAR']\n```\n\n## When to Use\n| Use | When |\n|-----|------|\n| `pipe` | Transform a specific value now |\n| `flow` | Create reusable transformation |\n\n## With fp-ts Types\n\n```typescript\nimport * as O from 'fp-ts\u002FOption'\nimport * as A from 'fp-ts\u002FArray'\n\n\u002F\u002F Option chain\npipe(\n  O.fromNullable(user),\n  O.map(u => u.email),\n  O.getOrElse(() => 'no email')\n)\n\n\u002F\u002F Array chain\npipe(\n  users,\n  A.filter(u => u.active),\n  A.map(u => u.name)\n)\n```\n\n## Common Pattern\n\n```typescript\n\u002F\u002F Data last enables partial application\nconst getActiveNames = flow(\n  A.filter((u: User) => u.active),\n  A.map(u => u.name)\n)\n\n\u002F\u002F Reuse anywhere\ngetActiveNames(users1)\ngetActiveNames(users2)\n```\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,56,513,"2026-05-16 13:18:42",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"其他","other","mdi-page-next-outline","其他类型Skill",5,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"职场发展","career","mdi-briefcase-outline","面试准备、简历优化、职业规划",4,575,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"99fe5585-2f31-461c-87bd-78be36d72965","1.0.0","fp-pipe-ref.zip",1005,"uploads\u002Fskills\u002F02bed013-ba53-4efa-94ff-5a2f19b34b09\u002Ffp-pipe-ref.zip","ae7b2ed8930764601c109972130262a607aa90e4c401bb813bb52d650057a522","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":1889}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]