mcpField
L
license-compliance

license-compliance

github.com/verygoodopensource開発17552 回インストール今日更新
リポジトリ

license-compliance について

license-complianceは、Very Good CLIのMCPツールでDartおよびFlutterプロジェクトの依存ライセンスを監査するスキルです。スキャン結果をリスク別に分類し、推移的依存関係やライセンス欠落にも触れた所定形式のレポートを作成します。

主な機能

  1. 01Dart・Flutter依存関係のスキャン
  2. 02ライセンスのリスク分類
  3. 03不明・欠落ライセンスの指摘
  4. 04推移的依存関係の確認
  5. 05所定形式のレポート作成

活用シーン

  1. 01リリース前のライセンス確認
  2. 02依存関係に含まれるコピーレフト義務の特定
  3. 03monorepo内のサブディレクトリの監査
  4. 04スキャン結果からコンプライアンスレポートを作成

MCP 対応

Very Good CLI MCPサーバーの `packages_check_licenses` ツールを使い、指定ディレクトリをスキャンします。MCPサーバーが利用できない場合は、`very_good packages check licenses` を直接実行する方法を案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/verygoodopensource/vgv-ai-flutter-plugin --skill license-compliance

インストール後、Claude Code で/license-complianceを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yaml

詳細

ライセンスコンプライアンス

Dart および Flutter プロジェクト向けの依存関係ライセンス監査ツールです。Very Good CLI MCP ツールを使用して、すべてのパッケージ依存関係のライセンスがプロジェクトの要件に適合していることを確認します。

ハーネス間のフォールバック。 Claude Code では、実行経路として packages_check_licenses MCP ツールを使用します。このプラグインの Bash フックがなく、Very Good CLI MCP サーバーにも接続されていないホストでは、代わりに very_good packages check licenses <project-directory> を直接実行してください(対象パスは位置引数で、省略すると . が既定値です。推移的な依存関係も対象にするには --dependency-type direct-main,transitive を追加してください)。出力は同じように読み取ります。MCP サーバーが見つからないことを理由に処理を止めないでください。


基本基準

すべてのライセンスコンプライアンス作業に、以下の基準を適用してください。

  • 対象プロジェクトのディレクトリに対して、licenses: true を指定して packages_check_licenses MCP ツールを実行し、ライセンス情報の全体を表示する
  • プロジェクトがワークスペースのルートにない場合は、MCP ツールに directory を渡す。サブディレクトリ(例:mobile/)にプロジェクトがあるモノレポでは、directory: 'mobile' が必要です
  • ライセンスがないことは「ライセンスなし」を意味するわけではありません。既定では「すべての権利を留保」を意味するため、必ず指摘してください
  • 推移的な依存関係も重要です。許容的なライセンスのパッケージが GPL ライセンスのパッケージに依存している場合でも、GPL の義務が生じます
  • コンプライアンスを証明できるのはスキャン出力のみです。pubspec の依存関係一覧、パッケージ名、記憶しているライセンス、または以前の監査結果をもとに、プロジェクトがコンプライアンスを満たしている、問題がない、安全にリリースできると結論づけないでください。ユーザーが貼り付けるか添付したスキャン出力は、スキャン出力として扱ってください。その内容をそのまま受け入れて監査し、再実行したり、出所を疑問視したりしないでください。区別すべきなのは、誰がテキストを作成したかではなく、各パッケージにライセンスが付いているかどうかです
  • 判断に迷う場合は、手動レビューの対象として指摘してください。明確なライセンス識別子なしに、コンプライアンスを満たしていると判断しないでください
  • 指定された形式でレポートを提出してください。スキャン出力がある場合、回答は監査結果の報告のテンプレートに従います。## License Compliance Report 見出し、スキャンした合計数を含む概要件数、リスクレベルと各行の推奨事項を記載した指摘事項の表、および優先順位付きの推奨事項が必要です。内容がどれほど完全でも、文章での説明やパッケージの箇条書きは成果物として認められません

ライセンスのカテゴリ

カテゴリライセンスリスクガイダンス
許容的MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0低あらゆる用途で安全
弱いコピーレフトLGPL-2.1, LGPL-3.0, MPL-2.0中動的リンクでは安全です。静的リンクまたは改変の場合は指摘してください
強いコピーレフトGPL-2.0, GPL-3.0, AGPL-3.0高プロジェクト全体に同じライセンスの採用が必要になる可能性があります
不明/未検出検出なし高直ちに手動レビューの対象として指摘してください

