🤖

Claude CodeでSkillsを定期実行で自動化する方法

に公開

元記事

Claude Code CLI Reference - Anthropic公式ドキュメント
https://docs.anthropic.com/en/docs/claude-code/cli-reference

GitHub Issue #1454: Machine to Machine Authentication for Max Subscriptions
https://github.com/anthropics/claude-code/issues/1454 (69+リアクション)

きっかけ

最近Skillsの使い方を考えていて、根っこが怠け者なので真っ先に「自分が指示しなくても勝手に定期実行してくれたらいいな」と思いました。調べてみると、意外と簡単ではないというか、良い情報が出回っていない。

なので自分で試行錯誤した結果と、実際に使えそうな用途、所感をまとめます。

Skillsが人の介入なしで動く

Claude CodeのSkills(カスタムワークフロー)、普通は対話モードで「このSkill使って」と指示しますよね。

ところが claude -p(headlessモード)と組み合わせると、人が画面の前にいなくてもSkillsが自動実行できます。しかもサブスクリプション認証のまま、API課金なしで。

claude -p はClaude Codeで「プロンプトを渡して実行し、結果を返して終了」というコマンドです。通常の対話モードと違って、ターミナルを開いて待つ必要がないので、Task Schedulerやcronからバックグラウンドで呼び出せます。

これの何が嬉しいかというと、Skillsは「model-invoked」なので、Claudeが状況に応じて適切なツールを自動選択してくれます。単純なスクリプトと違って、予期しないエラーや想定外の状況にも柔軟に対応できる。

GitHub Issue #1454でも「headless + サブスク認証」の組み合わせに69件以上のリアクションがついていて、需要はあるけど明確に文書化されていない機能みたいです。

これが革新的な理由

「定期実行」って、これまでAIがあってもプログラムに任せる領域でした。

ChatGPTが出てきても、GitHub Copilotが出てきても、定期バッチ処理は結局Pythonスクリプトやcronジョブで書いていた。なぜなら、AIは「呼び出されたときに応答する」ものであって、「決まった時間に自律的に動く」ものではなかったから。

Skillsの定期実行は、その前提を覆します。AIが本当の意味で人間のように定期実行タスクを担当する転換点となったと言われそうな話です。

イレギュラー対応の自動化

従来の定期実行スクリプトの最大の問題は「想定外のエラーで止まる」こと。APIの仕様変更、一時的なネットワーク障害、データ形式の変化。プログラムは「想定したエラー」しか処理できません。

Skillsは違います。

Skill: resilient-daily-sync
トリガー: 毎日 6:00
処理内容:
  1. 外部APIからデータを取得
  2. 取得できなかったら → 原因を調査
     - APIがダウン? → ステータスページを確認
     - 認証エラー? → トークンの有効期限を確認
     - レート制限? → 待ってからリトライ
  3. 簡単な問題なら自分で対処
     - キャッシュを使う
     - 代替エンドポイントを試す
     - リトライ間隔を調整
  4. 対処できない問題は → 何が起きたか、何を試したかを報告
  5. 「明日また試す」か「人間の対応が必要」かを判断してSlack通知

従来のプログラムとの決定的な違い:

状況 従来のスクリプト Skills
APIが500エラー 落ちる or ログ出力して終了 リトライ、代替手段を試す
レスポンス形式が変わった パースエラーで落ちる 新形式を解析して対応を試みる
認証トークン期限切れ 落ちる トークン再取得フローを自動実行
原因不明のエラー スタックトレースを吐いて終了 何が起きたか調査して人間に説明

特に「認証トークン期限切れ」は定期タスクあるあるです。OAuthトークンのリフレッシュ手順をSkillに書いておけば、期限切れを検知したら自動で再取得フローに切り替わります。従来なら「トークン切れ検知→リフレッシュAPI呼び出し→新トークン保存」のコードを全部書く必要がありました。

プログラムで同じことをやろうとすると、想定されるエラーパターンを全部書き出して、それぞれの対処を実装する必要があります。工数が爆発する。しかも「想定外」には対応できない。

