スキル一覧に戻る
legacy3

effect-service

by legacy3

1🍴 0📅 2026年1月3日
GitHubで見るManusで実行

SKILL.md


name: effect-service description: Generate new Effect-TS services with proper patterns. Use when creating new services, layers, or adding methods to existing services.

Effect Service Generator

Generate Effect-TS services following project conventions.

Service Template

import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";

// Interface defines the contract
export interface MyServiceInterface {
  readonly doSomething: (
    input: InputType,
  ) => Effect.Effect<OutputType, MyError>;
}

// Tag for dependency injection
export class MyService extends Context.Tag("@wowlab/services/MyService")<
  MyService,
  MyServiceInterface
>() {}

// Live implementation
export const MyServiceLive: Layer.Layer<MyService, never, Dependencies> =
  Layer.effect(
    MyService,
    Effect.gen(function* () {
      const dep = yield* SomeDependency;

      return {
        doSomething: (input) =>
          Effect.gen(function* () {
            // implementation
            return result;
          }),
      } satisfies MyServiceInterface;
    }),
  );

Alternative: Effect.Service Pattern

For simpler services with built-in Default layer:

export class MyService extends Effect.Service<MyService>()("MyService", {
  dependencies: [Dep1.Default, Dep2.Default],
  effect: Effect.gen(function* () {
    const dep1 = yield* Dep1;
    const dep2 = yield* Dep2;

    return {
      doSomething: (input) => Effect.gen(function* () { ... }),
    };
  }),
}) {}

File Location

  • New service: packages/wowlab-services/src/internal/{domain}/
  • Re-export from: packages/wowlab-services/src/{Domain}.ts

Naming Conventions

  • Interface: {Name}Interface or {Name}Service
  • Tag: @wowlab/services/{Name}
  • Layer: {Name}Live or {Name}.Default
  • Errors: {Name}Error using Data.TaggedError

Instructions

  1. Ask what the service should do
  2. Identify dependencies needed
  3. Generate interface with typed methods
  4. Generate Layer implementation
  5. Add re-export to barrel file

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です