|
| 1 | +# AGENT.md |
| 2 | + |
| 3 | +Instructions pour les agents IA travaillant sur ce projet. |
| 4 | + |
| 5 | +## Règle fondamentale : jamais de PHP/Node/Composer sur la machine hôte |
| 6 | + |
| 7 | +Tout passe par le container `builder`, via Castor : |
| 8 | + |
| 9 | +```bash |
| 10 | +castor builder -- bin/console cache:clear # commande ponctuelle |
| 11 | +castor builder # shell interactif |
| 12 | +``` |
| 13 | + |
| 14 | +Prérequis hôte uniquement : Docker, Bash, Castor. |
| 15 | + |
| 16 | +## Commandes essentielles |
| 17 | + |
| 18 | +```bash |
| 19 | +castor start # build + install + up + migrate |
| 20 | +castor stop # arrêter la stack |
| 21 | +castor logs [--service=service] # logs (frontend, postgres, ...) |
| 22 | +castor app:install # composer install + yarn/npm ci + importmap + qa:install |
| 23 | +castor app:db:migrate # migrations Doctrine (alias: castor migrate) |
| 24 | +castor app:db:fixtures # fixtures (alias: castor fixtures) |
| 25 | +castor postgres # psql interactif (user/db = app/app) |
| 26 | +``` |
| 27 | + |
| 28 | +Docker / workers : |
| 29 | + |
| 30 | +```bash |
| 31 | +castor docker:build [--service=service] |
| 32 | +castor docker:up [--service=service] |
| 33 | +castor start-workers # démarre les workers (profil worker) |
| 34 | +castor stop-workers |
| 35 | +``` |
| 36 | + |
| 37 | +## Contextes Castor |
| 38 | + |
| 39 | +Le contexte modifie l'environnement d'exécution des tâches (`APP_ENV`, |
| 40 | +fichiers compose, etc.) : |
| 41 | + |
| 42 | +```bash |
| 43 | +castor --context=test qa:phpunit # APP_ENV=test, pour les tests |
| 44 | +castor --context=ci ... # comme test, adapté CI |
| 45 | +``` |
| 46 | + |
| 47 | +Lancer toujours les tests et tout ce qui touche à la base de données avec |
| 48 | +`--context=test`. Sans option, c'est le contexte `default` qui s'applique. |
| 49 | + |
| 50 | +## Stack |
| 51 | + |
| 52 | +- Symfony dans `application/` (docroot = `application/public`) |
| 53 | +- PostgreSQL 16 : user/pass/db = `app`/`app`, DATABASE_URL déjà configurée |
| 54 | +- nginx + php-fpm (service `frontend`), router Traefik, HTTPS sur `<root_domain>` (voir `castor.php`) |
| 55 | +- Node/yarn uniquement dans le container `builder` |
| 56 | + |
| 57 | +## Qualité — avant de considérer une tâche terminée |
| 58 | + |
| 59 | +Les outils tournent dans le builder. |
| 60 | + |
| 61 | +```bash |
| 62 | +castor qa # tout : cs + phpstan + twig-cs + phpunit |
| 63 | +castor qa:cs [--dry-run] # PHP-CS-Fixer (.php-cs-fixer.php) |
| 64 | +castor qa:phpstan [-b] # PHPStan niveau 8 (phpstan.neon) |
| 65 | +castor qa:twig-cs # Twig-CS-Fixer |
| 66 | +castor qa:phpunit # PHPUnit (si présent dans application/) |
| 67 | +``` |
| 68 | + |
| 69 | +Après toute modification de code PHP/Twig : `castor qa:cs --dry-run`, |
| 70 | +`castor qa:phpstan`, puis `castor qa:phpunit`. |
| 71 | + |
| 72 | +## Conventions |
| 73 | + |
| 74 | +1. **Ne pas invoquer `docker compose` à la main** : utiliser les fonctions |
| 75 | + `docker_compose()` / `docker_compose_run()` de `.castor/docker.php` |
| 76 | + pour écrire de nouvelles tâches. |
| 77 | +2. **Ne pas hardcoder de ports ni de noms de projet** : le support git worktree |
| 78 | + isole automatiquement projet/volumes/ports. Utiliser `variable('project_name')` etc. |
| 79 | +3. Nouvelle tâche récurrente ? Tâche Castor (`castor.php` ou `.castor/*.php`), |
| 80 | + pas script shell. |
| 81 | +4. Les dépendances des outils QA vivent dans `tools/<outil>/composer.json` |
| 82 | + (pas dans `application/composer.json`). |
0 commit comments