コードを書かないSE日誌

SE歴26年。コードを書かずにClaude Codeで8体のAIエージェントチームを動かしています。AIエージェント・自動化・GTDの実験日誌。

Claude Code TIPS集 パート2: ユーティリティスキル編 — 自然言語で動くちょっとした道具を作ってみた

この記事の実施記録(2026年5月): .claude/commands/ 配下に .md ファイルを1枚置く方式で、アラーム・スクリーンショット・クリップボード・天気・ファイルを開く・現在時刻・ポモドーロ・タイマーの8スキルを自作・運用中。コードは書いておらず、スキルファイルは自然言語の指示文で構成されている。Windows 11 環境で実稼働確認済み。


カップラーメンを作りながら Claude Code に話しかけた。

「ラーメン、3分計って」

3分後、画面にポップアップが出た。「14:32 になりました!」。それを見て思った。これ、自分で作ったツールだ。

Claude Code には公式のスキルマーケットプレイスのようなものはない。「ラーメンタイマーをインストール」という話ではなく、「自分で指示文を書いて自分だけのツールを育てる」という話になる。面倒そうに聞こえるかもしれないが、実際に手を動かしてみると、コードを1行も書かずにちゃんと動くものができた。

この記事では、そのやり方と、実際に使っているスキル8本を紹介する。


スキルの仕組み: .md を1枚置くだけ

Claude Code には「カスタムスラッシュコマンド(公式には「Skills」と呼ばれる仕組み)」がある。.claude/commands/ ディレクトリに .md ファイルを置くと、それがスキルとして登録される。

.claude/
└── commands/
    ├── alarm.md      ← 「3分後に教えて」で発動
    ├── weather.md    ← 「今日の天気教えて」で発動
    └── now.md        ← 「今何時?」で発動

ファイルの中身は、Claude への指示文だ。PowerShell や bash のコマンドを埋め込めるが、「こういうときはこうして」という自然言語の説明がメインになる。

~/.claude/commands/ に置けば全プロジェクト共通で使えるスキルになり、プロジェクト内の .claude/commands/ に置けばそのプロジェクト専用のスキルになる。

スキルの呼び出し方は2種類ある。

  • /alarm 14:30 のようにスラッシュコマンドを直接打つ
  • 「15時になったら教えて」「天気は?」のように普通に話しかける

どちらでも動く。コマンド名を覚えなくても、いつも通り Claude に話しかければ Claude 側でトリガーを検知して動かしてくれる。

スキルの3つのレベル

作ってみてわかったのは、スキルには複雑さのレベルがあるということだ。

レベル1: 1コマンド呼び出し/now/weather
既存のコマンドを1行呼ぶだけ。スキルファイルが4〜86行で完結する。

レベル2: スクリプト委譲/alarm/clip
ロジックを .sh スクリプトに切り出して、スキルはラッパーとして呼ぶ。スキルファイルはシンプルに保ちつつ、処理が複雑になっても対応できる。

レベル3: スキル合成/pomodoro
既存のスキルを組み合わせて新しいスキルを作る。/alarm/timer を組み合わせると、ポモドーロタイマーになる。

積み木のような設計だ。小さなスキルを作って、それを組み合わせていく。


スキル紹介: 8本の実況

/alarm — 「3分後に教えて」で動くアラーム

カップラーメンの話はこれだ。

実際のスキルファイル(alarm.md、23行)はシンプルで、scripts/util/alarm.sh を呼ぶだけの構成になっている。ロジックの実体はシェルスクリプト側(193行)に切り出されており、スキルはラッパーとして機能している。

呼び出し例: - 「3分後に教えて」→ 3分後にWindowsポップアップ - 「15時になったら教えて」→ 絶対時刻アラーム - 「1時間後に休憩リマインダー」→ 相対時刻指定

相対時刻(+3m)と絶対時刻(14:30)の両方に対応している。アラームはバックグラウンドで動くので、セットした後すぐに別の作業に戻れる。通知はWindowsのポップアップ(バルーンではなく前面に出るダイアログ)なので、画面を見ていなくても気づける。

macOS の場合は osascriptdisplay notification で通知バナーを出す方法がある(Windows のように OK を押すまで消えないモーダルダイアログではなく、バナー通知になる点は違いとして覚えておいてほしい)。

/screenshot — スクショを撮って「この画面を分析して」

「この画面のエラー、何が問題か教えて」

この一言で、スクリーンショットを撮影し、その内容をClaude が解析する流れが作れる。

スキルファイル(53行)は PowerShell を使ってプライマリモニターをキャプチャし、タイムスタンプ付きのファイル名で tmp/ に保存する。保存されたファイルを Read ツールで読み込んで Claude に表示するという仕組みだ。

呼び出し例: - 「スクショ撮って」→ プライマリ画面をキャプチャ - 「拡張画面をスクショして」→ 2枚目のモニター - 「アクティブウィンドウだけ」→ 3秒待機後にキャプチャ(対象ウィンドウに切り替える時間を確保)

