
# Aikido を独自の Claude Code プラグインにバンドルする

[公式の Aikido プラグイン](https://help.aikidogov.us/docs/docs-ja/ai-and-dev-tools/aikido-mcp/anthropic-claude-code-mcp)には、常に独自のスキルが同梱されています。開発者に提供するスキルを厳密に指定したい場合は、Aikido MCP サーバーと選択したスキルをまとめた社内プラグインを作成し、独自のマーケットプレイスから配布してください。プラグインとは、Claude Code が 1 つの単位として読み込む設定のフォルダーで、スキル、エージェント、フック、MCP サーバーを含みます。

次のような場合に使用します。

* 固定のスキルセットを提供したい場合：独自のスキル、Aikido のスキルの一部、またはその両方
* 開発者に何もインストールさせたくない、またはセットアップ手順を実行させたくない場合
* ロールアウトを自社リポジトリでバージョン管理し、レビューしたい場合

{% hint style="info" %}
公式の Aikido プラグインを独自のプラグインと併せてインストールしないでください。両方が Aikido MCP サーバーを登録し、スキルが 2 セット存在することになります。
{% endhint %}

## プラグインを作成する

{% stepper %}
{% step %}
**プラグインフォルダーを作成する**

```
aikido-internal/
├── .claude-plugin/
│   └── plugin.json
├── .mcp.json
└── skills/
    └── scan/
        └── SKILL.md
```

`.claude-plugin/` の中に置くのは `plugin.json` だけです。それ以外はすべてプラグインのルートに配置します。

`.claude-plugin/plugin.json`:

```json
{
  "name": "aikido-internal",
  "displayName": "Aikido (internal)",
  "description": "Aikido security scanning with our own skills",
  "version": "1.0.0"
}
```

`name` はスキルの名前空間になるため、`scan/` という名前のスキルフォルダーは `/aikido-internal:scan` になります。
{% endstep %}

{% step %}
**Aikido MCP サーバーを追加する**

プラグインのルートに置く `.mcp.json`:

```json
{
  "mcpServers": {
    "aikido": {
      "command": "npx",
      "args": ["-y", "@aikidosec/mcp@latest"]
    }
  }
}
```

プラグインが有効になると、サーバーは自動的に起動します。Aikido のツールを初めて使用する際、サーバーはブラウザーでのサインインを求めます。

ヘッドレス環境の場合、またはブラウザーでのサインインを省略したい場合は、Personal Access Token (PAT) を使用してください。サーバーは継承した環境から `AIKIDO_API_KEY` を読み取るため、開発者のシェルプロファイルまたはデバイス管理ツールで設定し、上記の設定は変更しないでください。これにより、トークンをプラグインリポジトリに含めずに済みます。PAT の作成方法については、[トークン認証](https://help.aikidogov.us/docs/docs-ja/ai-and-dev-tools/aikido-mcp/token-authentication)を参照してください。

Claude Code に各開発者へ一度だけトークンを入力させ、安全に保存させたい場合は、`plugin.json` の `userConfig` にトークンを宣言し、`env` ブロックで `${user_config.aikido_token}` として参照します。

```json
{
  "userConfig": {
    "aikido_token": {
      "type": "string",
      "title": "Aikido token",
      "description": "Your Aikido Personal Access Token",
      "sensitive": true
    }
  }
}
```

次に、`.mcp.json` でサーバーに渡します。

```json
"env": {
  "AIKIDO_API_KEY": "${user_config.aikido_token}"
}
```
{% endstep %}

{% step %}
**必要なスキルを追加する**

各スキルは、`skills/` 配下にある `SKILL.md` ファイルを含むフォルダーです。`description` は、Claude がそのスキルをいつ使用すべきかを示します。

`skills/scan/SKILL.md`:

```markdown
---
description: Scan changed code with Aikido for vulnerabilities and hardcoded secrets. Use after writing or editing code, and before committing.
---

Run the Aikido `aikido_scan_paths` tool on the files changed in the working tree.

Report every finding with its severity and file location, then fix the ones
you introduced. Do not commit while a critical finding is open.
```

必要な数だけ追加できます。たとえば、`aikido_issues_list` を使用して現在のリポジトリの未解決の課題を取得するトリアージスキルなどです。サーバーが提供する機能については、[利用可能な MCP ツール](https://help.aikidogov.us/docs/docs-ja/ai-and-dev-tools/aikido-mcp/using-aikido-mcp#available-tools)を参照してください。
{% endstep %}

{% step %}
**ローカルでテストする**

```shellscript
claude --plugin-dir ./aikido-internal
```

次に、`/aikido-internal:scan` を実行してスキルを確認し、`/plugin` を実行して Aikido MCP サーバーが起動したことを確認します。`/reload-plugins` を実行すると、再起動せずに編集内容を反映できます。

配布する前に構造を検証します。

```shellscript
claude plugin validate ./aikido-internal
```
{% endstep %}
{% endstepper %}

## チームに配布する

開発者が読み取れるリポジトリにプラグインを配置し、リポジトリのルートの `.claude-plugin/marketplace.json` にマーケットプレイスファイルを置きます。

```json
{
  "name": "acme-tools",
  "owner": {
    "name": "Platform Team",
    "email": "platform@acme.com"
  },
  "plugins": [
    {
      "name": "aikido-internal",
      "source": "./aikido-internal",
      "description": "Aikido security scanning with our own skills"
    }
  ]
}
```

プライベートリポジトリでも問題ありません。Claude Code は各開発者の既存の Git 認証情報を使用してクローンします。

次に、以下をプロジェクトの `.claude/settings.json` にコミットします。

```json
{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme/claude-plugins"
      }
    }
  },
  "enabledPlugins": {
    "aikido-internal@acme-tools": true
  }
}
```

開発者がリポジトリフォルダーを信頼すると、Claude Code はそれ以上確認を求めることなく、マーケットプレイスを追加してプラグインを有効にします。

{% hint style="warning" %}
上記のように、プラグインフォルダーはマーケットプレイスリポジトリ内に置き、相対パス `./` で参照してください。別の GitHub リポジトリなど外部ソースを指すプラグインは、設定ファイルだけではインストールされません。各開発者が事前に `claude plugin install` を実行する必要があります。
{% endhint %}

## ツールで実行できる操作を制御する

独自のプラグインをバンドルすることで、開発者のマシン上に存在するスキルを制御できます。ただし、Aikido のツールに許可される操作は変わりません。これは引き続き Aikido のワークスペースレベルの設定です。[MCP の権限](https://help.aikidogov.us/docs/docs-ja/ai-and-dev-tools/aikido-mcp/mcp-permissions)を参照してください。
