hyva-exec-shell-cmd について
Magento 開発向けの補助スキルで、実行環境を検出し、環境に応じたコマンドのラッパーを示します。プロジェクト内でコマンドを実行する他のスキルから利用されます。
主な機能
- 01Warden、docker-magento、DDEV、ローカル環境の検出
- 02環境ごとのコマンドラッパー提示
- 03ラッパー不要のコマンドの案内
- 04標準入力経由でのコンテナ内スクリプト実行
活用シーン
- 01各種 Magento 環境での bin/magento コマンド実行
- 02コマンドをホストとコンテナのどちらで実行するかの判断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hyva-themes/ hyva-ai-tools --skill hyva-exec-shell-cmdインストール後、Claude Code で/hyva-exec-shell-cmdを入力して読み込まれたか確認します。
同梱ファイルscripts/detect_env.sh
詳細
Magento 環境でシェルコマンドを実行する
このユーティリティスキルは、Magento の開発環境を検出し、シェルコマンドの実行に適したコマンドラッパーを提供します。
使用方法
Magento 環境でコマンドを実行する必要がある他のスキルは、このスキルを参照してください。検出されたラッパーを使用することで、コマンドが正しいコンテキスト(コンテナまたはローカル)で実行されます。
ステップ 1:環境を検出する
重要: このスクリプトは Magento プロジェクトのルートディレクトリから実行するか、引数としてパスを指定してください。
シェルコマンドを実行する必要のあるスキルの開始時に、この検出を一度実行します。
<skill_path>/scripts/detect_env.sh [magento_root_path]
<skill_path> は、この SKILL.md ファイルを含むディレクトリです(例:.claude/skills/hyva-exec-shell-cmd)。
オプションの magento_root_path 引数では、Magento のインストールディレクトリを指定します。省略した場合、スクリプトは現在の作業ディレクトリを使用します。
出力:warden、docker-magento、ddev、または local
ステップ 2:コマンドラッパーを適用する
検出された環境に応じて、次のようにコマンドをラップします。
| 環境 | コマンドラッパー | 説明 |
|---|---|---|
| Warden | warden env exec -T php-fpm bash -c "<command>" | Warden が管理する Docker 環境 |
| docker-magento | bin/clinotty bash -c "<command>" | Mark Shust の docker-magento セットアップ |
| DDEV | ddev exec <command> | DDEV のコンテナ化された環境 |
| Local | <command> を直接実行 | コンテナを使用しないネイティブ環境 |
例
単一のコマンド
# Warden
warden env exec -T php-fpm bash -c "bin/magento cache:clean"
# docker-magento
bin/clinotty bash -c "bin/magento cache:clean"
# DDEV
ddev exec bin/magento cache:clean
# Local
bin/magento cache:clean
ディレクトリを変更するコマンド
# Warden
warden env exec -T php-fpm bash -c "cd vendor/hyva-themes/magento2-default-theme/web/tailwind && npm run build"
# docker-magento
bin/clinotty bash -c "cd vendor/hyva-themes/magento2-default-theme/web/tailwind && npm run build"
# DDEV
ddev exec bash -c "vendor/hyva-themes/magento2-default-theme/web/tailwind && npm run build"
# Local
cd vendor/hyva-themes/magento2-default-theme/web/tailwind && npm run build
ラップする必要のないコマンド
一部のコマンドはホストシステム上で実行するため、ラップする必要はありません。
composerコマンド(コンテナではなく、ホスト上で実行されます)gitコマンド- ホストのファイルシステム上でのファイル操作(ホストからアクセスできるファイルに対する
ls、find、cp) wardenCLI コマンドddevCLI コマンド
統合パターン
コマンドを実行する必要があるスキルでは、次のようにします。
- このスキルを参照します:「
hyva-exec-shell-cmdスキルを使用してコマンドラッパーを決定する」 - ステップ 1 に従って環境を一度検出します
- スキル全体で使用するラッパーパターンを保存します
- ステップ 2 に従って、すべてのコンテナコマンドにラッパーを適用します
バンドルされたスキルスクリプトを環境内で実行する
スキルによっては、PHP/Node インタープリター経由で実行する必要があるヘルパースクリプト(例:scripts/ 内の PHP スクリプト)が含まれています。セキュリティ強化されたホストにはローカルインタープリターがなく、ユーザーレベルでインストールされたスキル(~/.../skills/...)はプロジェクト内にないため、コンテナから参照できません。スクリプトをプロジェクトツリーにコピーしないでください。 ファイルがコンテナに届く方法は環境によって異なり(バインドマウント、Mutagen、名前付きボリューム)、まったく同期されないパスもあります(例:Warden は var/、generated/、pub/static、pub/media を個別のボリュームから提供するため、ホスト側でこれらの場所に書き込んだファイルはコンテナに表示されません)。
代わりに、スクリプトを stdin 経由でインタープリターにストリームしてください。この方法はマウント/同期方式に左右されず、一時ファイルもクリーンアップも不要です。
-
環境を検出し(ステップ 1)、ラッパーを決定します(ステップ 2)。
-
コンテナ化環境の場合 — スクリプトをラッパー経由で
php /dev/stdinにパイプします(stdin が転送されるよう、TTY を使用しない-Texec を使用します)。<skill_path>は、呼び出し元のスキルの SKILL.md を含むディレクトリです。# Warden cat "<skill_path>/scripts/<script>.php" | warden env exec -T php-fpm bash -c "php /dev/stdin [args]" # docker-magento cat "<skill_path>/scripts/<script>.php" | bin/clinotty bash -c "php /dev/stdin [args]" # DDEV cat "<skill_path>/scripts/<script>.php" | ddev exec bash -c "php /dev/stdin [args]"スクリプトは、作業ディレクトリがプロジェクトルートの状態でコンテナ内で実行されるため、
getcwd()でプロジェクトを特定するスクリプトは変更せずに動作します。結果を得るために stdout を取得します。この方法におけるスクリプトの制約: スクリプトは stdin も読み取ってはいけません(stdin はスクリプト自体の転送に使用されます)。また、
__FILE__/__DIR__に依存してはいけません(値は/dev/stdinになります)。代わりにgetcwd()でプロジェクトファイルを特定してください。 -
local環境の場合:ホストにはインタープリターがありません(セキュリティ強化時に削除されています)。スクリプトを直接実行しようとせず、このステップにはコンテナ化された開発環境(またはローカルインタープリター)が必要であることを伝えてください。