⚗️

Claude Skillsでカスタム機能を実装

に公開

はじめに

2025年10月16日、AnthropicのClaudeにClaude Skillsという機能が追加されました。
https://www.anthropic.com/news/skills

Claudeをはじめとした生成AIは、「確率的にもっともらしい文章を生成する」のを目的としたプログラムです。また、「生成」とあるように同じ問い合わせをしても同じ回答が来るとは限りません。

入力が同じなら、毎回決まった結果を出力してほしい、、、そんな時は「普通の」プログラムの出番です!
Claudeがプログラムを呼び出せるようにしたもの、それがClaude Skillsです。

Claude.aiのClaude Skillsの仕組み

Claude Skillsは、Claude API、Claude.ai(Webインターフェース)、Claude Codeの3種類で使えますが、それぞれ実行環境や制限などが異なります。

今回はClaude.aiのClaude Skillsについて調べました。
Claude.aiでのClaude Skillsは以下のような特徴があります。

  • Claude.aiの場合は、ユーザごとにLinuxの仮想マシンが割り当てられる(1CPU,5GB Mem,5GB Disk)
  • セキュリティの観点から、インターネットには接続できない
  • カスタムスキルはZIPファイルに固めてアップロードする
  • アップロードしたカスタムスキルはすべてユーザの仮想マシンに保管される
  • Claudeが使えるスキル情報を読み込み、スキルのトリガー条件に合致したらスキルを呼び出して実行
  • カスタムスキルのZIPファイルを配布すれば、各自インストールしてスキルを使える

https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview

Claude.aiでのClaude Skillsの利点

アプリケーションを作って配布する際、面倒なのが実行環境を準備することです。
pythonのコードを作ってユーザに配布しても、ユーザのPCにpythonがインストールされていなかったり、必要なライブラリが入っていなかったりとサポートが大変です。
Claude.aiでのClaude Skillsでは、pythonがインストールされたLinuxの仮想マシンが自動的に割り当てられますので、実行環境の準備作業は不要です。
作ったカスタムスキルのZIPファイルを共有し、それぞれ自分のカスタムスキルにアップロードしてもらうだけです。

スキルを作ってみる

カスタムスキルには、複数のレベルのものが登録できます。

中身 Claudeから見た自由度 用途
プロンプトのみ 高い Claudeに大まかな指示を行う。複数の解決方法があり、Claudeが判断する。プロンプトエンジニアリングに近い
pythonのコードやスクリプト 再現性、一貫性が必要な処理。順番やルールがガッチリ決まってる処理
プロンプトと疑似コード 上2つの中間。ある程度ルールは決まっているがそこまで厳密に定義できないもの。

せっかく仮想マシンが割り当てられているので、今回はpythonのコードを含んだカスタムスキルを作ることにします。

スキルの有効化

標準では、スキルが使えない状態となっています。
Claude.aiの設定 -> 機能にある、Skill Creatorを有効化しましょう。
Skill Creatorスキルを使うと、Claudeがカスタムスキルを作る補佐をしてくれます。

カスタムスキルの有効化
設定を有効化したら、ブラウザの再起動かリロードをすると、スキルが使えるようになります。

パスワード生成スキルの仕様決め

サンプルとして、ランダムなパスワードを生成するスキルを作ってみましょう。
要件としては以下のような感じで。単なる乱数ではなく、少し独自ルールを設けたものにします。

  • 16桁のパスワードを生成する
  • 数字と大文字アルファベットのみで構成する
  • 最初と最後は必ずアルファベット
  • 紛らわしい文字(0やO)は対象外にする
  • 途中に有名な動物を含める

スキルの作成

では実際にカスタムスキルを作っていきます。
Skill Creatorの呼び方ですが、「カスタムスキルを作りたい」とClaudeに話しかけると起動されます。


カスタムスキルの作成

起動するとカスタムスキルの概要を読み込んでいますね。
どんなカスタムを作りたいかをClaudeに伝えます。


カスタムスキルの仕様を伝える

仕様を渡すと、Claudeがコードの生成を開始します。出来上がるまで1~2分かかるので、好きなことをして待ちます。

Claudeさん作業中

ちょっと待ったら出来上がりました。コードの作成、テストコードの作成、SKILL.mdの編集、ZIP化などいろいろ実行してくれています。

スキル完成!

ご丁寧にZIPファイルにパッケージングまでしてくれているので、ダウンロードして中身を確認してみましょう。

SKILL.md
---
name: password-generator
description: Generate secure 16-character passwords containing animal names. Use when users request password generation, secure passwords, or random passwords with specific formatting rules.
---

# Password Generator

This skill generates secure, memorable passwords that follow strict formatting rules.

## When to Use This Skill

Use this skill when users request:
- "Generate a password"
- "Create a secure password"
- "Make me a random password"
- "I need a strong password"

~以下略
generate_password.py

#!/usr/bin/env python3
"""
Secure password generator with customizable rules.
Generates 16-character passwords with animal names embedded.
"""

import random
import secrets
import sys

