Blog

Agent Skills を作って育てる話AWSコスト見積を再現可能にする aws-cost-estimate

岡本 渉 技術ブログ

寒暖差が激しい時期ですが、案件側は待ってくれないので、今日も見積と実装の往復をしています。
さて、AWSの見積は、最初の金額感を出すだけなら速いのですが、運用に乗せると急に難しくなります。
同じ構成でも前提がズレる、単価の出典が追えない、何を合計に含めたかが資料ごとに違う。
この「見積のブレ」を減らすためにAIで使える Agent Skills を整備しました。

この記事では次の3点をまとめます。
  • Agent Skills の作り方
  • Agent Skills の使い方
  • aws-cost-estimate の SKILL.md 本文紹介

Agent Skills とは

Agent Skills は、AIエージェントに特定業務の手順を覚えさせるためのローカル定義です。
このプロジェクトでは skills/aws-cost-estimate 配下に保存し SKILL.md に実行ルールを書きます。

AIに指示を出す際に都度プロンプトで説明していた運用知識を、再利用可能な手順として残すイメージです。

Agent Skills の作り方

基本の流れはシンプルです。
  1. <skill-name>/SKILL.md を作る
  2. 冒頭に name と description を書く
  3. 本文に実務の手順と品質条件を整理する

私が作った AWS のコスト概算を行う aws-cost-estimate では、以下を明文化しています。

  • 必須入力(リージョン、構成、稼働条件、比較シナリオ)
  • 単価取得の優先順位(公式ソース優先)
  • 月額計算式(730時間/月)
  • 出力テンプレート(前提・単価・計算式・合計・未加算項目)
  • 品質ゲート(リージョン整合、単位整合、除外項目明示)

Agent Skills の使い方

実務での使い方は、対象スキルを指定して依頼するだけです。
たとえば aws-cost-estimate に見積を依頼すると、出力順序が固定されます。
  1. 試算条件
  2. 単価(ソース付き)
  3. 計算式と各項目の月額
  4. 合計
  5. 比較シナリオ
  6. 注意点(未加算項目)
  7. 参考URL

金額だけでなく、説明可能性までセットで出すので実務でも活かせるかと思います。

aws-cost-estimate の SKILL.md 本文

以下が最初に作った SKILL.md 本文です。
---
name: aws-cost-estimate
description: Estimate monthly AWS costs from architecture assumptions using the latest official pricing in a specific region. Use when users ask for AWS cost estimation, component-by-component monthly breakdowns, budget projections, scenario comparisons (e.g., Single-AZ vs Multi-AZ), or autoscaling cost impact.
---

# AWS Cost Estimate

## Overview
AWS 構成の月額コストを、前提条件と最新単価に基づいて再現可能な手順で試算する。
見積は必ず「前提」「単価」「計算式」「合計」「未加算項目」を分離して出力する。

## Required Inputs
以下を先に確定する。
- 対象リージョン(例: `ap-northeast-1`)
- リソース構成(例: Fargate/ALB/RDS/S3/EFS/CloudFront/NAT)
- 稼働条件(常時台数、vCPU/メモリ、転送量、保存容量、LCU想定)
- 比較シナリオの有無(Single-AZ vs Multi-AZ、AutoScaling上下限など)

未確定値は推定せず、`要確認` として明記する。

## Workflow
1. Scopeを固定する
- 何を「合計」に含めるかを最初に定義する。
- 例: hosting全体に含める項目、含めない項目(リクエスト課金、I/O課金、税金など)。

2. 単価を公式ソースから取得する
- 優先順位:
  1. AWS公式の料金ページ(対象リージョンを明示)
  2. AWSの料金JSON/API(Price List API、meteredUnitMaps など)
  3. 公式ドキュメント内の料金例(不足時のみ)
- 取得時ルール:
  - リージョン名を必ず明示する(例: `Asia Pacific (Tokyo)`)。
  - 単位を必ず保持する(`/時`、`/GB-月`、`/LCU-時` など)。
  - 取得日を記録する。

3. 月額計算を行う
- デフォルトは `730 時間/月` を使用する。
- 代表式:
  - Fargate: `((vCPU単価 × vCPU数) + (メモリ単価 × GB)) × タスク数 × 730`
  - ALB: `(ALB時間単価 + (LCU単価 × 平均LCU)) × 730`
  - NAT Gateway: `(時間単価 × 730) + (データ処理単価 × GB)`
  - RDS: `時間単価 × 730`
  - S3/EFS: `GB月単価 × 容量GB`
  - CloudFront転送: `転送単価 × GB`

4. 感度分析を追加する
- AutoScalingの増分を追加する:
  - `+1タスク` あたり月額増分
  - `min` と `max` の差分上限
- 代替構成も必要に応じて算出する:
  - 例: RDS Single-AZ と Multi-AZ

5. Markdownで出力する
- 以下の順番で出力する:
  1. 試算条件
  2. 単価(ソース付き)
  3. 計算式と各項目の月額
  4. 合計
  5. 比較シナリオ
  6. 注意点(未加算項目)
  7. 参考URL

