5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code Skills 実装パターン10選 — 業務をスキル化するときの設計判断と落とし穴

5
Posted at

はじめに

Claude Code の Skills 機能は、定型業務をスキル化して再利用できる強力な仕組みです。ただ「とりあえずスキル化する」と、後で逆にメンテコストが上がります。

この記事では、実務で20以上のスキルを運用してきた経験から、スキル化すべき業務の判断基準実装パターン10選 を紹介します。


スキル化の判断基準: 3つの問い

スキルを書く前に、まず以下を問います。

  1. 週1回以上、同じ作業を繰り返しているか? → 月1回未満なら CLAUDE.md のメモで十分
  2. 手順が言語化できるか? → 暗黙知ベースなら言語化が先
  3. 失敗時のリトライが安全か? → 破壊的操作(DB書き込み等)は最初は手動運用が安全

3つすべてYESなら、スキル化の価値があります。


パターン1: オーケストレーションスキル(複数スキルを順序実行)

例: デイリータスク全体を1コマンドで回すスキル。

---
name: daily-tasks
description: 毎日のタスクを順番に実行
---

1. STEP 1: check-replies スキルを実行
2. STEP 2: send-proposals スキルを実行
3. STEP 3: update-revenue スキルを実行

ポイント: 各STEPは別スキルとして独立させ、単体実行も可能にする。失敗箇所からの再開がしやすくなります。


パターン2: ブラウザ操作スキル

ブラウザ自動化は cmux などのツールに統一して、毎回 surface-health で番号確認を強制します。

SURFACE = subprocess.run(
    ["cmux", "surface-health"], capture_output=True, text=True
).stdout
# type=browser の surface番号をパース

落とし穴: surface番号をハードコードすると別セッションで壊れます。


パターン3: API送信スキル(Qiita / Slack / GitHub等)

外部APIを叩くスキルは、環境変数で認証を分離します。

TOKEN = os.environ.get("QIITA_TOKEN", "")
if not TOKEN:
    raise SystemExit("QIITA_TOKEN not set")

落とし穴: トークンをスキル本文にハードコードしないこと。settings.jsonで管理。


パターン4: 進捗追跡スキル(途中再開可能)

セッションが切れても再開できるよう、進捗ファイルを使います。

## 2026-04-23
- [x] STEP 1: 完了
- [ ] STEP 2: 未完了

ポイント: 各STEP完了後に即座にファイルを更新する。バッチで最後にまとめて書くと中断時に進捗が消えます。


パターン5: トレンド収集スキル(並列WebFetch)

複数ソースを順番にFetchすると遅いので、並列実行します。

# 1メッセージ内で複数Fetchを並列発行
fetch_hatena = WebFetch(url=HATENA_RSS, prompt=PROMPT)
fetch_zenn = WebFetch(url=ZENN_FEED, prompt=PROMPT)
fetch_qiita = WebFetch(url=QIITA_TOP, prompt=PROMPT)

落とし穴: シーケンシャル実行は3倍遅くなります。


パターン6: 履歴チェックスキル(重複防止)

過去の投稿履歴と照合して重複テーマを避けます。

with open("投稿履歴.md") as f:
    past_titles = re.findall(r'\| .+ \| (.+?) \|', f.read())
if any(similar(new_title, t) for t in past_titles):
    raise SystemExit("重複テーマ")

ポイント: 完全一致だけでなく、類似度でチェック。


パターン7: テンプレート使い分けスキル

条件分岐でテンプレートを切り替える例(営業メッセージ)。

def select_template(募集内容):
    if "初心者" in 募集内容 and "Web" in 募集内容:
        return TEMPLATE_BEGINNER
    elif "AI" in 募集内容:
        return TEMPLATE_AI
    else:
        return TEMPLATE_NORMAL

落とし穴: テンプレを多くしすぎると判定が複雑化。3〜4種類に絞ります。


パターン8: 失敗時の挙動を明示するスキル

API レート制限などで失敗したとき、リトライするかスキップするかを スキル定義に書きます

## ⚠️ 失敗時の挙動

- 1回失敗したらリトライしない
- バックグラウンド待機も禁止
- 翌日のデイリーで通常通り再試行

ポイント: 自動リトライを無制限にすると、429が永遠に解消しないループに入ります。


パターン9: スキル間の依存関係を分離するスキル

スキルAがスキルBを呼ぶ設計より、オーケストレーションスキルから両方を呼ぶほうが疎結合になります。

NG: A → B
OK: orchestrator → A
              → B

ポイント: 単体テスト・部分実行が可能になり、デバッグが楽。


パターン10: 実行記録を残すスキル

スキル実行の結果を毎回ログに残し、後で振り返れるようにします。

with open("メトリクス日次.md", "a") as f:
    f.write(f"| {date} | {result} | {memo} |\n")

ポイント: 数値の推移が見えると、スキルの効果を判断できます。


まとめ

スキル化は強力ですが、**「やみくもに作らない」**のが鉄則です。

  • 週1回以上の繰り返し業務だけスキル化
  • 進捗追跡で途中再開可能にする
  • 失敗時の挙動を明示する
  • 並列化できる箇所は並列化する
  • 実行ログを残して効果を測る

これらを意識すると、スキル群が 「メンテコスト < 削減コスト」 の状態を保てます。


Claude Code を使った開発・学習のサポートを MENTA で提供しています。→ https://menta.work/plan/20251
YouTubeでもAI×プログラミングの情報を発信中 → https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/

5
4
0

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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?