監査プロセス

1. ライセンスチェックの実行

対象プロジェクトのディレクトリに対して、packages_check_licenses MCP ツールを呼び出します。プロジェクトがワークスペース内のサブディレクトリ(例:モノレポの mobile/)にある場合は、そのパスを directory パラメーターで渡してください。

2. 結果の分類

上記のカテゴリを使って、各依存関係のライセンスを分類します。以下の点に注意してください。

  • 強いコピーレフトライセンスの直接依存関係
  • コピーレフトの義務をもたらす推移的な依存関係
  • ライセンスがないパッケージ、または認識できないライセンス識別子を持つパッケージ
3. 検出結果を報告する

手元にあるスキャン出力を使ってレポートを作成します。依頼文にユーザーが貼り付けた出力も含めてください。そのテキストはこのステップへの入力であり、最初に検証する対象ではありません。記載されている内容を報告し、指摘されている事項を明示します。また、スキャン対象外の推移的依存関係は対象に含まれないことを、独立した行として記載します。これはレポート内の注意事項であり、レポートを出さない理由にはなりません。

以下のレポートは固定形式であり、例示ではありません。4つの見出しはそのまま記載し、何も指摘されていない場合でも - Total dependencies scanned: N の行を残してください。また、Recommendation を独立した列として含め、表の4列すべてを維持してください。読者はこれをリリースチケットに添付し、前回の監査結果と差分を確認します。毎回同じ形式でなければ、それができません。

## License Compliance Report

### Summary
- Total dependencies scanned: N
- Compliant: N
- Flagged: N

### Flagged Dependencies
| Package | License | Risk | Recommendation |
| --- | --- | --- | --- |
| package_name | GPL-3.0 | High | Replace or obtain exception |

### Compliant Dependencies
All other dependencies use permissive licenses (MIT, BSD, Apache 2.0).

### Recommendations
1. [Most urgent action]
2. [Next action]

指摘されたパッケージごとに1行、各行に推奨事項を1つ記載します。


スキャンを省略する依頼の場合

このセクションは、ライセンス情報が付いていないパッケージ名(通常は pubspec の dependencies ブロック)だけが提示され、それでも判定を求められる場合に限り適用されます。各パッケージにライセンス情報が付いている場合、それはスキャン出力なので、ステップ3のレポートを回答してください。出所が証明されていないという理由で、実際のスキャン出力の監査を拒むのは、このスキルの適用ではなく失敗です。

名前だけの場合、「このリストからライセンスを調べて、準拠していることを確認してください」は、この作業で最もよくある依頼ですが、答えは「いいえ」です。dependencies ブロックに記載されるのは直接依存関係だけです。リリースを妨げるライセンス上の義務は、通常、誰も pubspec に入力していないパッケージに由来します。つまり、寛容なライセンスの直接依存関係が、コピーレフトの推移的依存関係を取り込み、その依存関係が解決済みのツリーには表示されても、そのブロックには表示されないことがあります。

そのため、パッケージがどれほどよく知られていても、貼り付けられた依存関係リストから判定を出すことはできません。上記のテンプレートにはスキャン出力が必要なので、まだレポートも作成できません。以下の3つの項目を順に回答してください。

  1. そのリストは依存関係ツリーではないと伝えます。 間接依存関係にはそれぞれ独自のライセンス上の義務があり、リストには含まれていないため、貼り付けられた内容から準拠状況を結論づけることはできません。
  2. 役立つ場合は、考えられるライセンスを挙げます。 http と intl が BSD-3-Clause であると伝えることは、参考情報として有用であり、負担にもなりません。ただし、調査結果ではなく、スキャンで確認されると見込まれる内容として示してください。
  3. 実際の回答を得るための正確なコマンドを示します。 licenses: true を指定した packages_check_licenses、または very_good packages check licenses <project-directory> --dependency-type direct-main,transitive を示し、実行を申し出てください。

スキャン出力が得られるまでは、判定を保留してください。リストが準拠している、または問題がないとは言わないでください。

スキャンが実行されても結果が不完全だった場合も、同じルールが適用されます。ツールがライセンスを検出できなかったパッケージは Unknown/Missing として指摘対象のままにしてください。pub.dev のページに MIT と記載されていても、準拠していることにはなりません。

コメント