Claude Code Plugins

Community-maintained marketplace

Feedback

Create standalone Python scripts using uv shebang with PEP 723 inline metadata. Use when creating single-file Python tools or scripts that need dependency management without a full project setup.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name uv-script
description Create standalone Python scripts using uv shebang with PEP 723 inline metadata. Use when creating single-file Python tools or scripts that need dependency management without a full project setup.
allowed-tools Read, Write, Glob

uv Shebang Python Script

Pythonで単体スクリプトを作成する際に使用するスキル。

発火条件

  • Pythonで単体スクリプト(単一ファイルで完結するツール)を作成するとき
  • 発火させたくない場合はユーザーが明示的に伝える(例:「プロジェクトのvenv使うのでuv単体スクリプトにしないで」)

テンプレート

#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.11"
# dependencies = []
# ///
"""スクリプトの説明."""

import argparse
import sys


def main() -> int:
    parser = argparse.ArgumentParser(description="スクリプトの説明")
    parser.add_argument("arg", help="引数の説明")
    args = parser.parse_args()

    # メイン処理

    return 0


if __name__ == "__main__":
    sys.exit(main())

構成要素

シェバン

#!/usr/bin/env -S uv run --script

-S オプションで複数引数を渡す。これによりuvが依存関係を自動解決して実行する。

PEP 723 インラインメタデータ

# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "requests>=2.28",
#     "rich",
# ]
# ///
  • TOMLコメント形式で依存関係を宣言
  • requires-python: 最小Pythonバージョン(3.11以上推奨)
  • dependencies: pipの要件指定形式で依存パッケージを列挙

エントリーポイント

def main() -> int:
    # 処理
    return 0  # 終了コード

if __name__ == "__main__":
    sys.exit(main())
  • main() は終了コードを返す(成功: 0、失敗: 1)
  • sys.exit() で終了コードを伝播

ベストプラクティス

エラー出力

print("Error: something went wrong", file=sys.stderr)
return 1

エラーメッセージは標準エラー出力へ。

引数処理

シンプルな場合は argparse、複雑なCLIは typer を依存に追加:

# dependencies = ["typer"]

型ヒント

Python 3.11+の型ヒント構文を使用:

def process(items: list[str]) -> dict[str, int]:
    ...

ファイル配置

dotfilesリポジトリの場合:

  • dot_scripts/executable_<name> として配置
  • chezmoi適用後 ~/.scripts/<name> として利用可能