install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/fleetflow" ~/.claude/skills/majiayu000-claude-skill-registry-fleetflow && rm -rf "$T"
manifest:
skills/data/fleetflow/SKILL.mdsource content
FleetFlow スキル
FleetFlowをプロジェクトで効果的に活用するための包括的なガイドです。
概要
FleetFlowは、KDL(KDL Document Language)をベースにしたコンテナオーケストレーションツールです。
コンセプト: 環境構築は、対話になった。伝えれば、動く。
主要な特徴
| 特徴 | 説明 |
|---|---|
| 超シンプル | Docker Composeと同等以下の記述量 |
| 可読性 | YAMLより読みやすいKDL構文 |
| ステージ管理 | local/dev/pre/live を統一管理 |
| AIネイティブ | MCP (Model Context Protocol) を標準サポート |
| OrbStack連携 | macOSローカル開発に最適化 |
| Dockerビルド | Dockerfileからのビルドをサポート |
| イメージプッシュ | ビルド後のレジストリプッシュを自動化 |
| クロスビルド | でマルチアーキテクチャ対応 |
| サービスマージ | 複数ファイルでの設定オーバーライド |
| 再起動ポリシー | ホスト再起動時のコンテナ自動復旧 |
| 依存サービス待機 | Exponential Backoffで堅牢な起動順序制御 |
| クラウド対応 | さくらのクラウド、Cloudflareなど複数プロバイダー |
| DNS自動管理 | Cloudflare DNSとの自動連携 |
| CI/CDデプロイ | deployコマンドによる自動デプロイ |
| セルフアップデート | 最新バージョンへの自動更新 |
クイックスタート
インストール
# Homebrew (macOS) brew install chronista-club/tap/fleetflow # curl curl -sSf https://raw.githubusercontent.com/chronista-club/fleetflow/main/install.sh | sh # Cargo cargo install --git https://github.com/chronista-club/fleetflow
最小構成
// flow.kdl project "myapp" stage "local" { service "db" } service "db" { image "postgres:16" // image は必須 ports { port host=5432 container=5432 } env { POSTGRES_PASSWORD "postgres" } }
基本操作
fleet setup local # 初回セットアップ(冪等) fleet up local # 起動 fleet ps # 状態確認 fleet logs # ログ表示 fleet down local # 停止・削除
環境変数
| 変数 | 説明 |
|---|---|
| ステージ名を指定(local, dev, pre, live) |
| 設定ファイルの直接パス指定 |
| Cloudflare APIトークン(DNS自動管理用) |
| Cloudflare Zone ID(DNS自動管理用) |
環境変数ファイル
.fleetflow/ ├── .env # グローバル(共通) ├── .env.local # local 固有 ├── .env.dev # dev 固有 └── .env.live # live 固有
CLIコマンド一覧
ステージは位置引数で指定します。環境変数
FLEET_STAGE でも指定可能です。
| コマンド | 説明 |
|---|---|
| ステージの環境をセットアップ(冪等) |
| ステージを起動 |
| ステージを停止・削除 |
| CI/CD向けデプロイ(デフォルトでpull) |
| コンテナ一覧 |
| ログ表示 |
| 停止中のサービスを起動 |
| サービスを停止(コンテナ保持) |
| サービスを再起動 |
| イメージをビルド |
| ビルド&レジストリへプッシュ |
| 設定を検証 |
| クラウド環境を構築 |
| クラウド環境を削除 |
| MCPサーバーを起動 |
| FleetFlow自体を最新版に更新 |
| バージョン表示 |
設定ファイル構造
project "name" // プロジェクト名(必須) stage "local" { // ステージ定義 service "db" service "web" } service "db" { // サービス定義 image "postgres:16" // 必須 restart "unless-stopped" // 再起動ポリシー depends_on "other" // 依存サービス wait_for { ... } // 依存サービス待機設定 ports { ... } env { ... } volumes { ... } build { ... } // Dockerビルド設定 healthcheck { ... } // ヘルスチェック設定 } // クラウドインフラ(オプション) providers { sakura-cloud { zone "tk1a" } cloudflare { account-id env="CF_ACCOUNT_ID" } } server "app-server" { // クラウドサーバー定義 provider "sakura-cloud" plan core=4 memory=4 }
重要な仕様
imageフィールドは必須
imageフィールドは必須です。省略するとエラーになります:
// 正しい定義 service "db" { image "postgres:16" } // エラー: imageが必須 service "db" { version "16" // これだけではダメ } // Error: サービス 'db' に image が指定されていません
サービスマージ機能
複数ファイルで同じサービスを定義すると、設定がマージされます:
// flow.kdl(ベース設定) service "api" { image "myapp:latest" ports { port host=8080 container=3000 } env { NODE_ENV "production" } } // flow.local.kdl(ローカルオーバーライド) service "api" { env { DATABASE_URL "localhost:5432" } } // 結果: // - image: "myapp:latest" (保持) // - ports: [8080:3000] (保持) // - env: { NODE_ENV: "production", DATABASE_URL: "localhost:5432" } (マージ)
マージルール:
| フィールドタイプ | ルール |
|---|---|
| 後の定義がなら上書き、なら保持 |
| 後の定義が空でなければ上書き、空なら保持 |
| 両方をマージ(後の定義が優先) |
Dockerビルド機能
規約ベースの自動検出と明示的指定の両方に対応:
// 規約ベース: ./services/api/Dockerfile を自動検出 service "api" { image "myapp/api:latest" build_args { NODE_VERSION "20" } } // 明示的指定 service "worker" { image "myapp/worker:latest" dockerfile "./backend/worker/Dockerfile" context "./backend" target "production" // マルチステージビルド }
イメージプッシュ機能
ビルドしたイメージをレジストリにプッシュ:
# ビルドのみ fleet build local -n api # ビルド&プッシュ fleet build local -n api --push # タグを指定してビルド&プッシュ fleet build local -n api --push --tag v1.0.0 # クロスビルド(linux/amd64向け) fleet build live -n api --push --platform linux/amd64
認証方式:
- Docker標準の
から認証情報を取得~/.docker/config.json - credential helper(osxkeychain, desktop など)も自動対応
- 環境変数
でパスをカスタマイズ可能DOCKER_CONFIG
対応レジストリ:
- Docker Hub (docker.io)
- GitHub Container Registry (ghcr.io)
- Amazon ECR (.dkr.ecr..amazonaws.com)
- Google Container Registry (gcr.io)
- プライベートレジストリ (localhost:5000 など)
タグ解決の優先順位:
CLIオプション--tag- KDL設定の
フィールドのタグimage - デフォルト:
latest
クラウドインフラ管理
複数のクラウドプロバイダーをKDLで宣言的に管理:
providers { sakura-cloud { zone "tk1a" } cloudflare { account-id env="CF_ACCOUNT_ID" } } stage "dev" { server "app-server" { provider "sakura-cloud" plan core=4 memory=4 disk size=100 os="ubuntu-24.04" dns_aliases "app" "api" // DNSエイリアス } }
再起動ポリシー
ホスト再起動後にコンテナを自動復旧させる:
service "db" { image "postgres:16" restart "unless-stopped" // ホスト再起動後も自動起動 }
対応する値:
| 値 | 説明 |
|---|---|
| 再起動しない(デフォルト) |
| 常に再起動 |
| 異常終了時のみ再起動 |
| 明示的に停止されない限り再起動(推奨) |
依存サービス待機(Exponential Backoff)
K8sのReadiness Probeコンセプトを取り入れた、依存サービスの準備完了待機機能:
service "api" { image "myapp/api:latest" depends_on "db" "redis" wait_for { max_retries 23 // 最大リトライ回数(デフォルト: 23) initial_delay 1000 // 初回待機時間ms(デフォルト: 1000) max_delay 30000 // 最大待機時間ms(デフォルト: 30000) multiplier 2.0 // 待機時間の増加倍率(デフォルト: 2.0) } }
待機時間の計算(Exponential Backoff):
delay = initial_delay * multiplier^attempt
max_delayで上限を設定。デフォルト設定では1秒→2秒→4秒→8秒→...→30秒(上限)で待機。
デフォルト設定での動作:
- 最大約23回のリトライで約7分間の待機が可能
のみ指定でデフォルト値が適用されるwait_for
// デフォルト設定を使用 service "api" { depends_on "db" wait_for // 全てデフォルト値で待機 }
DNS自動管理(Cloudflare)
cloud up/cloud down時にDNSレコードを自動管理:
- サーバー作成時:
のAレコードを自動追加{service}-{stage}.{domain} - サーバー削除時: DNSレコードを自動削除
でCNAMEエイリアスも自動作成dns_aliases
必要な環境変数:
: Cloudflare APIトークンCLOUDFLARE_API_TOKEN
: ドメインのZone IDCLOUDFLARE_ZONE_ID
CI/CDデプロイ(deployコマンド)
CI/CDパイプラインからの自動デプロイに最適化されたコマンド:
# 基本的な使い方(デフォルトでpull) fleet deploy live --yes # pullをスキップ fleet deploy live --no-pull --yes # GitHub Actionsから ssh user@vps "cd /app && fleet deploy live --yes"
オプション:
| オプション | 説明 |
|---|---|
| イメージのpullをスキップ(デフォルトはpull) |
/ | 確認なしで実行(CI向け) |
デプロイフロー:
- 既存コンテナを強制停止・削除
- 最新イメージをpull(--no-pullでスキップ可能)
- コンテナを依存関係順に作成・起動
- wait_forによる依存サービス待機
セルフアップデート
# 手動でアップデート fleet self-update
コンテナ命名規則
FleetFlowは以下の命名規則でコンテナを作成します:
{project}-{stage}-{service}
例:
myapp-local-db
OrbStackでは
{project}-{stage} でグループ化されます。
プロジェクト構造
fleetflow/ ├── crates/ │ ├── fleetflow/ # CLI (bin: fleet) │ ├── fleetflow-core/ # KDLパーサー │ ├── fleetflow-config/ # 設定管理 │ ├── fleetflow-container/ # コンテナ操作 │ ├── fleetflow-build/ # Dockerビルド │ ├── fleetflow-mcp/ # MCPサーバー │ ├── fleetflow-cloud/ # クラウド抽象化 │ ├── fleetflow-cloud-sakura/ # さくらクラウド │ └── fleetflow-cloud-cloudflare/ # Cloudflare ├── spec/ # 仕様書 ├── design/ # 設計書 └── guides/ # 利用ガイド
スキルの起動タイミング
このスキルは以下の場合に参照してください:
- プロジェクトにFleetFlowを導入する際
設定ファイルを作成・編集する際flow.kdl- コンテナ環境の構築・管理を行う際
- ローカル開発環境のセットアップ時
- クラウドインフラを宣言的に管理する際
リファレンス
外部リンク
FleetFlow - シンプルに、統一的に、環境を構築する。