Skip to main content
プラグインはベータ版です。動作や設定は今後のリリースで変更される場合があります。
プラグインは、スキルをまとめたバンドルで、GitHub リポジトリ、git URL、またはローカルフォルダーからインストールし、複数のプロジェクトで再利用できます。プラグインをインストールすると、そのスキルを /<plugin>:<skill> スラッシュコマンドとして利用でき、依存する他のプラグインも自動的に取り込まれます。 プラグインとは、次の内容を含むソースのことです:
my-plugin/
├── .devin-plugin/
│   └── plugin.json     # プラグインマニフェスト
└── skills/
    └── review/
        └── SKILL.md    # 通常のスキル
skills/ ディレクトリには通常のスキルが格納されます。プラグインによって新しいスキルの 形式が追加されることはありません。SKILL.md の形式については、Creating Skills を参照してください。

プラグインのインストール

プラグインのソースには、GitHub の owner/repo、git URL、またはローカルパスを指定できます。
# GitHubから
devin plugins install acme/review-tools

# 任意のgitホストから
devin plugins install https://gitlab.com/acme/review-tools.git

# ローカルフォルダから(作成時に便利)
devin plugins install ./my-plugin
インストール前に、Devin はそのプラグインで追加される内容 (提供される スキル、自動的にインストールされる必要なプラグイン、追加されるポリシー (たとえば、他のプラグインを禁止するポリシーなど) ) を表示します。確認 プロンプトをスキップするには、-y / --yes を指定します。 プラグインは ユーザー レベルでインストールされ、すべての プロジェクトで利用できます。

プラグインの管理

# インストール済みプラグイン、そのバージョン、およびポリシーによってブロックされているものを一覧表示する
devin plugins list

# プラグインのスキルと、必須/任意/禁止リストを表示する
devin plugins info review-tools

# プラグイン(またはすべてのプラグイン)を最新バージョンで再取得する
devin plugins update review-tools
devin plugins update

# プラグインを削除する(自動インストールされた必須プラグインはそのまま残る)
devin plugins remove review-tools
ローカルプラグインはソースフォルダに直接リンクされているため、編集内容はすぐに反映されます: devin plugins install ./my-pluginskills/<name>/SKILL.md を編集 → 変更内容は 次のセッションで反映されるため、update は不要です。

マニフェスト

.devin-plugin/plugin.json はプラグインを定義します。必須なのは name のみで、 インストール済みプラグイン内で一意である必要があります (/<name>:… 名前空間になります) 。
{
  "name": "review-tools",
  "version": "1.0.0",
  "description": "Code-review skills for our team",
  "requiredPlugins": [
    "acme/secure-base",
    { "source": "github", "repo": "acme/audit-logging" }
  ],
  "optionalPlugins": [
    "acme/deploy-tools",
    { "source": "url", "url": "https://gitlab.com/acme/extra.git" }
  ],
  "forbiddenPlugins": ["sketchy-org/bad-plugin", "acme/*", "*"]
}
サポートされるメタデータ フィールドは、nameversiondescriptionauthor ({ name, email }) 、homepagerepositorylicensekeywords です。 依存関係のエントリは source で、文字列の省略記法またはオブジェクトで指定します。
  • "owner/repo" → GitHub
  • "https://…", "git@…", "ssh://…" → git URL
  • { "source": "github", "repo": "owner/repo" }
  • { "source": "url", "url": "https://gitlab.com/team/plugin.git" }
同じリポジトリを指す GitHub のすべての形式 (owner/repo、HTTPS URL、.git URL、SSH 形式) は、同じプラグイン ID を参照します。

依存関係とガバナンス

プラグインでは3つのリストを定義でき、これにより1つのプラグインを、他のプラグインを厳選して管理するコレクションとして機能させることができます。

requiredPlugins

プラグインのインストール時に、自動的に (再帰的に) インストールされます。必須プラグインがポリシーによってブロックされている場合、インストール全体が失敗し、部分的にインストールされることはありません。

optionalPlugins

このプラグインが許可するプラグインの許可リストです。これらが自動的にインストールされることはありません。このリストが意味を持つのは、禁止項目に対する例外としてのみです (以下を参照) 。

forbiddenPlugins

禁止リストです。各エントリには、次のいずれかを指定できます。
  • owner/repo、git URL、またはローカルパスで記述した、完全一致のプラグイン ID。
  • glob パターン* を含む任意のエントリ。*/ を含む任意の文字列にマッチします。パターンはまず正規の ID 空間に正規化されるため、acme/*https://github.com/acme/* (acme のすべての GitHub リポジトリ) になり、*/secrets は任意の owner 配下にある secrets という名前のリポジトリにマッチし、https://gitlab.com/acme/* はそのパス配下の任意のリポジトリにマッチします。
  • 単独の "*"。これは他のすべてのプラグインにマッチします (無効化不能な完全ロックダウン) 。
ポリシールールは次のとおりです。
  • 拒否が優先されます。 インストール済みのいずれかのプラグインが、完全一致の ID、マッチする glob、または "*" によって禁止している場合、そのプラグインはブロックされます。
  • 自身によるオーバーライド。 プラグイン自身の requiredPluginsoptionalPlugins、およびそのプラグイン自体は、その自身の禁止リストの対象外です。したがって、forbiddenPlugins: ["*"]optionalPlugins: [B, C] を組み合わせると、「自分自身と B、C は許可し、それ以外はすべて禁止する」という意味になります。
  • プラグイン間での再許可は不可。 あるプラグインの許可リストによって、別のプラグインが禁止しているものを再度許可することはできません。forbiddenPlugins: ["*"] を持つインストール済みプラグインは、無効化不能な完全ロックダウンです。
  • デフォルトではオープン。 インストール済みのどのプラグインも何も禁止していない場合、ブロックされるものはありません。
ポリシーは次の 2 つの時点で適用されます。
  • インストール時 — ブロックされているプラグイン (または required plugins を満たせないプラグイン、あるいは名前がインストール済みプラグインと衝突するプラグイン) のインストールは拒否されます。
  • 読み込み時 — インストール後にプラグインがブロックされるようになった場合 (たとえば、後からそのプラグインを禁止するプラグインがインストールされた場合) 、そのプラグイン自体はディスク上に残りますが、そのスキルはセッション開始時にスキップされ、どのプラグインがそれを禁止しているかを示す警告が表示されます。