> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kazzle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compétences

> Enseignez à l'IA ce que votre app sait faire et donnez-lui des outils à appeler.

# Compétences

Une compétence est un **dossier** qui indique à l'IA ce qu'elle sait et peut faire avec votre app. Elle contient :

* `SKILL.md` — les instructions que l'IA lit (obligatoire).
* `tools.ts` — une liste d'outils que l'IA peut appeler (optionnel).

`SKILL.md` décrit l'app et ses outils ; `tools.ts` déclare les outils ; chaque outil est implémenté par une route HTTP dans l'un des composants de votre app.

## Définir des compétences

Pointez `kazzle.config.ts` vers le `SKILL.md` de chaque compétence. Kazzle utilise son dossier, donc `tools.ts` à côté est détecté automatiquement.

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  components: [{ name: 'api', type: 'process', path: './components/api/index.ts' }],
  skills: [
    { name: 'API guide', path: './skills/api/SKILL.md' },
  ],
});
```

## SKILL.md

Markdown avec frontmatter, puis les instructions que l'IA doit suivre.

```markdown theme={"theme":"material-theme-darker"}
---
name: API guide
description: How to use this app's tools.
alwaysActive: true
---

Use `save_bookmark` to store a link. It returns a confirmation.
```

## tools.ts

`tools.ts` à côté d'un `SKILL.md` déclare les outils que cette compétence peut appeler. Le contrat complet de l'outil — les types de déclaration, la forme de la requête/réponse du gestionnaire, et les canaux de résultat `content` vs `markdown` — se trouve dans [Tools](/apps/tools).

```ts theme={"theme":"material-theme-darker"}
import { z } from 'zod';
import type { KazzleTool } from '@kazzle/app/tools';

export const tools = [
  {
    name: 'save_bookmark',
    displayName: 'Save bookmark',
    description: 'Save a bookmark URL and return a confirmation.',
    input: z.object({ url: z.string().url(), title: z.string().optional() }).strict(),
    target: {
      type: 'app',
      component: 'api',
      path: '/tools/save-bookmark',
      method: 'POST',
      body: '${input}',
    },
  },
] as const satisfies readonly KazzleTool[];
```

## Comment l'IA utilise les compétences

L'IA lit `SKILL.md` à la demande (pas toutes les compétences d'emblée) pour ancrer ses réponses, et peut appeler les outils déclarés dans `tools.ts`. Un outil sans route correspondante ne fait rien ; ajoutez les deux ensemble. `tools.json` n'est pas supporté.
