[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EEWK9ASWC4YMYJ9KBNNPR0":3,"skill-same:01M6EEWK9ASWC4YMYJ9KBNNPR0":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6EEWK9ASWC4YMYJ9KBNNPR0","effect-platform",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Feffect-platform\u002FSKILL.md",[],[18,19,20],"effect","platform","effect platform","2026-11-10 10:12:30",false,"# Effect Platform — Production TypeScript Framework\n\nYou are an expert in Effect (Effect-TS), the production-grade TypeScript framework for building reliable, composable applications. You help developers write type-safe code with structured error handling (typed errors in the type signature), dependency injection, concurrency, retries, scheduling, streaming, schema validation, and built-in observability — replacing scattered libraries (zod, retry, pino, awilix) with a single coherent platform.\n\n## Core Capabilities\n\n### Typed Errors and Effects\n\n```typescript\nimport { Effect, pipe } from \"effect\";\nimport { Schema } from \"@effect\u002Fschema\";\n\n\u002F\u002F Typed errors — compiler knows exactly what can fail\nclass UserNotFound extends Schema.TaggedError\u003CUserNotFound>()(\"UserNotFound\", {\n  userId: Schema.String,\n}) {}\n\nclass DatabaseError extends Schema.TaggedError\u003CDatabaseError>()(\"DatabaseError\", {\n  message: Schema.String,\n}) {}\n\nclass ValidationError extends Schema.TaggedError\u003CValidationError>()(\"ValidationError\", {\n  field: Schema.String,\n  reason: Schema.String,\n}) {}\n\n\u002F\u002F Function signature tells you: returns User, can fail with UserNotFound | DatabaseError\nfunction getUser(id: string): Effect.Effect\u003CUser, UserNotFound | DatabaseError> {\n  return pipe(\n    Effect.tryPromise({\n      try: () => db.users.findUnique({ where: { id } }),\n      catch: (e) => new DatabaseError({ message: String(e) }),\n    }),\n    Effect.flatMap((user) =>\n      user ? Effect.succeed(user) : Effect.fail(new UserNotFound({ userId: id })),\n    ),\n  );\n}\n\n\u002F\u002F Compose effects — errors propagate and accumulate in the type\nfunction getUserProfile(id: string): Effect.Effect\u003C\n  UserProfile,\n  UserNotFound | DatabaseError | ValidationError  \u002F\u002F Compiler tracks all possible errors\n> {\n  return pipe(\n    getUser(id),\n    Effect.flatMap((user) => getPreferences(user.id)),\n    Effect.map((prefs) => ({ ...user, preferences: prefs })),\n  );\n}\n\n\u002F\u002F Handle errors exhaustively\nconst program = pipe(\n  getUserProfile(\"user-42\"),\n  Effect.catchTags({\n    UserNotFound: (e) => Effect.succeed({ error: \"User not found\", userId: e.userId }),\n    DatabaseError: (e) => Effect.die(e),   \u002F\u002F Unrecoverable — crash\n    ValidationError: (e) => Effect.succeed({ error: `Invalid ${e.field}: ${e.reason}` }),\n  }),\n);\n\n\u002F\u002F Run\nconst result = await Effect.runPromise(program);\n```\n\n### Dependency Injection (Layers)\n\n```typescript\nimport { Effect, Context, Layer } from \"effect\";\n\n\u002F\u002F Define service interfaces\nclass Database extends Context.Tag(\"Database\")\u003CDatabase, {\n  readonly query: (sql: string) => Effect.Effect\u003Cany[], DatabaseError>;\n}>() {}\n\nclass EmailService extends Context.Tag(\"EmailService\")\u003CEmailService, {\n  readonly send: (to: string, subject: string, body: string) => Effect.Effect\u003Cvoid>;\n}>() {}\n\n\u002F\u002F Use services in your effects\nfunction createUser(data: CreateUserInput) {\n  return Effect.gen(function* () {\n    const db = yield* Database;\n    const email = yield* EmailService;\n\n    const [user] = yield* db.query(\"INSERT INTO users ...\");\n    yield* email.send(data.email, \"Welcome!\", \"Thanks for signing up\");\n\n    return user;\n  });\n}\n\n\u002F\u002F Provide implementations via Layers\nconst DatabaseLive = Layer.succeed(Database, {\n  query: (sql) => Effect.tryPromise({ try: () => pool.query(sql), catch: (e) => new DatabaseError({ message: String(e) }) }),\n});\n\nconst EmailLive = Layer.succeed(EmailService, {\n  send: (to, subject, body) => Effect.promise(() => resend.emails.send({ to, subject, html: body })),\n});\n\n\u002F\u002F Compose and run\nconst AppLayer = Layer.merge(DatabaseLive, EmailLive);\nawait Effect.runPromise(pipe(createUser(input), Effect.provide(AppLayer)));\n```\n\n### Concurrency and Retries\n\n```typescript\nimport { Effect, Schedule } from \"effect\";\n\n\u002F\u002F Retry with exponential backoff\nconst reliableCall = pipe(\n  callExternalApi(),\n  Effect.retry(\n    Schedule.exponential(\"100 millis\").pipe(\n      Schedule.compose(Schedule.recurs(5)),   \u002F\u002F Max 5 retries\n      Schedule.jittered,                      \u002F\u002F Add randomness\n    ),\n  ),\n);\n\n\u002F\u002F Concurrent execution with limits\nconst results = yield* Effect.forEach(\n  userIds,\n  (id) => fetchUserData(id),\n  { concurrency: 10 },                       \u002F\u002F Max 10 concurrent\n);\n\n\u002F\u002F Race — first to complete wins\nconst fastest = yield* Effect.race(\n  fetchFromPrimary(query),\n  fetchFromReplica(query),\n);\n\n\u002F\u002F Timeout\nconst withTimeout = pipe(\n  longRunningTask(),\n  Effect.timeout(\"5 seconds\"),\n);\n```\n\n## Installation\n\n```bash\nnpm install effect @effect\u002Fschema @effect\u002Fplatform\n```\n\n## Best Practices\n\n1. **Typed errors** — Errors in the type signature; compiler enforces exhaustive handling; no forgotten catch blocks\n2. **Effect.gen** — Use generator syntax for readable async-like code; `yield*` instead of `await`\n3. **Layers for DI** — Define services with `Context.Tag`; swap implementations for testing without mocks\n4. **Schema validation** — Use `@effect\u002Fschema` instead of Zod; integrates with Effect error channel\n5. **Retry policies** — Use `Schedule` for retry, backoff, jitter; declarative, composable\n6. **Concurrency** — Use `Effect.forEach` with `concurrency` option; bounded parallelism built-in\n7. **Streaming** — Use `Stream` for processing large datasets; backpressure, transformation, batching\n8. **Observability** — Built-in tracing and metrics via OpenTelemetry; no additional instrumentation code\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Feffect-platform",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill effect-platform",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill effect-platform",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill effect-platform","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Feffect-platform\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]