9月27日から10月2日にかけて、十二のオープンソースプロジェクトに修正、バグ報告、コメントを送った。作業の多くはコーディングエージェントがこなした。Claude Code がバグを再現し、パッチとテストを書き、文章のほとんどを下書きした。取り組む Issue はどれも自分で選び、文章もすべて自分で読んだ。私が承認するまで、私のアカウントからは何も送られていない。
その間ずっと、この種の作業をどう進めてほしいのかを、プロジェクトの側から繰り返し告げられた。spec-kit は、エージェント、モデル、その設定、そしてどこまで手伝ったかを、AI が生成したすべてのコメントで明記するよう求めていた。MLX のプルリクエストテンプレートは、「PR の説明文を書くのに AI を使うことは固く禁じられていると理解している」という、チェックの入った一行で始まる。そこで10月2日に、30 のリポジトリのコントリビューションのルールを読んだ。作業を送ったリポジトリと、送っていない 21 のリポジトリだ。
手短に言うと、30 のうち 19 に AI に関するルールがあり、その 19 のうち 14 は2026年にできたものだ。ほとんどのルールは、提出した本人に変更の責任を負わせている。十五のプロジェクトは AI を使ったことを明かすよう求め、十のプロジェクトは、説明文やコメント、コミットメッセージを、モデルではなく人が書くよう求めている。コーディングエージェントがデフォルトで付けるコミットトレーラーを、これらのプロジェクトのあるものは必須とし、あるものは禁止している。
読んだもの
サンプルは無作為ではない。30 のうち九つは、その週に私が作業を送ったプロジェクトで、MLX、spec-kit、huggingface_hub、codebase-memory-mcp、Deskflow、agent-framework、awslabs/mcp、kaggle-cli、avoid-ai-writing だ。残りの 21 は AI ツール、開発者ツール、インフラの分野のプロジェクトで、その中には Docling、garak、TypeScript、Rust、Node.js、Kubernetes がある。作業を送ったプロジェクトのうち残る三つ、copilot-cli、PartCrafter、ltx-2-mlx は 30 には入っておらず、そのどれにも AI に関するルールは見つからなかった。
各リポジトリでは、2026年10月2日時点のデフォルトブランチで、CONTRIBUTING、プルリクエストと Issue のテンプレート、AGENTS.md と CLAUDE.md、行動規範、そしてこれらのファイルからリンクされているガイドや wiki のページを読んだ。以下の引用はどれも、私が読んだコミットにあるその行にリンクしているので、ファイルがあとで変わっても、その日に何が書かれていたかがリンク先でわかる。引用は日本語に訳してあり、リンクを開くとそれぞれ英語の原文の行が表示される。ルールができた時期は、そのファイルの履歴をたどり、ルールを含む最初のコミットを探して特定した。
ルールがあるのはどこか
30 のうち 19 には、コントリビューションでの AI の使用に関するルールがある。MLX、spec-kit、TypeScript、huggingface_hub、transformers、trl、peft、LangChain、Strands Agents、MLflow、garak、codebase-memory-mcp、Deskflow、workers-sdk、pydantic-ai、Rust、CPython、Node.js、Kubernetes だ。
九つのリポジトリでは見つからなかった。accelerate、awslabs/mcp、kaggle-cli、Docling、BeeAI、ADK for Python、NeMo Agent Toolkit、VS Code、React だ。残る二つは数に入れていない。agent-framework は、AI のせいでコントリビューションが増えたのでレビューに時間がかかる、と注意しているだけで、avoid-ai-writing が確かめるのは文章の文体であって、文章がどう作られたかではない。
一つのルールは、たいてい複数のことを同時に求めている。

二本目の棒は、私の解釈で数えたものだ。19 のうち 12 が、何らかの形で、提出した本人が変更に責任を持ち、それを理解していなければならないと述べている。huggingface_hub はそれを、「コードを書くのに AI の手を借りるのは構わない。自分で説明できない、AI が生成したガラクタを提出するのは駄目だ」という二文で言い表している。CPython は、作者が「提案する変更を自分の言葉で説明できる」ことを期待しており、Strands Agents はコントリビューターに「プルリクエストの作者はあなたであって、あなたのエージェントではない」と告げている。
ルールができた時期
最初は CPython で、2024年10月に開発者ガイドに短いページを設けた。2025年には spec-kit、LangChain、Kubernetes、MLflow の四つが続いた。残りの 14 は2026年にできたもので、そのうち七つは6月以降だ。codebase-memory-mcp がルールを加えたのは、私が読む十一日前だった。

