1
1

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】 Skillsを試してみよう、機能概要からスクリプトの制約までを理解

Last updated at Posted at 2025-10-26

はじめに(Skills機能公開)

2025年10月16日、AnthropicがClaude向けの新機能「Skills」を公開しました。

本記事では、公式ドキュメントの内容を確認し、実際にSkillsを作成・利用してみた経験をもとに、できること・できないこと、そして今後の可能性について記載しています。

Skillsとは

公式発表の内容

Anthropicは2025年10月16日に、エンジニアリングブログと公式ドキュメントでSkillsの詳細を発表しました。Skillsは、Claudeに対して特定のドメイン知識、ベストプラクティス、ワークフローを提供するためのパッケージ機能です。

利用シーン

Skillsは、繰り返し行うタスク、専門的な知識が必要な作業、特定のフォーマットに従った出力が必要な場面などで特に有効になりそうです。

  • quickstart の例
    • PPT(プレゼン)作成
    • WordやExcelの作成
    • PDF作成
  • その他の例
    • 特定のコーディング規約に従った開発
    • 業界固有の用語や手順を伴う文書作成
    • データ分析のワークフロー

アップロードファイルには注意
このSkillsに限った話ではないですが、アップロードが許可されているかどうかは確認の上で進めてください!

Skillsの基本構造

Markdown形式のドキュメントとリソースファイルで構成されます。

  • SKILL.md:必須。Claudeが参照すべき指示やコンテキストを記述
  • resources/などのディレクトリ:任意。xxx.pyなどスクリプトが必要な場合

SKILL.mdの定義方法

以下の形で作成します。
image.png

実行プログラム有の場合のフォルダ構成

具体的に実行したプログラムもある場合は、以下の構造です。
image.png
Level 3: Resources and code (loaded as needed)より

プログラムを参照する方法ですが、以下のように、mdファイル内で記載しています。
image.png
Equipping agents for the real world with Agent Skills より

ざっくり概要を記載してきましたが、ここから実際に試してみます。以下それぞれで試していきます。

  • Claude Desktop
  • Claude Code

スキル作成のために用意したコードは、Githubで公開しています。

Claude Desktopで試してみた

構成と実行環境の制限を確認

image.png
Equipping agents for the real world with Agent Skills より

上記構成を確認後、Agent Virtual Machineの構成を確認しつつ、
ドキュメントを読む中で私が気になったのは、制約に関係する記載です。

Runtime environment constraints:

  • No network access: Skills cannot make external API calls or access the internet
  • No runtime package installation: Only pre-installed packages are available. You cannot install new packages during execution.
  • Pre-configured dependencies only: Check the code execution tool documentation for the list of available packages

security-considerationsには、以下のような実行環境の制約が明記されています。

検証の方針

できないことにアプローチ

先ほど制約に関する記載を追加しましたが、どちらかというと、何ができないのかを把握することに重きを置いています。
公式ドキュメントにコードまで記載された内容は試していません。

スキルアップロードまでの流れを知ることも含めて、利用できるライブラリを確認するskillを作成してみました。その後、意図的に制約に触れる実装を試みました。

パッケージ一覧取得Skillの作成

まず基本動作を確認するため、コード実行環境で利用可能なPythonパッケージの一覧を取得する簡単なSkillを作成しました。

SKILL.mdを作成します。

以下のようにプログラムを作成します。

import pkgutil

installed_packages = [pkg.name for pkg in pkgutil.iter_modules()]
print("=== Installed Packages ===")
print(installed_packages)
print()

非常に簡単なものですが、スキルを作成できました。
利用できるようにアップロード作業を進めます。

Claude Desktopを使ったアップロード

公式サポートページによると、SkillsはClaude Desktopを経由してアップロードする仕組みになっています。
これにより、ローカル環境で作成したSkillをClaudeに登録し、チャットセッション内で利用できます。

ディレクトリ構造の変更点

How to create custom Skillsには以下のようなディレクトリ構造が記載されていましたが、この情報は既に古くなっています

Correct structure:
my-Skill.zip
└── my-Skill/
    ├── SKILL.md
    └── resources/

Incorrect structure:
my-Skill.zip
└── (files directly in ZIP root)

