From hyva-utilities
Detects Magento development environment (Warden, docker-magento, DDEV, local) and provides the correct command wrapper for executing shell commands inside containers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hyva-utilities:hyva-exec-shell-cmdThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This utility skill detects the Magento development environment and provides the appropriate command wrapper for executing shell commands.
This utility skill detects the Magento development environment and provides the appropriate command wrapper for executing shell commands.
Other skills should reference this skill when they need to execute commands in the Magento environment. The detected wrapper ensures commands run in the correct context (container or local).
Important: Execute this script from the Magento project root directory, or provide the path as an argument.
Run this detection once at the start of any skill that needs to execute shell commands:
<skill_path>/scripts/detect_env.sh [magento_root_path]
Where <skill_path> is the directory containing this SKILL.md file (e.g., .claude/skills/hyva-exec-shell-cmd).
The optional magento_root_path argument specifies the Magento installation directory. If omitted, the script uses the current working directory.
Output: warden, docker-magento, ddev, or local
Based on detected environment, wrap commands as follows:
| Environment | Command Wrapper | Description |
|---|---|---|
| Warden | warden env exec -T php-fpm bash -c "<command>" | Docker environment managed by Warden |
| docker-magento | bin/clinotty bash -c "<command>" | Mark Shust's docker-magento setup |
| DDEV | ddev exec <command> | DDEV containerized environment |
| Local | Run <command> directly | Native environment without containers |
# 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
Some commands run on the host system and should NOT be wrapped:
composer commands (runs on host, not in container)git commandsls, find, cp for files accessible from host)warden CLI commandsddev CLI commandsSkills that need to execute commands should:
hyva-exec-shell-cmd skill to determine the command wrapper"Some skills ship a helper script (e.g. a PHP script under scripts/) that must run
through a PHP/Node interpreter. On a hardened host there is no local interpreter, and
a skill installed at user level (~/.../skills/...) is not inside the project, so the
container can't see it. Do not copy the script into the project tree: how files
reach the container differs across environments (bind mounts, Mutagen, named volumes)
and some paths are not synced at all (e.g. Warden serves var/, generated/,
pub/static, pub/media from separate volumes, so a host-written file there never
appears in the container).
Instead, stream the script into the interpreter over stdin — this is independent of the mount/sync strategy, needs no temp file, and needs no cleanup:
Detect the environment (Step 1) and resolve the wrapper (Step 2).
Containerized env — pipe the script to php /dev/stdin through the wrapper
(use the non-TTY -T exec so stdin is forwarded). <skill_path> is the directory
containing the calling skill's 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]"
The script runs with the container's working directory at the project root, so a
script that locates the project via getcwd() works unchanged. Capture stdout for
the result.
Script constraints for this method: the script must not also read from stdin
(stdin carries the script itself), and must not rely on __FILE__/__DIR__ (it
is /dev/stdin) — locate project files via getcwd() instead.
local env: the host has no interpreter (removed during hardening). Do not
attempt to run the script directly — report that a containerized dev environment
(or a local interpreter) is required for this step.
npx claudepluginhub coughsyrupgit/hyva-skills-claude-marketplace --plugin hyva-theme-developmentAutomatically detects Laravel Sail and uses it for commands like artisan/composer/pnpm; falls back to host PHP/Composer/Node with paired mappings for consistent execution.
Configures and troubleshoots the DDEV local development environment for Craft CMS projects. Covers config.yaml, shorthand commands, add-ons, Vite dev server, database import/export, Xdebug, and container issues.
Use when starting a session, running shell commands, installing packages, or diagnosing platform-specific failures - detects OS, shell, runtime, package manager, and toolchain before any command execution