撮影してそのまま「この画面の赤枠の部分は何?」と聞くのが一番使う流れだ。エラー画面の診断や、UIの問題報告(「このボタンなんで動かないの」)に重宝している。

/clip — 生成したテキストをすぐ貼り付けたい

Claude が長文を生成したとき、それをメモアプリや他のツールに貼り付けたい場面がよくある。マウスで全選択してコピーするのが面倒で作った。

スキルファイル(20行)は PowerShell の Set-Clipboard を使っている。clip.exe は UTF-8 非対応なので使っていない(これははまりポイントだ。Windows の clip.exe は日本語が文字化けする)。

呼び出し例: - 「このコードをクリップボードにコピーして」→ Claude の直前出力をコピー - 「このファイルの内容をコピーして(ファイルパスを渡す)」→ ファイルを読んでコピー - 「さっきのMarkdownをコピーして」→ 直前の生成物をコピー

実行後は「クリップボードにコピーしました」の一言だけ返ってくる。シンプルだが、毎日使う。

/weather — 外出前に「今日の天気は?」

作業中にふと「今日傘いるかな」と思っても、ブラウザを開く気になれないことがある。Claude Code の中にいながら、話しかけるだけで確認できるのが /weather だ。

ブラウザに切り替えなくていい。今いる場所から離れずに済む。それだけの話だが、これが積み重なると地味に効く。

MCP の追加も、外部APIのキーも不要。Claude Code に標準で入っている WebFetch 権限だけで動く。

実際のスキルファイルを見ると86行あり、引数パターンを6種類サポートする設計になっている。(ネタ帳メモには「3行スキル」と書いていたが、読み返したら機能追加で育っていた。記事には実測値を書く)

/weather             → 現在地の今日の天気
/weather tomorrow    → 現在地の明日の予報
/weather 3days       → 3日間予報(表形式)
/weather Tokyo       → 指定都市の今日
/weather tomorrow Ube → 指定都市の明日
/weather 3days Osaka  → 指定都市の3日間

内部では wttr.in というサービスを WebFetch で取得している。「Tokyo: 晴れ +22°C」のようにコンパクトな形式で返ってくる。

「外出するんだけど、傘いる?」と話しかけるのが一番自然な使い方だ。天気の話をしながら他のこともできる。

/open — 「このファイルを開いて」

コードを書いていると「このファイルをエディタで見せて」という場面が頻繁にある。ターミナルでパスを打つよりも速い。

スキルファイル(24行)は拡張子を見てアプリを自動判定する。

.md / .txt / .log / .csv / .json / .yaml → VS Code(なければ Notepad)
それ以外 → Windows の start "" でデフォルトアプリ

呼び出し例: - 「このファイルを開いて(パスを渡す)」→ VS Code で開く - 「このURLをブラウザで開いて」→ デフォルトブラウザで開く

スキルを動かすだけなら2行で済む。育てるのは後でいい。

/now — 「今何時?」

一番シンプルなスキルだ。スキルファイルはほんの数行で収まる。

powershell.exe -Command "Get-Date -Format 'yyyy-MM-dd HH:mm:ss (ddd)'"

これを実行して表示するだけ。「2026-05-01 14:32:45 (Thu)」のように返ってくる。

なぜこれが必要かというと、Claude Code は UTC/JST の混乱を起こしやすいからだ。Windowsで date コマンドを打つと UTC が返ることがある。JST で確実に現在時刻を取得するために、PowerShell 経由で取得する仕組みにしている。

「スキルって複雑なものだけじゃない。1コマンドでも作る価値がある」という好例だと思っている。

/pomodoro — 「25分集中する」で始まる作業記録付きタイマー

ここからがスキル合成の話だ。

/pomodoro は内部で2つのスキルを呼んでいる。

  1. bash scripts/util/work-timer.sh start $ARGUMENTS(作業タイマー開始)
  2. bash scripts/util/alarm.sh +25m ポモドーロ終了!休憩してください(25分後アラーム)

スキルファイル(19行)はこの2つを順番に呼ぶだけ。「アラームとタイマーを組み合わせたらポモドーロになった」という話だ。

タスク名を渡すと logs/work-times.log に記録される。

/pomodoro 記事執筆
→ 25分後: 「記事執筆ポモドーロ終了!休憩してください」
→ ログに「記事執筆: 25分」が蓄積

後から「今週どのタスクに何時間かけたか」を確認できる。スキルを合成すると機能が掛け算になる。

/timer — 作業時間を記録するストップウォッチ

ポモドーロの土台になっているスキルだ。スキルファイルはとても短い。

bash scripts/util/work-timer.sh $ARGUMENTS

全部シェルスクリプト(work-timer.sh)に委譲している。スキルはその薄いラッパーだ。

呼び出し例: - 「作業時間 記録開始 記事執筆」→ タイマー開始 - 「作業時間 記録終了」→ タイマー終了、経過時間をログに記録 - 「今週何時間作業した?」→ ログから集計

複数タスクの並列計測にも対応している。「記事執筆しながらリサーチも計測する」ような場合でも別々に記録される。


