Evergreen について
Evergreenは、リポジトリ内の非推奨・サポート終了の依存関係、ランタイム、CIコンポーネントを確認し、該当箇所と根拠資料、移行手順を示します。開発者やコーディングエージェント向けに、決定論的なオフラインスキャンをCLI、MCPサーバー、CI、エージェントスキルから利用できます。
主な機能
- 01複数エコシステムのライフサイクル検査
- 02該当ファイルと行の特定
- 03根拠資料と代替案の提示
- 04移行情報と手順の生成
- 05決定論的なオフラインスキャン
活用シーン
- 01ビルドが壊れる前のリスク発見
- 02追加前の依存関係チェック
- 03ベースラインによる新規問題の追跡
MCP 対応
EvergreenはローカルMCPサーバーを備え、対応クライアントからライフサイクル検査機能を利用できます。MCPの実行も、プロジェクトのローカルかつオフラインのスキャン方式に基づきます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| baseline | string | いいえ | Evergreen ベースラインファイルの任意のパス。リポジトリからの相対パスです。抑制された検出結果は省略され、結果の suppressions フィールドに抑制数と、期限切れ間近または期限切れの抑制が示されます。 |
| repository_path | string | いいえ | リポジトリのローカルパス。デフォルトはサーバーの作業ディレクトリです。 |
詳細
Evergreen
Evergreen は、リポジトリ内のサポート終了および非推奨のランタイム、パッケージ、GitHub Actions を検出し、該当するファイルと行を正確に示します。また、検出結果ごとに信頼できる情報源、代替手段、移行手順を提示します。CLI、ローカル MCP サーバー、GitHub Action(コードスキャン用の SARIF に対応)、Agent Skill としてマシン上で動作するため、ビルドが壊れる前に人やコーディングエージェントがライフサイクル上のリスクを把握でき、依存関係を追加する前に確認できます。スキャンは決定的でオフラインで実行でき、アカウントも不要です。
公開ドキュメントを読むか、90 秒のデモを実行するか、検証レポートを確認してください。AI ツール向けに、ドキュメントはllms.txtおよびllms-full.txtとしても公開されています。
対応範囲
| エコシステム | Evergreen が読み取るもの | レポートする内容 |
|---|---|---|
| コンテナーベースイメージ (実験的) | Dockerfile、*.Dockerfile、Containerfile、compose.yaml、docker-compose.yml:公式の node、python、postgres、mysql、ruby のベースイメージ | サポート終了となったイメージのリリース系列。変数、latest、可変タグは未分類として列挙し、推測は行いません。コンテナーベースイメージを参照してください |
| .NET (ベータ) | global.json、*.csproj/*.fsproj/*.vbproj、Directory.Build.props、Directory.Packages.props、packages.lock.json:固定された SDK、ターゲットフレームワーク、直接参照する NuGet パッケージ | サポート期間が終了した .NET のリリース系列、および発行元が非推奨にした直接参照パッケージと、それらを使用する C# ファイル。.NET Framework、netstandard、MSBuild プロパティ、可変バージョン、範囲は判定しません。.NETを参照してください |
| Go (実験的) | go.mod と go.work:go および toolchain ディレクティブ、直接参照する require エントリー | 修正を受けられなくなった Go のリリース系列、およびライフサイクルルールがある直接参照モジュール。Evergreen が読み取れないバージョンは未分類として列挙します。Goを参照してください |
| GitHub Actions | .github/workflows/*.yml:アクションへの uses: 参照。末尾のバージョンコメントまたは同梱のリリースマップから解決されるフル SHA 固定も含みます | Node.js 20 などの廃止ランタイムを使用するアクション、および廃止または非推奨となったメジャーバージョンを、正確な行番号とともに報告します |
| C および C++ (実験的) | CMakeLists.txt、conanfile.txt、conanfile.py、vcpkg.json | CMake ポリシーの互換性に関する削除および非推奨を、正確な宣言箇所とともに報告します。それ以外の宣言は、一致するレビュー済みルールが必要です。C および C++を参照してください |
| CI ランナーイメージ (実験的) | .gitlab-ci.yml の image と services、.circleci/config.yml の docker.image、machine.image、オーブ、および azure-pipelines.yml の pool.vmImage | レビュー済みルールが対象とする Azure ホステッドイメージのラベルを、正確な行番号とともに報告します。GitLab イメージと CircleCI のオーブ、変数、可変エイリアスは未分類です。リテラルの CircleCI イメージは判定しません。CI ランナーイメージを参照してください |
| Java および Kotlin(JVM) (ベータ) | pom.xml、build.gradle、build.gradle.kts、.java-version、.sdkmanrc、.tool-versions:プロジェクトが固定またはターゲットにする JDK、および直接参照する Maven 依存関係。Java および Kotlinを参照してください | サポート対象外となった JDK のフィーチャーリリース、および POM に移行先が記載されている依存関係を報告します。プロパティ参照と式は未分類として列挙します |
| Kubernetes API (ベータ) | *.yaml、*.yml マニフェスト、Helm チャートの templates/、kustomization.yaml:リテラルの apiVersion と kind、および kustomize パッチ。Kubernetes APIを参照してください | Kubernetes プロジェクトが提供終了とする API バージョンを報告します。Helm の値、クラスター条件付きテンプレート、およびリテラルとして読み取れないものは対象外です |
| Node.js | engines.node、volta、.nvmrc、.node-version | サポート終了またはサポート対象外となったランタイムバージョン |
| npm | package.json の依存関係、package-lock.json、npm-shrinkwrap.json、yarn.lock、pnpm-lock.yaml、および各パッケージを使用するインポートと呼び出し | 非推奨またはメンテナンスされていないパッケージと、その代替パッケージおよび使用箇所 |
| Python | pyproject.toml、requirements*.txt、.python-version、runtime.txt、.tool-versions、poetry.lock、uv.lock、Pipfile.lock | サポート終了となった Python バージョン、および非推奨または古くなったパッケージ |
| Dart および Flutter (実験的) | pubspec.yaml、pubspec.lock、.fvmrc、.fvm/fvm_config.json:SDK 制約、直接参照する依存関係、解決済みパッケージ、固定された Flutter バージョン | 正確なバージョンで固定されている場合にセキュリティ更新を受けられなくなった Dart SDK リリース、および使用するファイルとともに報告される提供終了した pub パッケージ。>=3.8.0 <4.0.0 のような制約範囲は判定しません。Dart および Flutterを参照してください |
| データベースランタイム (実験的) | compose.yaml / docker-compose.yml のイメージタグ(postgres、mysql、mariadb、redis、mongo)および *.tf の AWS マネージドデータベースリソースにある engine_version | サポート終了となった PostgreSQL 11~13 および MySQL 5.7、8.0 を報告します。可変タグ、変数、モジュールブロック、YAML エイリアスを含む Compose ファイルは判定しません。データベースランタイムを参照してください |
| シェルおよび PowerShell (実験的) | *.ps1 / *.psm1 の #Requires -Version、*.psd1 の PowerShellVersion、および .github/workflows にある固定された mcr.microsoft.com/powershell イメージタグ | サポート期間が終了した PowerShell 6.x および 7.0~7.3 を報告します。Windows PowerShell 5.1、シェル名、Bash イメージ、動的な値、追加オプションを含むディレクティブは判定しません。シェルおよび PowerShellを参照してください |
| Terraform (実験的) | *.tf(required_version、required_providers)、.terraform.lock.hcl、.terraform-version、.tool-versions:制約、ロックされたプロバイダー、固定された Terraform CLI | 正確なバージョンまたは ~> X.Y.Z 制約で固定されている場合に、サポートを受けられなくなった Terraform CLI のリリース系列を報告します。>= 1.5 のような範囲は判定しません。Terraformを参照してください |
| Rust (実験的) | Cargo.toml、Cargo.lock、rust-toolchain(.toml):固定されたツールチェーンと直接参照するクレート依存関係 | 最新の安定版リリースより古いツールチェーン、およびメンテナンスされていないクレートを直接参照する依存関係を、それらを使用するファイルとともに報告します。edition、rust-version、stable、およびリテラルとして読み取れないものは判定しません。Rustを参照してください |
| Swift (ベータ) | .swift-version、.xcode-version、Package.swift、Package.resolved、および project.pbxproj のアプリケーションターゲットにある IPHONEOS_DEPLOYMENT_TARGET | App Store Connect が受け付けなくなった Xcode および iOS リリース、ライフサイクルルールがある Swift ツールチェーン系列、およびルールがあるパッケージを報告します。ライブラリと platforms: の最小バージョンは判定しません。Swiftを参照してください |
| サーバーレスランタイム (ベータ) | AWS SAM および CloudFormation テンプレートの Runtime、serverless.yml の provider.runtime と runtime、Terraform の aws_lambda_function、Google Cloud Functions、Azure function apps の runtime | ベンダーがサポート終了としている Lambda および Cloud Functions のランタイムを報告します。サーバーレスランタイムを参照してください |
| Ruby (実験的) | .ruby-version、.tool-versions、Gemfile、Gemfile.lock | サポート期間が終了した Ruby のリリース系列と、取り消された gem を、その gem を使用する Ruby ファイルとともに報告します。互換性を参照してください |
| PHP (実験的) | .php-version、.tool-versions、composer.json、composer.lock | サポート期間が終了した PHP のリリース系列と、放棄された Composer パッケージを報告します。互換性を参照してください |
| Android (実験的) | build.gradle(.kts)、settings.gradle(.kts)、libs.versions.toml:SDK レベル、Android Gradle Plugin、Kotlin プラグイン、Maven 依存関係 | Google Play Billing Library のメジャーバージョン 5~9 など、レビュー済みルールで指定された宣言を報告します。互換性を参照してください |
括弧内のレベルは検出器の成熟度を示します。各レベルを記載した全リストはエコシステム対応マトリクスで確認できます。また、検出器ごとの実測精度と再現率は精度ダッシュボードに掲載されています。各検出結果には、ルールの情報源、レビュー日、移行手順が含まれています。詳しくはライフサイクルルールをご覧ください。その他のエコシステムについて推測することはありません。Evergreen はルールがないパッケージを no-data として報告し、安全とはみなしません。新しいエコシステムは生成された検出器のスケルトンから始められます。互換性マトリクスには、対応環境とホストが記載されています。 |
製品の原則
- ローカルファースト:ソースコードはユーザーのマシンまたは CI ランナー上に保持されます。
- 決定論的なコア:検出結果の生成に LLM は必要ありません。
- 根拠に基づくこと:非推奨に関するすべての主張は、信頼できる情報源にリンクされています。
- エージェント対応:人間が読めるすべてのレポートに、機械可読な形式のものが用意されています。
- 拡張可能:エコシステムはコアを書き換えるのではなく、検出器を通じて追加されます。
クイックスタート
要件:Node.js 22 以降。
npx evergreen-deprecation scan .
レポート全体ではなく、エージェントに簡潔な回答を返します。検出事項ごとに、ID、場所、重大度、置き換えを1行で示し、重大度の高い順に最大25件までを表示します(残りは件数のみ表示)。8 KiB 未満に収まります。
npx evergreen-deprecation scan . --format compact
設定を変更したり、リポジトリのデータをアップロードしたりせずに、CLI、ローカル MCP サーバー、Agent Skill、プラグインの基盤、CI ワークスペースの準備状況を確認します。
npx evergreen-deprecation doctor .
npx evergreen-deprecation doctor . --json
サポート対象、実験的、非サポートの組み合わせについては、公開互換性マトリックスを参照してください。
Evergreen のバージョン管理された機能とエントリーポイントをプログラムで検出します。
npx evergreen-deprecation capabilities --json
自動検出コントラクトでは、CLI、MCP サーバー、Agent Skill、プラグイン、CI 統合で共通して使用される識別子を定義しています。
既存の許容済み検出事項のベースラインを作成し、新たに発生したライフサイクルのリグレッションのみを報告します。
npx evergreen-deprecation baseline .
npx evergreen-deprecation scan . --baseline .evergreen-baseline.json
リポジトリをスキャンせずに、追加前に単一の依存関係を確認します。
npx evergreen-deprecation check pkg:npm/[email protected]
npx evergreen-deprecation check pkg:github/actions/checkout@v4 --json
このコマンドは、ライフサイクル上の問題、置き換え、根拠を出力します。--fail-on(デフォルトは high)以上のルールが適用される場合は 1、それ以外は 0、コマンドラインが正しくない場合は 2、解析できない Package URL の場合は 4 で終了します(終了コードを参照)。Evergreen にルールがないパッケージでは no-data が報告されますが、これは安全であることを意味するものではありません。バージョンが指定されておらず、ルールが一部のバージョンのみを対象としている場合、パッケージは version-dependent を報告します。明確な回答を得るには、バージョンを追加してください。
ライフサイクルルールは、リリースの合間に署名済みバンドルから更新できます。指定しない限り、スキャンはオフラインのままです。
npx evergreen-deprecation data status
npx evergreen-deprecation data update
署名と信頼のモデル、ピン留め、ダウンロードを検証できない場合の動作については、ライフサイクルデータを参照してください。
1件の結果について、根拠と移行の方向性を確認します。
npx evergreen-deprecation explain '<finding-id>' .
人間またはコーディングエージェント向けに、移植可能な移行コンテキストを生成します。
npx evergreen-deprecation context '<finding-id>' . --json
移行パケットには、ルール固有の制約と手順、影響を受ける正確なファイルと使用箇所、信頼できる情報源、推奨される検証コマンドが含まれます。Evergreen がこれらのコマンドを自動実行することはありません。移行パケットガイドを参照してください。
リポジトリで作業するコーディングエージェントに、依存関係を追加する前に確認するよう指示します。AGENTS.md に、明確なマーカー付きのセクションを追加(または更新)します。CLAUDE.md がある場合はそちらを使用します。再実行しても変更はなく、マーカーの外側には触れません。
npx evergreen-deprecation init --agents --dry-run # show the change
npx evergreen-deprecation init --agents
リポジトリで既に設定されているすべてのコーディングエージェントに対してこれを行うには、setup を実行します。Claude Code、Codex、Cursor、Gemini CLI、GitHub Copilot、Kilo Code の設定を検出し、各ホストの指示ファイルに対する変更を表示します。確認してから(または --yes を指定して)書き込みます。init --agents と同じマーカー付きセクションを使用するため、既存のルールが上書きされることはありません。
npx evergreen-deprecation setup --dry-run # print the plan
npx evergreen-deprecation setup # ask, then write
npx evergreen-deprecation setup --yes # no prompt (CI, scripts)
ローカル MCP サーバーを介してコーディングエージェントを接続します。
npx --yes --package evergreen-deprecation evergreen-mcp
stdio サーバーは scan_repository、list_deprecations、explain_deprecation、create_migration_context、verify_migration、check_dependency(追加前に単一パッケージを確認)を公開します。ホストの設定、想定されるワークフロー、プライバシー保護については、ローカル MCP ガイドを参照してください。
エージェントスキル
モノレポからベンダーに依存しない Agent Skill をインストールします。
npx skills add arminazimi/evergreen
今後の更新を取得するには、次を実行します。
npx skills update evergreen-deprecation
evergreen-deprecation Skill は、検出と移行のロジックを Evergreen 内に保持したまま、発見、説明、移行、検証の方法を説明します。skills.sh から見つけることができ、Codex、Claude Code、Cursor、GitHub Copilot、Gemini CLI でインストール検証済みです。評価、互換性、制限事項、セキュリティ上の前提については、Agent Skill ガイドをご覧ください。
Codex と Claude のプラグインパッケージは、同じ Skill と MCP ワークフローから生成されます。パッケージ化アーキテクチャにより、ホストのマニフェストを最小限に保ち、いずれかのパッケージが正規ソースから逸脱すると CI が失敗します。
クロスホスト評価では、共有コーパスの結果、コンテキスト予算、権限の動作、セキュリティ上の制限を公開しています。また、同じチェックにより、npm run check でリリースのリグレッションを防止します。
Evergreen はローカルで実行され、リポジトリの内容をアップロードしません。
開発
npm install
npm run check
初期検出器は、5 つのファーストパーティアクションでサポートされていないメジャーバージョンを、正確なファイルと行の位置とともに報告します。
actions/checkoutactions/setup-nodeactions/cacheactions/upload-artifactactions/download-artifact
固定されたコミット SHA と動的な式は、推測なしで Evergreen が解決できるようになるまで、意図的に分類対象外としています。
npm 検出器は、package.json、npm/pnpm/Yarn のロックファイル、Node.js のランタイム宣言、および根拠に基づく小規模な非推奨直接依存関係のレジストリも読み取ります。検出結果とそのソースを確認するには、evergreen explain <finding-id> を使用します。検出結果が誤っている場合は、evergreen report-issue <finding-id> を実行すると、ルール、その根拠、および宣言元ファイルの一部を伏せ字にした数行を含む Markdown レポートが出力されます。イシューを作成したり、ネットワークを使用したりすることはありません。
Python 検出器は、pyproject.toml の PEP 621 と Poetry のメタデータ、requirements*.txt、一般的なランタイムバージョンファイル、uv/Poetry/PDM/Pipenv のロックファイルを読み取ります。サポートされていない Python の宣言と、直接依存関係のライフサイクルリスクを報告し、ロックファイル内の推移的依存関係のみの項目は無視します。
ソース使用状況の分析
パッケージのライフサイクルに関する検出結果には、移行が必要となる具体的なインポート、呼び出し、設定キーが含まれるようになりました。JavaScript、TypeScript、Python では、言語とエイリアスを考慮したマッチングを行い、JSON、YAML、TOML、INI、Python の設定キーにも対応しています。各一致には、正確なファイル、行、列、ソースの抜粋に加え、影響を受ける使用箇所とファイルに基づく移行影響の推定が含まれます。
アナライザーは、検出器コントラクトの一括処理のためにリポジトリを一度だけスキャンし、生成物、依存関係、ビルド、環境の各ディレクトリを無視します。再現可能な精度とスキャン時間のベンチマークを実行するには、次を実行します。
npm run benchmark:usage
コーパスと結果の解釈については、ベンチマークの注記をご覧ください。
GitHub Action
Evergreen は、プルリクエストに注釈を付け、ベースラインで受け入れ済みの検出結果を抑制し、指定した重大度で失敗させ、完全な JSON レポートをアップロードできます。
permissions:
contents: read
steps:
- uses: actions/checkout@v7
- uses: arminazimi/[email protected]
with:
baseline: .evergreen-baseline.json
fail-on-severity: high
脅威モデルでサードパーティアクションの参照先を不変にする必要がある場合は、バージョンタグではなく完全なコミット SHA を指定してください。セットアップ、入力、権限、アーティファクト、プライバシーの境界については、GitHub Action ガイドをご覧ください。
検出器 SDK
外部検出器は、evergreen-deprecation/sdk がエクスポートするバージョン管理されたインターフェースを使用できます。スキャンエンジンは、組み込み実装をインポートせずに、互換性のある検出器を組み合わせます。
初期のプロダクト構成
CLI がプロダクトです。検出器が機能を拡張し、GitHub Actions が自動化し、ローカル MCP サーバーがエージェントに機能を提供します。ホスト型バックエンドは意図的にロードマップの対象外とし、代わりに署名付きのオフライン検証可能なデータチャネルを通じてライフサイクルデータを更新します。
ロードマップ、アーキテクチャ、ブランドガイド、貢献ガイドをご覧ください。
コミュニティ
Evergreen を使った質問、アイデア、制作物はGitHub Discussionsに投稿してください。質問には Q&A、提案には Ideas、共有には Show and tell をご利用ください。バグ、ライフサイクルルールのリクエスト、エコシステムに関するリクエストには issue をご利用ください。
ライセンスとブランド
Evergreen のソースコードはApache License 2.0の下でライセンスされています。
Evergreen の名称、ロゴ、および brand/ 内のファイルは専有のブランドアセットであり、
別途定められたブランドアセット利用規約が適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。