contribos について
ContribOSは、参加先のリポジトリ探し、貢献ルールの把握、提出前の確認を支援するオープンソース貢献者向けコマンドラインツールです。ファイルと行番号を根拠として示し、MCP経由でも機能を提供します。
主な機能
- 01参加しやすいリポジトリと課題の検索
- 02根拠付きの貢献ルール抽出
- 03ブリーフ作成と提出前チェック
- 04レビュー意見の分類と返信案作成
- 05ローカルなエージェントルールとフックの生成
活用シーン
- 01貢献前にAI利用やテストの規則を確認
- 02提出前にテスト、説明、開示要件を点検
- 03レビューコメントから対応事項と返信案を整理
- 04コーディングエージェントにリポジトリ固有の制約を設定
MCP 対応
contribos mcpは、ポリシー、ブリーフ、セットアップ、診断、チェック、レビュー、課題検索、文面のトーン確認など九つのMCPツールを提供します。Claude Code、Cursor、Codexなどのクライアントから利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| json | boolean | いいえ | Markdown ではなく、機械可読なルールを返します |
| repo | string | はい | owner/name |
詳細
ContribOS
信頼を得て、マージされ、また戻ってきましょう。 ContribOS は、新しいオープンソース貢献者が信頼を得るのを支援します。歓迎される場所を見つけ、このリポジトリが変更をどのように行うことを望んでいるかを示し、変更を本当に理解しているかを確認し、レビューを受けるまでサポートし、マージされた PR を次のメンテナーが検証できる記録にします。
2026 年、コントリビュートにおいてコードを書くことは難しい部分ではありません。AI によって PR の作成が容易になり、メンテナーは PR の上限、推薦リスト、AI ポリシーで対応し、新規貢献者のマージ率は低下しました。ContribOS は、あなたの PR がメンテナーの時間をかける価値のあるものにします。
ContribOS があなたに代わって PR を開いたり、コメントを投稿したり、イシューを引き受けたりすることは決してありません。また、あなたの説明文を書くこともありません。道筋を示すだけで、決めるのはあなたです。
ContribOS によって PR の却下を避けられたなら、このリポジトリに ⭐ を付けると、ほかの貢献者が見つけやすくなります。
動作を確認する
PR を開く前に、リポジトリが何を求めているかを確認しましょう。これは contribos policy pallets/flask の実際の出力を短縮したものです(2026 年 10 月 6 日時点のスナップショットです。最新の結果は実際に実行して確認してください)。
# Contribution policy: pallets/flask
## AI policy
No written AI policy found. Disclosing AI use is still the courteous default.
## Tests
Changes are expected to come with tests.
- `.github/pull_request_template.md:20`: - Add tests that demonstrate the correct behavior of the change. Tests
## Changelog
Changes usually need a changelog or news entry.
- `.github/pull_request_template.md:23`: - Add an entry in CHANGES.rst summarizing the change and linking to the issue.
## Tests in practice
50% of recent code PRs also changed tests.
- `git history`: 19 of 38 recent code-changing PRs
## Outside PRs
2 of the last 49 closed PRs from non-members landed.
すべての主張はファイルと行(または Git の履歴)を示すため、自分で確認できます。ContribOS は道筋を示すだけで、決めるのはあなたです。
pip install contribos
contribos policy pallets/flask
取り組みの流れ
| ステップ | コマンド | 得られるもの |
|---|---|---|
| 検索 | contribos find --lang python --topic web | オープンな課題を「有望/可能性あり/見送り」に分類し、根拠も提示します。誰かが着手を表明しているか、オープンな PR があるか、メンテナーが活動中か、内容が明確かなどを確認できます。さらに、リポジトリの歓迎度も確認できます。アーカイブ済みか、推薦者リスト、AI ポリシー、外部からの PR のマージ率、外部 PR への最初の人間による返信までの待ち時間、停滞する件数、古いボット、そして自分の未完了 PR も確認できます。 |
| ルール | contribos policy owner/repo | リポジトリの AI ポリシー、開示形式(Assisted-by: などのトレーラー)、推薦者による承認の要件、「good first issue」への AI 使用禁止、課題を先に立てることや着手表明を先にする慣習、テスト、変更履歴、DCO/CLA、スタイルツール、活動状況を、それぞれ file:line 付きで引用します。--json を付けると、エージェントが読み取れる形式で同じルールを取得できます。 |
| 提案 | contribos claim <issue-url> | コーディングを始める前に投稿する、簡潔な提案を作成します。変更対象になりそうなファイル、同程度の規模の過去の PR、テストを追加する場所、実際に確認したい質問を示します。すでに着手済みの課題、まだメンテナーがいないこと、「good first issue」に関する AI ルール、課題を先に立てるルールについて警告します。リポジトリに推薦者リストがある場合は、まず自己紹介文を作成します。 |
| トーン | contribos tone comment.md --kind comment | これから投稿する内容に、機械が書いたような兆候(delve、流行語、アシスタント風の書き出し、埋め草)、長さ、質問の欠落、未置換のプレースホルダーがないかを指摘します。 |
| エージェントルール | contribos agent-rules . --ai "Claude Code" | コーディングエージェントにこのリポジトリのルールを教えます。Claude Code、Codex、Copilot、Cursor 向けの SKILL.md、エージェントによる PR 作成やコメント投稿を止めるフック、承認と AI 開示トレーラーを確認する commit-msg フックを生成します。すべてローカルのみで、git の対象外です。 |
| セットアップ | contribos setup owner/repo | リポジトリの CI とコントリビューションガイドから、ランタイムのバージョン、インストール方法、サービス、環境変数、テストと lint のコマンドなど、正確な手順を取得します。 |
| 診断 | contribos setup --diagnose output.txt | 失敗の原因を示します。依存関係の不足、バージョン違い、サービスの停止、環境変数、ネイティブのビルドツール、不安定なテスト、または実際のテスト失敗(自分の変更が原因ではないことを確認する方法も含む)などです。 |
| 理解 | contribos brief <issue-url> | 各ファイルを選んだ理由とともに、読むべきファイルを提示します。同様の過去の PR とレビュー担当者のコメント、関連するテスト、触れないほうがよい類似ファイル、リポジトリ内のルール、想定されるレビュー時の質問も確認できます。--llm を付けると、根拠に基づいた平易な要約を取得できます。 |
| 検証 | contribos check --explain explain.md --verify-test "pytest tests/test_x.py" --issue 123 --ai "Claude Code: drafted the test" --pr-draft pr.md | 提出前レビューを行います。同様の過去の変更と比べたスコープ、テスト、変更履歴、承認、デバッグ用コードの残り、AI ポリシーと開示トレーラー、同じ課題を対象とする競合 PR を確認します。--verify-test は、修正を適用した状態でテストを実行し、ソースファイルをベースバージョンに戻してもう一度実行することで、変更がなければテストが失敗することを示せます。変更したすべてのファイルについて説明があり、不確かな点も明記されているかを確認したうえで、何をなぜ変更したか、どう検証したか、不確かな点、関連する過去の変更、AI による支援を含む PR の下書きを作成します。 |
| 対応 | contribos review <pr-url> --path . | レビュアーの各コメントを分類(ブロッキング、変更、質問、軽微な指摘など)し、対象のコード、関連するリポジトリ内のルール、返信の下書き、未回答の内容とその経過時間、失敗した CI を示します。 |
| 実績 | contribos record <github-user> --html me.html | 公開でき、リンクで共有可能な実績を作成します。マージ済み PR、変更依頼、すべてのレビューコメントに回答したか、変更内容を説明したか、AI の使用を開示したかを確認できます。 |
| エージェント | contribos mcp | Claude Code、Cursor、Codex などで使える 9 つの MCP ツール(policy、brief、setup、diagnose、check、review、find、claim、tone)を提供します。エージェントがテキストを持っている場合は、そのテキストを入力として受け取ります。例:claude mcp add contribos -- python -m contribos mcp |
インストール
pip install contribos # Python 3.10+, git. Zero external dependencies.
export GITHUB_TOKEN=... # needed for find, claim/brief from an issue URL, review, record
`policy` also runs without a token, but it skips pull-request signals and says so at the top of its output.
オフラインで実行できる機能はすべてオフラインで動作します。policy、brief --title、claim --title、setup、check、bench、review --data は git だけで利用できます。API をスキップするには --offline を、新しいコミットを取得するには --update を追加してください。クローンとインデックスは ~/.cache/contribos(CONTRIBOS_CACHE)にキャッシュされます。
AI による要約はオプションです。CONTRIBOS_LLM=anthropic(ANTHROPIC_API_KEY と併用)または CONTRIBOS_LLM=openai(OPENAI_API_KEY と併用)を設定し、必要に応じて CONTRIBOS_MODEL も設定してください。モデルは ContribOS がすでに収集した証拠の説明のみを行います。その証拠に含まれないファイルを引用する文は削除されます。
仕組み
repo.pyはキャッシュ済みのクローンを処理します。git showとgit grepを使って任意のリビジョンを読み取るため、チェックアウトは不要です。precedent.pyは、メインラインの変更(squash および merge PR)、変更されたファイル、修正された Issue の SQLite インデックスを構築します。policy.pyは、コントリビューション関連ドキュメント、AI ポリシー、テンプレート、推薦リスト、CI 設定、履歴をもとに構築されたポリシー・レーダーです。brief.pyは、コード内のまれな用語との一致、パスの一致、過去の類似 PR で変更されたファイルに基づいてファイルをランク付けします。また、変更履歴から関連するテストも見つけます。check.pyは、提出前チェック、理解度の確認、PR の下書きを行います。setup_doctor.pyは、CI とドキュメントをもとにセットアップ手順を作成し、失敗の原因を診断します。find.pyは、Issue に取り組めるか、リポジトリが新規コントリビューターを歓迎しているか、応答があるかを確認します。claim.pyは、提案文と推薦者への紹介文の下書きを作成します。proof.pyは、変更を適用した状態と適用していない状態でテストを実行します(finallyでファイルを復元します)。tone.pyは、これから投稿するテキストをチェックします。agent_rules.pyは、ローカルのエージェントスキルとフックを書き込みます。review.pyは、レビューコメントを分類し、返信の下書きを作成して、対応状況を追跡します。record.pyは、コントリビューション記録(Markdown と、単独で動作する HTML ページ)を作成します。llm.pyは、引用の根拠付けに対応したオプションのプロバイダーレイヤー(Anthropic または OpenAI)です。mcp_server.pyは、依存関係のない MCP stdio サーバーです。github.pyはオプションの API クライアントです。呼び出し元はすべて、API クライアントがない場合にも対応します。bench.pyは履歴ベンチマークを実行します。
ベンチマーク(2026-09-28、オフライン、Issue の代わりに PR タイトルを使用)
| リポジトリ | Brief hit@5 | Grep-only hit@5 |
|---|---|---|
| pallets/flask(30 PR) | 0.77 | 0.73 |
| pytest-dev/pytest(30 PR) | 0.87 | 0.87 |
過去の PR との照合によるファイル検索の改善はわずかであり、ファイル検索はコモディティだという計画の見立てを裏付けています。価値があるのは、過去の PR でどのように対応したか、そしてレビュアーが何を求めたかです。次のベンチマークには実際の Issue テキストとレビューコメントが必要であり、そのためには GITHUB_TOKEN が必要です。
コントリビューション
Hacktoberfest への参加を含め、コントリビューションを歓迎します。good first issue ラベルの付いた Issue から始め、取り組む Issue にコメントして担当を表明し、まず CONTRIBUTING.md を読んでください。Issue の担当方法、AI の利用開示、テストの実行方法が記載されています。ContribOS がこれらのルールをどのように読み取るか確認するには、次のコマンドを実行してください。
contribos policy adityatiwari101104/contribos
ステータス
- 実際のリポジトリ(Flask、pytest、Ghostty)でテスト済み:
policy、brief、claim --title、setup、check、bench、mcp。 - 2026-10-01 に稼働中の GitHub API に対してテスト済み:
find(maximilianfeix/proxy-scraperとbrekkylab/backlotで、Issue に取り組めるかどうかのスコアとメンテナーの応答時間の中央値を算出)、claim <url>(過去の類似 PR と対象ファイルを含む、コーディング前の提案文の下書きを作成)、record(@adityatiwari101104の公開済みマージ PR のポートフォリオを検証)。 - 一時的な git リポジトリでテスト済み:
agent-rules(git のステータスがクリーンな状態を維持し、ガードがgh pr createをブロックし、commit-msg フックが sign-off と trailer を強制)、check --verify-test、tone、ポリシー・レーダー v2。 - テスト:
python -m unittest discover -s tests(59 テスト、Linux、macOS、Windows の CI マトリックス)。
リリース
pyproject.toml、contribos/__init__.py、server.jsonの 2 箇所でバージョンを更新します。python -m unittest discover -s testsを実行してから、コミットしてプッシュします。- タグを付けて公開します。
git tag v<version>
git push origin v<version>
python -m build
twine upload dist/*
mcp-publisher login github
mcp-publisher publish
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。