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

# リポジトリルール

> 構造化されたテンプレートを持つマークダウンファイルを使用して、リポジトリに直接カスタム Kody ルールを作成します。

<Info>
  リポジトリルールは IDE ルールファイル検出と同じ自動同期メカニズムを使用します。両方の機能を有効にするには、設定で「リポジトリからルールを自動同期」を有効にしてください。セットアップについては <a href="/how_to_use/ja/code_review/configs/rules_file_detection">ルールファイル検出</a> を参照してください。
</Info>

## 使い方

リポジトリに直接カスタム Kody ルールを作成するには、特定のディレクトリに構造化されたマークダウンファイルを配置します。これにより、コードと並行してルールをバージョン管理し、チーム全体で共有できます。

### 同期

* **自動検出**：リポジトリルールは有効化されると自動的に検出および同期されます
* **手動同期**：任意のルールファイルに `@kody-sync` を追加して個別に同期します（自動同期が無効でも機能します）
* **Webアプリケーション**：同期されたルールは Kodus Web アプリケーションのダッシュボードに表示されます
* **リアルタイム更新**：プルリクエストがクローズされるとルールファイルの変更が同期されます

## ファイルの場所

ルールファイルを以下のいずれかのディレクトリに配置してください：

* `.kody/rules/**/*.md`
* `rules/**/*.md`

## ルールテンプレート

各ルールファイルはこの正確なテンプレート構造に従う必要があります：

```markdown theme={null}
---
title: "<ルール名>"
scope: "file"            # "file" または "pull-request"
path: []                 # glob のリスト。例：["**/*.ts", "apps/web/**"]
severity_min: "high"     # "low", "medium", "high", "critical"
languages: []            # オプション。例：["jsts", "go", "php", "ruby", "java", "csharp", "dart", "kotlin", "rust"]
buckets: []              # オプション。例：["style-conventions", "error-handling", "security"]
uuid: ""                 # オプション。安定したルール ID に使用
enabled: true            # オプション
---

## 指示
何をレビューするかとどのように判断するかを説明します。直接的で客観的に。
- セキュリティ、パフォーマンス、パブリックコントラクトへの影響に焦点を当てます。
- 該当する場合はチームの設定やパターンを提供します。
- PR ルールの場合は、変更セットで何を考慮するかを説明します。

## 例

### 悪い例
\`\`\`lang
// ルールに違反する短い反例をここに貼り付け
\`\`\`

### 良い例  
\`\`\`lang
// ルールに従う短い例をここに貼り付け
\`\`\`
```

## テンプレートフィールド

### 必須フィールド

| フィールド          | 説明                 | 値                                        |
| -------------- | ------------------ | ---------------------------------------- |
| `title`        | インターフェースに表示されるルール名 | 任意の説明的な文字列                               |
| `scope`        | ルールの分析スコープ         | `"file"` または `"pull-request"`            |
| `path`         | ルールが適用されるファイルパス    | glob パターンの配列                             |
| `severity_min` | 最小重大度レベル           | `"low"`、`"medium"`、`"high"`、`"critical"` |

## ルールの例

### ファイルレベルルールの例

```markdown theme={null}
---
title: "本番コードで console.log を使用しない"
scope: "file"
path: ["src/**/*.ts", "src/**/*.tsx"]
severity_min: "medium"
languages: ["jsts"]
buckets: ["style-conventions"]
enabled: true
---

## 指示
本番 TypeScript/JavaScript ファイルで console.log ステートメントを確認します。
- console.log は本番コードに含まれるべきではありません
- 代わりに適切なログライブラリを使用してください
- console.log は開発ユーティリティのみに許可します

## 例

### 悪い例
\`\`\`typescript
function processUser(user: User) {
  console.log('Processing user:', user.id);
  return user.process();
}
\`\`\`

### 良い例
\`\`\`typescript
import { logger } from './logger';

function processUser(user: User) {
  logger.info('Processing user:', user.id);
  return user.process();
}
\`\`\`
```

### プルリクエストレベルルールの例

```markdown theme={null}
---
title: "新しい API エンドポイントにはテストが必要"
scope: "pull-request"
path: ["**/*"]
severity_min: "high"
buckets: ["testing"]
enabled: true
---

## 指示
新しい API エンドポイントが追加された場合、対応するテストが PR に含まれていることを確認します。
- コントローラーの新しいルート定義を確認します
- 新しいエンドポイントのテストファイルが存在することを確認します
- 正常系と異常系の両方のテストケースを確認します

## 例

### 悪い例
新しいエンドポイント `/api/users/profile` が追加されたが、PR にテストファイルが含まれていない。

### 良い例
新しいエンドポイント `/api/users/profile` が追加され、成功とエラーのケースをカバーする対応するテストファイル `tests/api/users/profile.test.ts` が含まれている。
```

## セットアップ要件

リポジトリルールを使用するには、2 つのオプションがあります：

### オプション 1：自動同期を有効にする（推奨）

1. **ルールファイル検出を有効にする**：設定で「リポジトリからルールを自動同期」をトグルします
2. **ルールファイルを作成する**：`.kody/rules/**` または `rules/**` ディレクトリに `.md` ファイルを配置します
3. **自動同期**：PR がクローズされるとすべてのルールファイルが同期されます

### オプション 2：手動同期（選択的）

1. **ルールファイルを作成する**：`.kody/rules/**` または `rules/**` ディレクトリに `.md` ファイルを配置します
2. **同期マーカーを追加する**：ルールファイルの任意の場所に `@kody-sync` を含めます
3. **変更をコミット**：マークされたファイルのみが同期されます（自動同期のトグルはオフのまま）

<Tip>
  リポジトリルールは[ルールファイル検出](/how_to_use/ja/code_review/configs/rules_file_detection)と同じ同期メカニズムを使用します。手動同期（`@kody-sync`）を使用すると、自動同期を有効にせずに特定のルールを選択的に同期できます。
</Tip>