## Output Template
```markdown
# AWSコスト試算({region})

更新日: yyyy-mm-dd
通貨: USD

## 試算条件
- ...

## 単価
- ...

## 月額試算
- ...

合計:
- **${total} / 月**

## シナリオ比較
- ...

## 注意点
- ...

## 参考URL
- ...
```

## Quality Gates
出力前に以下を確認する。
- 単価は対象リージョンに一致しているか。
- 単価の単位と計算式が整合しているか。
- 合計に含めた項目と除外項目が明確か。
- `today` / `latest` のような相対表現は具体日付で補足したか。
- 参照URLがすべて公式ソースか。

## Common Omissions
次は漏れやすいため、未加算なら必ず明記する。
- CloudFront/S3 のリクエスト課金
- RDS ストレージ・I/O・バックアップ超過
- CloudWatch Logs 取り込み/保管
- インターネット・AZ間データ転送
- 税金、割引(RI/Savings Plans)
実際にこのスキルで以下の条件でコスト試算した結果は、以下の通りです。
S3 + CloudFront にWAFを加えた静的ホスティングです。

プロンプト

以下の条件で月間のAWSコストを試算してください
- リージョン: ap-northeast-1
- CloudFront 転送量: 100 GB / 月
- AWS WAF: Web ACL 1 + Managed Rule Group 7
- AWS WAF リクエスト数: 10M / 月(試算用の仮定)
- S3(メディア保存): 50 GB

結果

ご依頼の条件(東京リージョンで CloudFront・WAF・S3)で月額試算を行います。まず aws-cost-estimate スキルの手順を確認し、指定条件に必要な最新単価を収集します。

# AWSコスト試算(ap-northeast-1、2026-02-28 JST時点)

## 試算条件
- CloudFront 転送量: 100 GB/月
- AWS WAF: Web ACL 1 + Managed Rule Group 7
- AWS WAF リクエスト数: 10M/月
- S3(Standard想定): 50 GB
- 税金、無料枠、割引(RI/SP)は未考慮

## 単価(USD)
- CloudFront(日本、最初の10TB帯): $0.114/GB
- WAF Web ACL: $5.00/月
- WAF Rule(Managed Rule Group を 1 ルール相当で計上): $1.00/ルール/月
- WAF Request: $0.60/100万リクエスト
- S3 Standard(Tokyo): $0.025/GB-月

## 月額計算
- CloudFront: 100 × 0.114 = $11.40
- WAF Web ACL: 1 × 5.00 = $5.00
- WAF Managed Rule Group: 7 × 1.00 = $7.00
- WAF Requests: 10 × 0.60 = $6.00
- S3: 50 × 0.025 = $1.25
- 合計: $30.65/月

## 注意点(未加算)
- CloudFront リクエスト課金
- S3 リクエスト/データ取り出し課金
- WAF の一部マネージドルール(Bot Control など)の追加課金
- 消費税、為替変動

## 参考URL:
- [AWS CloudFront Pricing](https://aws.amazon.com/cloudfront/pricing/)
- [AWS WAF Pricing](https://aws.amazon.com/waf/pricing/)
- [Amazon S3 Pricing](https://aws.amazon.com/s3/pricing/)

Agent Skills は「作って終わり」ではなく「育てる」

ここが実運用でいちばん重要でした。
Agent Skills は初版を作って終わりではなく、使いながら微調整する前提で運用すると強いです。
しかも、その微調整自体をAIに依頼できます。

たとえば aws-cost-estimate を使っていて、USDだけでなくJPYも欲しくなったとします。
そのときは次のように伝えます。
  • 「本日時点でのドル円レートを調べ、日本円での試算と計算時点のレートも付記して」
この依頼で、その回の出力にJPY換算と為替レート情報を追加できます。
結果が良ければ、続けてこう伝えます。
  • 「今の指示を skills に反映しておいて」
すると SKILL.md の運用ルールとして反映でき、次回からは同じ指示を繰り返さなくても、日本円換算付きの見積を標準化できます。
そうやって、育てた aws-cost-estimate は、今はこんな感じになってます。

この運用で得られること

  • 一時的な要求を恒久ルールに昇格できる
  • 個人ノウハウではなく、チーム資産として共有できる
  • 出力品質が担当者依存になりにくい
  • 「なぜこの形式か」を後から説明しやすい

まとめ

今回紹介した aws-cost-estimate は、見積精度を上げる前に、見積手順を再現可能にするためのものです。
さらに、使いながらルールを育てていくことで、AIの出力はチームの実務により近づいていきます。
Agent Skills は手順書ではなく、更新可能な運用知識です。
見積のように説明責任が必要な業務ほど、効果がはっきり出るでしょう。

また、この Skill と Draw.IO や Terraform を組み合わせると、Draw.IO で作ったAWS構成図や Terraform のテンプレートから使用しているAWSリソースをピックアップしてコスト見積もりを行わせることもできると思います。
色々試してみてください。

現場からは以上です。
一覧にもどる