テック技報最新号へ →
AIコーディング

AGENTS.md/CLAUDE.md のルールは「〜する」と言い切る。「〜の場合は」で始めると守られにくい(NAIST などの実験)

同じ内容のルールを4つの書き方で入れて比べた研究では、条件つき(「〜する場合は〜する」)が一貫して守られにくかった。言い切りと理由つきのどちらが良いかはモデルとハーネスで変わる。

@ai_database · 2026-11-09
#ai-coding#agents-md#claude-md#プロンプト#研究

実験の中身

  • 実在のリポジトリの AGENTS.md/CLAUDE.md(86タスク、10リポジトリ)の最後の行に、機械的に判定できるルールを1つ足した: 「追加・変更した Python 関数の def の直下に # @tracked を付ける」
  • 書き方は4種類
    • 言い切り(Prescriptive): 「〜に # @tracked を付ける」
    • 理由つき(Explanatory): 上に「監査システムがこの印で…を見分けるため」を足す
    • 条件つき(Conditional): 「Python 関数を追加・変更する場合は〜を付ける」
    • 禁止(Prohibitive): 「# @tracked なしで関数を追加・変更してはいけない」
  • Claude Code 2.1.227 上の Opus 5/Sonnet 5、qwen-code 上の gpt-oss-120b/Qwen3-Coder-Next で各3回

結果(遵守率)

ハーネス/モデル言い切り理由つき条件つき禁止
Claude Code/Opus 578.0%77.2%64.2%70.7%
Claude Code/Sonnet 571.6%49.4%35.6%17.3%
qwen-code/gpt-oss-120b6.7%20.4%0.8%0.4%
  • 条件つきは、差が出た3つの組み合わせすべてで言い切り・理由つきより低い
  • 言い切りと理由つきの優劣は逆転する(Sonnet 5 は言い切り、gpt-oss は理由つきが上)。Opus 5 では差なし
  • 性能の低いモデルほど書き方の影響が大きい

書き換えの例

markdown
<!-- 守られにくい -->
- API のハンドラを追加する場合は、OpenAPI の定義も更新すること
- テストなしでマージしてはいけない

<!-- 言い切りに -->
- API のハンドラを追加・変更したら、同じコミットで openapi.yaml を更新する
- PR には、変更した関数のテストを含める
  1. 自分のファイルを 場合は|ときは|if |when |してはいけない|never|don't で検索する
  2. 条件を主語に溶かして「〜したら〜する」「〜には〜を含める」と、やることを先頭に出す
  3. 複数のツールで1つの AGENTS.md を共有しているなら、主に使うモデルで守られるかを小さく試す(研究も「一つの環境で良かった書き方が他でも効くとは限らない」と結論している)

注意点

出典

X の元の投稿を開く