Claude Media
Claude CodeのFastlyプラグインでFalcoとViceroyを使う

Claude CodeのFastlyプラグインでFalcoとViceroyを使う

Fastly Agent ToolkitはFastlyが配布するスキル集のプラグインです。VCLのlintとテストにFalco、Computeのローカル実行にViceroyを使う手順と、スキルの選び方、落とし穴をまとめます。

Fastly Agent ToolkitはFastlyが配布するプラグインで、中身はスキルだけです。Claude Codeに入れると、VCLのlintやテストをFalco、Fastly ComputeのローカルサーバーをViceroyで回す知識が、状況に応じて自動で読み込まれます。MCPサーバーは含まれません。

Fastlyのアカウントにつなぐ機能もありません。ここでは入れ方、10個のスキルの地図、FalcoとViceroyそれぞれの使いどころ、CLAUDE.mdに足す一言、踏みやすい落とし穴を順に扱います。

入れ方と、入れただけでは動かないもの

導入は1コマンドです。Fastly側のREADMEは、Anthropic公式マーケットプレイス経由の入れ方を示しています。

claude plugin install fastly-agent-toolkit@claude-plugins-official
claude plugin list

claude plugin listで、入ったプラグインとスキルが見えれば完了です。導入済みの棚卸しはclaude plugin list --jsonの記事で詳しく扱っています。

READMEは、インストール後にInstalledタブで「Available skills」の全スキルが並んでいるかを見るよう書いています。数が合わなければ、入れ直しの前に取得元のバージョンを疑う手がかりになります。

押さえたいのは、プラグインがツール本体を入れないことです。READMEには「installing the plugin does not install its developer tools or connect a Fastly account」とあります。FalcoやViceroyは別途用意します。

前提ツール

スキルごとに要る前提

  • VCLのlint・テスト・シミュレーション

    Falcoが必要で、入れ方はHomebrewかGoです。

  • Computeのローカル実行

    ViceroyかFastlikeに加え、アプリのビルドツールとWASMターゲットが要ります。

  • Fastly CLIと統計

    Fastly CLIとローカルの認証設定が要ります。生のAPI例にはcurlとjqも使います。

  • Fiddleのテスト

    Bash、curl 7.76以降、jq、Fiddleへのネットワーク接続が要ります。

スキルは10個ある(掲載ページの「6つ」とずれている)

マーケットプレイスの掲載ページは「a collection of six specialized skills」と書き、Fastly、CLI、Falco、Viceroy、Fastlike、XVCLを挙げています。一方、GitHubのREADMEが並べるスキルは10個です。差分はfastly-fiddle、fastly-stats、fastly-ngwaf、fastly-reference-architecturesの4つです。

どちらを信じるかは、入れた後に見えるスキルの一覧で決まります。掲載ページの文面は古い可能性があるので、READMEの一覧を基準に読むと混乱しません。

スキル担当
fastly担当サービス、キャッシュ、VCL、WAF、TLS、DDoS、パージ、API
fastly-cli担当CLIでのサービス・Compute・ログ・WAF・TLS・KVストア・統計の操作
falco担当VCLのlint、テスト、シミュレーション、フォーマット
xvcl担当VCLトランスパイラー(ループや定数、マクロ)
viceroy担当Rust向けにComputeをローカルで実行
fastlike担当GoベースでComputeをローカルで実行
fastly-fiddle担当実際のFastlyエッジに対するVCLテスト
fastly-stats担当トラフィック数値の取得(キャッシュヒット率、帯域など)
fastly-ngwaf担当Next-Gen WAFの保護ルールの監査
fastly-reference-architectures担当動く参照アーキテクチャーのリポジトリ集

READMEは「全部は要らない」と明言しています。VCLならfalcoとxvcl、Computeならfastly-cliにviceroyかfastlikeが目安です。

Falco: VCLを直す前後にlintとテストを回す

Falcoは、VCLのlint、テスト、シミュレーション、フォーマットを担うGo製のツールです。falcoスキルの説明は、Falcoのソースを「Fastly VCLの方言の最も完全な機械可読な仕様」と位置づけています。変数のスコープや組み込み関数の署名で迷ったとき、Claudeはソースを読んで答える作りです。

入れ方はスキルに書かれた2通りです。

brew install falco
# またはGo 1.25以降で
go install github.com/ysugimoto/falco/cmd/falco@latest

日常で使うコマンドは4つです。

falco -vv -I ./vcl ./vcl/main.vcl      # lint
falco test -I ./vcl ./vcl/main.vcl     # ユニットテスト
falco simulate -I ./vcl ./vcl/main.vcl # ローカルで起動
falco fmt -w ./vcl/**/*.vcl            # 整形

falco simulateの既定ポートは3124です。起動したらcurl http://localhost:3124/pathで叩けます。「ローカルで動かす」にはlintでなくsimulateを使う、とスキルは明記しています。

テストはVCLで書く

テストファイルの拡張子は.test.vclです。例えば次のような形になります(スキルの参照ドキュメントの例に沿った形)。

// @scope: recv
// @suite: Authentication tests
 
sub test_auth_header_missing {
    unset req.http.Authorization;
 
    testing.call_subroutine("vcl_recv");
 
    assert.equal(req.http.X-Auth-Status, "missing");
}

--coverageでカバレッジ、-wで保存のたびの再実行(ウォッチモード)が使えます。Claudeに頼むなら「失敗するテストを先に書いて、falco testが通るまでvcl_recvを直して」と、テスト駆動の順序を指定すると噛み合います。

スキルが先回りして防ぐVCLの間違い

