/ftp-deploy は、CMSを持たないPHPサイトの公開作業を、接続確認からアップロード、表示確認、結果報告までの定型手順としてClaude Codeに実行させるSkillです。書き手や開発者が確認するのは、対象ファイルの一覧と最終的な表示結果だけです。

何を解決するSkillか

CMSを使わずPHP+FTPで動くサイトは、更新の自由度が高い一方で、公開作業がすべて手作業になります。ローカルで編集したファイルをFTPクライアントで転送し、表示を確認する作業を毎回人手でこなす必要があり、対象ファイルの取り違えや上書き漏れといった事故が起きやすい工程です。

このSkillは、その公開工程を4つの手順に固定します。.envから認証情報を読み込んでの接続確認、アップロード対象一覧の提示と確認、アップロード実行、HTTPアクセスによる表示確認と結果報告です。手順が固定されているため、確認を飛ばして公開してしまうことがなくなります。

仕様

コマンド/ftp-deploy
入力アップロード対象のファイルまたはディレクトリのパス
出力接続確認結果、アップロード対象一覧、転送結果、表示確認結果(HTTPステータス)
認証情報プロジェクト直下の.envから読み込み(ホスト、ユーザー名、パスワード、公開ディレクトリ)
前提Claude Code(Skillが使えるプラン)、FTPまたはFTPS対応のレンタルサーバー

導入手順

配布ファイルを解凍し、プロジェクトのSkillフォルダに置きます。認証情報はコード内に書かず、.envに分離します。

your-project/
├── .env
└── .claude/
    └── skills/
        └── ftp-deploy/
            └── SKILL.md

配置後、Claude Codeで/ftp-deployと入力し、アップロードしたいファイルまたはディレクトリを指定すれば起動します。.env.gitignoreに含め、リポジトリには含めません。

実際の使用例

1ファイルの修正をアップロードする場合のやり取りの例です。

> /ftp-deploy site/blog/index.php を公開して

.envから接続情報を読み込みました。接続確認OK(ホスト: xxx.sakura.ne.jp)。

アップロード対象:
1. site/blog/index.php → /public_html/blog/index.php(更新)

この1件でよろしいですか?

> はい

アップロード完了。
表示確認: https://broadskills.akihisa.net/blog/ → HTTP 200 OK
公開が完了しました。

対象一覧を確認してから転送に進むため、意図しないファイルまで巻き込んで上書きすることがありません。

使ってわかった向き不向き

向いている場面

  • 静的サイトやPHPサイトの定期更新。当サイト(Broad Skills)自体がこのSkillの原型で運用されており、記事の追加やページ修正のたびに同じ手順で公開しています。
  • 1人または少人数での運用。公開担当者が固定されていない体制でも、手順が同じなので操作のばらつきが出ません。

向いていない場面

  • ビルド工程のある大規模開発。フロントエンドのビルドやCI/CDパイプラインを前提とするプロジェクトには、このSkillの手作業ベースの転送は合いません。GitHub Actions等の自動デプロイを使うべきです。
  • 複数人が同時に同じディレクトリへ公開する体制。FTPには排他制御がないため、同時アップロードによる競合はSkillの範囲外です。

カスタマイズのヒント

SKILL.mdはただのMarkdownなので、自分のサーバー環境に合わせて書き換えられます。よく効く追記は次の3つです。

  • 認証情報を出力・ログ・コミットに一切書き出さないという安全装置を手順の先頭に明記する
  • アップロードのみを行い、リモートファイルの削除は行わないという制約を明記する
  • アップロード前に必ず対象ファイル一覧を提示し、実行前に確認を取るという確認ステップを明記する

Skillの構造そのものを知りたい方は、解説記事「Claude Code Skillとは何か」をご覧ください。記事の下書きから公開までを一貫させたい場合は、記事下書き支援Skill「/article-draft」との併用も参考にしてください。