以下、Claude Desktopのスクリーンショットですが、以下が正しいです。
image.png

エクスプローラーで確認すると、以下の構造になっています。
囲った「check-installed-packages-skill」フォルダをZIP化して、アップロードします。
image.png

アップロード成功です。
image.png

新規チャットで以下のように実行してみました。
image.png

利用可能なパッケージ一覧

📊 データ処理・分析

  • pandas - データフレーム操作
  • numpy - 数値計算
  • scipy - 科学計算

🤖 機械学習・AI

  • sklearn (scikit-learn) - 機械学習
  • jax, jaxlib - 高性能数値計算
  • onnxruntime - ONNX推論
  • mediapipe - メディア処理

📈 可視化

  • matplotlib - グラフ作成
  • seaborn - 統計データ可視化

🖼️ 画像処理

  • cv2 (OpenCV) - コンピュータビジョン
  • PIL (Pillow) - 画像処理
  • skimage (scikit-image) - 画像処理
  • imageio - 画像読み書き

📄 ドキュメント処理

  • pypdf - PDF操作
  • pdfplumber - PDFデータ抽出
  • docx (python-docx) - Word文書処理
  • pptx (python-pptx) - PowerPoint処理
  • openpyxl - Excel処理

🌐 Web関連

  • flask - Webフレームワーク
  • requests - HTTP通信
  • bs4 (BeautifulSoup) - HTMLパース
  • playwright - ブラウザ自動化

その他の便利なライブラリ

  • sympy - 数式処理
  • lxml - XML処理
  • yaml - YAML処理
  • cryptography - 暗号化

利用不可なパッケージを追加して動かす

先ほどアップロードしたスキルで用意コードに以下を追加後、再度スキルをアップロードしました。

import tensorflow as tf

実行結果は以下の通りでした。エラーが表示された後、囲った箇所にある通り、スクリプトを修正して、スキル実行が完了するように動いていました。
image.png

Playwrightによるスクリーンショット撮影

次に、HTMLファイルをPlaywrightを使ってスクリーンショット撮影できるか試してみました。

pythonスクリプトと同階層に、demo.htmlというファイルを追加します。
コードは以下のように修正し、実行してみました。
これは成功しました

from playwright.sync_api import sync_playwright

def playwright_demo():
    print("=== Playwright Demo (Local HTML) ===")
    
    # スクリプトと同じディレクトリのパスを取得
    script_dir = Path(__file__).parent
    html_path = script_dir / "demo.html"
    
    # HTMLファイルの存在確認
    if not html_path.exists():
        print(f"エラー: {html_path} が見つかりません")
        print("demo.html を作成してから実行してください")
        return
    
    with sync_playwright() as p:
        # ブラウザを起動(headlessモード)
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        
        # ローカルHTMLファイルを開く
        page.goto(f"file://{html_path.absolute()}")
        
        # ページタイトルを取得
        title = page.title()
        print(f"ページタイトル: {title}")
        
        # スクリーンショットを撮影
        screenshot_path = script_dir / "playwright_demo.png"
        page.screenshot(path=str(screenshot_path))
        print(f"スクリーンショットを保存: {screenshot_path}")
                
        # ブラウザを閉じる
        browser.close()
    
    print("Playwrightデモ完了!\n")

Claude Desktop上でスクリーンショットの内容が表示されました。
image.png

外部ネットワークアクセスの試行

続いて、requestsライブラリを使ってGoogleのサイトへアクセスできるか試しました。結果として、これは失敗しました。エラーメッセージが返され、外部サイトへの接続が確立できませんでした。

# requestsを使ったWeb接続のデモ
def requests_demo():
    print("=== Requests Demo (Web Access) ===")
    
    try:
        # HTTPリクエストを送信(Googleにアクセス)
        url = "https://www.google.com"
        print(f"アクセス先: {url}")
        
        response = requests.get(url, timeout=5)
        
        # BeautifulSoupでパース
        soup = BeautifulSoup(response.text, 'html.parser')
        title = soup.find('title')
        if title:
            print(f"ページタイトル: {title.text}")
        
        print("Requestsデモ成功!\n")
        
    except requests.exceptions.RequestException as e:
        print(f"ネットワークエラー: {type(e).__name__}")
        print(f"詳細: {str(e)}")
        print("※ このコンテナ環境ではネットワークアクセスが制限されています\n")
    except Exception as e:
        print(f"エラー: {type(e).__name__}: {str(e)}\n")