スキルには、lintを何度も往復させないための注意点が並びます。Claudeが書きがちな間違いが多く、レビューの観点としても使えます。

  • ヘッダーは文字列です。set req.http.X-API = trueは型不一致になり、"true"と書きます
  • 時間はRTIME型なので、set beresp.ttl = 86400は86400sと単位を付けます
  • beresp.*が使えるのはvcl_fetchだけで、vcl_deliverではresp.*を使います
  • req.requestは非推奨で、req.methodに直します
  • バックエンド名にはF_の接頭辞を付けます
  • Varyはvcl_fetchで設定します。vcl_deliverで足してもキャッシュキーには反映されません

Viceroy: Computeアプリをローカルで動かす

ViceroyはFastly公式のローカル実行環境で、Compute(WASM)アプリをエミュレートします。viceroyスキルが対象にするのは、RustとComponent Modelのプロジェクトです。Rust以外のComputeや、Compute APIそのものを調べたいときは、fastlikeスキルを使うよう書かれています。

最短の起動手順は次のとおりです。

cargo install --locked viceroy
fastly compute build
viceroy -C fastly.toml bin/main.wasm
# または Fastly CLI のラッパー
fastly compute serve

待ち受けは127.0.0.1:7676です。Fastlikeの既定ポート5000と混同しやすいので、スキルの注意書きにも出ています。

fastly.tomlの[local_server]が要る

起動時にいちばん多い失敗は、バックエンドの未定義です。fastly.tomlに[local_server]が無いと、Viceroyはバックエンドもストアも把握できません。アプリが呼ぶバックエンドは、すべて[local_server.backends]に書きます。

[local_server]
  [local_server.backends.origin]
  url = "http://localhost:8000"

ここでは本番のオリジンを指さず、ローカルのサーバーに向けます。スキルはその理由を、リクエストデータが誤って漏れないようにするためとしています。DictionaryとConfigStoreは両方使えますが、書く場所が違います。Dictionaryは[local_server.dictionaries]、ConfigStoreは[local_server.config_stores]です。

Rustのユニットテストも同じ基盤で走る

cargo-nextestを入れ、.cargo/config.tomlでターゲットとランナーを指定すると、Computeランタイム上でテストが走ります。

[build]
target = "wasm32-wasip1"
 
[target.wasm32-wasip1]
runner = "viceroy run -C fastly.toml "

この後はcargo nextest runです。cargo testでなくnextestを使う理由は、スキルが「テストの分離のために必須」としています。

どのスキルから頼むか

迷ったら、確かめたい対象で選びます。

切り分け

Fastlyの作業をどのツールに振るか

  1. Q確かめたいのはVCLの構文・ロジックですか?
    答えがいいえのとき

    falcoでlintとテストを回します。速いので、修正のたびに繰り返せます。

    答えがはい
  2. Q地域判定やWAF、ESIのように、実際のエッジでしか再現しない挙動ですか?
    答えがいいえのとき

    fastly-fiddleを使います。FiddleはFastlyの実際のエッジ基盤に対して走り、公開のたびに10〜20秒のエッジ同期待ちが入るため、高速な反復には向きません。

    答えがはい
  3. QComputeアプリの動作確認ですか?
    答えがいいえのとき

    Rustならviceroy、それ以外はfastlikeを使います。

    答えがはい

設定や数値の確認

サービス設定の変更はfastly-cli、トラフィックの数字はfastly-statsに任せます。

Fiddleの待ち時間はfastly-fiddleスキル自身が書いている数字です。Falcoの手元テストで通してから、実エッジ固有の挙動だけをFiddleに回す二段構えが、反復の速さと再現性の両方を取れます。

CLAUDE.mdに足しておく一言

スキルは文脈で自動的に読み込まれますが、「直したらlintとテストまで回す」という運用はプロジェクト側で決めます。VCLのあるリポジトリなら、次のような記述が例になります。

## Fastly VCL
- VCLを変更したら、完了を報告する前に `falco -vv -I ./vcl ./vcl/main.vcl` と
  `falco test -I ./vcl ./vcl/main.vcl` を実行し、結果を読む
- 本番のFASTLY_API_KEYを会話やファイルに書かない

Claudeは出力を読み、エラーがあれば自分で直して再実行できます。ただし、これは「実行を促す指示」であって、成功を保証するものではありません。

踏みやすい落とし穴

  • APIキーを会話に貼らない: FalcoスキルもREADMEも、CLIの対話ログインかローカル設定で認証するよう求めています。キーを貼る、プロジェクトのファイルに書く、キーが見える出力を共有する、のいずれも避けます。権限を絞った認証情報を選ぶのが前提です
  • Falcoの--remoteはAPIキーを使う: -r, --remoteでFastlyのスニペットを取得するときは、FASTLY_SERVICE_IDとFASTLY_API_KEYが要ります
  • references/が読めること: SKILL.mdは同じスキルのreferences/内のファイルを参照します。エージェントがそのディレクトリを読めないと、参照先の詳細を取りこぼします
  • Fiddleは公開が前提: READMEの案内によると、公開のFiddleへのアップロードは「Privacy and data handling」で説明されています。社内のVCLや秘匿値をそのまま載せる前に、そちらを読みます
  • Falcoの守備範囲: falcoスキルは、Compute/WASM、Fastly APIの操作、パージ、Terraformリソースの記述には使わない、と除外しています

まとめ

FastlyのVCLを触るなら、まずFalcoでlintとテストの往復を速くするところから始めると、投資が小さく効果が見えやすくなります。Computeは、Rustならviceroy、fastly.tomlの[local_server]を埋めるところが山場です。

なお、同種のスキル集を入れる流れはStackHawkのスキルやLogfireプラグインの記事とほぼ同じです。ツール本体と認証は自分で用意し、プラグインは知識を足す、と割り切ると設計がぶれません。

この記事を共有:XはてブLinkedIn