ファイルは今も変わり続けている。19 のうち 16 では、ルールを含むファイルが9月か10月の最初の二日間に編集されていた。ただし、そうした編集のすべてが AI についての記述に手を入れたわけではない。
使ったと明かす
もっとも多いのは開示のルールで、どこまで開示を求めるかはプロジェクトによって違う。Kubernetes なら一文で足りる。ガイドには、説明文に「This PR was written in part with the assistance of generative AI」(この PR の一部は生成 AI の助けを借りて書かれた)と入れれば「十分である」と書かれている。TypeScript は、開示がなければ PR をクローズする。「PR が AI によって書かれたように見え、この開示が含まれていない場合、その PR はレビューされずにクローズされる」とある。spec-kit は、エージェント、モデル、設定、支援の範囲を、プルリクエストで、AI が生成した各コメントで改めて、そしてエージェントが書いた各コミットに Assisted-by: トレーラーとして明記するよう求めている。
二つのプロジェクトは、何が懸かっているかを一行で言い切っている。codebase-memory-mcp は「開示がコントリビューションの不利になることは決してない。不利になるのは、あとで発覚することだ」と書き、Deskflow は「コントリビューションでの AI の使用について不誠実であれば、プロジェクトから追放される」と書いている。
CPython の求めはほかより控えめで、「PR の説明文で AI ツールの使用を開示してもらえるとありがたいが、必須ではない」としている。
文章は人が書く
十のプロジェクトは、コードについてはモデルの手を借りてもよいとしながら、文章は人が書くよう求めている。いちばん厳しいのは Rust で、「LLM が作成した PR の説明文は禁止。LLM が作成した GitHub のコメントは禁止」としている。コミットについても同じで、「コミットメッセージは、あなたの LLM ではなく、あなた自身が書かなければならない」とある。
Kubernetes と Node.js は、レビューへの対応のところで線を引いている。Kubernetes は「レビューコメントに返答するときは、AI ツールに頼らずにそうしなければならない」とし、Node.js は、フィードバックへの返答は「AI ツールで自動化してはならない」としている。
テンプレートに組み込んでいるプロジェクトもある。MLX には先に引用した一行と、Issue 用の同様の一行がある。Strands Agents はプルリクエストテンプレートに「Human Overview」というセクションを置き、ここは「AI エージェントが決して記入してはならない」と定めている。LangChain のテンプレートは、「明らかに AI が生成した長い説明文をここに貼り付けると、PR は無視されるか、クローズされることがある!」と警告している。

大量に送らず、まず承認を得る
七つのプロジェクトは、大量の投稿や自動化された投稿を禁じている。TypeScript が拒むのは、「オペレーターが自律型エージェントを GitHub に差し向け、互いに関係のない多数の Issue にわたってパッチを生成させ、その出力をプルリクエストとして私たちに転送してくるワークフロー」だ。LangChain のガイドは、「プルリクエストを作るのに必要な労力が、メンテナーがそれをレビューするのに必要な労力より小さいなら、そのコントリビューションは提出すべきではない」という、どんなコントリビューションにも当てはまる基準を示している。
六つのプロジェクトは、プルリクエストの前に承認を求めている。peft では、それは @peft-triage approved を含むメンテナーのコメントだ。Rust では、LLM が作成した変更には事前の取り決めが必要で、これは「LLM が作成した PR をレビューする意思があることを、レビュアーが前もって伝えている」ことを意味する。
三つのプロジェクトは、エージェントを使う新規参加者を受け入れていない。transformers は「初めてのコントリビューターは、Issue や PR の作成にコードエージェントを使わない」よう求め、trl は「初めてのコントリビューターからの、完全に AI が生成した PR はレビューしない」としている。Node.js は新しいコントリビューターに「プロジェクトとのやりとりに AI エージェントを使うのを避ける」よう求め、「good first issue」のラベルが付いた Issue を AI で修正することも禁じている。こうした Issue は「AI ではなく、新しい人間のコントリビューターがコードベースについて学ぶのを助けるためのもの」だからだ。
Rust は、こうした作業が占める割合にも上限を設けていて、「6 週間の期間内にマージされた PR の半数を超えるものが LLM によって作成されていれば、50% を下回るまで、LLM が作成した新しい PR のマージを認めない。冷却期間は最低 10 日とする」としている。
意見が割れるトレーラー
コーディングエージェントは、自分の仕事に署名を残すことが多い。たとえば Claude Code は、そうしないよう指示されない限り、各コミットに Co-Authored-By: Claude … トレーラーを、プルリクエストには「Generated with Claude Code」という一行を付ける。こうしたトレーラーについてのルールがあるのは九つのプロジェクトで、ルールの向きは正反対に分かれている。