Skillsなら「問題が起きたら調査して、できることはやって、ダメなら報告して」で簡易的な不具合はその場で対応してくれます。

異常値検知の幅が広がる

「おかしい」の判断が、ルールベースの限界を超えます。

Skill: smart-anomaly-detection
トリガー: 毎日 9:00
処理内容:
  1. 昨日のメトリクスを取得(売上、アクセス、エラー率、etc)
  2. 「いつもと違う」を判断
     - 単純な閾値超えだけでなく
     - 「月曜は少ないのが普通」
     - 「12月は増えるのが普通」
     - 「先週キャンペーンやったから多いのは当然」
  3. 本当に異常なものだけ抽出
  4. 原因の仮説を添えて報告

従来の異常検知:

  • 「エラー率が5%を超えたらアラート」→ 誤検知だらけ
  • 「前週比で20%以上変動したらアラート」→ 季節性を無視

Skills:

  • 文脈を理解して「これは本当に異常か」を判断
  • 「なぜ異常と判断したか」を説明できる
  • 新しいパターンの異常も検出できる

非エンジニアでも高度な定期タスクを作れる

従来、定期実行タスクを作るには:

  1. 要件をまとめる
  2. エンジニアに依頼する
  3. 開発を待つ(2-3週間)
  4. テスト・修正を繰り返す
  5. 本番デプロイ

Skillsなら:

  1. やりたいことをプロンプトで書く
  2. 動かしてみる
  3. 調整する
  4. 完成

開発時間の比較:

  • 従来のプログラム: 2-3週間(認証設定、API連携、エラー処理、テスト)
  • Skills: 数時間(プロンプト定義とMCP設定)

しかも、修正・リファクタリングが圧倒的に簡単。

# 従来のプログラム
「レポートに先週との比較を追加したい」
→ コード修正、テスト、デプロイ、レビュー...

# Skills
「先週との比較も入れて」
→ プロンプトに一行追加して完了

これは「属人化問題」の解決にもつながります。従来のスクリプトは、作った人が退職したら「コードを読めないから修正できない」という状況になりがちでした。AIがコードを解析して修正案を出せるようになったとはいえ、そもそもコードを理解する必要がある。

Skillsなら、処理フロー自体が自然言語で書かれています。誰でもプロンプトを読めば何をやっているか分かるし、その場で修正もできる。「このステップの順番を入れ替えて」「この条件を追加して」がそのまま修正指示になります。

具体例: 複数ツールを横断するタスク

「Slackで質問を検知 → 社内ドキュメントを検索 → 回答案を生成 → スレッドに返信」

これをプログラムで書くと:

  • Slack API認証の実装
  • メッセージ取得・投稿のコード
  • ドキュメント検索の実装
  • エラーハンドリング
  • ログ出力
  • テスト

合計で数百行、開発期間は2週間以上。

Skill: internal-qa-bot
トリガー: 毎時00分
処理内容:
  1. #質問チャンネルで未回答の投稿を検出
  2. 社内Wiki/Notion/Confluenceを検索
  3. 回答案を生成(ソースへのリンク付き)
  4. 「この回答で合ってますか?」と返信

MCPでSlack/Notion連携を設定しておけば、このプロンプトで動きます。

MS Copilot Scheduled Promptsとの違い

「定期実行ならMicrosoft 365 CopilotのScheduled Promptsがあるじゃん」と思った人もいるかもしれません。確かに2025年10月から一般提供されているWorkflows Agentは、Outlook/Teams/SharePoint/Plannerを横断した自動化ができます。

でも、Claude Code Skillsのアプローチは根本的に違います。

