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
À 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.
À é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ûrThe 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 faiteExemples
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.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.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
.Defaultfor 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
Rand 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
- Identify the Layer or Service API you need
- Search
docs/effect-source/effect/src/Layer.tsfor the implementation - Study the types and composition patterns
- Look at test files for usage examples
- 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 annexesCe 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.mdDepuis 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’OpenSkillsopenskills 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 syncMode 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.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.