🛠️

skill-creatorを使って障害対応用のAgent Skillを作ってみる

に公開

TRUSTART株式会社でエンジニアとして働いているnagashunです!

Claude Codeを使っていると、「毎回同じような指示を出しているな」と感じることはありませんか?

例えば、Sentryからエラー通知が来るたびに「エラーの原因を分析して、影響範囲と緊急度を教えて」と毎回お願いしている、など。

こういった繰り返しの指示をSkillとして定義しておけば、Claudeが自動的に認識して適切なフォーマットで対応してくれます。

今回は、Anthropic公式の skill-creator を使って、実際に業務で使える「障害対応用のエラー分析Skill」を作成してみたので、その過程を紹介したいと思います!

Agent Skills とは

まずはAgent Skillsについて簡単に説明します!

Agent Skillsは、Claudeの能力を拡張するための仕組みです。2025年10月にリリースされ、12月にはオープンスタンダードとして公開されました。

公式の説明を借りると:

Skills are modular, self-contained packages that extend Claude's capabilities by providing specialized knowledge, workflows, and tools.
(Skillはモジュール式の自己完結型パッケージで、専門知識・ワークフロー・ツールを提供することでClaudeの能力を拡張する)

簡単に言えば、Claudeに対する「業務マニュアル」 のようなものですね。

Skillの構造

最小構成は SKILL.md ファイル1つだけです。

my-skill/
└── SKILL.md        # 必須: スキルの定義

より複雑なSkillでは、以下のようなリソースを追加することもできます。

my-skill/
├── SKILL.md        # 必須
├── scripts/        # 実行可能なコード(Python/Bashなど)
├── references/     # 参照用ドキュメント
└── assets/         # 出力に使うファイル(テンプレートなど)

配置場所

場所 範囲
~/.claude/skills/ 全プロジェクトで利用(個人用)
.claude/skills/ そのプロジェクト内のみ(チーム共有可)

skill-creator とは

Anthropicが公式リポジトリ(anthropics/skills)で提供しているSkill作成用のスキルです。

Skill作成のベストプラクティスに沿ったガイドや、初期化スクリプト・バリデーションスクリプトが含まれており、初めてのSkill作成でも迷わず進められるようになっています!

実際にSkillを作ってみる

それでは、実際にSkillを作っていきましょう!

作るもの

Sentryからエラー通知が来た際に、エラーログを渡すだけで以下を構造化して出力してくれるSkillを作ってみたいと思います。

  • エラー種別・発生箇所
  • ユーザー影響の有無
  • 緊急度(高/中/低)
  • 修正方針

Step 1: skill-creator のインストール

npx skills add https://github.com/anthropics/skills --skill skill-creator

対話式のインストーラーが起動するので、以下のように選択していきます。

◆  Which agents do you want to install to?
│  Claude Code (.claude/skills)

◇  Installation scope
│  Global

◇  Installation method
│  Symlink (Recommended)
  • エージェント: Claude Codeを選択
  • スコープ: Global(全プロジェクトで使えるように)
  • インストール方法: Symlink(更新が自動反映されるため)

Step 2: Skillの初期化

次に、skill-creatorに含まれる init_skill.py でテンプレートを生成します。

python3 ~/.agents/skills/skill-creator/scripts/init_skill.py error-analyzer --path ~/.claude/skills/

以下のような構造が自動生成されるので、ここから編集していく形になります。

error-analyzer/
├── SKILL.md                    # テンプレート(TODO付き)
├── scripts/
│   └── example.py              # サンプルスクリプト
├── references/
│   └── api_reference.md        # サンプルリファレンス
└── assets/
    └── example_asset.txt       # サンプルアセット

Step 3: 不要ファイルの削除

今回のSkillはテキスト指示のみで完結するため、サンプルのディレクトリは削除してしまいましょう。

rm -rf ~/.claude/skills/error-analyzer/scripts
rm -rf ~/.claude/skills/error-analyzer/assets
rm -rf ~/.claude/skills/error-analyzer/references

skill-creatorのガイドでは、Skillの自由度を3段階で定義しています。

自由度 形式 適した場面
テキスト指示 判断がコンテキストに依存する(今回のケース)
擬似コード・パラメータ付きスクリプト パターンはあるが多少の変動がある
固定スクリプト 毎回同じ処理を確実に実行する(PDF変換など)

エラー分析は毎回異なるエラーに対して判断するため、高い自由度が適切ですね。

