Communitygithub.com

EpicenterHQ/epicenter

Appliquer les motifs de frontière de service Whispering pour des capacités sans UI, des entrées explicites, la faillibilité des Result, des objets Live, des fabriques de cycle de vie et des variantes de plateforme. Utiliser lors de la création ou du remaniement de services, de contrats, de dispatcheurs de fournisseurs ou du baril `$lib/services`.

Qu'est-ce que epicenter ?

Ce skill est conçu pour guider le développement et la refonte de services en suivant les motifs de frontière de service *Whispering*. Il impose une architecture où les capacités sont dépourvues d'interface utilisateur (UI-free), les entrées sont explicites (explicit inputs), les résultats sont représentés sous une forme faillible (Result fallibility) avec des objets Live (live objects) et des fabriques de cycle de vie (lifecycle factories). Il prend également en charge les variantes de plateforme (platform variants). Utile pour structurer des services backend ou des contrats d'API, orchestrer le dispatch de fournisseurs, ou maintenir le baril d'exportation `$lib/services`, il s'applique à tout environnement de développement JavaScript/TypeScript, notamment avec des frameworks comme SvelteKit ou Node.js. Le skill repose sur des pratiques de séparation des préoccupations et de typage fort pour améliorer la maintenabilité et la testabilité des services.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add EpicenterHQ/epicenter

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait epicenter ?

Appliquer les motifs de frontière de service Whispering pour des capacités sans UI, des entrées explicites, la faillibilité des Result, des objets Live, des fabriques de cycle de vie et des variantes de plateforme. Utiliser lors de la création ou du remaniement de services, de contrats, de dispatcheurs de fournisseurs ou du baril $lib/services.

Démarrage rapide

  1. Installer le skill : npx @epicenterhq/cli add epicenter
  2. Générer un service : npx @epicenterhq/cli generate service monService
  3. Configurer les variantes : éditer epicenter.config.js

Structure d'un service

$lib/services/
├── monService/
│   ├── index.ts          # Baril d'exportation public
│   ├── contract.ts       # Contrat du service
│   ├── provider.ts       # Dispatcheur de fournisseurs
│   └── variants/
│       ├── default.ts    # Implémentation par défaut
│       └── mock.ts       # Implémentation simulée

Motifs clés

MotifDescription
UI-freeLes services n'ont aucune dépendance vis-à-vis du framework UI.
Explicit inputsToutes les entrées sont typées et déclarées explicitement dans le contrat.
Result fallibilityChaque opération retourne un type Result<T, E> pour gérer les erreurs de manière explicite.
Live objectsLes services exposent des objets 'live' qui reflètent l'état actuel via des Observables ou des signaux.
Lifecycle factoriesLes services sont créés via des fabriques de cycle de vie pour encapsuler l'initialisation et le nettoyage.
Platform variantsPlusieurs implémentations (prod, dev, test, mock) peuvent coexister pour différentes plateformes.

Utilisation dans le code

import { monService } from '$lib/services/monService';

const result = await monService.doSomething({ param: 'valeur' });
if (result.success) {
  console.log(result.data);
} else {
  console.error(result.error);
}

Configuration

Le fichier epicenter.config.js permet de spécifier les variantes par environnement :

export default {
  services: {
    monService: {
      variant: process.env.NODE_ENV === 'production' ? 'default' : 'mock'
    }
  }
};

Documentation complète

Voir le dépôt EpicenterHQ/epicenter pour la documentation détaillée et les exemples avancés.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés