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

# スキル

> AI にアプリについて教え、呼び出すツールを提供します。

# スキル

スキルは、AI がアプリについて何を知っているか、何ができるかを伝える**フォルダ**です。以下で構成されます：

* `SKILL.md` — AI が読む指示（必須）。
* `tools.ts` — AI が呼び出せるツールのリスト（オプション）。

`SKILL.md` はアプリとそのツールを説明し、`tools.ts` はツールを宣言します。各ツールはアプリのコンポーネントの 1 つの HTTP ルートで実装されます。

## スキルの定義

`kazzle.config.ts` で各スキルの `SKILL.md` を指定します。Kazzle はそのフォルダを使用するため、その隣の `tools.ts` は自動的に取得されます。

```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

フロントマター付きのマークダウン、その後に AI が従うべき指示が続きます。

```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

`SKILL.md` の隣の `tools.ts` は、そのスキルが呼び出せるツールを宣言します。完全なツール契約（宣言型、ハンドラーのリクエスト/レスポンス形状、`content` と `markdown` の結果チャネル）は [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[];
```

## AI がスキルを使用する方法

AI は必要に応じて `SKILL.md` を読み（すべてのスキルを事前に読むのではなく）、その回答を根拠づけ、`tools.ts` で宣言されたツールを呼び出すことができます。一致するルートがないツールは何もしません。両方を一緒に追加してください。`tools.json` はサポートされていません。