「自分には難しそう」への答え

スキルを見せると「SE26年だから作れるんでしょ?」と思われることがある。でも、実際のスキルファイルを見てほしい。

/now スキルはほんの数行。/timer スキルも同様にとても短い。/clip スキルは「clip.exe は UTF-8 非対応なので Set-Clipboard を使う」という説明と PowerShell コマンドだけで構成されている。

スキルファイルの中身は、Claude に「こういう操作をするとき、こうやって」と教える指示文だ。プログラミング言語の文法を覚える必要はない。「3分後にポップアップを出す」という要件を日本語で書けば、それがスキルになる。

実際、私が担当したのは「何が欲しいか」を言語化することだけで、PowerShell のコード部分は Claude が書いた。スキルファイルの中にコードブロックが登場しているが、あれは全部 Claude に書いてもらったものだ。

失敗もある。/open は3回改良が必要だった。最初は start "" だけだったが、Markdown ファイルが想定と違うアプリで開いた。次に notepad.exe フォールバックを追加した。「開いてって言ったときにVS Codeの中で開いてもらうとうれしいときもある」という一言がきっかけで、VS Code 優先の今の形になった。ユーザーの自然言語の一言が、そのままスキルの仕様変更になった。

でも直すのは簡単だ。.md ファイルを編集するだけ。最悪ファイルを消せば元に戻る。公式機能の設定を壊したわけではないので、リセットが容易だ。

「ChatGPT でも同じことができるのでは?」という疑問もある。天気スキルはそうかもしれない。ただ、アラームはローカルの PowerShell を直接動かしてWindowsのポップアップを出している。スクリーンショットはローカルのファイルシステムに保存する。タイマーはローカルのログファイルに蓄積する。

決定的な違いは「1つの画面で完結する」点だ。ChatGPT でアラームをセットしようとすると、別アプリを開くか、ChatGPT の返答を見てから自分で操作する必要がある。Claude Code なら「3分後に教えて」と打ったらそのまま作業に戻れる。ブラウザのタブを切り替えない。作業の文脈が途切れない。「ちょっと天気を確認したい」「スクショを撮って分析したい」という小さな割り込みを、今いる場所から離れずに済ませられるのが本質的な価値だ。


まだ作っていないスキルたち

実は作りたいリストがある。

スキル 概要
/log 一行作業日誌をファイルに追記
/standup 昨日/今日/ブロッカーを整形出力
/break 1時間ごとの休憩リマインダー(/alarm の応用)
/speak テキストを読み上げ(PowerShell TTS)
/note クイックメモをファイル保存

/break/alarm があれば実装5分で済む。/standup は昨日のタイマーログを読んで整形するだけだ。「できること」が積み重なると、「次にやりたいこと」が次々と浮かぶ。

これらのスキルを配布しない理由がある。.sh スクリプトのパスや PowerShell の権限設定は環境依存が大きい。そのまま持ってきてもそのままでは動かない場合が多い。

一覧を見て「こういうものが作れるのか」と思ったら、Claude Code に「こういうスキルを .claude/commands/ に作って」と頼むのが一番速い。自分の環境に合わせて作ってもらえる。

Claude Code の基礎から体系的に学びたい方には、以下の書籍も参考になる。

Claude CodeによるAI駆動開発入門(平川知秀 著)

実践Claude Code入門――現場で活用するためのAIコーディングの思考法(西見公宏・吉田真吾・大嶋勇樹 著)


まとめ

「アイデアを言語化した瞬間に動くものになる」のが、スキル作りの感覚だ。

カップラーメンを作りながら「3分計ってほしい」と思ったら、その日のうちにアラームが動いた。「開いてって言ったときにVS Codeで開いてほしい」と一言言ったら、翌日には /open スキルに反映されていた。

要件を言語化できる人は、コードが書けなくてもスキルが作れる。


スキルが8本並ぶと、次の問いが出てくる——これらを組み合わせたチームとして動かすには、どういう設計が必要なのか。私はスキルを1本ずつ育てていくうちに、「個別ツールの集合」ではなく「AIが役割分担して動く仕組み」として整えることで、さらに使い物になると気づいた。その設計の考え方と実践をまとめたのが以下の本だ。序章・第1部が無料で読める。

関連記事


FAQ

Q. スキルを作るのに追加費用がかかりますか?
A. スキルファイルの仕組み(.claude/commands/ にファイルを置く方式)は、Claude Code の利用プランの範囲内で追加費用なく利用できる。Claude Code 自体の利用には Pro 以上(月額 $20〜)が必要。

Q. macOS でも動きますか?
A. 天気・現在時刻・タイマー・クリップボードは macOS でも動く。アラームとスクリーンショットは PowerShell を使っているため要変更。アラームは osascript -e 'display notification "..."' で代替できる。

Q. スキルファイルを間違えて壊したらどうなりますか?
A. .md ファイルを編集するか削除するだけで元に戻る。公式の設定ファイルには触れていないため、最悪ファイルを消せばリセットできる。