Agent Skill: sftp-deployer
概要
レンタルサーバーへの自動デプロイと管理を行う汎用的なスキルセットです。GUIベースのFTPクライアントと同等の機能をコマンドラインから利用でき、AIエージェントが自動的に操作できます。
対応サーバー
基本要件
- ✅ SSH/SFTP接続が可能な任意のサーバー
- ✅ パスワード認証・SSH公開鍵認証の両方に対応
- ✅ ほぼすべてのレンタルサーバー、VPS、クラウドサーバーで利用可能
認証方式
- パスワード認証:
.envにFTP_PASSを設定 - 公開鍵認証:
.envにFTP_KEY_FILEを設定 - 柔軟な対応: サーバーの仕様に合わせて認証方式を選択可能
対応サーバー例
- Xserver、さくらインターネット、ロリポップ、ConoHa WING、mixhostなど
- AWS EC2、Google Cloud、Azure、DigitalOcean、Linodeなど
- 自宅サーバー、Raspberry Piなど(SSH対応であれば何でもOK)
トリガー
- ユーザーが「デプロイして」「サーバーにアップして」「ファイルを確認して」などと指示した場合
使用可能なツール
📤 アップロード・デプロイ
- sftp_deploy.py - ファイル/ディレクトリのアップロード
- sftp_mkdir.py - リモートディレクトリの作成
📥 ダウンロード・バックアップ
- sftp_download.py - ファイル/ディレクトリのダウンロード
📋 確認・一覧表示
- sftp_list.py - ファイル一覧表示(詳細情報付き)
🔧 管理・操作
- sftp_chmod.py - パーミッション変更
- sftp_delete.py - ファイル/ディレクトリの削除
🔍 その他
- find_remote_path.py - リモートパス探索
主要な使用例
1. デプロイ(アップロード)
# デフォルトパスにデプロイ
python scripts/sftp_deploy.py my_website
# 特定のパスにデプロイ
python scripts/sftp_deploy.py my_website /var/www/html
# テスト実行(Mock モード)
python scripts/sftp_deploy.py my_website --mock
2. ダウンロード(バックアップ)
# デフォルトパスからダウンロード
python scripts/sftp_download.py ./backup
# 特定のファイルをダウンロード
python scripts/sftp_download.py /var/www/html/config.php ./config_backup.php
# ディレクトリ全体をバックアップ
python scripts/sftp_download.py /var/www/html ./website_backup
3. ファイル一覧表示
# シンプルな一覧表示
python scripts/sftp_list.py
# 詳細表示(権限、サイズ、日時)
python scripts/sftp_list.py -l
# 再帰的に表示
python scripts/sftp_list.py -r
# 特定のディレクトリを詳細表示
python scripts/sftp_list.py -l /var/www/html
4. 権限変更
# ファイルを実行可能に
python scripts/sftp_chmod.py /var/www/html/script.sh 755
# ディレクトリの権限変更
python scripts/sftp_chmod.py /var/www/html/uploads 777
# 再帰的に権限変更
python scripts/sftp_chmod.py /var/www/html 755 -r
5. ディレクトリ作成
# 単一ディレクトリ作成
python scripts/sftp_mkdir.py /var/www/html/uploads
# ネストしたディレクトリ作成
python scripts/sftp_mkdir.py /var/www/html/app/data/cache
# 特定の権限で作成
python scripts/sftp_mkdir.py /var/www/html/logs -m 777
6. 削除
# デフォルトパスを削除(確認プロンプトあり)
python scripts/sftp_delete.py
# 特定のパスを削除
python scripts/sftp_delete.py /var/www/html/old_files
自動パーミッション設定(デプロイ時)
| ファイル/ディレクトリ | パーミッション | 説明 |
|---|---|---|
.cgi, .py, .pl, .sh |
755 |
CGIスクリプト(実行権限) |
data/ ディレクトリ |
707 |
データディレクトリ(書き込み権限) |
| その他のファイル | 644 |
標準ファイル |
| その他のディレクトリ | 755 |
標準ディレクトリ |
AIエージェント向けガイドライン
ユーザーの指示に応じた適切なツール選択
| ユーザーの指示例 | 使用するツール | 備考 |
|---|---|---|
| 「デプロイして」「アップロードして」 | sftp_deploy.py | デフォルトパスまたは指定パス |
| 「ファイルを確認して」「何があるか見て」 | sftp_list.py | -l オプションで詳細表示 |
| 「バックアップして」「ダウンロードして」 | sftp_download.py | ローカルに保存 |
| 「実行権限を付けて」「権限を変更して」 | sftp_chmod.py | 適切なモード指定 |
| 「ディレクトリを作って」 | sftp_mkdir.py | 親ディレクトリも自動作成 |
| 「削除して」「クリアして」 | sftp_delete.py | 確認プロンプトあり |
推奨ワークフロー
デプロイ前
sftp_list.py -lで現在の状態確認- 必要に応じて
sftp_download.pyでバックアップ sftp_deploy.pyでデプロイsftp_list.pyで結果確認
トラブルシューティング
sftp_list.py -lで権限確認sftp_chmod.pyで権限修正- 必要に応じて
sftp_download.pyでログ取得
重要な注意事項
⚠️ Pythonについて
- レンタルサーバーではPythonスクリプトは推奨されません
.pyファイルは実行されず、ダウンロードされる可能性があります- CGIモードは古く、非効率的です
- 推奨: HTML、PHP、JavaScriptを使用してください
✅ 推奨される技術スタック
- HTML - 静的サイト
- PHP - サーバーサイド処理(レンタルサーバーで標準サポート)
- JavaScript - クライアントサイド処理
📁 リモートパスの設定
.env の FTP_REMOTE_ROOT にデフォルトのデプロイ先を設定できます:
例(Xserver):
FTP_REMOTE_ROOT=./your_domain.com/public_html
例(一般的なレンタルサーバー):
FTP_REMOTE_ROOT=./public_html
FTP_REMOTE_ROOT=./www
FTP_REMOTE_ROOT=/var/www/html
セットアップ手順
1. 必須ファイル: .env
resources/.env.example をコピーして .env を作成し、サーバー情報を設定:
# サーバー接続情報
FTP_HOST=your_server_host.com
FTP_USER=your_username
FTP_PORT=22
# 認証方式(どちらか一方を設定)
# パスワード認証の場合
FTP_PASS=your_password
# SSH鍵認証の場合
FTP_KEY_FILE=path/to/your_key.key
# その他の設定
FTP_TIMEOUT=30
FTP_REMOTE_ROOT=./public_html
2. 必須ライブラリのインストール
pip install -r requirements.txt
requirements.txt の内容:
paramiko- SFTP接続python-dotenv- 環境変数管理
3. SSH鍵ファイル(鍵認証の場合)
- SSH秘密鍵ファイルをプロジェクトルートに配置
- サーバーの管理画面からダウンロード可能(Xserver、さくらなど)
.envのFTP_KEY_FILEにファイル名を指定
トラブルシューティング
接続タイムアウト
- タイムアウト設定は30秒(
.envのFTP_TIMEOUTで変更可能) - ホストキーは自動的に受け入れられます(
AutoAddPolicy) - ファイアウォールやポート設定を確認
ファイルが表示されない
- デプロイ先パスが正しいか確認
- Webルートディレクトリに
index.htmlが存在するか確認 - サーバーのドキュメントルート設定を確認
権限エラー
- SSH鍵ファイルのパスが正しいか確認
.envの設定(ホスト、ユーザー名、ポート)を確認- パスワード認証と鍵認証が混在していないか確認
ポート番号
- 一般的なSSH/SFTPポート:
22 - Xserverなど一部のサーバー:
10022 - サーバーのドキュメントで確認してください
サーバー別設定例
Xserver
公開鍵認証のみ対応
FTP_HOST=xs123456.xsrv.jp
FTP_USER=xs123456
FTP_PORT=10022
FTP_KEY_FILE=xs123456.key
FTP_REMOTE_ROOT=./your_domain.com/public_html
さくらインターネット
パスワード認証
FTP_HOST=your_server.sakura.ne.jp
FTP_USER=your_username
FTP_PORT=22
FTP_PASS=your_password
FTP_REMOTE_ROOT=./www
公開鍵認証
FTP_HOST=your_server.sakura.ne.jp
FTP_USER=your_username
FTP_PORT=22
FTP_KEY_FILE=sakura_server.key
FTP_REMOTE_ROOT=./www
ロリポップ
パスワード認証
FTP_HOST=your_server.lolipop.jp
FTP_USER=your_username
FTP_PORT=22
FTP_PASS=your_password
FTP_REMOTE_ROOT=.
VPS(一般的な設定)
公開鍵認証(推奨)
FTP_HOST=123.456.789.012
FTP_USER=root
FTP_PORT=22
FTP_KEY_FILE=server_key.pem
FTP_REMOTE_ROOT=/var/www/html
パスワード認証
FTP_HOST=123.456.789.012
FTP_USER=root
FTP_PORT=22
FTP_PASS=your_root_password
FTP_REMOTE_ROOT=/var/www/html
ツール一覧クイックリファレンス
| ツール | 機能 | 主なオプション |
|---|---|---|
| sftp_deploy.py | アップロード | --mock (テスト実行) |
| sftp_download.py | ダウンロード | - |
| sftp_list.py | 一覧表示 | -l (詳細), -r (再帰) |
| sftp_chmod.py | 権限変更 | -r (再帰) |
| sftp_mkdir.py | ディレクトリ作成 | -m (モード指定) |
| sftp_delete.py | 削除 | (確認プロンプトあり) |
AIエージェントでの使用方法
このスキルはAntigravity、Claude Desktop、Claude Codeのいずれでも使用可能です。
スキルの配置
以下のいずれかの方法でスキルフォルダを配置してください:
Antigravity の場合:
- プロジェクトの
.agent/skills/ftpSkill/ディレクトリに配置 - 例:
E:\MyProject\.agent\skills\ftpSkill\ .agent/skills/への配置が推奨されます
# .agent/skills ディレクトリを作成 New-Item -ItemType Directory -Path ".agent\skills" -Force # ftpSkill フォルダをコピー Copy-Item -Recurse ftpSkill ".agent\skills\ftpSkill"- プロジェクトの
Claude Desktop の場合:
~/.claude/skills/sftp-deployer/
Claude Code の場合:
- プロジェクトルートの
.agent/skills/sftp-deployer/
- プロジェクトルートの
初期設定
# 依存関係をインストール
cd .agent\skills\ftpSkill
pip install -r requirements.txt
# .env ファイルを作成
Copy-Item resources\.env.example .env
# .env を編集してサーバー情報を設定
notepad .env
使用例
スキルが配置されると、AIエージェントは自動的にこのスキルを認識し、以下のような指示に対応できます:
「このWebサイトをサーバーにデプロイして」
「サーバーのファイル一覧を確認して」
「サーバーからバックアップをダウンロードして」
「uploads フォルダの権限を777に変更して」
AIエージェントは適切なツールを自動選択し、必要な操作を実行します。