Démarrage rapide
Créez votre premier plugin en 15 minutes.
Objectif
Nous allons créer un simple plugin qui reçoit un texte et retourne une réponse personnalisée.
Étape 1 : Créer la structure
Si ce n'est pas déjà fait, installez le template :
bun install
Étape 2 : Écrire le plugin
Modifiez plugins/mon-plugin.ts :
import { z } from "zod";
// Définissez votre schéma d'input
const GreetingInputSchema = z.object({
name: z.string().describe("Le nom de la personne"),
language: z.enum(["fr", "en"]).optional().describe("Langue de réponse"),
});
export async function greet(input: unknown) {
const parsed = GreetingInputSchema.parse(input);
const greeting = {
fr: "Bonjour",
en: "Hello",
}[parsed.language || "fr"];
return `${greeting}, ${parsed.name}! Bienvenue dans PluginFactory.`;
}
Étape 3 : Ajouter le schéma
Modifiez schemas/schemas.ts :
import { z } from "zod";
export const GreetingInputSchema = z.object({
name: z.string().describe("Le nom de la personne"),
language: z.enum(["fr", "en"]).optional().describe("Langue de réponse"),
});
Étape 4 : Tester
Créez un test dans __tests__/mon-plugin.test.ts :
import { describe, it, expect } from "bun:test";
import { greet } from "../plugins/mon-plugin";
describe("Plugin Greeting", () => {
it("doit saluer en français", async () => {
const result = await greet({ name: "Alice", language: "fr" });
expect(result).toContain("Bonjour, Alice");
});
it("doit saluer en anglais", async () => {
const result = await greet({ name: "Bob", language: "en" });
expect(result).toContain("Hello, Bob");
});
it("doit utiliser le français par défaut", async () => {
const result = await greet({ name: "Charlie" });
expect(result).toContain("Bonjour, Charlie");
});
});
Exécutez les tests :
bun test
Vous devriez voir :
✓ Plugin Greeting (3 tests)
✓ doit saluer en français
✓ doit saluer en anglais
✓ doit utiliser le français par défaut
Étape 5 : Vérifier la validation
Testez votre schéma :
bun run validate
Cela vérifie que tous les schémas Zod sont valides.
Félicitations ! 🎉
Vous avez créé votre premier plugin. Maintenant :
- Explorez les Guides avancés pour des patterns plus complexes
- Consultez la Référence API pour d'autres fonctionnalités
- Lisez comment Publier votre plugin