Manage Laravel projects with docker-local - list, create, clone, and open projects
Manages Laravel projects in docker-local environment. Use when creating, listing, cloning, or opening Laravel projects with automatic Docker service configuration and isolation settings.
/plugin marketplace add mwguerra/claude-code-plugins/plugin install docker-local@mwguerra-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
This skill manages Laravel projects within the docker-local environment:
Use this skill when:
Before ANY docker-local command, verify installation:
which docker-local > /dev/null 2>&1
If docker-local is NOT found:
composer global require mwguerra/docker-localexport PATH="$HOME/.composer/vendor/bin:$PATH"docker-local initwhich docker-local && docker-local --version# List all Laravel projects with status
docker-local list
# Output shows:
# NAME URL STATUS
# blog https://blog.test ✓ accessible
# api https://api.test ○ DNS ok
# shop https://shop.test ✗ DNS not configured
# Create with MySQL (default)
docker-local make:laravel myapp
# Create with PostgreSQL + pgvector
docker-local make:laravel myapp --postgres
What gets created automatically:
.env with all Docker service connectionsIsolation settings created:
Creating Laravel project: myapp
Database: MySQL
Redis DBs: cache=0, session=1, queue=2
✓ Project created successfully!
✓ MySQL database 'myapp' created
✓ MySQL database 'myapp_testing' created
✓ MinIO bucket 'myapp' created
✓ .env configured with complete isolation
Isolation settings (multi-project):
✓ Database: myapp (MySQL)
✓ Redis Cache DB: 0
✓ Redis Session DB: 1
✓ Redis Queue DB: 2
✓ Cache Prefix: myapp_
✓ MinIO Bucket: myapp
✓ Reverb App ID: 847291
# Clone from GitHub/GitLab
docker-local clone git@github.com:user/repo.git
# Clone with custom name
docker-local clone git@github.com:user/repo.git myapp
Clone process:
# Open current project in browser
docker-local open
# Open specific project
docker-local open myapp
# Open services
docker-local open --mail # Mailpit
docker-local open --minio # MinIO Console
docker-local open --traefik # Traefik Dashboard
# Open in VS Code (default)
docker-local ide
# Open in PhpStorm
docker-local ide phpstorm
# Open specific project
docker-local ide code myapp
Each project in ~/projects/ is automatically configured:
~/projects/
├── blog/ → https://blog.test
│ ├── .env # Project-specific Laravel config
│ ├── app/
│ └── ...
├── api/ → https://api.test
└── shop/ → https://shop.test
Projects get these Docker-specific settings:
# Database - use Docker service names
DB_HOST=mysql # or 'postgres' for PostgreSQL
DB_PORT=3306 # or 5432 for PostgreSQL
DB_DATABASE=myapp
DB_USERNAME=laravel
DB_PASSWORD=secret
# Redis - use Docker service name
REDIS_HOST=redis
REDIS_PORT=6379
# IMPORTANT: Unique isolation values
CACHE_PREFIX=myapp_
REDIS_CACHE_DB=0
REDIS_SESSION_DB=1
REDIS_QUEUE_DB=2
# Mail - use Mailpit
MAIL_HOST=mailpit
MAIL_PORT=1025
# MinIO/S3
AWS_ENDPOINT=http://minio:9000
AWS_ACCESS_KEY_ID=minio
AWS_SECRET_ACCESS_KEY=minio123
AWS_BUCKET=myapp
AWS_USE_PATH_STYLE_ENDPOINT=true
For projects not created by docker-local:
cp -r /path/to/project ~/projects/myapp
cd ~/projects/myapp
docker-local db:create myapp
# Edit .env with Docker service names:
DB_HOST=mysql # NOT localhost
REDIS_HOST=redis # NOT localhost
MAIL_HOST=mailpit # NOT localhost
# Generate unique settings
docker-local make:env
# Or manually set:
CACHE_PREFIX=myapp_
REDIS_CACHE_DB=3 # Different from other projects
REDIS_SESSION_DB=4
REDIS_QUEUE_DB=5
docker exec -w /var/www/myapp php composer install
docker exec -w /var/www/myapp php php artisan migrate
# Verify current project .env
docker-local env:check
# Audit ALL projects for conflicts
docker-local env:check --all
Conflict detection example:
┌─ Cross-Project Conflicts ─────────────────────────────────────────┐
⚠ CACHE_PREFIX conflict with 'other-project'
Both projects use: laravel_cache_
Why: Cache data will be shared/corrupted between projects
Fix: Change CACHE_PREFIX in one of the projects' .env files
my-blogdocker-local statusdocker-local listdocker-local doctordocker-local opendocker-local env:checkdocker-local db:fresh$ARGUMENTS
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.