mcpField
H
hyva-exec-shell-cmd

hyva-exec-shell-cmd

github.com/hyva-themes開発851.3k 回インストール13 週間前に更新
リポジトリ

hyva-exec-shell-cmd について

Magento 開発向けの補助スキルで、実行環境を検出し、環境に応じたコマンドのラッパーを示します。プロジェクト内でコマンドを実行する他のスキルから利用されます。

主な機能

  1. 01Warden、docker-magento、DDEV、ローカル環境の検出
  2. 02環境ごとのコマンドラッパー提示
  3. 03ラッパー不要のコマンドの案内
  4. 04標準入力経由でのコンテナ内スクリプト実行

活用シーン

  1. 01各種 Magento 環境での bin/magento コマンド実行
  2. 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:コマンドラッパーを適用する

検出された環境に応じて、次のようにコマンドをラップします。

環境コマンドラッパー説明
Wardenwarden env exec -T php-fpm bash -c "<command>"Warden が管理する Docker 環境
docker-magentobin/clinotty bash -c "<command>"Mark Shust の docker-magento セットアップ
DDEVddev 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)
  • warden CLI コマンド
  • ddev CLI コマンド

統合パターン

コマンドを実行する必要があるスキルでは、次のようにします。

  1. このスキルを参照します:「hyva-exec-shell-cmd スキルを使用してコマンドラッパーを決定する」
  2. ステップ 1 に従って環境を一度検出します
  3. スキル全体で使用するラッパーパターンを保存します
  4. ステップ 2 に従って、すべてのコンテナコマンドにラッパーを適用します

バンドルされたスキルスクリプトを環境内で実行する

スキルによっては、PHP/Node インタープリター経由で実行する必要があるヘルパースクリプト(例:scripts/ 内の PHP スクリプト)が含まれています。セキュリティ強化されたホストにはローカルインタープリターがなく、ユーザーレベルでインストールされたスキル(~/.../skills/...)はプロジェクト内にないため、コンテナから参照できません。スクリプトをプロジェクトツリーにコピーしないでください。 ファイルがコンテナに届く方法は環境によって異なり(バインドマウント、Mutagen、名前付きボリューム)、まったく同期されないパスもあります(例:Warden は var/、generated/、pub/static、pub/media を個別のボリュームから提供するため、ホスト側でこれらの場所に書き込んだファイルはコンテナに表示されません)。

代わりに、スクリプトを stdin 経由でインタープリターにストリームしてください。この方法はマウント/同期方式に左右されず、一時ファイルもクリーンアップも不要です。

  1. 環境を検出し(ステップ 1)、ラッパーを決定します(ステップ 2)。

  2. コンテナ化環境の場合 — スクリプトをラッパー経由で php /dev/stdin にパイプします(stdin が転送されるよう、TTY を使用しない -T exec を使用します)。<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() でプロジェクトファイルを特定してください。

  3. local 環境の場合:ホストにはインタープリターがありません(セキュリティ強化時に削除されています)。スクリプトを直接実行しようとせず、このステップにはコンテナ化された開発環境(またはローカルインタープリター)が必要であることを伝えてください。

コメント