【GitHub Copilot】Agent Skillsでチームの開発品質を向上させた話

こんにちは。Looopでシステムアーキテクチャやインフラのエンジニアをしている中澤です🙇
前回、「【GitHub Copilot】MCPサーバーとインストラクションファイルでチームの開発品質を向上させた話」という記事で、AIを活用したチームでの開発品質向上への取り組みについてご紹介しました。

techblog.looop.co.jp

あれからさらにAI活用を進め、AWSでのTerraform開発で現在メインで利用している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.mdscripts/フォルダ、templates/フォルダがあります。 スクリプトやテンプレートはこのような配置でなくても構いません。例えばhoge/直下にあってもOKです。要はSKILL.mdにどこにあるか記載されていれば大丈夫です。

.github/
└── skills/
    └── hoge/
        ├── SKILL.md
        ├── scripts/
        └── templates/

Agent Skillsはどうやって作る?

skill-creatorについて

Skillの作り方について、SKILL.mdのフォーマットなど詳細はドキュメントに譲りますが・・・

docs.github.com

実はAnthropicがSkillを作成するためのSkill skill-creator を公開しています!

github.com

今回ご紹介する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 validateterraform 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駆動開発基盤のベースにもなると思います!