比較項目 MS Copilot Scheduled Prompts Claude Code Skills
対象範囲 Microsoft 365内のみ ローカルファイル・Git・任意のAPI
コード操作 不可(フォルダ内容の直接参照すら不可) リポジトリ全体の読み書き・実行
ファイルシステム SharePoint/OneDrive経由のみ ローカルファイル直接アクセス
外部連携 Power Automate経由(別途設定必要) MCP経由で自由に拡張
コンテキスト長 64,000トークン 200,000トークン
カスタマイズ性 テンプレートベース プロンプトで自由に記述
月額コスト $30/user(M365込みで$43相当) $20(サブスク単体)

Claude Code Skillsが特に有利な場面:

  1. コードベース操作: GitHubのIssue対応、コードレビュー、リファクタリングなど。MS Copilotはリポジトリの中身を直接見れません

  2. ローカルファイル処理: ログ解析、設定ファイル更新、ビルド成果物の検証など。MS Copilotはローカルファイルシステムにアクセスできません

  3. 複雑なエラー調査: 「なぜこのテストが落ちたか」を調べてコードを修正する、といったタスク。MS Copilotはコード実行や調査ができません

  4. 長いコンテキストが必要なタスク: 大規模ドキュメントの横断分析、複数ファイルにまたがる変更など。200,000トークンは64,000の3倍以上

逆に、MS Copilotが向いているのは「メール要約を毎朝送って」「会議サマリーをTeamsに投稿して」みたいな、Microsoft製品内で完結するタスクです。

要するに、開発者の定期タスクならClaude Code Skills、ビジネスユーザーのOffice作業ならMS Copilotという棲み分けになりそうです。

個人開発プロジェクトの「放置問題」を解決

個人開発者にとって一番の敵は「放置」です。

本業が忙しくなると、サイドプロジェクトは数ヶ月単位で触らなくなる。気づいたら依存関係が古くなり、セキュリティパッチが当たっておらず、CIが壊れている。そしてプロジェクトを再開しようとすると、まず「現状把握」に数時間かかる。

Skillsの定期実行があれば、放置していてもプロジェクトが勝手に健康を保ってくれます

サイドプロジェクトの自動メンテナンス

Skill: side-project-health-check
トリガー: 毎週日曜 10:00
処理内容:
  1. 全サイドプロジェクトのディレクトリを走査
  2. 各プロジェクトで以下を確認:
     - package.json / requirements.txt の依存関係に脆弱性はないか
     - 最後のコミットからどれだけ経過したか
     - CI/テストは通っているか
     - READMEは現状を反映しているか
  3. 問題があるプロジェクトをリストアップ
  4. 優先度順にNotionのタスクリストに追加

これがあれば、週末に「今週どのプロジェクトに手を入れるべきか」が自動で分かります。

「何をやってたか思い出せない」問題

Skill: project-context-recovery
トリガー: 毎日 8:00(PC起動時)
処理内容:
  1. 昨日〜先週のGit履歴を分析
  2. 「何をやっていたか」「次に何をやる予定だったか」を推測
  3. 未完了のTODOコメントを抽出
  4. 今日の作業開始ポイントをサマリー出力

3ヶ月ぶりにプロジェクトを開いても、「前回どこまでやったか」を思い出す必要がなくなります。Claudeがコードを読んで教えてくれる。

個人GitHubの自動整備

Skill: github-repo-maintenance
トリガー: 毎月1日 9:00
処理内容:
  1. 自分のGitHub全リポジトリを走査
  2. 各リポジトリの状態を確認:
     - アーカイブすべき古いリポジトリはないか
     - 説明文やトピックは適切か
     - ライセンスは設定されているか
  3. Dependabotのアラートを確認・対応
  4. 簡単な修正は自動でPR作成

個人のGitHubって、気づくと100個以上のリポジトリが散らばっていて、どれが生きてるか分からなくなる。月1回の自動棚卸しがあれば、ポートフォリオとしても見せやすくなります。

なぜSkillsでないとできないか

「依存関係チェックならDependabotでいいじゃん」と思うかもしれません。

