{"owner":"Varying-Vagrant-Vagrants","repo":"VVV","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# VVV Development Environment Instructions for LLM Agents\n\nThis document provides critical guidance for AI coding assistants working with Varying Vagrant Vagrants (VVV). **Read and follow these instructions carefully to avoid inappropriate changes.**\n\n## 🚨 Critical Boundaries - NEVER Cross These Lines\n\n### DO NOT Modify These Core Files\n- **`.gitignore`** - NEVER modify to allow committing `www/` content or other gitignored paths\n- **`Vagrantfile`** - Core Vagrant configuration, do not modify without explicit permission\n- **`/provision/`** scripts - Core provisioning logic (only modify for VVV improvements, not site work)\n- **Git-tracked files** - Assume files tracked by git are VVV core files unless explicitly told otherwise\n\n### Git Safety Rules - Follow These Strictly\n1. **NEVER modify `.gitignore`** to allow committing `www/` content\n2. **NEVER force commit** using `--no-verify`, `-f`, or similar flags\n3. **ALWAYS check `git check-ignore <path>`** before committing files to verify they should be tracked\n4. **If files in `www/` appear in git status** - they should almost certainly NOT be committed (except the defaults listed below)\n5. **Ask before committing** if you're uncertain whether a file belongs in the VVV repository\n\n## What is VVV?\n\nVVV (Varying Vagrant Vagrants) is a **WordPress development environment** using Vagrant. It's infrastructure, not a project itself.\n\n**Key Concept:** VVV is like Docker Compose for WordPress development. The `www/` folder is like Docker volumes - it contains local development sites that are **unique to each developer** and **should never be shared** via the VVV repository.\n\n### Architecture\n- **`www/` folder** - Contains local development WordPress sites (gitignored, except specific defaults)\n- **`config/config.yml`** - User's site configuration (gitignored)\n- **`provision/`** - Provisioning scripts that set up the Vagrant environment\n- **`database/`** - MySQL data (gitignored)\n- **`log/`** - Log files (gitignored)\n\n## Working with WordPress Sites - The Correct Way\n\n### Creating a New Site\n\nWhen asked to create a new WordPress site:\n\n**✓ CORRECT approach:**\n1. Edit `/config/config.yml` (or create it from `config/default-config.yml` template)\n2. Add a site configuration:\n```yaml\nsites:\n  my-site-name:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - mysite.test\n    custom:\n      db_name: my_database\n      site_title: \"My Site\"\n      admin_user: admin\n      admin_password: password\n      install_plugins:\n        - query-monitor\n        - debug-bar\n      wpconfig_constants:\n        WP_DEBUG: true\n        WP_DEBUG_LOG: true\n```\n3. Instruct user to run: `vagrant up --provision`\n4. VVV will automatically create the site in `www/my-site-name/`\n\n**✗ INCORRECT approach:**\n- ❌ Creating directories directly in `www/my-site-name/`\n- ❌ Downloading and copying WordPress files manually\n- ❌ Modifying `.gitignore` to track the new site\n- ❌ Committing site files to VVV repository\n- ❌ Committing site files to site template repository\n\n### Modifying an Existing Site\n\nWhen asked to work on a WordPress site (themes, plugins, content):\n\n**✓ CORRECT approach:**\n1. Identify which site: \"Which site in `www/` are you working on?\"\n2. Navigate to that site's directory: `www/site-name/public_html/`\n3. Work within that site's directory structure:\n   - Themes: `www/site-name/public_html/wp-content/themes/`\n   - Plugins: `www/site-name/public_html/wp-content/plugins/`\n   - Uploads: `www/site-name/public_html/wp-content/uploads/`\n4. **DO NOT** offer to commit these changes to VVV repository\n5. If user wants version control, suggest initializing git within their theme/plugin folder\n\n**✗ INCORRECT approach:**\n- ❌ Committing theme/plugin changes to VVV repository\n- ❌ Creating pull requests with site-specific code\n- ❌ Modifying VVV core to accommodate site-specific needs\n\n### Site Configuration Options\n\nThe `custom:` section in `config/config.yml` supports extensive configuration:\n\n```yaml\ncustom:\n  # WordPress installation\n  wp_version: latest              # Or specific version like \"6.4.2\"\n  wp_type: single                 # Or \"multisite\"\n  locale: en_US                   # WordPress language\n\n  # Database\n  db_name: my_database\n  db_prefix: wp_\n\n  # Admin user\n  admin_user: admin\n  admin_password: password\n  admin_email: admin@local.test\n  site_title: \"My Site Title\"\n\n  # Plugins & themes\n  delete_default_plugins: true    # Remove Akismet and Hello Dolly\n  install_plugins:\n    - query-monitor\n    - debug-bar\n    - https://github.com/user/plugin-repo/archive/main.zip\n  install_themes:\n    - twentytwentyfour\n\n  # wp-config.php constants\n  wpconfig_constants:\n    WP_DEBUG: true\n    WP_DEBUG_LOG: true\n    WP_DEBUG_DISPLAY: false\n    SCRIPT_DEBUG: true\n```\n\n## What CAN Be Committed to VVV\n\nOnly these types of changes are appropriate for VVV pull requests:\n- 🐛 Bug fixes in VVV core provisioning scripts\n- 📚 Documentation improvements\n- ✨ New features for VVV itself (not sites)\n- ⚙️ Default configuration updates\n- 🔧 CI/CD improvements\n- 🛠️ Improvements to VVV utilities and tools\n\n## Files That ARE Tracked in www/\n\nOnly these specific files in `www/` are committed to VVV:\n- `www/default/` directory - VVV dashboard and utilities:\n  - `www/default/index.php` - VVV dashboard page\n  - `www/default/phpinfo/index.php` - PHP version info page\n  - `www/default/xdebuginfo/index.php` - Xdebug configuration page\n\n**Everything else in `www/` is gitignored** - this includes all user sites like:\n- `www/wordpress-one/`\n- `www/wordpress-two/`\n- `www/my-custom-site/`\n- etc.\n\n## Pre-Commit Checklist\n\n**Before creating commits or pull requests, ALWAYS:**\n\n1. ✅ Run `git status` - verify no files from `www/` appear (except the defaults listed above)\n2. ✅ Run `git diff` - review ALL changes to ensure nothing from user sites is included\n3. ✅ Check `git check-ignore www/my-site` - should confirm the path is ignored\n4. ✅ Verify `.gitignore` has not been modified to allow `www/` content\n5. ✅ Ask yourself: \"Is this change improving VVV itself, or is it site-specific work?\"\n6. ✅ If uncertain, **ask the user** before committing\n\n## Example Scenarios\n\n### Scenario 1: \"Create a new WordPress site called myproject\"\n\n**✓ CORRECT Response:**\n```\nI'll help you create a new site in VVV. You need to add it to your config/config.yml file:\n\nsites:\n  myproject:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - myproject.test\n\nAfter adding this, run: vagrant up --provision\n\nThis will create the site at www/myproject/ and set it up automatically.\n```\n\n**✗ INCORRECT Response:**\n- Creating directories in `www/myproject/`\n- Downloading WordPress with wget/curl\n- Modifying `.gitignore` to track the new site\n- Offering to commit the site to VVV\n\n### Scenario 2: \"Fix a bug in my site's theme\"\n\n**✓ CORRECT Response:**\n```\nI'll help fix the bug in your theme. Which site in www/ are you working on?\n\n[After user responds: www/myproject/]\n\nLet me look at your theme files in www/myproject/public_html/wp-content/themes/.\n\n[Make the fix]\n\nNote: These theme changes are specific to your site and shouldn't be committed to the VVV repository. If you want to version control your theme, consider initializing a git repository within your theme folder.\n```\n\n**✗ INCORRECT Response:**\n- Offering to commit theme changes to VVV\n- Creating a pull request with site-specific code\n- Modifying VVV core to fix a site-specific issue\n\n### Scenario 3: \"Improve VVV's provisioning for PHP 8.3\"\n\n**✓ CORRECT Response:**\n```\nI'll help improve VVV's PHP 8.3 provisioning. Let me review the provisioning scripts in the /provision/ directory.\n\n[Review and make improvements to VVV core scripts]\n\nThese changes improve VVV itself and are appropriate for a pull request to the VVV repository.\n```\n\nThis is a legitimate VVV improvement and CAN be committed.\n\n### Scenario 4: \"Install the Yoast SEO plugin on my site\"\n\n**✓ CORRECT Response:**\n```\nI'll help you install Yoast SEO. Add this to the site's configuration in config/config.yml:\n\nsites:\n  your-site:\n    custom:\n      install_plugins:\n        - wordpress-seo\n\nThen run: vagrant up --provision\n\nAlternatively, you can SSH into the VM and use WP-CLI:\nvagrant ssh -c \"wp plugin install wordpress-seo --activate --path=/srv/www/your-site/public_html\"\n```\n\n**✗ INCORRECT Response:**\n- Downloading the plugin ZIP file to `www/site/public_html/wp-content/plugins/`\n- Offering to commit the plugin to VVV repository\n\n## Site Development Workflow Summary\n\nWhen asked to work on a WordPress site in VVV:\n\n1. **Identify the site** - Ask which site in `www/` if unclear\n2. **Navigate to site directory** - e.g., `www/my-site/public_html/`\n3. **Work ONLY within that site** - Themes, plugins, content, etc.\n4. **NEVER commit site changes to VVV** - Site work is separate from VVV work\n5. **Separate repositories** - If the site has its own git repo, that's completely separate from VVV's git repo\n\n## Advanced: Site Provisioning\n\nEach site can have custom provisioning scripts:\n\n**Site structure:**\n```\nwww/my-site/\n├── provision/\n│   ├── vvv-init.sh          # Custom provisioning script\n│   └── vvv-nginx.conf       # Custom Nginx configuration\n├── public_html/             # WordPress root\n├── log/                     # Site-specific logs\n└── wp-cli.yml              # WP-CLI configuration\n```\n\n**Helper functions available in vvv-init.sh:**\n- `get_config_value 'key' 'default'` - Get custom config values\n- `get_primary_host` - Get the first domain\n- `noroot` - Run commands without root\n- `wp` - WP-CLI commands\n\n## VVV Extensions\n\nSystem-level tools are installed via extensions in `config/config.yml`:\n\n```yaml\nextensions:\n  core:\n    - tls-ca              # HTTPS certificates\n    - phpmyadmin          # Database management\n    - memcached-admin     # Cache management\n    - php81               # Additional PHP versions\n    - nvm                 # Node Version Manager\n```\n\n## When You're Unsure\n\n**If you're uncertain about ANY of these:**\n- Whether a file should be committed\n- Whether a change affects VVV core or a site\n- Whether to modify `.gitignore`\n- Whether to modify provisioning scripts\n\n**STOP and ask the user for clarification.** It's better to ask than to make an inappropriate commit.\n\n## Summary of Responsibilities\n\n| Your Responsibility | NOT Your Responsibility |\n|-------------------|------------------------|\n| Help edit `config/config.yml` | Create files in `www/` directly |\n| Suggest proper VVV configuration | Commit site-specific code to VVV |\n| Fix bugs in VVV core scripts | Modify `.gitignore` for sites |\n| Improve VVV documentation | Force commit gitignored files |\n| Guide users on VVV usage | Make changes without understanding impact |\n\n## Questions to Ask Yourself\n\nBefore making any changes:\n1. ❓ Is this improving VVV infrastructure, or is it site-specific work?\n2. ❓ Would this change benefit all VVV users, or just this specific site?\n3. ❓ Am I modifying VVV core files when I should be editing user configuration?\n4. ❓ Will this change appear in `git status`? Should it?\n5. ❓ Have I checked `git check-ignore` for any new files?\n\n---\n\n**Remember:** VVV is infrastructure. Sites are content. Infrastructure changes go to VVV repository. Site changes stay local.\n"},"files":{"CLAUDE.md":"# VVV Development Environment Instructions for LLM Agents\n\nThis document provides critical guidance for AI coding assistants working with Varying Vagrant Vagrants (VVV). **Read and follow these instructions carefully to avoid inappropriate changes.**\n\n## 🚨 Critical Boundaries - NEVER Cross These Lines\n\n### DO NOT Modify These Core Files\n- **`.gitignore`** - NEVER modify to allow committing `www/` content or other gitignored paths\n- **`Vagrantfile`** - Core Vagrant configuration, do not modify without explicit permission\n- **`/provision/`** scripts - Core provisioning logic (only modify for VVV improvements, not site work)\n- **Git-tracked files** - Assume files tracked by git are VVV core files unless explicitly told otherwise\n\n### Git Safety Rules - Follow These Strictly\n1. **NEVER modify `.gitignore`** to allow committing `www/` content\n2. **NEVER force commit** using `--no-verify`, `-f`, or similar flags\n3. **ALWAYS check `git check-ignore <path>`** before committing files to verify they should be tracked\n4. **If files in `www/` appear in git status** - they should almost certainly NOT be committed (except the defaults listed below)\n5. **Ask before committing** if you're uncertain whether a file belongs in the VVV repository\n\n## What is VVV?\n\nVVV (Varying Vagrant Vagrants) is a **WordPress development environment** using Vagrant. It's infrastructure, not a project itself.\n\n**Key Concept:** VVV is like Docker Compose for WordPress development. The `www/` folder is like Docker volumes - it contains local development sites that are **unique to each developer** and **should never be shared** via the VVV repository.\n\n### Architecture\n- **`www/` folder** - Contains local development WordPress sites (gitignored, except specific defaults)\n- **`config/config.yml`** - User's site configuration (gitignored)\n- **`provision/`** - Provisioning scripts that set up the Vagrant environment\n- **`database/`** - MySQL data (gitignored)\n- **`log/`** - Log files (gitignored)\n\n## Working with WordPress Sites - The Correct Way\n\n### Creating a New Site\n\nWhen asked to create a new WordPress site:\n\n**✓ CORRECT approach:**\n1. Edit `/config/config.yml` (or create it from `config/default-config.yml` template)\n2. Add a site configuration:\n```yaml\nsites:\n  my-site-name:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - mysite.test\n    custom:\n      db_name: my_database\n      site_title: \"My Site\"\n      admin_user: admin\n      admin_password: password\n      install_plugins:\n        - query-monitor\n        - debug-bar\n      wpconfig_constants:\n        WP_DEBUG: true\n        WP_DEBUG_LOG: true\n```\n3. Instruct user to run: `vagrant up --provision`\n4. VVV will automatically create the site in `www/my-site-name/`\n\n**✗ INCORRECT approach:**\n- ❌ Creating directories directly in `www/my-site-name/`\n- ❌ Downloading and copying WordPress files manually\n- ❌ Modifying `.gitignore` to track the new site\n- ❌ Committing site files to VVV repository\n- ❌ Committing site files to site template repository\n\n### Modifying an Existing Site\n\nWhen asked to work on a WordPress site (themes, plugins, content):\n\n**✓ CORRECT approach:**\n1. Identify which site: \"Which site in `www/` are you working on?\"\n2. Navigate to that site's directory: `www/site-name/public_html/`\n3. Work within that site's directory structure:\n   - Themes: `www/site-name/public_html/wp-content/themes/`\n   - Plugins: `www/site-name/public_html/wp-content/plugins/`\n   - Uploads: `www/site-name/public_html/wp-content/uploads/`\n4. **DO NOT** offer to commit these changes to VVV repository\n5. If user wants version control, suggest initializing git within their theme/plugin folder\n\n**✗ INCORRECT approach:**\n- ❌ Committing theme/plugin changes to VVV repository\n- ❌ Creating pull requests with site-specific code\n- ❌ Modifying VVV core to accommodate site-specific needs\n\n### Site Configuration Options\n\nThe `custom:` section in `config/config.yml` supports extensive configuration:\n\n```yaml\ncustom:\n  # WordPress installation\n  wp_version: latest              # Or specific version like \"6.4.2\"\n  wp_type: single                 # Or \"multisite\"\n  locale: en_US                   # WordPress language\n\n  # Database\n  db_name: my_database\n  db_prefix: wp_\n\n  # Admin user\n  admin_user: admin\n  admin_password: password\n  admin_email: admin@local.test\n  site_title: \"My Site Title\"\n\n  # Plugins & themes\n  delete_default_plugins: true    # Remove Akismet and Hello Dolly\n  install_plugins:\n    - query-monitor\n    - debug-bar\n    - https://github.com/user/plugin-repo/archive/main.zip\n  install_themes:\n    - twentytwentyfour\n\n  # wp-config.php constants\n  wpconfig_constants:\n    WP_DEBUG: true\n    WP_DEBUG_LOG: true\n    WP_DEBUG_DISPLAY: false\n    SCRIPT_DEBUG: true\n```\n\n## What CAN Be Committed to VVV\n\nOnly these types of changes are appropriate for VVV pull requests:\n- 🐛 Bug fixes in VVV core provisioning scripts\n- 📚 Documentation improvements\n- ✨ New features for VVV itself (not sites)\n- ⚙️ Default configuration updates\n- 🔧 CI/CD improvements\n- 🛠️ Improvements to VVV utilities and tools\n\n## Files That ARE Tracked in www/\n\nOnly these specific files in `www/` are committed to VVV:\n- `www/default/` directory - VVV dashboard and utilities:\n  - `www/default/index.php` - VVV dashboard page\n  - `www/default/phpinfo/index.php` - PHP version info page\n  - `www/default/xdebuginfo/index.php` - Xdebug configuration page\n\n**Everything else in `www/` is gitignored** - this includes all user sites like:\n- `www/wordpress-one/`\n- `www/wordpress-two/`\n- `www/my-custom-site/`\n- etc.\n\n## Pre-Commit Checklist\n\n**Before creating commits or pull requests, ALWAYS:**\n\n1. ✅ Run `git status` - verify no files from `www/` appear (except the defaults listed above)\n2. ✅ Run `git diff` - review ALL changes to ensure nothing from user sites is included\n3. ✅ Check `git check-ignore www/my-site` - should confirm the path is ignored\n4. ✅ Verify `.gitignore` has not been modified to allow `www/` content\n5. ✅ Ask yourself: \"Is this change improving VVV itself, or is it site-specific work?\"\n6. ✅ If uncertain, **ask the user** before committing\n\n## Example Scenarios\n\n### Scenario 1: \"Create a new WordPress site called myproject\"\n\n**✓ CORRECT Response:**\n```\nI'll help you create a new site in VVV. You need to add it to your config/config.yml file:\n\nsites:\n  myproject:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - myproject.test\n\nAfter adding this, run: vagrant up --provision\n\nThis will create the site at www/myproject/ and set it up automatically.\n```\n\n**✗ INCORRECT Response:**\n- Creating directories in `www/myproject/`\n- Downloading WordPress with wget/curl\n- Modifying `.gitignore` to track the new site\n- Offering to commit the site to VVV\n\n### Scenario 2: \"Fix a bug in my site's theme\"\n\n**✓ CORRECT Response:**\n```\nI'll help fix the bug in your theme. Which site in www/ are you working on?\n\n[After user responds: www/myproject/]\n\nLet me look at your theme files in www/myproject/public_html/wp-content/themes/.\n\n[Make the fix]\n\nNote: These theme changes are specific to your site and shouldn't be committed to the VVV repository. If you want to version control your theme, consider initializing a git repository within your theme folder.\n```\n\n**✗ INCORRECT Response:**\n- Offering to commit theme changes to VVV\n- Creating a pull request with site-specific code\n- Modifying VVV core to fix a site-specific issue\n\n### Scenario 3: \"Improve VVV's provisioning for PHP 8.3\"\n\n**✓ CORRECT Response:**\n```\nI'll help improve VVV's PHP 8.3 provisioning. Let me review the provisioning scripts in the /provision/ directory.\n\n[Review and make improvements to VVV core scripts]\n\nThese changes improve VVV itself and are appropriate for a pull request to the VVV repository.\n```\n\nThis is a legitimate VVV improvement and CAN be committed.\n\n### Scenario 4: \"Install the Yoast SEO plugin on my site\"\n\n**✓ CORRECT Response:**\n```\nI'll help you install Yoast SEO. Add this to the site's configuration in config/config.yml:\n\nsites:\n  your-site:\n    custom:\n      install_plugins:\n        - wordpress-seo\n\nThen run: vagrant up --provision\n\nAlternatively, you can SSH into the VM and use WP-CLI:\nvagrant ssh -c \"wp plugin install wordpress-seo --activate --path=/srv/www/your-site/public_html\"\n```\n\n**✗ INCORRECT Response:**\n- Downloading the plugin ZIP file to `www/site/public_html/wp-content/plugins/`\n- Offering to commit the plugin to VVV repository\n\n## Site Development Workflow Summary\n\nWhen asked to work on a WordPress site in VVV:\n\n1. **Identify the site** - Ask which site in `www/` if unclear\n2. **Navigate to site directory** - e.g., `www/my-site/public_html/`\n3. **Work ONLY within that site** - Themes, plugins, content, etc.\n4. **NEVER commit site changes to VVV** - Site work is separate from VVV work\n5. **Separate repositories** - If the site has its own git repo, that's completely separate from VVV's git repo\n\n## Advanced: Site Provisioning\n\nEach site can have custom provisioning scripts:\n\n**Site structure:**\n```\nwww/my-site/\n├── provision/\n│   ├── vvv-init.sh          # Custom provisioning script\n│   └── vvv-nginx.conf       # Custom Nginx configuration\n├── public_html/             # WordPress root\n├── log/                     # Site-specific logs\n└── wp-cli.yml              # WP-CLI configuration\n```\n\n**Helper functions available in vvv-init.sh:**\n- `get_config_value 'key' 'default'` - Get custom config values\n- `get_primary_host` - Get the first domain\n- `noroot` - Run commands without root\n- `wp` - WP-CLI commands\n\n## VVV Extensions\n\nSystem-level tools are installed via extensions in `config/config.yml`:\n\n```yaml\nextensions:\n  core:\n    - tls-ca              # HTTPS certificates\n    - phpmyadmin          # Database management\n    - memcached-admin     # Cache management\n    - php81               # Additional PHP versions\n    - nvm                 # Node Version Manager\n```\n\n## When You're Unsure\n\n**If you're uncertain about ANY of these:**\n- Whether a file should be committed\n- Whether a change affects VVV core or a site\n- Whether to modify `.gitignore`\n- Whether to modify provisioning scripts\n\n**STOP and ask the user for clarification.** It's better to ask than to make an inappropriate commit.\n\n## Summary of Responsibilities\n\n| Your Responsibility | NOT Your Responsibility |\n|-------------------|------------------------|\n| Help edit `config/config.yml` | Create files in `www/` directly |\n| Suggest proper VVV configuration | Commit site-specific code to VVV |\n| Fix bugs in VVV core scripts | Modify `.gitignore` for sites |\n| Improve VVV documentation | Force commit gitignored files |\n| Guide users on VVV usage | Make changes without understanding impact |\n\n## Questions to Ask Yourself\n\nBefore making any changes:\n1. ❓ Is this improving VVV infrastructure, or is it site-specific work?\n2. ❓ Would this change benefit all VVV users, or just this specific site?\n3. ❓ Am I modifying VVV core files when I should be editing user configuration?\n4. ❓ Will this change appear in `git status`? Should it?\n5. ❓ Have I checked `git check-ignore` for any new files?\n\n---\n\n**Remember:** VVV is infrastructure. Sites are content. Infrastructure changes go to VVV repository. Site changes stay local.\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# VVV Development Environment Instructions for LLM Agents\n\nThis document provides critical guidance for AI coding assistants working with Varying Vagrant Vagrants (VVV). **Read and follow these instructions carefully to avoid inappropriate changes.**\n\n## 🚨 Critical Boundaries - NEVER Cross These Lines\n\n### DO NOT Modify These Core Files\n- **`.gitignore`** - NEVER modify to allow committing `www/` content or other gitignored paths\n- **`Vagrantfile`** - Core Vagrant configuration, do not modify without explicit permission\n- **`/provision/`** scripts - Core provisioning logic (only modify for VVV improvements, not site work)\n- **Git-tracked files** - Assume files tracked by git are VVV core files unless explicitly told otherwise\n\n### Git Safety Rules - Follow These Strictly\n1. **NEVER modify `.gitignore`** to allow committing `www/` content\n2. **NEVER force commit** using `--no-verify`, `-f`, or similar flags\n3. **ALWAYS check `git check-ignore <path>`** before committing files to verify they should be tracked\n4. **If files in `www/` appear in git status** - they should almost certainly NOT be committed (except the defaults listed below)\n5. **Ask before committing** if you're uncertain whether a file belongs in the VVV repository\n\n## What is VVV?\n\nVVV (Varying Vagrant Vagrants) is a **WordPress development environment** using Vagrant. It's infrastructure, not a project itself.\n\n**Key Concept:** VVV is like Docker Compose for WordPress development. The `www/` folder is like Docker volumes - it contains local development sites that are **unique to each developer** and **should never be shared** via the VVV repository.\n\n### Architecture\n- **`www/` folder** - Contains local development WordPress sites (gitignored, except specific defaults)\n- **`config/config.yml`** - User's site configuration (gitignored)\n- **`provision/`** - Provisioning scripts that set up the Vagrant environment\n- **`database/`** - MySQL data (gitignored)\n- **`log/`** - Log files (gitignored)\n\n## Working with WordPress Sites - The Correct Way\n\n### Creating a New Site\n\nWhen asked to create a new WordPress site:\n\n**✓ CORRECT approach:**\n1. Edit `/config/config.yml` (or create it from `config/default-config.yml` template)\n2. Add a site configuration:\n```yaml\nsites:\n  my-site-name:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - mysite.test\n    custom:\n      db_name: my_database\n      site_title: \"My Site\"\n      admin_user: admin\n      admin_password: password\n      install_plugins:\n        - query-monitor\n        - debug-bar\n      wpconfig_constants:\n        WP_DEBUG: true\n        WP_DEBUG_LOG: true\n```\n3. Instruct user to run: `vagrant up --provision`\n4. VVV will automatically create the site in `www/my-site-name/`\n\n**✗ INCORRECT approach:**\n- ❌ Creating directories directly in `www/my-site-name/`\n- ❌ Downloading and copying WordPress files manually\n- ❌ Modifying `.gitignore` to track the new site\n- ❌ Committing site files to VVV repository\n- ❌ Committing site files to site template repository\n\n### Modifying an Existing Site\n\nWhen asked to work on a WordPress site (themes, plugins, content):\n\n**✓ CORRECT approach:**\n1. Identify which site: \"Which site in `www/` are you working on?\"\n2. Navigate to that site's directory: `www/site-name/public_html/`\n3. Work within that site's directory structure:\n   - Themes: `www/site-name/public_html/wp-content/themes/`\n   - Plugins: `www/site-name/public_html/wp-content/plugins/`\n   - Uploads: `www/site-name/public_html/wp-content/uploads/`\n4. **DO NOT** offer to commit these changes to VVV repository\n5. If user wants version control, suggest initializing git within their theme/plugin folder\n\n**✗ INCORRECT approach:**\n- ❌ Committing theme/plugin changes to VVV repository\n- ❌ Creating pull requests with site-specific code\n- ❌ Modifying VVV core to accommodate site-specific needs\n\n### Site Configuration Options\n\nThe `custom:` section in `config/config.yml` supports extensive configuration:\n\n```yaml\ncustom:\n  # WordPress installation\n  wp_version: latest              # Or specific version like \"6.4.2\"\n  wp_type: single                 # Or \"multisite\"\n  locale: en_US                   # WordPress language\n\n  # Database\n  db_name: my_database\n  db_prefix: wp_\n\n  # Admin user\n  admin_user: admin\n  admin_password: password\n  admin_email: admin@local.test\n  site_title: \"My Site Title\"\n\n  # Plugins & themes\n  delete_default_plugins: true    # Remove Akismet and Hello Dolly\n  install_plugins:\n    - query-monitor\n    - debug-bar\n    - https://github.com/user/plugin-repo/archive/main.zip\n  install_themes:\n    - twentytwentyfour\n\n  # wp-config.php constants\n  wpconfig_constants:\n    WP_DEBUG: true\n    WP_DEBUG_LOG: true\n    WP_DEBUG_DISPLAY: false\n    SCRIPT_DEBUG: true\n```\n\n## What CAN Be Committed to VVV\n\nOnly these types of changes are appropriate for VVV pull requests:\n- 🐛 Bug fixes in VVV core provisioning scripts\n- 📚 Documentation improvements\n- ✨ New features for VVV itself (not sites)\n- ⚙️ Default configuration updates\n- 🔧 CI/CD improvements\n- 🛠️ Improvements to VVV utilities and tools\n\n## Files That ARE Tracked in www/\n\nOnly these specific files in `www/` are committed to VVV:\n- `www/default/` directory - VVV dashboard and utilities:\n  - `www/default/index.php` - VVV dashboard page\n  - `www/default/phpinfo/index.php` - PHP version info page\n  - `www/default/xdebuginfo/index.php` - Xdebug configuration page\n\n**Everything else in `www/` is gitignored** - this includes all user sites like:\n- `www/wordpress-one/`\n- `www/wordpress-two/`\n- `www/my-custom-site/`\n- etc.\n\n## Pre-Commit Checklist\n\n**Before creating commits or pull requests, ALWAYS:**\n\n1. ✅ Run `git status` - verify no files from `www/` appear (except the defaults listed above)\n2. ✅ Run `git diff` - review ALL changes to ensure nothing from user sites is included\n3. ✅ Check `git check-ignore www/my-site` - should confirm the path is ignored\n4. ✅ Verify `.gitignore` has not been modified to allow `www/` content\n5. ✅ Ask yourself: \"Is this change improving VVV itself, or is it site-specific work?\"\n6. ✅ If uncertain, **ask the user** before committing\n\n## Example Scenarios\n\n### Scenario 1: \"Create a new WordPress site called myproject\"\n\n**✓ CORRECT Response:**\n```\nI'll help you create a new site in VVV. You need to add it to your config/config.yml file:\n\nsites:\n  myproject:\n    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.git\n    php: 8.2\n    hosts:\n      - myproject.test\n\nAfter adding this, run: vagrant up --provision\n\nThis will create the site at www/myproject/ and set it up automatically.\n```\n\n**✗ INCORRECT Response:**\n- Creating directories in `www/myproject/`\n- Downloading WordPress with wget/curl\n- Modifying `.gitignore` to track the new site\n- Offering to commit the site to VVV\n\n### Scenario 2: \"Fix a bug in my site's theme\"\n\n**✓ CORRECT Response:**\n```\nI'll help fix the bug in your theme. Which site in www/ are you working on?\n\n[After user responds: www/myproject/]\n\nLet me look at your theme files in www/myproject/public_html/wp-content/themes/.\n\n[Make the fix]\n\nNote: These theme changes are specific to your site and shouldn't be committed to the VVV repository. If you want to version control your theme, consider initializing a git repository within your theme folder.\n```\n\n**✗ INCORRECT Response:**\n- Offering to commit theme changes to VVV\n- Creating a pull request with site-specific code\n- Modifying VVV core to fix a site-specific issue\n\n### Scenario 3: \"Improve VVV's provisioning for PHP 8.3\"\n\n**✓ CORRECT Response:**\n```\nI'll help improve VVV's PHP 8.3 provisioning. Let me review the provisioning scripts in the /provision/ directory.\n\n[Review and make improvements to VVV core scripts]\n\nThese changes improve VVV itself and are appropriate for a pull request to the VVV repository.\n```\n\nThis is a legitimate VVV improvement and CAN be committed.\n\n### Scenario 4: \"Install the Yoast SEO plugin on my site\"\n\n**✓ CORRECT Response:**\n```\nI'll help you install Yoast SEO. Add this to the site's configuration in config/config.yml:\n\nsites:\n  your-site:\n    custom:\n      install_plugins:\n        - wordpress-seo\n\nThen run: vagrant up --provision\n\nAlternatively, you can SSH into the VM and use WP-CLI:\nvagrant ssh -c \"wp plugin install wordpress-seo --activate --path=/srv/www/your-site/public_html\"\n```\n\n**✗ INCORRECT Response:**\n- Downloading the plugin ZIP file to `www/site/public_html/wp-content/plugins/`\n- Offering to commit the plugin to VVV repository\n\n## Site Development Workflow Summary\n\nWhen asked to work on a WordPress site in VVV:\n\n1. **Identify the site** - Ask which site in `www/` if unclear\n2. **Navigate to site directory** - e.g., `www/my-site/public_html/`\n3. **Work ONLY within that site** - Themes, plugins, content, etc.\n4. **NEVER commit site changes to VVV** - Site work is separate from VVV work\n5. **Separate repositories** - If the site has its own git repo, that's completely separate from VVV's git repo\n\n## Advanced: Site Provisioning\n\nEach site can have custom provisioning scripts:\n\n**Site structure:**\n```\nwww/my-site/\n├── provision/\n│   ├── vvv-init.sh          # Custom provisioning script\n│   └── vvv-nginx.conf       # Custom Nginx configuration\n├── public_html/             # WordPress root\n├── log/                     # Site-specific logs\n└── wp-cli.yml              # WP-CLI configuration\n```\n\n**Helper functions available in vvv-init.sh:**\n- `get_config_value 'key' 'default'` - Get custom config values\n- `get_primary_host` - Get the first domain\n- `noroot` - Run commands without root\n- `wp` - WP-CLI commands\n\n## VVV Extensions\n\nSystem-level tools are installed via extensions in `config/config.yml`:\n\n```yaml\nextensions:\n  core:\n    - tls-ca              # HTTPS certificates\n    - phpmyadmin          # Database management\n    - memcached-admin     # Cache management\n    - php81               # Additional PHP versions\n    - nvm                 # Node Version Manager\n```\n\n## When You're Unsure\n\n**If you're uncertain about ANY of these:**\n- Whether a file should be committed\n- Whether a change affects VVV core or a site\n- Whether to modify `.gitignore`\n- Whether to modify provisioning scripts\n\n**STOP and ask the user for clarification.** It's better to ask than to make an inappropriate commit.\n\n## Summary of Responsibilities\n\n| Your Responsibility | NOT Your Responsibility |\n|-------------------|------------------------|\n| Help edit `config/config.yml` | Create files in `www/` directly |\n| Suggest proper VVV configuration | Commit site-specific code to VVV |\n| Fix bugs in VVV core scripts | Modify `.gitignore` for sites |\n| Improve VVV documentation | Force commit gitignored files |\n| Guide users on VVV usage | Make changes without understanding impact |\n\n## Questions to Ask Yourself\n\nBefore making any changes:\n1. ❓ Is this improving VVV infrastructure, or is it site-specific work?\n2. ❓ Would this change benefit all VVV users, or just this specific site?\n3. ❓ Am I modifying VVV core files when I should be editing user configuration?\n4. ❓ Will this change appear in `git status`? Should it?\n5. ❓ Have I checked `git check-ignore` for any new files?\n\n---\n\n**Remember:** VVV is infrastructure. Sites are content. Infrastructure changes go to VVV repository. Site changes stay local.\n","category":"root","tokens":2836}]}