# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## What this is AeonShopwareTools is a public Shopware 6 plugin (`shopware-platform-plugin`, MIT) that bundles scripting and developer tooling. It supports **Shopware 6.6 and 6.7 from one codebase** (`shopware/core ~6.6.0 || ~6.7.0`, PHP `^8.2`): only use APIs that exist in both, and test against both. - Plugin bootstrap class: `src/AeonShopwareTools.php` (wired via `composer.json` → `extra.shopware-plugin-class`). - Services, commands and scheduled tasks are registered explicitly in `src/Resources/config/services.yaml` (create it with the first service; no autowiring), each with its tag (`console.command`, `shopware.scheduled.task`, ...). ## Running the plugin There is no standalone runtime. `docker-compose.yml` mounts the repo into a `dockware/shopware` container at `custom/plugins/AeonShopwareTools`; install with `bin/console plugin:refresh` and `bin/console plugin:install --activate AeonShopwareTools` inside the container. ## Tests PHPUnit through Shopware's `TestBootstrapper` (`tests/TestBootstrap.php`), so tests need a real Shopware installation and database. ```bash vendor/bin/phpunit -c custom/plugins/AeonShopwareTools/phpunit.xml ``` ## CI / release pipeline Same Gitea pipeline as AeonDumpManager, plugin-agnostic (name/version come from `composer.json`): - `workflows/plugin-checks.yml` (PRs into `main`): `version-changelog` (version greater than the latest release, matching `## [x.y.z]` heading in CHANGELOG.md), `package` (`shopware-cli` package + validate, `scripts/ci/assert-built-assets.sh`) and `phpunit`, a matrix over the latest 6.6 and 6.7. Keep the matrix in sync with `require.shopware/core`. - `workflows/release.yml` (push to `main`): Gitea Release with the zip, Composer registry publish. Uses `RELEASE_TOKEN`. - Required checks on `main` are set with `scripts/protect-main.sh` (`tea api`).