
こんにちは。Looopでシステムアーキテクチャやインフラのエンジニアをしている中澤です🙇
前回、「【GitHub Copilot】MCPサーバーとインストラクションファイルでチームの開発品質を向上させた話」という記事で、AIを活用したチームでの開発品質向上への取り組みについてご紹介しました。
あれからさらにAI活用を進め、AWSでのTerraform開発で現在メインで利用しているAgent Skillsについてご紹介します。
- Agent Skillsとは?
- Agent Skillsの構成要素
- Agent Skillsはどうやって作る?
- 仕様駆動開発(SDD)のお話
- Terraform用Agent Skills
- 実際にAgent Skillsを運用してみて
- まとめ
Agent Skillsとは?
検索するとたくさん記事が出てきますので、詳細は割愛しますが、AIエージェントに渡す「手順書」のようなイメージです。 特定のタスクを行わせるにあたり
- どのようなフローで行うのか
- アウトプットに含める項目とテンプレート
- 作業完了チェックリスト
- (必要に応じて)タスクを行うのに使用するスクリプト
- やらないこと or してはいけないこと
などを定義します。 インストラクションとの違いは、AIエージェントが最初にSkillの全てを読み込まないことです。Skill定義(SKILL.md)のYAMLフロントマターだけを読み込み、必要に応じて内容を読み取る、といった動きをします。これによりコンテキストの節約が可能になっています。(段階的開示)
現状、AI活用におけるメインストリームと言っても過言ではないくらい、Agent SkillsはAI駆動開発において非常に重要なコンポーネントです👍
Agent Skillsの構成要素
1つのSkillは1つのフォルダに格納されたファイル群です。必須なのはSKILL.mdのみ。
GitHub Copilotの場合は格納先として以下がサポートされています。
リポジトリに格納する場合
.github/skills.claude/skills.agents/skills
個人利用する場合
~/.copilot/skills~/.agents/skills
フォルダ構成サンプル
以下はフォルダ構成のサンプルです。
hogeという名前のスキルに、SKILL.mdとscripts/フォルダ、templates/フォルダがあります。
スクリプトやテンプレートはこのような配置でなくても構いません。例えばhoge/直下にあってもOKです。要はSKILL.mdにどこにあるか記載されていれば大丈夫です。
.github/
└── skills/
└── hoge/
├── SKILL.md
├── scripts/
└── templates/
Agent Skillsはどうやって作る?
skill-creatorについて
Skillの作り方について、SKILL.mdのフォーマットなど詳細はドキュメントに譲りますが・・・
実はAnthropicがSkillを作成するためのSkill skill-creator を公開しています!
今回ご紹介するTerraform開発のための各種Skillも全てこのskill-creatorで作成しました。
使い方は簡単で、skill-creatorフォルダを上述のフォルダ構成に従い、.github/skills/配下に配置した後
/skill-creator ⚪︎⚪︎のスキルを作成して。 # 背景 ... # 目的 ... # ユースケース ... # アウトプット ... # やらないこと ...
といった感じでなるべく詳細に指示します。
skill-creator の重要性
skill-creatorを単なる便利ツールだと思ってはいけません。
それは、skill-creatorを使うことは、我々がインストラクションやAgent Skillsを使って「チーム」の開発品質を向上させようとしていることと同じだからです。
例えばskill-creatorを使わずに、普通にAIに指示をしてSkillを作ったとします。しかしそれは結局個人のナレッジやAI活用スキルに依存することになり、再現性がありません。
チームの開発品質を保つプロセスはSkill作成の段階からすでに始まっているのです。
Note
インストラクションってなに?という方は、ぜひ前回の記事を読んでみてください!
前回の記事
【Github Copilot】MCPサーバーとインストラクションファイルでチームの開発品質を向上させた話 - Looop TechBlog
仕様駆動開発(SDD)のお話
ここでAgent Skillsから離れ、仕様駆動開発(SDD: Spec-Driven Development)の話を少し🙇
「仕様を中心的存在として捉える」SDD的な考え方自体は以前から存在しましたが、エージェント型コーディングが主流になってきた昨年(2025年)頃から一気に表舞台に出てきた感があります。代表的な製品として、AWSのKiroや、GitHubのSpec kitがあります。
それは以下のような従来のAI開発における課題が背景にあると思われます。
- 会話履歴が長くなったり、別のチャットセッションになると文脈が失われる
- 口頭指示のようなプロンプトだけでは仕様が曖昧になる
- AIが勝手に設計判断を補完してしまったり、想定外のことをしてしまう
- 実装後に「なぜこうしたのか」が追えない
これらの課題を解決するため、コードを書く前に仕様や設計をAIエージェントに作成させます。基本はマークダウン形式で記述し、コードと同じリポジトリに格納します。
結局「ファイル」という形で情報を残し、エージェント間で情報を引き継ぐことが、AIにとって相性が良いということだと思います。今回、Terraform開発のためのSkillを作成するにあたり、このSDDの考え方を取り入れました。
Note
IaCにおいてはまだKiroやSpec kitのようなフレームワーク的なものは無さそうです😭
Terraform用Agent Skills
私たちのチームで作成したTerraform用のSkillをご紹介します。コンテキストが肥大化しすぎないよう、1つのSkillの担当範囲を絞っています。
1. create-instruction
まず最初に実行するSkillです。前回の記事で書いた「システム個別インストラクション」を作成します。
Skill概要
- システムの概要
- ビジネスニーズ
- システムの目的
- 要件(非機能含む)
- 仕様
といった、技術的要素の薄い、いわゆる要件や仕様といったものを定義することがSkillの主目的です。いわゆるWHATとWHYです。
アウトプット
.github/instructions/{system}.instructions.md
1システムにつき1つ、システム個別インストラクションを作ります。
Note
Looopでは複数システムのTerraformコードを1つのリポジトリで管理しているため、ファイルプレフィックスにシステム名{system}を付与しています。
2. architecture-design
次にインストラクションをインプットにして、設計ドキュメントを作成するSkillです。
Skill概要
- 全体アーキテクチャ設計とその設計判断
- Terraformワークスペース構成
- ネットワーク、セキュリティ、監視、可用性といった各種設計内容の詳細
- 他ワークスペースとの依存関係
- その他設計に関する事なんでも
- Terraformで作成するリソースやパラメータの一覧
といったいわゆる設計ドキュメントを作成します。
AWS MCPサーバーや、AWS Terraform MCPサーバーの使用をSkillに明記し、設計根拠となるベストプラクティスや公式ドキュメント情報、現在の実際のAWS環境情報を参照させます。
アウトプット
docs/{system}/design.md: 設計ドキュメントdocs/{system}/resources.md: 作成するAWSリソース一覧
という2つのファイルを生成します。
3. create-code
ここでついにコード作成のSkillです。前段までで作成したファイル全てに加え、グローバルインストラクションがインプットになります。
Skill概要
これまでのプロセスでしっかりアウトプットを生成していると、最少の指示でかなり精度の高いコードを作成してくれます。
terraform validateとterraform planまで実行し、デバッグまでやってもらいます。
また、どんなタスクをどこまでやったかを記録するtasks.mdファイルを作成させます。これを残すことで、別の人や別のエージェントセッションに情報を引き継げるようにします。
アウトプット
- Terraformコード全般
docs/{system}/tasks.md
を生成します。
4. review-terraform-code
生成されたコードをレビューするSkillです。
Skill概要
これまでのアウトプットをもとに
- 生成されたコードが目的に合致しているか
- ベストプラクティスや公式ドキュメントと照らし合わせて問題がないか
- セキュリティに問題がないか(Checkovによるスキャン)
といった観点でコードレビューを行います。
GitHub Copilotは様々なLLMを扱えるため、レビューにはこれまでと違うLLMや複数LLMを使ってレビューするのも良いと思います。
5. create-pull-request
PRを作成するスキルです。
Skill概要
- ブランチの作成(まだチェックアウトしていない場合)
- コミット積み
コミットコメントやコミット粒度などのルールをSkillに記載します。特にコミットコメントの品質が担保できるのは大きい! - プッシュとPR作成
PRのDescriptionのテンプレートがあるとPR品質が担保されるのでおすすめです。
フィードバックループ
コード作成の過程で、設計ドキュメントを修正する必要が結構出てきます。この「同期」もAIエージェントにやらせています。各Skillに定義する作業フローの最終ステップとして、こういったフィードバックについても記載しておくと良いと思います。
実際にAgent Skillsを運用してみて
正直、これまでのバイブコーディングの域を出なかった「ふんわりAI駆動開発」とは比較にならないレベルでコードの精度が上がったと感じています。レビューも文脈を理解したエージェントがやってくれるので精度が高いです。「Terraformコード開発」は時間的な制約からかなり解放されました。
以下、チームメンバーからコメントを頂戴しましたので載せておきます。
- Tさん「Agent Skillsを活用することで、Terraformコードの作成・更新・レビュー・プルリクエスト作成まで含めて、精度が向上し、手戻りも大幅に減った印象です。」
- Hさん「きちんとしたSkillを作るのは大変だけど、うまく作ると簡易な指示でも高い精度で進めてくれるので業務効率が向上しました!」
Note
もちろん、Agent Skills以前に定義していたグローバルインストラクションやMCPサーバーも精度向上に貢献しています。Agent Skillsはそれ単独ではなくこれまでの試みへの積み上げとなっています。
まとめ
全てがスムーズにうまくいったかのような内容になりましたが、最初は思うようなアウトプットが出せず苦労しました。ですが一発で完璧なSkillを作ることは無理ですし、そこを目指す必要もありません。
まずは最小構成から始めてみて、少しずつ改善していくアプローチが推奨されています。私たちも今も改善を続けている状況です。
skill-creatorを使えば「とりあえず始めてみる」ハードルは下がりますので、まだ試していない方はぜひAgent Skillsを作ってみてください。今後のAI駆動開発基盤のベースにもなると思います!