1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terragruntのバージョンアップ影響調査をClaude Codeのskillにして公開した話

1
Posted at

Terragruntのバージョンアップ影響調査をClaude Codeのskillにして公開した話

こんにちは!2年目クラウドエンジニアのうしです。

今のプロジェクトで、開発の途中にTerragruntが1.0.0になりました。その調査がしんどかったので、「Terragruntのバージョンを上げたら何が壊れるか」を調べるClaude Codeのskillを作って、GitHubで公開しました。一番効いた設計判断は、skillに知識を持たせないことでした。

想定読者

  • Terragruntのバージョンアップで何が壊れるか、リリースノートを追うのがしんどい人
  • Claude Codeのskillを作ってみたいけど、何を書けばいいかわからない人
  • 公開されているskillを入れる前に、どこを見ればいいか気になる人

この記事で身につくこと

  • 知識を埋め込まず、実行時に一次情報を読ませる設計
  • 作ったskillを、正解入りのテストデータで検証する方法
  • 他人のskillを使う前に見るところ

自己紹介

  • 2年目のクラウドエンジニア
  • 今のプロジェクトでTerraformとTerragruntを触っている
  • skillを作って公開するのは今回が初めて

目次

  1. 作ったきっかけ
  2. 既存のskillの調査
  3. 設計:知識を持たせず、一次情報を読ませる方針
  4. 検証:正解入りのテストデータ
  5. 実在のリポジトリ2つでの検証
  6. 公開と、skillを使う側の注意
  7. まとめ

1. 作ったきっかけ

今のプロジェクトでは、次の2つのメジャーバージョンアップが重なりました。

  • Terragruntが開発の途中で1.0.0になった
  • AzureRMプロバイダが4.xから5.xになった

どちらも「何が壊れるか」を調べるのに苦労しました。AzureRMのほうは、TerraformとTerragruntのコードから影響箇所を洗い出す個人用のツールを作りました。このツールを作ったときの調査の記録をClaude Codeに見せて、「これをskillにしたら面白そうじゃね?」と思ったのが出発点です。

2. 既存のskillの調査

作る前に、同じskillがすでにないかを検索で調べました。

Terraformのprovider向けには既存のskillがあるので、自分が作るのはTerragrunt本体に絞りました。型はprovider-upgrade-analysisを借りています。原文を読むと、7ステップ、レポートの雛形、安全チェックリストなどが整っていたためです。

3. ワークフロー

このskillは、次の7ステップで検証します。

ベースにしたprovider-upgrade-analysisの7ステップのうち、2ステップを、Terragrunt固有の確認(5)と予行演習(7)に差し替えました。

4. 検証

自分で正解をおいたテスト用のリポジトリを作って、skillを検証しました。

リポジトリは、Terragrunt 0.67.0を使っている想定の小さな構成です。skillが見つけるべき問題と、紛らわしい記述を、入れてあります。

種類 例 skillの正解
最新版で削除済みのコマンド・属性 apply-all、hclfmt、skip = true 「削除済み」と報告する
構造の問題 terragrunt.hclとterragrunt.stack.hclが同じディレクトリにある 報告する
非推奨だが、まだ動く記述 run-all 「非推奨」と報告する
名前が似ているだけの記述 skip_outputs 報告しない

1回目はかなーり間違えました。hclfmtとgraph-dependenciesを、「v0.78.0で非推奨。公式ドキュメントにも載っているので、まだ動くはず」と報告(正解は「v0.90.0で削除済み」)。
公式ドキュメントが古かったうえに、全リリースを読まず、抜粋だけで判断したのが原因です。

そこで、skillに2つ足しました。

  • 調べたい名前ごとに、全リリースのノートを検索して、最後に書かれた状態を採用する
  • 全部を追えていない名前は、「削除済み」「非推奨」と断定せず、status unverified(未確認)と書く

名前ごとの検索は、たとえばhclfmtならこのコマンドです。

gh api repos/gruntwork-io/terragrunt/releases --paginate \
  --jq '.[] | select(.prerelease==false and ((.body // "") | contains("hclfmt"))) | .tag_name'

直したskillで同じ質問をすると、hclfmtとgraph-dependenciesは「v0.90.0で削除済み」と正しく報告されました。run-allも、削除の記録がないので、非推奨のままと報告されています。

5. 実在のリポジトリ2つでの検証

ここまでは自作のデータだったので、公開リポジトリのコードでも試しました。

  • cds-snc/forms-terraform(1.0.8から1.1.6へ):削除は0件で、generateファイルの権限が0600になる(v1.1.5)などの指摘は、リリースノートと合っていました
  • rust-lang/simpleinfraのterragruntディレクトリ:バージョン固定がなく、全項目がstatus unverifiedでした。skillが気になる点として挙げたrun_cmd("--terragrunt-quiet", ...)は、自分で調べるとv1.0.7のノートに現行の書式として出ていて、問題なさそうでした

6. 公開と、skillを使う側の注意

marketplace.jsonを置いたGitHubリポジトリにすると、次の2コマンドで入れられます。

claude plugin marketplace add gyudonmaruapp-cpu/terragrunt-upgrade-impact
claude plugin install terragrunt-upgrade-impact@terragrunt-upgrade-impact

入れる前に、次の2点を確認してください。

  • 同梱のスクリプト:skillの隣にscripts/などを置けます(同上)
  • 取得先のURL:このskillは実行時にWebを読むので、取得元が信用できるかを見てください

7. まとめ

  • Terragruntのバージョンアップの影響を調べるskillを作り、公開した
  • 知識は持たせず、リリースノートを実行時に読ませた。公式ドキュメントはリリースノートより古いことがあるので、判定はリリースノートを正とした
  • 別のClaudeに使わせると、1回目は「まだ動くはず」と間違えた。名前ごとの追跡とstatus unverifiedで防いだ

初めてのskill公開です。使ってみた感想や、ここが違うという指摘があれば、コメントやIssueでお待ちしています!

参考リンク

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?