[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5J0ASMJ14EAMGW41KX625":3,"skill-same:01M6C5J0ASMJ14EAMGW41KX625":101},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6C5J0ASMJ14EAMGW41KX625","effect",null,"Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.","enitrat\u002Fskill-issue","enitrat","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F60658558?v=4","01M6C5DN0YTJB6NXS03S04T198","Mathieu","01M6C5DN4PTVWBXYHHJBAXF2CW",15,"MIT","https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29],"typescript","workflows","http","examples","repository","services","Production","applications","guide","use","version","2026-11-10 10:12:30",false,"---\nname: effect\ndescription: |\n  Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.\nlicense: MIT\ncompatibility: Requires Effect v4. Examples are reviewed against the version documented in this repository.\n---\n\n# Effect\n\nUse current Effect v4 APIs and the production defaults in this skill. Established project conventions still take precedence unless the task is explicitly changing them.\n\n## Source Rule\n\nReviewed against Effect **4.0.0**, upstream commit\n[`6389d9ac6`](https:\u002F\u002Fgithub.com\u002FEffect-TS\u002Feffect\u002Ftree\u002F6389d9ac64c0f62ccc8b575fb9afc65fc104e814).\nRead `references\u002FV4_APIS.md` when upgrading from v3 or a v4 prerelease.\nThe installed version takes precedence: prerelease APIs and import paths can differ.\n\nCheck these before guessing:\n\n- the nearest `AGENTS.md` and any project-local Effect practices doc\n- the project-pinned `effect` package source and version\n- current upstream Effect source when the installed package does not answer the question\n\n## Branch Chooser\n\nRead only the branch references that match the task.\n\n- Data models, schemas, brands, variants, optional keys, or decoders: read `references\u002FSCHEMA.md`.\n- Services, module surfaces, layers, runtime wiring, errors, `Effect.fn`, or test services: read `references\u002FSERVICES_LAYERS.md`.\n- Runtime config, env variables, `ConfigProvider`, or `layerConfig`: read `references\u002FCONFIG.md`.\n- Retry, repeat, polling, backoff, jitter, rate-limit-aware policies, or pass loops: read `references\u002FSCHEDULING.md`.\n- Memoization, per-key TTL caches, deduplicating concurrent lookups, or request batching: read `references\u002FCACHING.md`.\n- Streams, event sources, async iterables, queues\u002Fpubsubs, pagination, backpressure, or stream consumers: read `references\u002FSTREAMS.md`.\n- Outgoing HTTP calls, Effect HttpClient, status handling, or HTTP rate limiting: read `references\u002FHTTP_CLIENTS.md`.\n- Effect tests, time, sleeps, concurrency synchronization, or fakes: read `references\u002FTESTING.md`.\n\nIf a task spans several branches, read all matching files before editing.\n\n## Core Defaults\n\n- Compose workflows with `Effect.gen(function* () { ... })`.\n- Define public service methods and non-trivial internal service methods with `Effect.fn(\"Domain.operation\")`.\n- Use `Effect.fnUntraced` only for internal helpers where stack-frame\u002Fspan metadata is intentionally unnecessary.\n- Prefer `Context.Service` for application services when the codebase has not standardized on another current service-tag style.\n- Build real service implementations with `Layer.effect(Service, Effect.gen(...))` and return `Service.of({ ... })`.\n- Model records with `Schema.Struct(...)` plus a same-name `interface`.\n- Model typed Effect errors with `Schema.TaggedError`.\n- Read runtime config through `Config`, not direct `process.env` access in application logic.\n- Use `Schedule` for retry, repeat, polling, pacing, and backoff policies.\n- Use `Stream` for effectful sources that emit many values over time and need pull, backpressure, interruption, or transformation.\n- Prefer Effect HTTP client modules for outgoing HTTP in Effect applications when their typed errors, layers, and client transforms are useful.\n- Prefer Effect-aware tests, explicit layers, and deterministic synchronization over sleeps.\n- Decode unknown wire input with `Schema.decodeUnknownEffect(...)`; use `schema.makeEffect(...)` for typed constructor input with validation. Reserve throwing `schema.make(...)` for trusted construction, and never use casts to skip validation.\n\n## Quick Selection Guide\n\n- Ordinary object record: `Schema.Struct(...)` plus same-name `interface`.\n- Scalar ID\u002Fvalue object: constrained branded schema.\n- Internal workflow decision or state: `Data.TaggedEnum\u003C...>` plus `Data.taggedEnum\u003C...>()` constructors and exhaustive `$match`.\n- Reusable boundary-crossing tagged variant: `Schema.TaggedStruct(...)` plus same-name `interface`.\n- Boundary-crossing tagged union: `Schema.TaggedUnion(...)` with `.cases`, `.guards`, and `.match`.\n- External\u002Fcustom discriminator such as `type`: `Schema.Struct({ type: Schema.tag(\"variant\"), ... })` plus `Schema.toTaggedUnion(\"type\")` when union helpers are needed.\n- Expected typed failure: `Schema.TaggedError`.\n- Unknown boundary payload: `Schema.decodeUnknownEffect(...)`.\n- Service boundary: `Context.Service\u003CService, Interface>()(...)` plus `Layer.effect(...)` plus `Service.of(...)`.\n- Public or non-trivial internal service method: `Effect.fn(\"Domain.operation\")`.\n- Runtime configuration: `Config` recipes read in layers; override with `ConfigProvider` in tests.\n- Event source: `Stream` consumed with `Stream.runForEach(...)` and forked with `Effect.forkScoped` in the owning layer.\n- Queue-backed event source: `Queue` for the producer boundary, `Stream.fromQueue(...)` for consumers.\n- Broadcast event source: `PubSub` \u002F `Stream.fromPubSub(...)` or `SubscriptionRef` for latest-value state.\n- Polling worker: `runPass().pipe(Effect.repeat(Schedule.spaced(...)))`, with typed pass failures handled before repeat.\n- Retry transient operation: `Effect.retry(...)` \u002F `Effect.retryOrElse(...)` with a bounded `Schedule`.\n- Keyed lookup cache with TTL and concurrent-lookup dedupe: prefer `Cache.make(...)` \u002F exit-aware `Cache.makeWith(...)` when their lifecycle and eviction model fit.\n- Memoize a single effect result: `Effect.cached(...)` \u002F `Effect.cachedWithTTL(...)`.\n- Batch N keys into one backend call (only when a real batch endpoint exists): `Effect.request(...)` + `RequestResolver`.\n- HTTP request in an Effect application: prefer Effect `HttpClient` plus request\u002Fresponse schema decoding.\n- HTTP transient retry: `HttpClient.retryTransient(...)`.\n- Time-sensitive test: `TestClock`, not real sleeping.\n- Concurrent\u002Fbackground test synchronization: `Deferred`, `Queue`, `Latch`, `Ref`, or explicit test hooks.\n\n## Boundary Rules\n\n- Keep HTTP handlers thin: decode input, read context, call services, map typed errors to transport responses.\n- Keep business rules in services or domain functions, not transport handlers.\n- Wrap HTTP clients, SDKs, CLIs, and external integrations in named effects at adapter boundaries.\n- Decode persisted rows with Schema or SQL-specific helpers when values are not trivially trusted.\n- Keep provider\u002Fnetwork calls outside authoritative database transactions.\n- Catch or retry only when the current boundary has a truthful response.\n- Retry only when the operation has proven idempotency.\n- Let exhausted failures remain visible unless the boundary has a real fallback.\n\n## Do Nots\n\n- Do not use `as any`, non-null assertions, or unchecked casts to silence Effect typing problems.\n- Do not introduce `Schema.Class` or `Schema.TaggedClass` as default app data-modeling patterns.\n- Do not hand-roll `_tag` error classes when `Schema.TaggedError` fits.\n- Do not use cause-level recovery when typed-error recovery is enough.\n- Do not use `Layer.mergeAll(...)` or `provideMerge(...)` as blind make-it-compile tools.\n- Do not hide required application authority, credentials, persistence, transports, or external services behind `Context.Reference` defaults.\n- Do not add arbitrary `Effect.sleep(...)` to tests when a deterministic synchronization primitive is available.\n- Do not hand-roll Map\u002FTTL\u002Fprune caches or in-flight dedupe when `effect\u002FCache` fits.\n","# Effect\n\nUse current Effect v4 APIs and the production defaults in this skill. Established project conventions still take precedence unless the task is explicitly changing them.\n\n## Source Rule\n\nReviewed against Effect **4.0.0**, upstream commit\n[`6389d9ac6`](https:\u002F\u002Fgithub.com\u002FEffect-TS\u002Feffect\u002Ftree\u002F6389d9ac64c0f62ccc8b575fb9afc65fc104e814).\nRead `references\u002FV4_APIS.md` when upgrading from v3 or a v4 prerelease.\nThe installed version takes precedence: prerelease APIs and import paths can differ.\n\nCheck these before guessing:\n\n- the nearest `AGENTS.md` and any project-local Effect practices doc\n- the project-pinned `effect` package source and version\n- current upstream Effect source when the installed package does not answer the question\n\n## Branch Chooser\n\nRead only the branch references that match the task.\n\n- Data models, schemas, brands, variants, optional keys, or decoders: read `references\u002FSCHEMA.md`.\n- Services, module surfaces, layers, runtime wiring, errors, `Effect.fn`, or test services: read `references\u002FSERVICES_LAYERS.md`.\n- Runtime config, env variables, `ConfigProvider`, or `layerConfig`: read `references\u002FCONFIG.md`.\n- Retry, repeat, polling, backoff, jitter, rate-limit-aware policies, or pass loops: read `references\u002FSCHEDULING.md`.\n- Memoization, per-key TTL caches, deduplicating concurrent lookups, or request batching: read `references\u002FCACHING.md`.\n- Streams, event sources, async iterables, queues\u002Fpubsubs, pagination, backpressure, or stream consumers: read `references\u002FSTREAMS.md`.\n- Outgoing HTTP calls, Effect HttpClient, status handling, or HTTP rate limiting: read `references\u002FHTTP_CLIENTS.md`.\n- Effect tests, time, sleeps, concurrency synchronization, or fakes: read `references\u002FTESTING.md`.\n\nIf a task spans several branches, read all matching files before editing.\n\n## Core Defaults\n\n- Compose workflows with `Effect.gen(function* () { ... })`.\n- Define public service methods and non-trivial internal service methods with `Effect.fn(\"Domain.operation\")`.\n- Use `Effect.fnUntraced` only for internal helpers where stack-frame\u002Fspan metadata is intentionally unnecessary.\n- Prefer `Context.Service` for application services when the codebase has not standardized on another current service-tag style.\n- Build real service implementations with `Layer.effect(Service, Effect.gen(...))` and return `Service.of({ ... })`.\n- Model records with `Schema.Struct(...)` plus a same-name `interface`.\n- Model typed Effect errors with `Schema.TaggedError`.\n- Read runtime config through `Config`, not direct `process.env` access in application logic.\n- Use `Schedule` for retry, repeat, polling, pacing, and backoff policies.\n- Use `Stream` for effectful sources that emit many values over time and need pull, backpressure, interruption, or transformation.\n- Prefer Effect HTTP client modules for outgoing HTTP in Effect applications when their typed errors, layers, and client transforms are useful.\n- Prefer Effect-aware tests, explicit layers, and deterministic synchronization over sleeps.\n- Decode unknown wire input with `Schema.decodeUnknownEffect(...)`; use `schema.makeEffect(...)` for typed constructor input with validation. Reserve throwing `schema.make(...)` for trusted construction, and never use casts to skip validation.\n\n## Quick Selection Guide\n\n- Ordinary object record: `Schema.Struct(...)` plus same-name `interface`.\n- Scalar ID\u002Fvalue object: constrained branded schema.\n- Internal workflow decision or state: `Data.TaggedEnum\u003C...>` plus `Data.taggedEnum\u003C...>()` constructors and exhaustive `$match`.\n- Reusable boundary-crossing tagged variant: `Schema.TaggedStruct(...)` plus same-name `interface`.\n- Boundary-crossing tagged union: `Schema.TaggedUnion(...)` with `.cases`, `.guards`, and `.match`.\n- External\u002Fcustom discriminator such as `type`: `Schema.Struct({ type: Schema.tag(\"variant\"), ... })` plus `Schema.toTaggedUnion(\"type\")` when union helpers are needed.\n- Expected typed failure: `Schema.TaggedError`.\n- Unknown boundary payload: `Schema.decodeUnknownEffect(...)`.\n- Service boundary: `Context.Service\u003CService, Interface>()(...)` plus `Layer.effect(...)` plus `Service.of(...)`.\n- Public or non-trivial internal service method: `Effect.fn(\"Domain.operation\")`.\n- Runtime configuration: `Config` recipes read in layers; override with `ConfigProvider` in tests.\n- Event source: `Stream` consumed with `Stream.runForEach(...)` and forked with `Effect.forkScoped` in the owning layer.\n- Queue-backed event source: `Queue` for the producer boundary, `Stream.fromQueue(...)` for consumers.\n- Broadcast event source: `PubSub` \u002F `Stream.fromPubSub(...)` or `SubscriptionRef` for latest-value state.\n- Polling worker: `runPass().pipe(Effect.repeat(Schedule.spaced(...)))`, with typed pass failures handled before repeat.\n- Retry transient operation: `Effect.retry(...)` \u002F `Effect.retryOrElse(...)` with a bounded `Schedule`.\n- Keyed lookup cache with TTL and concurrent-lookup dedupe: prefer `Cache.make(...)` \u002F exit-aware `Cache.makeWith(...)` when their lifecycle and eviction model fit.\n- Memoize a single effect result: `Effect.cached(...)` \u002F `Effect.cachedWithTTL(...)`.\n- Batch N keys into one backend call (only when a real batch endpoint exists): `Effect.request(...)` + `RequestResolver`.\n- HTTP request in an Effect application: prefer Effect `HttpClient` plus request\u002Fresponse schema decoding.\n- HTTP transient retry: `HttpClient.retryTransient(...)`.\n- Time-sensitive test: `TestClock`, not real sleeping.\n- Concurrent\u002Fbackground test synchronization: `Deferred`, `Queue`, `Latch`, `Ref`, or explicit test hooks.\n\n## Boundary Rules\n\n- Keep HTTP handlers thin: decode input, read context, call services, map typed errors to transport responses.\n- Keep business rules in services or domain functions, not transport handlers.\n- Wrap HTTP clients, SDKs, CLIs, and external integrations in named effects at adapter boundaries.\n- Decode persisted rows with Schema or SQL-specific helpers when values are not trivially trusted.\n- Keep provider\u002Fnetwork calls outside authoritative database transactions.\n- Catch or retry only when the current boundary has a truthful response.\n- Retry only when the operation has proven idempotency.\n- Let exhausted failures remain visible unless the boundary has a real fallback.\n\n## Do Nots\n\n- Do not use `as any`, non-null assertions, or unchecked casts to silence Effect typing problems.\n- Do not introduce `Schema.Class` or `Schema.TaggedClass` as default app data-modeling patterns.\n- Do not hand-roll `_tag` error classes when `Schema.TaggedError` fits.\n- Do not use cause-level recovery when typed-error recovery is enough.\n- Do not use `Layer.mergeAll(...)` or `provideMerge(...)` as blind make-it-compile tools.\n- Do not hide required application authority, credentials, persistence, transports, or external services behind `Context.Reference` defaults.\n- Do not add arbitrary `Effect.sleep(...)` to tests when a deterministic synchronization primitive is available.\n- Do not hand-roll Map\u002FTTL\u002Fprune caches or in-flight dedupe when `effect\u002FCache` fits.\n",{"name":5,"license":15,"description":35,"compatibility":36},"Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.\n","Requires Effect v4. Examples are reviewed against the version documented in this repository.","main","faa8f9905ba7dee0b2fc3480272527651af6705f","skills\u002Fexternal\u002Feffect",2,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue","https:\u002F\u002Fgithub.com\u002Fenitrat","msaug@protonmail.com","2026-11-11 04:02:22",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add enitrat\u002Fskill-issue --skill effect",{"tool":51,"command":52},"bunx","bunx skills add enitrat\u002Fskill-issue --skill effect",{"tool":54,"command":55},"pnpm","pnpm dlx skills add enitrat\u002Fskill-issue --skill effect","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002FSKILL.md",true,[59,65,69,73,77,81,85,89,93,97],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"auth-flows.md","REFERENCE","参考文档",9131,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Faws-cognito\u002Fauth-flows.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002FCACHING.md",5176,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FCACHING.md",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002FCONFIG.md",3085,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FCONFIG.md",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002FHTTP_CLIENTS.md",4773,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FHTTP_CLIENTS.md",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002FSCHEDULING.md",5091,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FSCHEDULING.md",{"path":82,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002FSCHEMA.md",6234,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FSCHEMA.md",{"path":86,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002FSERVICES_LAYERS.md",6126,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FSERVICES_LAYERS.md",{"path":90,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002FSTREAMS.md",6268,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FSTREAMS.md",{"path":94,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002FTESTING.md",4869,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FTESTING.md",{"path":98,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002FV4_APIS.md",3078,"https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Fexternal\u002Feffect\u002Freferences\u002FV4_APIS.md",[102],{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":113,"publishedAt":30},"01M6C5KC4RSE1GJA19YH7SZYK1","vercel-react-best-practices","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","https:\u002F\u002Fgithub.com\u002Fenitrat\u002Fskill-issue\u002Fblob\u002Fmain\u002Fskills\u002Freact-best-practices\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":111,"taxonomyTypeDesc":112},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"best practices","vercel","react best practices","vercel react best practices","react","react components","guidelines","tasks","code","writing","components","engineering","Optimization","data","Next.js","refactoring","js","performance optimization","performance"]