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 listclaude 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の作業をどのツールに振るか
- Q確かめたいのはVCLの構文・ロジックですか?答えがいいえのとき答えがはい
falcoでlintとテストを回します。速いので、修正のたびに繰り返せます。 - Q地域判定やWAF、ESIのように、実際のエッジでしか再現しない挙動ですか?答えがいいえのとき答えがはい
fastly-fiddleを使います。FiddleはFastlyの実際のエッジ基盤に対して走り、公開のたびに10〜20秒のエッジ同期待ちが入るため、高速な反復には向きません。 - 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プラグインの記事とほぼ同じです。ツール本体と認証は自分で用意し、プラグインは知識を足す、と割り切ると設計がぶれません。