はじめに
今回は、skill-creatorというプラグインを使用して、自作の(エージェント)スキルを作成してみました。
とても簡単にオリジナルのスキルが作れるので、参考にしていただけると幸いです。
skill-creatorとは
skill-creatorとは、Anthropic公式が公開しているSkillを簡単に作るためのSkillです。
自分で一からファイルを書かなくても、自然言語で対話するだけでSKILL.mdファイルを作成してくれます。
SkillsとPluginに関してもっと詳しく知りたい方は
さっそく作ってみた
今回は、以下のようなskillを作成してみようと思います。
- 引数で指定された(本日の)時刻まで、PCのスリープ・ディスプレイオフを防止するskill(Claude Codeのリモートコントロールで需要あるかも?)
- 引数のフォーマットはhh:mm(例:18:30)
- 引数は一つのみで、無効な入力や過去の時刻が指定された場合はエラーメッセージを出力する
skill-creatorをインストールする
まずはClaude Codeを立ち上げ、/pluginコマンドを実行します。
下の方にスクロールしていくと、skill-creatorが出てくる(まだインストールされていない場合)ので、Enterを押して詳細画面へ遷移します。
インストールする際のスコープ(グローバルかリポジトリ直下かなど)を聞かれるので、使用目的に合わせて選択しインストールします。
もう一度/pluginコマンドを実行し、Installedのタブを確認します。
skill-creatorがenabledとなっていれば準備完了です。
skillの作成を依頼する
あとはいつも通りClaude Codeにリクエストするだけです。
以下のようにプロンプトを入力し送信すると、自動的にskill-creatorスキルが発動します。
「スキルを作成して」のようなニュアンスであれば発動されると思いますが、発動されない場合は、明示的に「skill-creatorを使用して」をプロンプトに追加してください。
あとは適宜承認をしていくだけで、あっという間にスキルが完成します。
Claude Codeが判断してスキルの名前や配置場所を決めるため、場合によっては完成後にSKILL.mdファイルの配置場所やスキル名だけ修正する必要があります。
完成したスキルがこちら
---
name: awake
description: PCのスリープ・ディスプレイオフを指定した時刻まで防止するスキル。ユーザーが「awake 18:30」「awake 23:00」のように時刻を指定してPCを起こしておきたいとき、スリープ防止したいとき、caffeinate を使いたいとき、指定時刻までPCをスリープさせたくないときに必ず使用する。
disable-model-invocation: true
---
# Awake スキル
引数に指定された時刻(`HH:MM` 形式)まで、このMacがスリープ・ディスプレイオフにならないよう `caffeinate` コマンドで防止する。
## 手順
### 1. 引数のバリデーション
`/awake <HH:MM>` の形式でユーザーが指定する。
- 引数が指定されていない場合:
\```
エラー: 引数を指定してください。使い方: /awake <HH:MM>(例: /awake 18:30)
\```
そこで終了する。
- 引数が複数ある場合:
\```
エラー: 引数は1つだけ指定してください。使い方: /awake <HH:MM>
\```
そこで終了する。
- `HH:MM` 形式でない場合(正規表現 `^([0-9]{1,2}):([0-9]{2})$` にマッチしない):
\```
エラー: HH:MM 形式で指定してください。(例: /awake 18:30)
\```
そこで終了する。
- HH が 0〜23 の範囲外、または MM が 0〜59 の範囲外の場合(存在しない時刻):
\```
エラー: 存在しない時刻です。HH は 0〜23、MM は 0〜59 で指定してください。
\```
そこで終了する。
### 2. 現在時刻の確認
Bash ツールで現在時刻を取得する:
\```bash
date +%s
\```
指定時刻のエポック秒を計算し、現在時刻と比較する。
\```bash
TODAY=$(date +%Y-%m-%d)
TARGET_EPOCH=$(date -j -f "%Y-%m-%d %H:%M:%S" "${TODAY} HH:MM:00" +%s)
CURRENT_EPOCH=$(date +%s)
\```
- `TARGET_EPOCH <= CURRENT_EPOCH` の場合(過去または現在):
\```
エラー: 指定された時刻(HH:MM)はすでに過ぎています。未来の時刻を指定してください。
\```
そこで終了する。
### 3. caffeinate を実行
\```bash
SECONDS_REMAINING=$((TARGET_EPOCH - CURRENT_EPOCH))
caffeinate -d -i -s -t $SECONDS_REMAINING &
CAFFEINATE_PID=$!
\```
### 4. 確認メッセージを表示
残り時間を分単位(端数切り捨て)で表示する。
\```
PCは HH:MM までスリープ・ディスプレイオフになりません。(残り約XX分)
caffeinate を起動しました(PID: XXXXX)
\```
## 注意事項
- `caffeinate -d` = ディスプレイのスリープを防止
- `caffeinate -i` = システムのアイドルスリープを防止
- `caffeinate -s` = システムスリープを防止(AC電源接続時)
- `-t <秒数>` = 指定秒数後に自動終了
- バックグラウンドで実行(`&`)するので、コマンド実行後すぐに制御が戻る
※マークダウンファイルの仕様で一部[```]の直前に\を挿入しております
最後に、フロントマターリファレンスに以下を追加して、手動実行専用コマンドにしました。(意図しない発動を防止するため)
disable-model-invocation: true
実際に使ってみる
/awakeと入力すると
そのまま実行すると
過去の時刻を指定すると
複数の引数を指定すると
無効なフォーマットを引数に指定すると
さいごに正しい値で入力すると
(その後)問題なく動いていることが確認できました!