Claude Desktopのログを確認すると、以下の通り接続できていないことが分かりました。
image.png

Claude Codeから呼び出してみた

skillはClaude Codeからも利用可能です。
playwrightのスクリーンショット取得するところまで確認してみました。

影響しない想定ですが、先ほどClaude Desktop側で作成したスキルは一旦OFFにします。
image.png

適用範囲によって作成先を変える
以下画像にある通り、適用範囲によって作成先が異なります。
image.png
Agent Skills より

今回は作業ディレクトリで適用できればよかったので、Project Skillsで進めました。
フォルダ:.claude\skills\check-installed-packages-skillを用意して、必要な資材を配置します。
ドキュメントにある通り、skillsフォルダの中に具体的なスキル名を設定しています。

image.png

以下、実行時のスクリーンショットです。
スクリーンショット 2025-10-26 112249.png
スクリーンショット 2025-10-26 112330.png
image.png

書き込み権限エラーは発生していましたが、スクリーンショット自体は取得できました。(特に設定していないので、to-fuになっています。)
image.png

以下それぞれで利用できることを確認したので、これで動作確認は終了です。

  • Claude Desktop
  • Claude Code

Best Practice

上記ページSkill作成時の推奨・非推奨事項が記載されています。

既に生成AIで色々開発をされている方やCLAUDE.mdのブラッシュアップなどをされている方は、サラッと読み進められる内容だと思いました。

Skillsの制約事項(できることとできないこと)

できること

  • 事前インストール済みパッケージを使った処理
  • ローカルファイルの読み書き
  • データ処理、変換、分析
  • ローカルHTMLのレンダリング・スクリーンショット

できないこと

  • 外部APIへのHTTPリクエスト
  • インターネット上のリソースへのアクセス
  • 実行時の新規パッケージインストール

Skillsの活用方法と可能性

他のツールとの組み合わせ

Skillsの制約を理解した上で、他のフロー(MCPサーバー、外部APIツールなど)と組み合わせることで、より柔軟なワークフローを構築できそうです。
例:外部APIからデータを取得する部分は別のツールに任せ、取得したデータの処理・分析・可視化をSkillsで行う

専門知識の体系化

Skillsは、特定のドメイン知識やベストプラクティスを一度パッケージ化すれば、チーム内で再利用できます。コーディング規約、文書フォーマット、業界用語集などを整理し、Claudeに一貫した挙動をさせることができます。

今後の展望

MCPサーバーとの連携

Anthropicは今後、MCP(Model Context Protocol)サーバーとSkillsの連携を進めていくと示唆しています。これにより、Skillsの静的な知識とMCPサーバーの動的なデータアクセス能力を組み合わせたフロー構築ができるかもしれません。

エージェントによるSkills評価

将来的には、エージェント自身がSkillsの品質や適用可能性を評価し、自動的に最適なSkillを選択・適用するような仕組みも検討されているようです。このような体系化が進めば、より洗練されたエージェント開発が可能になります。

継続的な検証の必要性

Skillsは比較的新しい機能であり、ドキュメントの更新やAPI仕様の変更が今後も続くと予想されます。本記事で紹介した制約や挙動も、将来的には変更される可能性があるため、最新の公式ドキュメントを確認しながら活用していきたいです。

まとめ

Claude Skillsは、エージェントに専門知識とワークフローを付与する強力な機能です。本記事では以下のポイントを確認しました

  • Skillsの基本構造とセットアップ方法
  • ディレクトリ構造の変更(古い情報に注意)
  • 実行環境の制約(ネットワークアクセス不可、パッケージインストール不可)
  • できることとできないことの具体例
  • 他のツールとの組み合わせによる柔軟なワークフロー構築
  • コスト面でのメリット

Skillsの制約を理解した上で適切に活用することで、効率的かつコスト効果の高いエージェントシステムを構築できます。今後もMCPサーバーとの連携や自動評価機能など、新しい展開に注目していきたいと思います。

参考リンク

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?