Step 4: SKILL.md の編集

テンプレートの TODO を埋めて、実際のSkillに仕上げていきましょう!

---
name: error-analyzer
description: エラーログの分析と障害対応を支援するスキル。Sentryなどの監視ツールからのエラー通知、コンソールエラー、スタックトレースを受け取り、原因特定・ユーザー影響・緊急度・修正方針を構造化して出力する。「エラーを分析して」「このエラーの原因は?」「障害対応をお願い」「Sentryでこのエラーが来た」などのリクエストで使用する。フロントエンド・バックエンド問わず対応可能。
---

# Error Analyzer

エラーログを受け取り、構造化された分析結果を出力する。

## 分析手順

1. エラーメッセージとスタックトレースを読み取る
2. プロジェクト内の該当コードを特定し確認する
3. エラーの根本原因を特定する
4. 以下のフォーマットで分析結果を出力する
5. 修正方針には具体的なコード変更を含める
6. 分析結果の出力後、コードの修正には進まず、ユーザーに次のアクションを確認する

## 出力フォーマット

(中略)

## 重要: 分析後の振る舞い

分析結果を出力した後、コードの修正を自動的に行わないこと。
必ずユーザーに次のアクションを確認する。
ユーザーが明示的に修正を依頼した場合のみ、コード修正に進む。

SKILL.md を書く際のポイント

実際に書いてみて気づいたポイントを共有します!

1. description フィールドが最重要

description はClaudeがSkillをいつ使うか判断するためのトリガーです。「何をするか」だけでなく「いつ使うか」「どんな言葉で呼び出されるか」を含めるのがコツです。

2. 振る舞いの制御を明示する

最初のバージョンでは、分析後にClaudeが勝手にコード修正まで進んでしまいました。「分析だけで止まってユーザーに確認する」という指示を追加して解決しました。Skillは使ってみて初めて分かる改善点があるので、反復改善が大事ですね。

3. 500行以内に収める

skill-creatorのガイドでは、SKILL.md本体は500行以内を推奨しています。それ以上になる場合は references/ に分割しましょう。

動作確認

それでは、実際に動かしてみましょう!
新しいClaude Codeのセッションで、エラーログを渡してみます。

このエラーを分析して

TypeError: Cannot read properties of undefined (reading 'map')
    at ContactFormDialog (src/features/contact/components/ContactFormDialog.tsx:45:23)
    at renderWithHooks (node_modules/react-dom/cjs/react-dom.development.js:14985:18)

すると、定義したフォーマットに従って構造化された分析結果が返ってきました!

## エラー分析

### 概要
- エラー種別: TypeError (Cannot read properties of undefined (reading 'map'))
- 発生箇所: ContactFormDialog.tsx:342 — categories.map(...) の呼び出し
- 再現条件: ダイアログの初回マウント時、data が undefined のタイミングで発生

### ユーザー影響
- 影響あり
- お問い合わせフォームダイアログが開けず、ユーザーがお問い合わせを送信できない

### 緊急度
- 中
- お問い合わせ機能が使えない状態だが、アプリの主要機能には影響しない

### 修正方針
1. categories.map の前にガードを追加: categories?.map(...)
2. または useContactCategories フック側でデフォルト値を保証する

修正を進めますか? それとも他に確認したいことはありますか?

エラーの原因分析から影響範囲の判断、修正方針の提案まで一発で出力され、かつ修正はユーザーの指示を待つという振る舞いになっていますね。いい感じです!

まとめ

今回は、Anthropic公式のskill-creatorを使って、Agent Skillを作ってみました!

改めて流れを振り返ると:

  1. skill-creatorをインストールnpx skills add で一発
  2. init_skill.py でテンプレート生成 — 構造を覚える必要なし
  3. SKILL.md を編集description と本文を書くだけ
  4. 使ってみて改善 — 実際の動作を見てイテレーション

Skillの本体は SKILL.md というMarkdownファイル1つ です。「毎回Claudeに同じことを説明している」と感じたら、ぜひSkillにしてみてください!一度作れば、プロジェクトをまたいで使い回すこともできます。

参考

最後に

TRUSTART株式会社は、一緒に働くメンバーを募集しています!
インターンメンバーも大募集中です!
興味を持っていただいた方は、ぜひ弊社のページをご確認ください!

https://www.trustart.co.jp/recruit/

TRUSTARTテックブログ

Discussion