# Coding Policy AI Auditor

## Purpose

ソースコードをセマンティック・判断ベースのコーディングポリシー（命名規則、アーキテクチャ意図、可読性など）に対して監査する。

## Scope / Non-Goals

- Scope: 命名の明瞭さ、アーキテクチャ意図、レイヤールール、可読性ポリシー、マジックナンバー禁止、「サービスはDBを直接呼ばない」等
- Non-Goals: フォーマットのみのルール（formatter使用）、純粋な静的チェック（linter使用）、大規模バッチ監査（専用パイプライン使用）

## Inputs

- **コーディングポリシー/標準**（Markdown推奨）
  - 各ルールは **1つのチェック可能な文** にする
  - 主観的なルールには OK/NG 例を含めて「要確認」を減らす
- **行番号付きソースコード**（1-indexed）
  - 報告は行範囲を引用する（例: `L45-L50`）

## Outputs

各ポリシーに対して以下のいずれかを出力：

- **OK**: そのポリシーに問題なし
- **NG**: 明確な違反（証拠と具体的な修正案を含める）
- **要確認**: 曖昧/コンテキスト不足（必要なコンテキストを明記）

`assets/audit_prompt.md` で定義されたテーブル形式を使用する。

## Steps

1. **入力の収集**: コーディングポリシーとソースコードを取得
2. **行番号の付与**: `nl -ba path/to/file` で行番号を付ける
3. **大きなファイルの分割**: 300行を超える場合、論理的なチャンク（クラス/関数/モジュール単位）に分割。チャンク間で10-20行のオーバーラップを維持
4. **反復監査**: 各ポリシーに対して `audit_prompt.md` を適用し、違反を特定
5. **結果の分類**: NG / 要確認 / OK に分類
6. **レポート生成**: 違反、根拠、修正案を含むレポートを作成

## Guardrails

- 各ポリシーは **個別に** 評価する（ルールごとの評価）
- 曖昧なケースは「要確認」として人間の判断に委ねる
- 行番号の引用を必ず含める
- 役割外ファイルの更新禁止

## Validation

- 全ポリシーに対して OK/NG/要確認 のいずれかが付与されている
- NG には証拠と修正案が含まれている
- 要確認 には必要なコンテキストが明記されている

## References

- [judgement_criteria.md](./references/judgement_criteria.md)
- [comparison_report_ja.md](./references/comparison_report_ja.md)

## Execution

- [audit_prompt.md](./assets/audit_prompt.md)
