mcpField
T
tilt

tilt

github.com/alleneubankクラウド・DevOps50269 回インストール18 週間前に更新
リポジトリ

tilt について

tilt は、Tilt のリソースを調査・操作する開発者向けスキルです。エラーを先に確認し、ビルド状態とコンテナのヘルス状態を区別します。

主な機能

  1. 01リソースのエラーを優先確認
  2. 02保留中・進行中の状態を確認
  3. 03Docker Compose のヘルス状態を調査
  4. 04ログ確認と更新の実行
  5. 05リソースの起動・停止・準備待ち

活用シーン

  1. 01Tilt リソースのビルドエラー特定
  2. 02Docker Compose のヘルスチェック失敗の調査
  3. 03デプロイとリソース状態の監視

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alleneubank/claude-code --skill tilt

インストール後、Claude Code で/tiltを入力して読み込まれたか確認します。

同梱ファイルCLI_REFERENCE.mdTILTFILE_API.md

詳細

Tilt

最初に行うこと:エラーを確認する

問題を調査したりデプロイを検証したりする前に、リソースの状態を確認してください。保留中/進行中のリソースとは分けて、まずエラーを確認してください。そうしないと、実際の失敗が20行以上の保留中リソースに埋もれてしまいます。

# 1. Errors only — surface the buildHistory[0].error so you see WHY, not just THAT
tilt get uiresources -o json | jq -r '.items[] | select(.status.runtimeStatus == "error" or .status.updateStatus == "error") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)\n  reason: \((.status.buildHistory[0].error // "(no buildHistory error; check tilt logs)") | gsub("\n"; " ") | .[0:240])"'

# 2. In-progress and pending — informational; an in-progress build may flip to error any moment
tilt get uiresources -o json | jq -r '.items[] | select(.status.updateStatus == "in_progress" or .status.updateStatus == "pending" or .status.runtimeStatus == "pending") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)"'

# 3. Docker-compose container health — MISSED by the error filter above.
#    An `Up (unhealthy)` compose container keeps runtimeStatus=ok/update=ok, so
#    queries 1-2 never flag it; the red UI badge comes from healthStatus here.
tilt get uiresources -o json | jq -r '.items[] | select(.status.composeResourceInfo.healthStatus == "unhealthy") | "\(.metadata.name): compose healthStatus=unhealthy (HEALTHCHECK failing — service may still be up)"'

# 4. Quick status overview
tilt get uiresources -o json | jq '[.items[].status.updateStatus] | group_by(.) | map({status: .[0], count: length})'

確認時にリソースが in_progress の場合は、正常と判断する前に再度ポーリングしてください。buildHistory[0].error にエラーが記録された状態で、そのまま error に移行することがあります。updateStatus フィールドに反映されるのは現在のビルド試行の状態だけです。updateStatus が none または not_applicable の場合でも、最後のエラーは常に buildHistory[0].error に記録されます。

Docker Compose リソースは見落としやすいポイントです。 その runtimeStatus/updateStatus が反映するのはビルド/起動の状態だけで、コンテナーの Docker HEALTHCHECK は反映されません。そのため、プローブに失敗しているコンテナー(docker ps → Up (unhealthy))でも runtimeStatus=ok と表示され、クエリ1~2では検出されない一方、Tilt の UI では赤く表示されます。信頼できるシグナルは .status.composeResourceInfo.healthStatus(healthy/unhealthy/サービスにヘルスチェックがない場合は未設定)であり、クエリ3で検出できます。これらのリソースでは k8sResourceInfo: null となります(spec.type == "docker-compose")。プローブ失敗の原因を調べるには、Docker に切り替えてください。docker inspect <compose-project>-<svc> --format '{{json .State.Health}}' を実行すると、プローブの最後の終了コードと出力を確認できます。よくある原因は、ヘルスチェック用スクリプトがイメージに含まれていない CLI(例:軽量化されたイメージから削除された curl/grpcurl)を呼び出していることです。この場合、サービス自体に問題はなく、プローブが壊れています。

デフォルト以外のポート

Tilt がデフォルト以外のポートで実行されている場合は、--port を追加してください。

tilt get uiresources --port 37035
tilt logs <resource> --port 37035

リソースの状態

# All resources with status
tilt get uiresources -o json | jq '.items[] | {name: .metadata.name, runtime: .status.runtimeStatus, update: .status.updateStatus}'

# Single resource detail
tilt get uiresource/<name> -o json

# Wait for ready
tilt wait --for=condition=Ready uiresource/<name> --timeout=120s

状態の値:

  • RuntimeStatus:ok、error、pending、none、not_applicable
  • UpdateStatus:ok、error、pending、in_progress、none、not_applicable

ログ

tilt logs <resource>
tilt logs <resource> --since 5m
tilt logs <resource> --tail 100
tilt logs --json                    # JSON Lines output

トリガーとライフサイクル

tilt trigger <resource>             # Force update
tilt up                             # Start
tilt down                           # Stop and clean up

tilt up の実行

zmx スキルのパターンに従ってください。既存のセッションを確認し、Git のルートから名前を決め、(attach ではなく)zmx run を使用します。

PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" || basename "$PWD")
SESSION="${PROJECT}-tilt"

if zmx list --short 2>/dev/null | grep -q "^${SESSION}$"; then
  echo "Tilt session already exists: $SESSION"
else
  zmx run "$SESSION" 'tilt up'
  echo "Started tilt in zmx session: $SESSION"
fi

重要:コード変更のために再起動しないでください

Tilt は自動的にライブリロードします。以下の変更に対して、tilt up の再起動を提案しないでください。

  • Tiltfile の編集
  • ソースコードの変更
  • Kubernetes マニフェストの更新

再起動するのは、Tilt のバージョンアップ、ポート/ホストの変更、クラッシュ、クラスターコンテキストの切り替えの場合に限ります。

参考資料

コメント