# Excluded confusing characters: 0, O, I, 1
UPPERCASE_LETTERS = 'ABCDEFGHJKLMNPQRSTUVWXYZ'  # Excluding I and O
DIGITS = '23456789'  # Excluding 0 and 1
ALLOWED_CHARS = UPPERCASE_LETTERS + DIGITS

# Famous animals (uppercase for consistency)
ANIMALS = [
    'LION', 'TIGER', 'BEAR', 'WOLF', 'FOX',
    'EAGLE', 'HAWK', 'SHARK', 'WHALE', 'DOLPHIN',
    'PANDA', 'KOALA', 'ZEBRA', 'GIRAFFE', 'RHINO',
    'PENGUIN', 'SEAL', 'OTTER', 'BADGER', 'RAVEN',
    'LEOPARD', 'CHEETAH', 'JAGUAR', 'PANTHER', 'COUGAR'
]

def generate_password(length=16):
    """
    Generate a secure password with the following rules:
    - Total length: 16 characters (default)
    - First and last characters: uppercase letters only
    - Contains an embedded animal name
    - Uses only uppercase letters and digits (excluding confusing 0, O, I, 1)
    
    Returns:
        str: Generated password
    """
    if length < 6:
        raise ValueError("Password length must be at least 6 characters")
    
    # Select a random animal
    animal = secrets.choice(ANIMALS)
    
    # Calculate remaining characters to fill
    remaining_length = length - len(animal)
    
    if remaining_length < 2:
        raise ValueError(f"Password length {length} is too short for animal name '{animal}'")
    
    # Generate first character (must be a letter)
    first_char = secrets.choice(UPPERCASE_LETTERS)
    
    # Generate last character (must be a letter)
    last_char = secrets.choice(UPPERCASE_LETTERS)
    
    # Calculate how many characters to generate for prefix and suffix
    # Reserve 1 for first, 1 for last, rest split between prefix and suffix
    middle_length = remaining_length - 2
    
    # Randomly decide where to place the animal name
    # At least 0 characters before, at least 0 after
    if middle_length > 0:
        prefix_length = secrets.randbelow(middle_length + 1)
        suffix_length = middle_length - prefix_length
    else:
        prefix_length = 0
        suffix_length = 0
    
    # Generate prefix (between first char and animal)
    prefix = ''.join(secrets.choice(ALLOWED_CHARS) for _ in range(prefix_length))
    
    # Generate suffix (between animal and last char)
    suffix = ''.join(secrets.choice(ALLOWED_CHARS) for _ in range(suffix_length))
    
    # Assemble password
    password = first_char + prefix + animal + suffix + last_char
    
    return password

def main():
    """Generate and print a secure password."""
    try:
        # Allow optional length argument
        length = int(sys.argv[1]) if len(sys.argv) > 1 else 16
        
        if length < 6:
            print("Error: Password length must be at least 6 characters", file=sys.stderr)
            sys.exit(1)
        
        password = generate_password(length)
        print(password)
        
    except ValueError as e:
        print(f"Error: {e}", file=sys.stderr)
        sys.exit(1)
    except Exception as e:
        print(f"Unexpected error: {e}", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()

いい感じですね。

もちろん、python以外にも仮想マシンにインストールされているアプリケーションを利用することができます。
「インストールされているパッケージ一覧を作るカスタムスキル」を作って、代表的なものを抽出してみました。

🛠️ 開発ツール・言語
Python 3.12.3 + 関連パッケージ(pip, venv, setuptools等)
Node.js 22.20.0 + npm
TypeScript 5.9.3 + ts-node
GCC/G++ 13.3.0 (C/C++コンパイラ)
Git 2.43.0
Make 4.3

📦 Pythonライブラリ(主要なもの)
NumPy 2.3.3 - 数値計算
Pandas 2.3.3 - データ分析
SciPy 1.16.2 - 科学計算
Flask 3.1.2 - Webフレームワーク
Requests 2.32.5 - HTTPライブラリ
OpenCV 4.11.0 - 画像処理(3種類)
python-pptx 1.0.2 - PowerPoint操作

🎨 マルチメディア・グラフィックス
FFmpeg 6.1.1 - 動画/音声処理
ImageMagick 6.9.12 - 画像処理
Graphviz 2.42.2 - グラフ描画(APT/npm/pip全てに存在)

🔧 ユーティリティ
curl 8.5.0 - データ転送ツール
wget 1.21.4 - ファイルダウンロード
pdftk-java 3.3.3 - PDF操作ツール

結構な種類のアプリが入ってますね・・・

実現したい処理をClaudeに伝え、カスタムスキルを作って使うことで、日常生活にいろいろと役立てられそうです。

Claude Skillsは、Claude.aiの有料プランを契約していれば使えますので、ぜひ使ってみてください。

参考ページ

https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices
https://support.claude.com/en/articles/12512198-how-to-create-custom-skills
https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
https://github.com/anthropics/skills
https://github.com/abubakarsiddik31/claude-skills-collection

Discussion