> ## 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.

# Skills

> Insegna all'AI informazioni sulla tua app e forniscile strumenti da utilizzare.

# Skills

Una skill è una **cartella** che dice all'AI cosa sa e cosa può fare con la tua app. Contiene:

* `SKILL.md` — istruzioni che l'AI legge (obbligatorio).
* `tools.ts` — un elenco di strumenti che l'AI può chiamare (facoltativo).

`SKILL.md` descrive l'app e i suoi strumenti; `tools.ts` dichiara gli strumenti; ogni strumento è implementato da una rotta HTTP in uno dei componenti della tua app.

## Definire le skill

Punta `kazzle.config.ts` al `SKILL.md` di ogni skill. Kazzle utilizza la sua cartella, quindi `tools.ts` accanto ad essa viene rilevato automaticamente.

```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 con frontmatter, seguito dalle istruzioni che l'AI deve seguire.

```markdown theme={"theme":"material-theme-darker"}
---
name: API guide
description: Come utilizzare gli strumenti di questa app.
alwaysActive: true
---

Usa `save_bookmark` per salvare un link. Restituisce una conferma.
```

## tools.ts

`tools.ts` accanto a `SKILL.md` dichiara gli strumenti che quella skill può chiamare. Il contratto completo dello strumento — tipi di dichiarazione, la forma della richiesta/risposta del gestore e i canali di risultato `content` vs `markdown` — si trova in [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[];
```

## Come l'AI utilizza le skill

L'AI legge `SKILL.md` su richiesta (non tutte le skill in anticipo) per fondare le sue risposte e può chiamare gli strumenti dichiarati in `tools.ts`. Uno strumento senza una rotta corrispondente non fa nulla; aggiungili entrambi. `tools.json` non è supportato.
