日本語

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

Aikido MCP サーバーと独自のスキルを社内向けの Claude Code プラグインにまとめることで、開発者は何も設定せずに統一されたセットアップを利用できます。

公式の Aikido プラグインには、常に独自のスキルが同梱されています。開発者に提供するスキルを厳密に指定したい場合は、Aikido MCP サーバーと選択したスキルをまとめた社内プラグインを作成し、独自のマーケットプレイスから配布してください。プラグインとは、Claude Code が 1 つの単位として読み込む設定のフォルダーで、スキル、エージェント、フック、MCP サーバーを含みます。

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

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

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

プラグインを作成する

  1. プラグインフォルダーを作成する

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

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

    .claude-plugin/plugin.json:

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

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

  2. Aikido MCP サーバーを追加する

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

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

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

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

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

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

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

    "env": {
      "AIKIDO_API_KEY": "${user_config.aikido_token}"
    }
  3. 必要なスキルを追加する

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

    skills/scan/SKILL.md:

    ---
    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 ツールを参照してください。

  4. ローカルでテストする

    claude --plugin-dir ./aikido-internal

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

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

    claude plugin validate ./aikido-internal

チームに配布する

開発者が読み取れるリポジトリにプラグインを配置し、リポジトリのルートの .claude-plugin/marketplace.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 にコミットします。

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

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

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

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

独自のプラグインをバンドルすることで、開発者のマシン上に存在するスキルを制御できます。ただし、Aikido のツールに許可される操作は変わりません。これは引き続き Aikido のワークスペースレベルの設定です。MCP の権限を参照してください。