違いは「判断」の部分です。

  • Dependabot: 「このパッケージに脆弱性があります」→ 通知
  • Skills: 「このパッケージに脆弱性があります。影響範囲を調べたところ、このプロジェクトでは該当機能を使っていないので優先度低め。ただし次に触るときに一緒に更新すべき」→ 判断付き通知

通知だけなら既存ツールでできます。でも「どう対応すべきか」まで判断してくれるのはSkillsならではです。

個人開発では、通知が多すぎると無視されがちです。「本当に重要なものだけ教えてくれる」「優先度をつけてくれる」という部分に価値があります

なぜSkillsが重要か

単純な claude -p "〇〇して" との違いは、Skillsが事前定義されたツール群を自動選択して使えること。

例えば「セキュリティレビューして」と指示したとき:

  • 単純な -p: プロンプトに書いた手順しか実行しない
  • Skills経由: 状況に応じてGit操作、ファイル読み込み、GitHub API、Slack通知を自動で組み合わせる

Skillsは「やりたいこと」を記述すれば、Claudeが適切な手段を選んでくれる。予期しないエラーが起きても、別のアプローチを試したり、エラーの原因を分析したりできる。

技術的な実現方法

環境変数のクリア

ANTHROPIC_API_KEY が設定されているとAPI認証が優先されます。空にするとサブスク認証にフォールバック。

$env:ANTHROPIC_API_KEY = ""

claude.exe の直接実行

環境によっては claude コマンドがラッパースクリプト経由で、-p フラグが正しく処理されないことがあります。Bunでインストールした場合は直接実行。

& "$env:USERPROFILE\.bun\bin\claude.exe" -p "Skillを実行して" --max-turns 15 --dangerously-skip-permissions

--dangerously-skip-permissions がないとツール承認待ちで止まります。

Task Schedulerでの定期実行

import subprocess
import os
from pathlib import Path

def run_skill(skill_prompt: str, max_turns: int = 15) -> bool:
    claude_exe = Path.home() / ".bun" / "bin" / "claude.exe"
    env = os.environ.copy()
    env['ANTHROPIC_API_KEY'] = ''
    
    result = subprocess.run(
        [str(claude_exe), "-p", skill_prompt, "--max-turns", str(max_turns), "--dangerously-skip-permissions"],
        cwd="/path/to/project",  # Skills定義があるディレクトリ
        env=env,
        timeout=600
    )
    return result.returncode == 0

PC起動が前提ですが、ターミナル常時起動は不要。Task Schedulerがバックグラウンドで実行してくれます。

制限と注意点

制約 内容
PC常時起動 ローカル実行なのでスリープ中は動かない
PC操作との競合 Skills実行中にファイル編集やブラウザ操作が走ると、ユーザーの作業と衝突する可能性あり
レート制限が不透明 1日10回程度なら問題なし(実測)。制限超過時の挙動が予測しづらい
モデルが勝手に変わる API課金と違いバージョン固定不可。ある日突然品質が変わる可能性あり
認証トークン期限 完全放置は不可。週1回は対話モードで実行してトークン更新が必要
SLA・公式サポートなし プロダクション用途には不向き。仕様変更で使えなくなる可能性もある

Webサービス化も非現実的です(レスポンス2〜10分、利用規約的にグレー)。個人の自動化用途限定と割り切るのが正解。

個人的な所感

「AIエージェントの定期実行」って、API課金が前提だと思っていました。月額$20のサブスクでこれができるのは、個人開発者にはありがたい。

ただ、公式に文書化されていない機能なので、いつ仕様変更されるか分かりません。重要な処理のバックアップは別途考えた方がいいかもしれません。

それでも「毎日決まった時間にClaudeが勝手に仕事してくれる」環境は、一度構築すると手放せなくなります。

よくあるトラブル

現象 原因 対処
Skillが実行されない cwdが違う Skills定義があるディレクトリで実行
Skillが認識されない フロントマター未設定 SKILL.mdにname:description:を含むYAMLフロントマターを追加
タイムアウト 処理が複雑すぎる --max-turns を調整

参考リンク

GitHubで編集を提案

Discussion