Couches et Services Effect

VérifiéSûr

Définissez des services et des couches (layers) pour l'injection de dépendances avec Effect. Composez les dépendances d'infrastructure aux frontières de l'application et basculez facilement entre les implémentations réelles et de test. Utile pour structurer l'injection de dépendances et découpler la logique métier.

Spar Skills Guide Bot
DeveloppementIntermédiaire
04/03/2026
Claude Code
#effect-ts#dependency-injection#layers#services#typescript

Recommandé pour

Synthèse automatique

Ce skill explique comment définir des services Effect, fournir des layers et composer les dépendances pour l'injection de dépendances et le câblage applicatif.

Points forts

  • Montre le pattern `Effect.Service` avec un exemple minimal de dépôt utilisateur
  • Couvre la fourniture de layers, la fusion via `Layer.merge` et le basculement test/live
  • Inclut les pièges concrets comme les dépendances circulaires et le provisionnement trop profond
  • Oriente vers les fichiers source Effect locaux à grep avant d'écrire du code

Limites

  • Les exemples de code sont très courts et n'abordent pas les services avec dépendances asynchrones
  • Suppose que le dépôt local `docs/effect-source/` et le serveur MCP effect-docs sont disponibles
  • Ne détaille pas les stratégies de test au-delà d'un simple choix conditionnel de layer
Quand l'utiliser

À utiliser lorsqu'il faut introduire des frontières d'injection de dépendances dans une application Effect ou remplacer des implémentations live par des versions de test.

Quand l'éviter

À éviter si vous ne travaillez pas avec Effect TS ou si vous cherchez des conseils génériques sur l'injection de dépendances dans d'autres frameworks.

Analyse de sécurité

Sûr
Score qualité80/100

The skill is documentation for Effect.ts dependency injection: it only declares Read/Grep/Glob/Edit/Write plus a docs-search MCP tool and contains illustrative code snippets. The grep examples are guidance for searching local source, not executable payloads, and there is no network exfiltration, destructive command, obfuscation, or safety-disabling instruction. Write/Edit are used only for editing the user's own Effect source files, which is the stated purpose.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Provide a service layer
In my Effect TS app, I have a UserRepo defined with Effect.Service. Show me how to provide UserRepo.Default to my program and compose it with Logger.Default into a single AppLayer.
Swap test and live layers
Help me switch between a UserRepoTest layer and UserRepo.Default based on NODE_ENV, and explain where in the app boundary I should wire this up.
Fix circular layer dependency
My Effect layers have a circular dependency between Db and UserRepo. Search docs/effect-source/effect/src/Layer.ts and help me restructure the modules so I can provide the layer from above.

name: effect-layers-services description: Define services, provide layers, compose dependencies, and switch live/test. Use for DI boundaries and app composition. allowed-tools: Read, Grep, Glob, Edit, Write, mcp__effect-docs__effect_docs_search

Layers & Services

When to use

  • You need DI boundaries or swapping test/live implementations
  • You want to compose infra (logger, db, http) once for the app

Define Service

class UserRepo extends Effect.Service<UserRepo>()("UserRepo", {
  sync: () => ({ find: (id: string) => Effect.succeed({ id }) })
}) {}

Provide Layer

const program = Effect.gen(function* () {
  const repo = yield* UserRepo
  return yield* repo.find("123")
}).pipe(Effect.provide(UserRepo.Default))

Compose

const AppLayer = Layer.merge(UserRepo.Default, Logger.Default)

Test vs Live

const layer = process.env.NODE_ENV === "test" ? UserRepoTest : UserRepo.Default

Guidance

  • Services define interfaces; Layers bind implementations
  • Compose layers at the app boundary; keep handlers unaware of wiring
  • Use .Default for quick live/test setup; add custom layers as needed

Pitfalls

  • Circular layer dependencies → split modules, provide from above
  • Providing layers too deep → centralize to avoid duplication and confusion

Cross-links

  • Foundations: requirement channel R and provisioning
  • Resources: scoped resources exposed via layers
  • EffectPatterns inspiration: https://github.com/PaulJPhilp/EffectPatterns

Local Source Reference

CRITICAL: Search local Effect source before implementing

The full Effect source code is available at docs/effect-source/. Always search the actual implementation before writing Effect code.

Key Source Files

  • Layer: docs/effect-source/effect/src/Layer.ts
  • Effect: docs/effect-source/effect/src/Effect.ts
  • Context: docs/effect-source/effect/src/Context.ts

Example Searches

# Find Layer composition patterns
grep -F "Layer.merge" docs/effect-source/effect/src/Layer.ts
grep -F "Layer.provide" docs/effect-source/effect/src/Layer.ts

# Study Effect.Service patterns
grep -F "Effect.Service" docs/effect-source/effect/src/Effect.ts

# Find Context usage
grep -F "Tag" docs/effect-source/effect/src/Context.ts
grep -F "make" docs/effect-source/effect/src/Context.ts

# Look at Layer test examples
grep -F "Layer." docs/effect-source/effect/test/Layer.test.ts

Workflow

  1. Identify the Layer or Service API you need
  2. Search docs/effect-source/effect/src/Layer.ts for the implementation
  3. Study the types and composition patterns
  4. Look at test files for usage examples
  5. Write your code based on real implementations

Real source code > documentation > assumptions

References

  • Agent Skills overview: https://www.anthropic.com/news/skills
  • Skills guide: https://docs.claude.com/en/docs/claude-code/skills

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/effect-layers-services-mmbizjmp/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/effect-layers-services-mmbizjmp' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/effect-layers-services-mmbizjmp/download' --output '.skill-downloads/effect-layers-services-mmbizjmp/SKILL.md.part' && mv '.skill-downloads/effect-layers-services-mmbizjmp/SKILL.md.part' '.skill-downloads/effect-layers-services-mmbizjmp/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob, Edit, Write, mcp__effect-docs__effect_docs_search

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/effect-layers-services-mmbizjmp/SKILL.md' && test -s '.skill-downloads/effect-layers-services-mmbizjmp/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/effect-layers-services' && cp -R '.skill-downloads/effect-layers-services-mmbizjmp' '.claude/skills/effect-layers-services'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/effect-layers-services-mmbizjmp'

openskills read 'effect-layers-services-mmbizjmp'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/effect-layers-services-mmbizjmp/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires