@the-bearded-bear/claude-craft 8.22.0 → 8.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dev/i18n/base/Angular/rules/00-project-context.md.template +1 -1
- package/Dev/i18n/base/CSharp/rules/06-tooling.md +0 -2
- package/Dev/i18n/base/CSharp/rules/11-security-csharp.md +184 -160
- package/Dev/i18n/base/Common/commands/aliases.md +3 -0
- package/Dev/i18n/base/Common/commands/audit-claude-alignment.md +201 -0
- package/Dev/i18n/base/Common/commands/init.md +1 -1
- package/Dev/i18n/base/Common/commands/search.md +2 -1
- package/Dev/i18n/base/Common/skills/dynamic-workflows/SKILL.md +1 -1
- package/Dev/i18n/base/Common/skills/ecosystem-tools/SKILL.md +2 -1
- package/Dev/i18n/base/Laravel/rules/06-tooling.md +0 -2
- package/Dev/i18n/base/PHP/checklists/new-feature.md +1 -1
- package/Dev/i18n/base/PHP/commands/check-code-quality.md +3 -3
- package/Dev/i18n/base/Vercel/checklists/pre-commit.md +1 -1
- package/Dev/i18n/base/Vercel/commands/check-security.md +12 -12
- package/Dev/i18n/base/Vercel/rules/00-project-context.md.template +1 -1
- package/Dev/i18n/base/Vercel/rules/02-architecture-vercel.md +2 -2
- package/Dev/i18n/base/Vercel/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/base/Vercel/rules/06-tooling.md +12 -0
- package/Dev/i18n/base/Vercel/rules/07-testing-vercel.md +1 -1
- package/Dev/i18n/base/Vercel/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/base/Vercel/rules/11-security-vercel.md +1 -1
- package/Dev/i18n/base/Vercel/templates/function-handler.template.ts +1 -1
- package/Dev/i18n/base/Vite/checklists/new-feature.md +2 -2
- package/Dev/i18n/base/Vite/checklists/pre-commit.md +2 -2
- package/Dev/i18n/base/Vite/commands/check-architecture.md +5 -5
- package/Dev/i18n/base/Vite/commands/check-library-build.md +3 -3
- package/Dev/i18n/base/Vite/commands/scaffold-project.md +2 -2
- package/Dev/i18n/base/Vite/rules/02-architecture-vite.md +5 -5
- package/Dev/i18n/base/Vite/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/base/Vite/rules/06-tooling.md +2 -2
- package/Dev/i18n/base/Vite/rules/07-testing-vite.md +1 -1
- package/Dev/i18n/base/Vite/rules/11-security-vite.md +4 -4
- package/Dev/i18n/base/Vite/templates/library-entry.template.ts +2 -2
- package/Dev/i18n/base/Vite/templates/vite.config.template.ts +2 -2
- package/Dev/i18n/base/VueJS/rules/06-tooling.md +3 -2
- package/Dev/i18n/de/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/de/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/de/Common/agents/ralph-conductor.md +12 -1
- package/Dev/i18n/de/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/de/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/de/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/de/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/de/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/de/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/de/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/de/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/de/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/de/Common/rules/11-security.md +76 -73
- package/Dev/i18n/de/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/de/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/de/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/de/Flutter/rules/06-tooling.md +30 -24
- package/Dev/i18n/de/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/de/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/de/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/de/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/de/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/de/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/de/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/de/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/de/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Paperclip/README.md +1 -1
- package/Dev/i18n/de/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/de/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/de/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/de/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/de/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/de/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/de/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/de/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/de/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/de/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/de/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/de/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/de/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/de/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/de/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/de/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/de/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/de/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/de/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/de/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/de/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/de/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/de/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/de/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/de/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/de/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/de/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/de/Team/commands/delivery.md +1 -1
- package/Dev/i18n/de/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/de/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/de/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/en/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/en/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/en/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/en/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/en/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/en/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/en/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/en/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/en/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/en/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/en/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/en/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/en/Common/rules/11-security.md +76 -73
- package/Dev/i18n/en/Common/rules/12-context-management.md +31 -21
- package/Dev/i18n/en/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/en/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/en/Flutter/rules/06-tooling.md +29 -23
- package/Dev/i18n/en/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/en/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/en/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/en/PHP/CLAUDE.md.template +1 -1
- package/Dev/i18n/en/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/en/PHP/commands/check-compliance.md +1 -1
- package/Dev/i18n/en/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/en/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/en/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/en/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Paperclip/README.md +1 -1
- package/Dev/i18n/en/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/en/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/en/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/en/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/en/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/en/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/en/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Python/rules/11-security-python.md +11 -11
- package/Dev/i18n/en/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/en/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/en/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/en/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/en/ReactNative/rules/02-architecture.md +1 -1
- package/Dev/i18n/en/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/en/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/en/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/en/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/en/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/en/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/en/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/en/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/en/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/en/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/en/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/en/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/en/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/en/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/en/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/en/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/en/Team/commands/delivery.md +1 -1
- package/Dev/i18n/en/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/en/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/en/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/en/Workflow/commands/review.md +0 -0
- package/Dev/i18n/en/Workflow/commands/start.md +0 -0
- package/Dev/i18n/es/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/es/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/es/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/es/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/es/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/es/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/es/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/es/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/es/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/es/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/es/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/es/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/es/Common/rules/11-security.md +76 -73
- package/Dev/i18n/es/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/es/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/es/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/es/Flutter/rules/06-tooling.md +31 -25
- package/Dev/i18n/es/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/es/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/es/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/es/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/es/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/es/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/es/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/es/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/es/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Paperclip/README.md +1 -1
- package/Dev/i18n/es/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/es/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/es/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/es/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/es/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/es/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/es/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/es/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/es/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/es/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/es/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/es/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/es/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/es/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/es/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/es/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/es/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/es/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/es/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/es/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/es/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/es/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/es/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/es/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/es/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/es/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/es/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/es/Team/commands/delivery.md +1 -1
- package/Dev/i18n/es/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Vercel/agents/vercel-reviewer.md +7 -7
- package/Dev/i18n/es/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/es/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/fr/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/fr/Common/agents/ralph-conductor.md +12 -1
- package/Dev/i18n/fr/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/fr/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/fr/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/fr/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/fr/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/fr/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/fr/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/fr/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/fr/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/fr/Common/rules/11-security.md +76 -73
- package/Dev/i18n/fr/Common/rules/12-context-management.md +30 -20
- package/Dev/i18n/fr/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/fr/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/fr/Flutter/rules/06-tooling.md +10 -4
- package/Dev/i18n/fr/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/fr/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/fr/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/fr/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/fr/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/fr/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Paperclip/README.md +1 -1
- package/Dev/i18n/fr/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/fr/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/fr/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/fr/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/fr/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/fr/Python/rules/06-tooling.md +1 -3
- package/Dev/i18n/fr/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/fr/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/fr/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/fr/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/fr/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/fr/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/fr/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/fr/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/fr/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/fr/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/fr/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/fr/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/fr/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/fr/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/fr/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/fr/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/fr/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/fr/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/fr/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/fr/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/fr/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/fr/Team/commands/delivery.md +1 -1
- package/Dev/i18n/fr/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/fr/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/fr/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/pt/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/pt/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/pt/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/pt/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/pt/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/pt/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/pt/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/pt/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/pt/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/pt/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/pt/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/pt/Common/rules/11-security.md +76 -73
- package/Dev/i18n/pt/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/pt/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/pt/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/pt/Flutter/rules/06-tooling.md +12 -6
- package/Dev/i18n/pt/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/pt/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/pt/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/pt/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/pt/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/pt/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Paperclip/README.md +1 -1
- package/Dev/i18n/pt/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/pt/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/pt/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/pt/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/pt/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/pt/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/pt/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/pt/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/pt/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/pt/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/pt/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/pt/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/pt/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/pt/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/pt/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/pt/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/pt/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/pt/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/pt/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/pt/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/pt/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/pt/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/pt/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/pt/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/pt/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/pt/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/pt/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/pt/Team/commands/delivery.md +1 -1
- package/Dev/i18n/pt/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/pt/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/pt/Vite/commands/check-compliance.md +2 -2
- package/Dev/scripts/install-paperclip-rules.sh +5 -5
- package/Dev/scripts/install-vite-rules.sh +4 -4
- package/Infra/i18n/de/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/de/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/de/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/de/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/de/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/de/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/de/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/de/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/de/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/de/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/de/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/de/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/de/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/en/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/en/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/en/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/en/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/en/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/en/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/en/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/en/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/en/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/en/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/en/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/en/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/en/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/es/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/es/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/es/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/es/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/es/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/es/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/es/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/es/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/es/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/es/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/es/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/es/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/es/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/fr/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/fr/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/fr/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/fr/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/fr/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/fr/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/fr/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/fr/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/fr/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/fr/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/fr/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/fr/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/fr/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/pt/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/pt/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/pt/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/pt/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/pt/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/pt/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/pt/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/pt/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/pt/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/pt/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/pt/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/pt/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/pt/PgBouncer/commands/deploy-setup.md +1 -1
- package/README.md +30 -22
- package/Tools/Ralph/.ralph/hooks/pre-tool-context.sh +2 -2
- package/Tools/StatusLine/README.md +1 -1
- package/bundles/cursor/.cursorrules +32 -32
- package/bundles/windsurf/.windsurfrules +32 -32
- package/cli/lib/doctor.js +15 -15
- package/cli/lib/tech-registry.js +10 -10
- package/package.json +2 -1
|
@@ -88,7 +88,7 @@ private array $participants;
|
|
|
88
88
|
|
|
89
89
|
## 3. Coding Standards (PHP CS Fixer)
|
|
90
90
|
|
|
91
|
-
### ✅ Code formaté selon
|
|
91
|
+
### ✅ Code formaté selon PER-CS 3.0
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
94
|
make cs-fix
|
|
@@ -97,7 +97,7 @@ make cs-fix
|
|
|
97
97
|
|
|
98
98
|
**Critère de succès:**
|
|
99
99
|
- ✅ Code formaté automatiquement
|
|
100
|
-
- ✅
|
|
100
|
+
- ✅ PER-CS 3.0 respecté
|
|
101
101
|
- ✅ Pas de trailing whitespace
|
|
102
102
|
- ✅ Indentation cohérente (4 espaces)
|
|
103
103
|
|
|
@@ -135,7 +135,7 @@ make hadolint
|
|
|
135
135
|
FROM php:fpm
|
|
136
136
|
|
|
137
137
|
# ✅ Version explicite
|
|
138
|
-
FROM php:8.
|
|
138
|
+
FROM php:8.5-fpm-alpine
|
|
139
139
|
|
|
140
140
|
# ❌ apt-get sans cleanup
|
|
141
141
|
RUN apt-get install -y curl
|
|
@@ -514,7 +514,7 @@ make pre-commit && git commit
|
|
|
514
514
|
### ✅ Toujours commit
|
|
515
515
|
|
|
516
516
|
- ✅ Tests qui passent
|
|
517
|
-
- ✅ Code formaté (
|
|
517
|
+
- ✅ Code formaté (PER-CS 3.0)
|
|
518
518
|
- ✅ PHPStan niveau 8 OK
|
|
519
519
|
- ✅ Documentation à jour
|
|
520
520
|
- ✅ Message de commit clair
|
|
@@ -897,7 +897,7 @@ Avant de merger le refactoring:
|
|
|
897
897
|
- [ ] Code plus simple (KISS)
|
|
898
898
|
- [ ] SOLID respecté
|
|
899
899
|
- [ ] PHPStan niveau 8 OK
|
|
900
|
-
- [ ] Code formaté (
|
|
900
|
+
- [ ] Code formaté (PER-CS 3.0)
|
|
901
901
|
- [ ] Commits atomiques (1 changement = 1 commit)
|
|
902
902
|
- [ ] Message de commit clair
|
|
903
903
|
- [ ] Documentation si refactoring majeur (ADR)
|
|
@@ -97,7 +97,7 @@ Exécute Deptrac pour vérifier les dépendances entre couches :
|
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
99
|
# Vérifier si deptrac.yaml existe
|
|
100
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
100
|
+
docker run --rm -v $(pwd):/app php:8.5-cli test -f /app/deptrac.yaml && echo "✅ deptrac.yaml trouvé" || echo "❌ deptrac.yaml manquant"
|
|
101
101
|
|
|
102
102
|
# Exécuter Deptrac
|
|
103
103
|
docker run --rm -v $(pwd):/app qossmic/deptrac analyse
|
|
@@ -221,16 +221,16 @@ Outils :
|
|
|
221
221
|
|
|
222
222
|
```bash
|
|
223
223
|
# Analyser la structure du projet
|
|
224
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
224
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/src -type d -maxdepth 2
|
|
225
225
|
|
|
226
226
|
# Vérifier les dépendances avec Deptrac
|
|
227
227
|
docker run --rm -v $(pwd):/app qossmic/deptrac analyse --no-progress
|
|
228
228
|
|
|
229
229
|
# Lister les classes par namespace
|
|
230
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
230
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/src -name "*.php" -exec grep -l "namespace" {} \;
|
|
231
231
|
|
|
232
232
|
# Vérifier la présence d'annotations Doctrine dans Domain
|
|
233
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
233
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "@ORM" /app/src/Domain/ || echo "✅ Pas d'annotations ORM dans Domain"
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
## IMPORTANT
|
|
@@ -31,10 +31,10 @@ Exécute PHP_CodeSniffer pour vérifier le respect de PSR-12 :
|
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
33
|
# Vérifier si phpcs est installé
|
|
34
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
34
|
+
docker run --rm -v $(pwd):/app php:8.5-cli test -f /app/vendor/bin/phpcs && echo "✅ phpcs trouvé" || echo "❌ phpcs manquant"
|
|
35
35
|
|
|
36
36
|
# Exécuter phpcs
|
|
37
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
37
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpcs --standard=PSR12 src/ --report=summary
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
#### Standards PSR-12 (5 points)
|
|
@@ -58,7 +58,7 @@ Exécute PHPStan au niveau 10 :
|
|
|
58
58
|
|
|
59
59
|
```bash
|
|
60
60
|
# Vérifier si PHPStan est installé
|
|
61
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
61
|
+
docker run --rm -v $(pwd):/app php:8.5-cli test -f /app/vendor/bin/phpstan && echo "✅ PHPStan trouvé" || echo "❌ PHPStan manquant"
|
|
62
62
|
|
|
63
63
|
# Exécuter PHPStan niveau 10
|
|
64
64
|
docker run --rm -v $(pwd):/app phpstan/phpstan analyse src --level=10 --error-format=table
|
|
@@ -100,10 +100,10 @@ Vérifie l'utilisation stricte des types :
|
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
102
|
# Vérifier declare(strict_types=1)
|
|
103
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
103
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "declare(strict_types=1)" /app/src --include="*.php" | wc -l
|
|
104
104
|
|
|
105
105
|
# Compter le nombre de fichiers PHP
|
|
106
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
106
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/src -name "*.php" | wc -l
|
|
107
107
|
|
|
108
108
|
# Les deux nombres doivent être identiques
|
|
109
109
|
```
|
|
@@ -113,13 +113,13 @@ docker run --rm -v $(pwd):/app php:8.2-cli find /app/src -name "*.php" | wc -l
|
|
|
113
113
|
- [ ] `declare(strict_types=1)` dans 100% des fichiers PHP
|
|
114
114
|
- [ ] Type hints sur tous les paramètres de méthodes publiques
|
|
115
115
|
- [ ] Type hints sur tous les retours de méthodes publiques
|
|
116
|
-
- [ ] Type hints sur toutes les propriétés de classe
|
|
117
|
-
- [ ] Utilisation des union types
|
|
116
|
+
- [ ] Type hints sur toutes les propriétés de classe
|
|
117
|
+
- [ ] Utilisation des union types au lieu de mixed
|
|
118
118
|
- [ ] Pas de docblock @param/@return redondants avec les types natifs
|
|
119
|
-
- [ ] Utilisation de readonly pour propriétés immuables
|
|
119
|
+
- [ ] Utilisation de readonly pour propriétés immuables
|
|
120
120
|
- [ ] Pas de suppression d'erreurs avec @phpstan-ignore
|
|
121
121
|
- [ ] Types stricts dans les tableaux : array<string, int>
|
|
122
|
-
- [ ] Utilisation de never type pour méthodes qui ne retournent jamais
|
|
122
|
+
- [ ] Utilisation de never type pour méthodes qui ne retournent jamais
|
|
123
123
|
|
|
124
124
|
**Points obtained** : ___/5
|
|
125
125
|
|
|
@@ -130,7 +130,7 @@ Analysis la complexité du code :
|
|
|
130
130
|
```bash
|
|
131
131
|
# Installer phpmetrics si nécessaire
|
|
132
132
|
# Analyser la complexité
|
|
133
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
133
|
+
docker run --rm -v $(pwd):/app php:8.5-cli php -r "
|
|
134
134
|
require '/app/vendor/autoload.php';
|
|
135
135
|
// Analyse basique de complexité
|
|
136
136
|
"
|
|
@@ -262,7 +262,7 @@ Exemples :
|
|
|
262
262
|
|
|
263
263
|
3. 🎯 [ACTION RECOMMANDÉE] - Formatter le code selon PSR-12
|
|
264
264
|
Impact : ⭐⭐⭐ | Effort : 🔥
|
|
265
|
-
Commande : docker run --rm -v $(pwd):/app php:8.
|
|
265
|
+
Commande : docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpcbf --standard=PSR12 src/
|
|
266
266
|
|
|
267
267
|
=================================================
|
|
268
268
|
RECOMMANDATIONS
|
|
@@ -305,10 +305,10 @@ CI/CD :
|
|
|
305
305
|
|
|
306
306
|
```bash
|
|
307
307
|
# Vérifier PSR-12
|
|
308
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
308
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpcs --standard=PSR12 src/ --report=summary
|
|
309
309
|
|
|
310
310
|
# Corriger automatiquement PSR-12
|
|
311
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
311
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpcbf --standard=PSR12 src/
|
|
312
312
|
|
|
313
313
|
# PHPStan niveau 10
|
|
314
314
|
docker run --rm -v $(pwd):/app phpstan/phpstan analyse src --level=10 --error-format=table
|
|
@@ -317,10 +317,10 @@ docker run --rm -v $(pwd):/app phpstan/phpstan analyse src --level=10 --error-fo
|
|
|
317
317
|
docker run --rm -v $(pwd):/app phpstan/phpstan analyse src --level=10 --generate-baseline
|
|
318
318
|
|
|
319
319
|
# PHP CS Fixer
|
|
320
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
320
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/php-cs-fixer fix src --dry-run --diff
|
|
321
321
|
|
|
322
322
|
# Vérifier declare(strict_types=1) partout
|
|
323
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
323
|
+
docker run --rm -v $(pwd):/app php:8.5-cli sh -c 'for f in $(find /app/src -name "*.php"); do grep -q "declare(strict_types=1)" "$f" || echo "❌ Manquant: $f"; done'
|
|
324
324
|
```
|
|
325
325
|
|
|
326
326
|
## IMPORTANT
|
|
@@ -32,10 +32,10 @@ Vérifie la configuration du Security Bundle :
|
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
# Vérifier si symfony/security-bundle est installé
|
|
35
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
35
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep "symfony/security-bundle" /app/composer.json
|
|
36
36
|
|
|
37
37
|
# Lister les firewalls configurés
|
|
38
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
38
|
+
docker run --rm -v $(pwd):/app php:8.5-cli cat /app/config/packages/security.yaml | grep -A 10 "firewalls:"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
#### Configuration Security Bundle (5 points)
|
|
@@ -59,11 +59,11 @@ docker run --rm -v $(pwd):/app php:8.2-cli cat /app/config/packages/security.yam
|
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
# Vérifier l'utilisation de requêtes préparées
|
|
62
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
63
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
62
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "->createQuery(" /app/src --include="*.php" | wc -l
|
|
63
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "->createNativeQuery(" /app/src --include="*.php" | wc -l
|
|
64
64
|
|
|
65
65
|
# Rechercher les concaténations de requêtes dangereuses
|
|
66
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
66
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -rE "\"SELECT.*\\..*\$" /app/src --include="*.php" || echo "✅ Pas de concaténation SQL détectée"
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
- [ ] Utilisation exclusive de requêtes préparées (Doctrine DQL/QueryBuilder)
|
|
@@ -85,10 +85,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -rE "\"SELECT.*\\..*\$" /app/src
|
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
87
|
# Vérifier la configuration des mots de passe
|
|
88
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
88
|
+
docker run --rm -v $(pwd):/app php:8.5-cli cat /app/config/packages/security.yaml | grep -A 5 "password_hashers:"
|
|
89
89
|
|
|
90
90
|
# Vérifier la présence de rate limiting
|
|
91
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
91
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "RateLimiter" /app/config --include="*.yaml"
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
- [ ] Hash de mot de passe fort (argon2i ou bcrypt avec coût élevé)
|
|
@@ -110,10 +110,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "RateLimiter" /app/config --i
|
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
112
|
# Vérifier les secrets dans le code
|
|
113
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
113
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -rE "(password|secret|api_key|token).*=.*['\"]" /app/src --include="*.php" | grep -v "//.*password" || echo "✅ Pas de secrets en dur"
|
|
114
114
|
|
|
115
115
|
# Vérifier HTTPS
|
|
116
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
116
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "SECURE_SCHEME" /app/.env.example || echo "⚠️ Configuration HTTPS non trouvée"
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
- [ ] Secrets externalisés (.env, vault)
|
|
@@ -135,10 +135,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "SECURE_SCHEME" /app/.env.exa
|
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
137
|
# Vérifier les Voters
|
|
138
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
138
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/src -name "*Voter.php" | wc -l
|
|
139
139
|
|
|
140
140
|
# Vérifier les annotations @IsGranted
|
|
141
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
141
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "@IsGranted" /app/src --include="*.php" | wc -l
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
- [ ] Voters Symfony pour autorisations complexes
|
|
@@ -160,10 +160,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "@IsGranted" /app/src --inclu
|
|
|
160
160
|
|
|
161
161
|
```bash
|
|
162
162
|
# Vérifier l'auto-échappement Twig
|
|
163
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
163
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "autoescape" /app/config/packages/twig.yaml
|
|
164
164
|
|
|
165
165
|
# Vérifier les |raw non sécurisés
|
|
166
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
166
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "|raw" /app/templates --include="*.twig" || echo "✅ Pas de |raw détecté"
|
|
167
167
|
```
|
|
168
168
|
|
|
169
169
|
- [ ] Auto-escape activé dans Twig
|
|
@@ -183,7 +183,7 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "|raw" /app/templates --inclu
|
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
185
|
# Vérifier CSRF protection
|
|
186
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
186
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "csrf_protection" /app/config/packages/framework.yaml
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
- [ ] CSRF protection activée globalement
|
|
@@ -205,10 +205,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "csrf_protection" /app/config
|
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
207
|
# Vérifier le mode debug
|
|
208
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
208
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep "APP_ENV" /app/.env.example
|
|
209
209
|
|
|
210
210
|
# Vérifier les dépendances vulnérables
|
|
211
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
211
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer audit
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
- [ ] APP_ENV=prod en production
|
|
@@ -228,10 +228,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli composer audit
|
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
230
|
# Audit de sécurité Composer
|
|
231
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
231
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer audit
|
|
232
232
|
|
|
233
233
|
# Vérifier les versions Symfony
|
|
234
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
234
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer show symfony/* | grep "versions"
|
|
235
235
|
```
|
|
236
236
|
|
|
237
237
|
- [ ] Symfony à jour (dernière version LTS ou stable)
|
|
@@ -253,10 +253,10 @@ docker run --rm -v $(pwd):/app php:8.2-cli composer show symfony/* | grep "versi
|
|
|
253
253
|
|
|
254
254
|
```bash
|
|
255
255
|
# Rechercher le traitement des données personnelles
|
|
256
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
256
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "email\|phone\|address" /app/src/Domain/Entity --include="*.php"
|
|
257
257
|
|
|
258
258
|
# Vérifier les mécanismes de consentement
|
|
259
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
259
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "consent\|gdpr" /app/src --include="*.php" -i
|
|
260
260
|
```
|
|
261
261
|
|
|
262
262
|
- [ ] Consentement utilisateur pour collecte de données
|
|
@@ -278,7 +278,7 @@ docker run --rm -v $(pwd):/app php:8.2-cli grep -r "consent\|gdpr" /app/src --in
|
|
|
278
278
|
|
|
279
279
|
```bash
|
|
280
280
|
# Vérifier la configuration des headers
|
|
281
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
281
|
+
docker run --rm -v $(pwd):/app php:8.5-cli cat /app/config/packages/framework.yaml | grep -A 10 "headers:"
|
|
282
282
|
```
|
|
283
283
|
|
|
284
284
|
- [ ] X-Content-Type-Options: nosniff
|
|
@@ -531,11 +531,11 @@ framework:
|
|
|
531
531
|
|
|
532
532
|
```bash
|
|
533
533
|
# Audit Composer
|
|
534
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
534
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer audit
|
|
535
535
|
|
|
536
536
|
# Security Checker Symfony
|
|
537
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
538
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
537
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer require --dev symfony/security-checker
|
|
538
|
+
docker run --rm -v $(pwd):/app php:8.5-cli ./vendor/bin/security-checker security:check
|
|
539
539
|
|
|
540
540
|
# PHPStan pour détecter problèmes de sécurité
|
|
541
541
|
docker run --rm -v $(pwd):/app phpstan/phpstan analyse src --level=9
|
|
@@ -557,26 +557,26 @@ docker run --rm -v $(pwd):/usr/src sonarqube:latest sonar-scanner
|
|
|
557
557
|
|
|
558
558
|
```bash
|
|
559
559
|
# Audit des dépendances
|
|
560
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
560
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer audit
|
|
561
561
|
|
|
562
562
|
# Check les secrets dans le code
|
|
563
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
563
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -rE "(password|secret|api_key|token).*=.*['\"]" /app/src --include="*.php"
|
|
564
564
|
|
|
565
565
|
# Check CSRF protection
|
|
566
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
566
|
+
docker run --rm -v $(pwd):/app php:8.5-cli cat /app/config/packages/framework.yaml | grep csrf
|
|
567
567
|
|
|
568
568
|
# Check les Voters
|
|
569
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
569
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/src -name "*Voter.php"
|
|
570
570
|
|
|
571
571
|
# Check mode debug
|
|
572
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
572
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep "APP_DEBUG" /app/.env
|
|
573
573
|
|
|
574
574
|
# Check les requêtes SQL
|
|
575
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
575
|
+
docker run --rm -v $(pwd):/app php:8.5-cli grep -r "createNativeQuery\|createQuery" /app/src --include="*.php"
|
|
576
576
|
|
|
577
577
|
# Security Checker
|
|
578
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
579
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
578
|
+
docker run --rm -v $(pwd):/app php:8.5-cli composer require --dev symfony/security-checker
|
|
579
|
+
docker run --rm -v $(pwd):/app php:8.5-cli ./vendor/bin/security-checker security:check composer.lock
|
|
580
580
|
```
|
|
581
581
|
|
|
582
582
|
## IMPORTANT
|
|
@@ -32,7 +32,7 @@ Analysis la structure du dossier tests/ :
|
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
# Lister la structure des tests
|
|
35
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
35
|
+
docker run --rm -v $(pwd):/app php:8.5-cli find /app/tests -type d
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
#### Organisation des Tests (3 points)
|
|
@@ -56,10 +56,10 @@ Exécute les tests unitaires :
|
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
# Exécuter les tests unitaires uniquement
|
|
59
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
59
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Unit --testdox
|
|
60
60
|
|
|
61
61
|
# Compter les tests unitaires
|
|
62
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
62
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Unit --list-tests | wc -l
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
#### Tests Unitaires Domain (7 points)
|
|
@@ -86,7 +86,7 @@ Exécute les tests d'intégration :
|
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
88
|
# Exécuter les tests d'intégration
|
|
89
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
89
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Integration --testdox
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
#### Tests d'Intégration Infrastructure (5 points)
|
|
@@ -113,10 +113,10 @@ Exécute les tests fonctionnels :
|
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
115
|
# Exécuter les tests fonctionnels
|
|
116
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
116
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Functional --testdox
|
|
117
117
|
|
|
118
118
|
# Vérifier si Behat est installé
|
|
119
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
119
|
+
docker run --rm -v $(pwd):/app php:8.5-cli test -f /app/vendor/bin/behat && echo "✅ Behat trouvé" || echo "⚠️ Behat manquant"
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
#### Tests Fonctionnels (5 points)
|
|
@@ -143,10 +143,10 @@ Génère le rapport de couverture :
|
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
145
|
# Générer la couverture de code (nécessite xdebug ou pcov)
|
|
146
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
146
|
+
docker run --rm -v $(pwd):/app php:8.5-cli php -d memory_limit=-1 /app/vendor/bin/phpunit --coverage-text --coverage-html=/app/var/coverage
|
|
147
147
|
|
|
148
148
|
# Afficher le résumé de couverture
|
|
149
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
149
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit --coverage-text | grep "Lines:"
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
#### Couverture de Code (5 points)
|
|
@@ -193,7 +193,7 @@ Exécute les tests de mutation :
|
|
|
193
193
|
|
|
194
194
|
```bash
|
|
195
195
|
# Vérifier si Infection est installé
|
|
196
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
196
|
+
docker run --rm -v $(pwd):/app php:8.5-cli test -f /app/vendor/bin/infection && echo "✅ Infection trouvé" || echo "❌ Infection manquant"
|
|
197
197
|
|
|
198
198
|
# Exécuter Infection
|
|
199
199
|
docker run --rm -v $(pwd):/app infection/infection --min-msi=70 --min-covered-msi=80 --threads=4
|
|
@@ -416,28 +416,28 @@ CI/CD :
|
|
|
416
416
|
|
|
417
417
|
```bash
|
|
418
418
|
# Exécuter tous les tests
|
|
419
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
419
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit
|
|
420
420
|
|
|
421
421
|
# Tests unitaires uniquement
|
|
422
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
422
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Unit
|
|
423
423
|
|
|
424
424
|
# Tests avec couverture
|
|
425
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
425
|
+
docker run --rm -v $(pwd):/app php:8.5-cli php -d xdebug.mode=coverage /app/vendor/bin/phpunit --coverage-text
|
|
426
426
|
|
|
427
427
|
# Infection (mutation testing)
|
|
428
428
|
docker run --rm -v $(pwd):/app infection/infection --threads=4 --min-msi=70
|
|
429
429
|
|
|
430
430
|
# Behat (tests BDD)
|
|
431
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
431
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/behat
|
|
432
432
|
|
|
433
433
|
# Lister tous les tests
|
|
434
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
434
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit --list-tests
|
|
435
435
|
|
|
436
436
|
# Exécuter un test spécifique
|
|
437
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
437
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit tests/Unit/Domain/Entity/UserTest.php
|
|
438
438
|
|
|
439
439
|
# Tests avec sortie détaillée
|
|
440
|
-
docker run --rm -v $(pwd):/app php:8.
|
|
440
|
+
docker run --rm -v $(pwd):/app php:8.5-cli /app/vendor/bin/phpunit --testdox
|
|
441
441
|
```
|
|
442
442
|
|
|
443
443
|
## IMPORTANT
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
## Principes Generaux
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### PER-CS 3.0 + Symfony Coding Standards
|
|
8
8
|
|
|
9
9
|
Le projet suit strictement :
|
|
10
|
-
1. **
|
|
10
|
+
1. **PER-CS 3.0** : Standard PHP officiel
|
|
11
11
|
2. **@Symfony** : Conventions Symfony
|
|
12
12
|
3. **@Symfony:risky** : Regles strictes Symfony
|
|
13
13
|
4. **@PHP85Migration** : Modernisation PHP 8.5+ (property hooks, pipe operator, `#[\NoDiscard]`)
|
|
@@ -311,7 +311,7 @@ Configuration PHP-CS-Fixer :
|
|
|
311
311
|
|
|
312
312
|
## Indentation et Formatage
|
|
313
313
|
|
|
314
|
-
### Regles
|
|
314
|
+
### Regles PER-CS 3.0
|
|
315
315
|
|
|
316
316
|
```php
|
|
317
317
|
<?php
|
|
@@ -398,7 +398,7 @@ Voir `.claude/checklists/pre-commit.md` pour checklist complete.
|
|
|
398
398
|
|
|
399
399
|
## References
|
|
400
400
|
|
|
401
|
-
- **
|
|
401
|
+
- **PER-CS 3.0** : https://www.php-fig.org/per/coding-style/
|
|
402
402
|
- **Symfony Coding Standards** : https://symfony.com/doc/current/contributing/code/standards.html
|
|
403
403
|
- **PHP-CS-Fixer** : https://github.com/PHP-CS-Fixer/PHP-CS-Fixer
|
|
404
404
|
- **PHPStan** : https://phpstan.org/
|
|
@@ -548,8 +548,6 @@ CMD ["php-fpm"]
|
|
|
548
548
|
### docker-compose.yml (Production-ready)
|
|
549
549
|
|
|
550
550
|
```yaml
|
|
551
|
-
version: '3.8'
|
|
552
|
-
|
|
553
551
|
services:
|
|
554
552
|
# PHP-FPM
|
|
555
553
|
php:
|
|
@@ -668,8 +666,6 @@ networks:
|
|
|
668
666
|
### compose.override.yaml (Local)
|
|
669
667
|
|
|
670
668
|
```yaml
|
|
671
|
-
version: '3.8'
|
|
672
|
-
|
|
673
669
|
# Overrides locaux (gitignored)
|
|
674
670
|
services:
|
|
675
671
|
php:
|
|
@@ -175,6 +175,8 @@ Usage :
|
|
|
175
175
|
$this->translator->trans('client.created', [], 'messages', $locale);
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
+
Messages pluriels/genrés : ICU MessageFormat (MF1 via le domaine `+intl-icu` de Symfony) ; **MessageFormat 2.0** est stable dans CLDR 47 (mars 2025) — vérifier le support de la bibliothèque avant de migrer.
|
|
179
|
+
|
|
178
180
|
## Checklist i18n
|
|
179
181
|
|
|
180
182
|
- [ ] Country enum utilisé partout
|
|
@@ -188,3 +188,4 @@ final class MessengerEventSubscriber implements EventSubscriberInterface
|
|
|
188
188
|
- [ ] Workers supervisord en prod
|
|
189
189
|
- [ ] Monitoring des failed messages
|
|
190
190
|
- [ ] Tests avec `messenger:consume --limit=1`
|
|
191
|
+
- [ ] Messages exposed to other systems documented with AsyncAPI 3.x (3.1.0)
|
|
@@ -517,7 +517,7 @@ For 1 EPIC, 5 US, ~25 tasks:
|
|
|
517
517
|
| **Total time** | **~120 min** | **~55 min** | **~2.2x** |
|
|
518
518
|
| Cost total* | ~$28 | ~$17 | **-38%** |
|
|
519
519
|
|
|
520
|
-
*Cost savings because Sonnet ($
|
|
520
|
+
*Cost savings because Sonnet 5.5 ($2/$10/M) handles most work vs Opus 5.5 ($4/$20/M) in sequential mode.
|
|
521
521
|
|
|
522
522
|
## Performance Expectations
|
|
523
523
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
**Scope**: framework-agnostic platform features only — vercel.json, Functions, ISR, Cron, Storage. Explicitly not Next.js, not any framework's own deploy adapter.
|
|
10
10
|
|
|
11
|
-
> **Note:** Vercel (this stack) covers only the **framework-agnostic deployment-platform surface**: `vercel.json` configuration (rewrites, redirects, headers, regions), Serverless Functions on the Node.js runtime / Fluid Compute, ISR cache primitives, Cron Jobs, Vercel Storage (Blob native; Postgres/KV via Marketplace — Neon/Upstash), Analytics/Speed Insights, and environment-variable/Preview-Deployment workflow. It is **not** a Next.js stack — Next.js itself is out of scope and not a supported claude-craft technology (no `/nextjs:*` namespace exists). Framework-specific routing, rendering, or data-fetching patterns belong to each framework's own stack (`/react:*`, `/vuejs:*`, `/angular:*`) — consult that stack's `tooling.md` for how it integrates with Vercel's build output. Additionally, the Edge Runtime (`export const runtime = 'edge'`) is **
|
|
11
|
+
> **Note:** Vercel (this stack) covers only the **framework-agnostic deployment-platform surface**: `vercel.json` configuration (rewrites, redirects, headers, regions), Serverless Functions on the Node.js runtime / Fluid Compute, ISR cache primitives, Cron Jobs, Vercel Storage (Blob native; Postgres/KV via Marketplace — Neon/Upstash), Analytics/Speed Insights, and environment-variable/Preview-Deployment workflow. It is **not** a Next.js stack — Next.js itself is out of scope and not a supported claude-craft technology (no `/nextjs:*` namespace exists). Framework-specific routing, rendering, or data-fetching patterns belong to each framework's own stack (`/react:*`, `/vuejs:*`, `/angular:*`) — consult that stack's `tooling.md` for how it integrates with Vercel's build output. Additionally, the Edge Runtime (`export const runtime = 'edge'`) is **not recommended by Vercel**, which favors Fluid Compute on the Node.js runtime; this stack documents Edge Runtime only to help identify and migrate legacy code, not as a recommended pattern for new work.
|
|
12
12
|
|
|
13
13
|
### Project Structure
|
|
14
14
|
```
|
|
@@ -38,7 +38,7 @@ See `rules/02-architecture.md` for complete patterns.
|
|
|
38
38
|
| Rule | Reason |
|
|
39
39
|
|------|--------|
|
|
40
40
|
| vercel.json validated against `$schema` | Catches typo'd globs/keys before they fail silently at deploy time |
|
|
41
|
-
| Node.js/Fluid Compute is the runtime default | Edge Runtime (`runtime: 'edge'`) is
|
|
41
|
+
| Node.js/Fluid Compute is the runtime default | Edge Runtime (`runtime: 'edge'`) is discouraged — legacy migration target only |
|
|
42
42
|
| Env vars never hardcoded or committed | Secrets belong in Vercel's environment-variable store, scoped per environment |
|
|
43
43
|
| Cron endpoints verify the secret header | An unguarded cron path can be triggered by anyone who finds it |
|
|
44
44
|
| 80%+ coverage on handler logic | Quality assurance for Functions and middleware business logic |
|