Sighttrue について
Sighttrueは、コーディングエージェント向けに依存関係やソフトウェアエコシステムの測定データを提供します。依存関係の状態、サポート終了、モデル価格、プロバイダーの障害情報などを、出典と測定上の限界とともに返し、安全性や推奨の判定は行いません。
主な機能
- 01依存関係とパッケージ情報の確認
- 02依存関係スタックの確認
- 03リポジトリの検索と比較
- 04モデル検索とサポート終了の確認
- 05プロバイダーとエコシステム情報の照会
- 06出典と測定上の限界を提示
活用シーン
- 01インストール前に記録されたパッケージ情報を確認
- 02コードレビューで依存関係データを照合
- 03モデル価格やソフトウェアのサポート終了を調査
- 04プロバイダーの障害履歴を確認
MCP 対応
読み取り専用のMCPサーバーで、コーディングエージェントが依存関係、パッケージ、リポジトリ、モデル、サポート終了、プロバイダーの情報を照会できます。結果には出典と根拠の限界が含まれ、キーやアカウントは不要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://sighttrue.com/api/mcpclaude mcp add --transport http kaitzyy-dev-sighttrue https://sighttrue.com/api/mcp{"mcpServers":{"kaitzyy-dev-sighttrue":{"type":"http","url":"https://sighttrue.com/api/mcp"}}}Cursor で開く{"servers":{"kaitzyy-dev-sighttrue":{"type":"http","url":"https://sighttrue.com/api/mcp"}}}VS Code で開く{"mcpServers":{"kaitzyy-dev-sighttrue":{"type":"http","url":"https://sighttrue.com/api/mcp"}}}{"mcpServers":{"kaitzyy-dev-sighttrue":{"serverUrl":"https://sighttrue.com/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
31| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | レジストリに記載されているとおりのパッケージ名。 |
| registry | string | はい |
詳細
Sighttrue
sighttrue.com · お使いのスタック · 比較 · 手法 · フィード
CI で依存関係をチェックする
permissions:
pull-requests: write # only needed for the comment
steps:
- uses: actions/checkout@v4
- uses: sighttrue/sighttrue@v1
with:
manifest: package.json
fail-on: withdrawn,archived,relicensed
依存関係の公開元がそのパッケージの提供を取り下げた場合(npm では非推奨、PyPI と crates.io では yanked、RubyGems では yanked、Packagist では abandoned、NuGet では非推奨と呼ばれます)、またはリポジトリがアーカイブされた場合や、ソースを利用できるライセンスに変更された場合に、ビルドを失敗させ、いずれの場合もアドバイザリを報告します。package.json、requirements.txt、pyproject.toml、Cargo.toml、composer.json、Gemfile を読み取ります。キーもアカウントも登録が必要なサービスも不要です。公開されている測定値を読み取り、OSV と通信します。ネットワークの問題が検出結果になることはありません。測定値を取得できない場合はその旨を表示して成功します。他者のサイトがダウンしただけで壊れるビルドは、いずれ削除されるビルドだからです。
プルリクエストには、検出結果を表にしたコメントも残し、プッシュのたびにコメントを追加するのではなく、同じコメントを書き換えます。ビルドの失敗だけでは、何が問題なのかはレビュー担当者に伝わりますが、ログを開かなければ、どの依存関係に何が起きたのかはわかりません。ステップのサマリーだけに報告するには、comment: false を設定してください。フォークからのプルリクエストでは読み取り専用トークンが使われるため、コメントはスキップされますが、ステップは引き続き成功します。
requirements.txt と Cargo.toml に対しても実行できます。
または、App をインストールするだけで設定は不要です
Action を使うには、利用する各リポジトリにワークフローファイルが必要です。GitHub App は一度インストールすれば、指定されたすべてのリポジトリを監視します。ワークフローもキーも設定も不要です。プルリクエストでウォッチリストに載っているランタイム依存関係が追加されると、ダウンロード数、OpenSSF scorecard、アドバイザリの件数、ライセンス、最終プッシュ日時など、記録されている情報をひとつのコメントにまとめて残し、その後のプッシュのたびに同じコメントを編集します。
プルリクエストでマニフェストが変更されない場合、依存関係が追加されない場合、または追跡対象のものが追加されない場合は、何も通知しません。これが一般的なケースであり、そこが重要です。何も見つからなかったとコメントするボットはアンインストールされてしまいます。このプロジェクトが測定していないため、パッケージを安全、危険、または推奨と評価することはありません。
Action はビルドを失敗させますが、App は報告のみを行います。どちらも同じ公開バンドルを読み取るため、結果が食い違うことはありません。
提出可能な SBOM
/stack では、各依存関係のアドバイザリ件数、scorecard、ライセンス、公開日、バス係数をプロパティとして付与した CycloneDX 1.6 ドキュメントをエクスポートできます。このページのほかの機能と同様、貼り付けたマニフェストをもとにブラウザー内で生成します。アップロードは行われず、マニフェストを送信するエンドポイントもありません。
バージョンは記載しません。マニフェストに ^1.6.0 と宣言されていても、インストールされたものはわからず、その下にある推移的な依存関係のツリーについても何もわかりません。このドキュメントでは、読み手が気づくのを待つのではなく、両方の点を独自のメタデータに記載します。何かを推測する SBOM は、何もないより悪いからです。誰も解決していない内容を断言するコンプライアンス成果物になってしまいます。
監視対象を提案する
ウォッチリストは人手で選定した一部のリポジトリのみで構成されており、判断以外に方法はありません。これが最も弱い点です。issue を作成するから、リポジトリの追加を提案してください。リストへの変更はすべてレビュー済みのコミットとして反映されるため、レビューはその issue で行います。
コーディングエージェント向け
同じ読み取りデータを使う MCP サーバーです。エージェントは、1年前の学習データではなく、今日取得した測定値をもとに「この依存関係は健全か」と回答できます。
{ "mcpServers": { "readout": { "url": "https://sighttrue.com/api/mcp" } } }
ツールは、無料で9個、有料で22個です。コードを書いているときに使うのが check_before_install です。パッケージを指定すると、あとからわかったらレビュー担当者が困る情報だけを返します。公開者が取り下げたこと、インストール先のマシンで実行されるスクリプト、アーカイブ済みのリポジトリ、勧告、ソース公開型ライセンス、長期間更新がないこと。それぞれについて、公開元のページへのリンクも付いています。インストールすべきかどうかは判断しません。記録されている内容を示し、その情報を踏まえて判断できるようにします。また、結果が空なら、安全なパッケージだという意味ではなく、該当する情報が見つからなかったという意味だとはっきり示します。
続いて、check_package、check_stack、search_repositories、compare_repositories、find_model、check_eol、check_provider、list_readings があります。読み取り専用で、キーもアカウントも必要ありません。各結果には、その内容から裏付けられる範囲が示されています。エージェントはこうした数値をコードレビューに貼り付けるため、「公表されている取り組みを測定したもので、プロジェクトの安全性を示すものではありません」という説明を添えずに引用されたスコアカードは、このプロジェクトが表明するものではありません。
MCP を使わなくても、GET リクエストを1回送れば同じ情報が返ります。
curl 'https://sighttrue.com/api/verdict?pkg=npm:axios'
curl 'https://sighttrue.com/api/verdict?pkg=pypi:django&version=4.2'
勧告、ライセンス、レジストリで最後に公開された時期、バスファクター、リリースがまだサポートされているかどうか。それぞれについて、公開元のページへのリンクが付いているため、レビューで引用された数値もワンクリックで確認できます。名前に反して、ここに判定はありません。スコアも、順位も、推奨もありません。それらは他者の仕事に対するこのプロジェクト独自の判断を、測定値のように装うことになるからです。
あるエージェントが、417件のオープンソースリポジトリを監視し、11種類の読み取り値を取得します。そのほとんどは GitHub に触れずに取得されます。各プロバイダーのステータスページから削除された後も保持されている807件の障害情報、EOL のカウントダウン対象となる522のリリース系列、382件のモデル価格、実際の公開日で追跡した182件のパッケージ、バスファクターを調べるための416件のコミット履歴です。GitHub Actions で4時間ごとに実行し、読み取った情報をこのリポジトリにコミットして、静的サイトを公開します。
すべてのページとバンドルはファイルです。動的ルートは5つありますが、どのページもそれらに依存しません。App 用の /api/ask、/api/mcp、/api/chain、/api/github/webhook と、/api/auth および /api/watchlist 配下のサインインとウォッチリスト用エンドポイントです。GitHub でサインインすると保存されるのはウォッチリストだけです。サインイン後のページに表示される読み取り値も、誰でもダウンロードできる公開済みのバンドルと同じです。
data/ のコミット履歴が重要です。これは監査証跡です。すべての読み取り値にタイムスタンプが付き、追記のみで、GitHub と直接照合できます。
レポート内容
回答する質問ごとに名前が付けられた11種類の読み取り情報です。生成元の収集処理ではなく、回答する質問に基づいています。同じリストがサイトのナビゲーションにも使われるため、両者が食い違うことはありません。これを書き留めるまでに、実際には3回も食い違っていました。
| 読み取り情報 | 回答する質問 | GitHub にアクセス |
|---|---|---|
| ライブ | ここ数時間で何が変わりましたか? | はい |
| リリース | 新しいバージョンをリリースしたのは何ですか? | はい |
| フォーク | 自身のベースラインより速くコピーされているものは何ですか? | はい |
| 需要 | 複数のプロジェクトにまたがって、開発者は何を求めていますか? | はい |
| 依存関係 | 何が追加、削除されたか、またはメジャーバージョンが上がりましたか? | はい |
| 系譜 | どのモデルが、どのモデルを基に構築されたと述べていますか? | いいえ |
| モデルの価格 | 100万トークンはいくらで、いつ変わりましたか? | いいえ |
| 障害 | 依存しているものは停止しますか? また、どれくらいの頻度ですか? | いいえ |
| エコシステム | レジストリ、アドバイザリー、フォーラムは何を伝えていますか? | いいえ |
| 依存されているもの | ほかのすべてがひそかに依存しているものは何ですか? | いいえ |
| 今週 | 週に1回しか見なかったら、何を見逃していたでしょうか? | — |
GitHub に一切アクセスしない6種類の読み取り情報は、「GitHub の要約に、GitHub がすでに表示している以上の価値があるのか」というもっともな疑問への答えです。
各検出器のしきい値に実際に到達できるかどうかも、インデックスの「実績」に公開しています。一度も近づいたものがない検出器は、静かな検出器ではなく、設定を誤った検出器です。サイト自身がそのことを明らかにしています。
読み方
すべての比較は、ほかのリポジトリではなく、各リポジトリ自身の履歴を基準にしています。「ベースラインの27倍」とは、そのプロジェクトが通常行うことの27倍という意味で、通常の状態が何かを確認できるよう、グラフにはベースラインも表示しています。
信頼度は明記し、ほのめかすだけにすることはありません。
| 状態 | 意味 |
|---|---|
forming | 履歴が14日未満です。生のカウントのみです。倍率は計算せず、倍率を示唆することもありません。 |
detected | しきい値を一度超えました。中立的に扱います。 |
confirmed | 連続する2回の日次スナップショットで継続しました。 |
調査結果として扱うのは、confirmed のシグナルのみです。その代わり、最大で1日分の速さを犠牲にし、取り戻せないものを確保します。
**生成された文章は、測定値とは異なる書体で表示されます。**数値を説明する文では、公開前にその文中のすべての数値を元の記録と照合します。記録にない数値が1つでもあれば、その文は破棄し、代わりにテンプレート文を使用します。
主張しないこと
- ウォッチリストは厳選されたもので、対象は一部に限られます。手作業で選定しており、オープンソース全体の調査ではありません。依存関係や需要に関する調査結果が示すのは、監視対象のリポジトリであり、エコシステム全体ではありません。
- データはリアルタイムではありません。最短でも4時間かかり、定期実行もたびたび遅延します。
- ここにあるものは何も予測せず、リポジトリが良い、悪い、安全、または危険であるとも述べません。
- ウォッチリストへの掲載は観察結果であり、関係性を示すものではありません。ここに掲載されているプロジェクトのうち、これを支持したものはありません。
誤りと判明した公開済みの調査結果は、同等の目立ちやすさを持つ訂正イベントに置き換えられます。イベントが削除されることはなく、履歴が書き換えられることもありません。
データ
サイトが読み込むすべてのバンドルは JSON として提供されるため、ページで使われたものと同じファイルを使って、あらゆる主張を確認できます。
data/
├── live/state.jsonl Latest reading per repository. Sorted, rewritten each pulse.
├── live/window.jsonl Timestamped fork samples, for the rolling 24h delta.
├── live/manifests.jsonl Last-seen dependency set, diffed daily.
├── history/YYYY-MM-DD.jsonl One immutable snapshot per day.
├── events/YYYY-MM.jsonl Append-only. Never rewritten, never pruned.
├── summaries.jsonl Generated prose, keyed by event id.
├── watchlist.jsonl What is watched, and since when.
└── meta.json Last run status.
ファイルは固定のキー順で並べ替えられるため、変更のないリポジトリから差分が発生することはありません。これにより、1日に6回コミットされるリポジトリが際限なく増大するのを防げます。
実行方法
Node 24 を使用します。型はネイティブに削除されるため、ビルド手順も実行時依存関係もありません。
D1 スキーマが追加されるまでは、Node 22.18 以降と記載していました。テストは migrations/ を node:sqlite に読み込みます。これは24では安定版ですが、22ではフラグが必要です。そのため、22ではアサーションではなくインポートでテストスイートが失敗します。バージョン要件を知る方法としては、わかりにくいものです。
npm install # dev dependencies only: typescript, vitest, fonts
npm test
npm run typecheck
node scripts/pulse.ts --limit=20 # needs GITHUB_PAT
node scripts/daily.ts
node scripts/build.ts # emits dist/
ウォッチリストの保守
ウォッチリストはキュレーターが選定しています。検索クエリから導き出す方法も試しましたが、リストの質が下がりました。トピック検索では、自らタグを付けたリポジトリしか見つからず、スター数順ではチュートリアルやリンク集がインフラより上位に来るためです。derive-watchlist.ts は、キュレーターが見落とした可能性のある候補を提案するため、また、望ましくない結果を再現できるようにするために残してあります。
node scripts/verify-watchlist.ts # check every entry against the API
node scripts/retire-watchlist.ts # mark archived and deleted ones inactive
node scripts/derive-watchlist.ts # propose candidates, writes nothing
node scripts/derive-packages.ts # map repositories to packages, writes nothing
derive-packages.ts は packages フィールドを埋めます。これにより、エージェントはリポジトリの状況だけでなく、プロジェクトのダウンロード数の推移も尋ねられるようになります。名前が一致しただけで紐付けることはありません。候補を提案した後、その名前でレジストリに登録されているレコードを取得し、レジストリの参照先がこのリポジトリである場合に限って紐付けを保持します。このルールは単なる飾りではありません。最初のバージョンでは部分文字列で照合していたため、angular/angular を npm パッケージの angular に紐付けてしまいました。このパッケージはアーカイブ済みの angular/angular.js に属しており、その結果、終了したプロジェクトのダウンロード数を、現在も活動中のプロジェクトに計上してしまうところでした。
項目が削除されることはありません。終了した項目も active: false を付けてリストに残します。削除すると、監視対象だった記録や、まだリンクされていた間に収集した調査結果が消えてしまうためです。
残りの処理は、2 つのスケジュールされたワークフローが行います。pulse.yml は 4 時間ごとに実行され、リポジトリの基本情報とリリースを取得します。daily.yml は正規のスナップショットを書き込み、急増を分類して、イシューとマニフェストを収集します。どちらも、変更がない場合を含め、実行のたびにコミットします。リポジトリが 60 日間活動していないと、スケジュールされたワークフローは無効になります。このコミットが、それを防ぎます。
設定
| シークレット | 用途 |
|---|---|
SIGNAL_GITHUB_PAT | パブリックリポジトリの読み取り専用、きめ細かなアクセストークンです。シークレット名の先頭に GITHUB_ は使用できません。 |
CLOUDFLARE_API_TOKEN | Cloudflare Pages:編集 |
CLOUDFLARE_ACCOUNT_ID | |
GROQ_API_KEY | 任意です。設定しなくても、数値のみで文章のないすべてのレポートが公開されます。 |
どちらの任意設定グループも、本当に任意です。設定されていない場合、そのステップはスキップされ、その旨が表示されます。実行が失敗として扱われることはありません。設定しないことは不具合ではなく、常に表示される警告は誰にも読まれなくなるためです。
ライセンス
MIT です。LICENSE をご覧ください。
費用
Cloudflare Pages、パブリックリポジトリでの GitHub Actions、Groq の無料プランを使用します。Pages の静的アセットと帯域幅は無制限のため、訪問者のトラフィックに上限はありません。残る制限はすべてビルド側に適用され、その範囲は限定的で予測可能です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。