出典:MLflow、garak、spec-kit、Node.js、Kubernetes、Rust、pydantic-ai、Deskflow、codebase-memory-mcp。
Kubernetes は「AI ツールを共同作成者として記載すること、AI ツールを使ってコミットに共同署名すること、assisted-by、co-developed またはそれに類するコミットトレーラーを使うことは認められない」としている。pydantic-ai は、Claude Code がセッションの開始時に読み込むファイルに、「コミットに自分(Claude)を共同作成者として決して追加しないこと」と書いている。Rust のガイドは、デフォルトで付くこの二行をどちらも開示の悪い例として挙げている。🤖 Generated with Claude Code と Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> だ。
つまりデフォルトのトレーラーは、MLflow では求められるものであり、Kubernetes、Rust、pydantic-ai ではルール違反になる。どこでも正しい設定というものはない。エージェントはリポジトリで最初にコミットする前にそのリポジトリのルールを読まなければならないし、エージェントを動かす人も同じだ。
エージェントに向けて書かれたルール
こうしたルールの一部は、AGENTS.md や CLAUDE.md、つまりコーディングエージェントがリポジトリで作業を始めるときに読むファイルの中で、エージェントに直接語りかけている。告げている内容は次のとおり。
- pydantic-ai:「あなたは、質の低いコントリビューションとメンテナーの頭痛の種に対する最初の防衛線だ」。
- MLX:「ユーザーのために PR の説明文やコミットメッセージを書く」ことも、ユーザーに代わってコメントに返答することも、プッシュやプルリクエストの作成もしない。
- Rust:手を止め、「禁止されたカテゴリーを示して、ユーザー自身が書くよう伝える」。
- transformers:まだコントリビューターでない人に、「ブロックされるリスクも含めて」警告する。
- spec-kit:そのリポジトリで開いているプルリクエストが四件目になる前に、「自律的に動作している間も含めて」オペレーターに確認する。
- Strands Agents(スケジュールに沿って動くエージェント向け):「人間がついていけて、反応できるペースで作業する」。
こうしたルールが機能するのは、エージェントがそのファイルを読み、それに従う場合だけだ。
私が送ったものはどうなったか
- Kaggle/kaggle-cli:PR #1206。
kernels outputのファイルを共通のダウンローダー経由でストリーミングする変更。同じ日にマージされた。 - conorbronsdon/avoid-ai-writing:PR #352、#361、#362。検出器の修正二件とテスト一件。三つともマージされ、どれも一日以内だった。
- huggingface/huggingface_hub:Issue #5065。ファイルが UTF-8 の BOM で始まっていると、
--env-fileが最初の変数を落としていた。メンテナーが 52 分後に修正の #5066 を開き、報告から二時間以内にマージされた。 - microsoft/agent-framework:PR #8963。パラメーター付きの data URI への対応。三時間後に重複としてクローズされた。以前から開いていた PR #8918 に同じ修正があった。
- ml-explore/mlx:PR #4610。負のストライドを持つ重みでの Metal の RMSNorm と LayerNorm。二時間半後に「PR をありがとう。ただ、これは理想的な修正ではないだろう」というコメントとともにクローズされた。
- DeusData/codebase-memory-mcp:Issue #2454 と PR #2456。検索結果が空のときに出る、誤解を招くヒント。優先度の高いバグとしてラベルが付き、レビュー待ち。
- dgrauet/ltx-2-mlx:PR #167。画像アンカーでの
lastと負のフレームインデックスへの対応。メンテナーからマージ前に一点の修正を頼まれ、10月3日に送った。 - github/spec-kit、microsoft/agent-framework、awslabs/mcp:#4213 では対応範囲の提案、#8909 と #4705 では修正の計画。メンテナーの返事待ち。
- deskflow/deskflow:#10068 の根本原因。macOS でのクラッシュ。ラベルと担当者は付いたが、まだ返事はない。
- github/copilot-cli:Issue #5038。grep ツールがダッシュのない
nを無視する問題。ラベルは付いたが、まだ返事はない。 - wgsxm/PartCrafter:PR #46。Apple Silicon で動かすための変更。まだ返事はない。
十二のうち五つに AI に関するルールがある。MLX、spec-kit、huggingface_hub、codebase-memory-mcp、Deskflow だ。huggingface_hub では Issue を立てただけで、そのルールはプルリクエストについてのものだ。MLX では、ルールが求めるとおり、プルリクエストの説明文とコミットメッセージを自分で書き、説明文にはエージェントが何をしたかを書いた。spec-kit への私のコメントには spec-kit が求める完全な開示を付け、codebase-memory-mcp では Issue、プルリクエスト、各コメントに、このプロジェクトが求める一行を入れた。codebase-memory-mcp への私の返信のうち二つは、プロジェクトがルールを加えてから一週間後の9月28日に、その一行なしで出ていた。10月1日に書き足した。Deskflow はプルリクエストでの開示を求めている。そこへの私のコメントはエージェントが下書きしたもので、開示なしで出ていた。10月3日に開示の一行を書き足した。
クローズ時のコメントは、どちらも AI には触れていない。agent-framework が私の PR をクローズしたのは、以前から開いていた PR に同じ修正があったからで、自分の PR を書く前に検索していれば、それを見つけられたはずだ。MLX のメンテナーが判断したのは、アプローチそのものだった。
私が変えたこと
- 修正を書く前に、開いているプルリクエストと Issue のタイムラインを、その Issue の番号で検索する。重複は、これを省いたせいで生じた。
- 大きなプロジェクトでは、計画をコメントとして投稿し、メンテナーが答えるまでプルリクエストは開かない。agent-framework、awslabs/mcp、spec-kit は今この段階にある。
- 開いておくプルリクエストは、一つのプロジェクトにつき一度に一件まで。
- 文章はそれぞれのプロジェクトのルールに従う。プロジェクトが MLX のように AI が書いた説明文を禁じているなら、説明文は自分で書く。spec-kit と codebase-memory-mcp にはそれぞれが求める形で開示を付け、ルールのないプロジェクトには開示の一行を入れない。
- プロジェクトに求められない限り、トレーラーは付けない。私のコミットに載るのは私の名前だけだ。
- ルールを満たせないプロジェクトには、この種の作業を送らない。Rust、Kubernetes、Node.js は AI が書いたコメントやレビューへの返答を禁じ、transformers、trl、Node.js は新規参加者にエージェントを使わないよう求め、TypeScript は Issue のキューを順にこなすような作業を受け付けない。
限界
これは一つのアカウントによる、六日間の記録だ。30 のリポジトリは私が選んだもので、ルールがありそうな AI ツールの分野に偏っている。分類は私が付けたもので、一つのルールが複数の分類に当てはまることも多い。すべて2026年10月2日に読んだものだが、19 のうち 16 ではその前の一か月の間にルールのファイルが変わっているので、この記事の一部はじきに古くなる。コミットに固定したリンクを開けば、その日に各ファイルに何が書かれていたかがわかる。
106 件の引用すべてと集計、そしてすべての引用をそれぞれのファイルと照合するスクリプトは nefayran/oss-ai-rules にある。
この記事は Claude Code(Claude Opus 5.5)を使って下書きした。ルールのファイルを集め、すべての引用をそれらのファイルと照合したのも Claude Code だ。