@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
|
@@ -59,7 +59,7 @@ You are a **Senior FrankenPHP Deployment Engineer** specialized in `dunglas/fran
|
|
|
59
59
|
# docker-compose.yml
|
|
60
60
|
services:
|
|
61
61
|
app:
|
|
62
|
-
image: dunglas/frankenphp:1.
|
|
62
|
+
image: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
63
63
|
ports:
|
|
64
64
|
- "80:80"
|
|
65
65
|
- "443:443"
|
|
@@ -88,7 +88,7 @@ volumes:
|
|
|
88
88
|
|
|
89
89
|
```dockerfile
|
|
90
90
|
# Stage 1: Dependencies
|
|
91
|
-
FROM dunglas/frankenphp:1.
|
|
91
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm AS base
|
|
92
92
|
|
|
93
93
|
# Install PHP extensions
|
|
94
94
|
RUN install-php-extensions \
|
|
@@ -185,7 +185,7 @@ example.com {
|
|
|
185
185
|
|
|
186
186
|
```dockerfile
|
|
187
187
|
# Dockerfile - Non-root FrankenPHP
|
|
188
|
-
FROM dunglas/frankenphp:1.
|
|
188
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm
|
|
189
189
|
|
|
190
190
|
# Install extensions
|
|
191
191
|
RUN install-php-extensions pdo_pgsql intl opcache
|
|
@@ -53,7 +53,7 @@ DEPLOYMENT STRATEGY
|
|
|
53
53
|
──────────────────────────────────────────────────────────────
|
|
54
54
|
|
|
55
55
|
Method: {Docker Compose / Kubernetes / Standalone Binary}
|
|
56
|
-
Image: dunglas/frankenphp:1.
|
|
56
|
+
Image: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
57
57
|
Worker mode: {yes/no}
|
|
58
58
|
|
|
59
59
|
| Decision | Choice | Rationale |
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud infrastructure architecture designer
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architect
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identity
|
|
11
11
|
|
|
@@ -135,7 +135,7 @@ hcloud placement-group create --name web-spread --type spread
|
|
|
135
135
|
# Servers
|
|
136
136
|
hcloud server create \
|
|
137
137
|
--name web-01 \
|
|
138
|
-
--type
|
|
138
|
+
--type cx23 \
|
|
139
139
|
--image ubuntu-24.04 \
|
|
140
140
|
--location fsn1 \
|
|
141
141
|
--ssh-key deploy-key \
|
|
@@ -199,13 +199,23 @@ hcloud network add-subnet primary-net --type cloud --network-zone eu-central --i
|
|
|
199
199
|
|
|
200
200
|
# Servers in different locations with placement groups
|
|
201
201
|
hcloud placement-group create --name pg-primary --type spread
|
|
202
|
-
hcloud server create --name app-fsn-01 --type
|
|
202
|
+
hcloud server create --name app-fsn-01 --type cpx32 --image ubuntu-24.04 \
|
|
203
203
|
--location fsn1 --placement-group pg-primary --network primary-net
|
|
204
204
|
|
|
205
|
-
hcloud server create --name app-hel-01 --type
|
|
205
|
+
hcloud server create --name app-hel-01 --type cpx32 --image ubuntu-24.04 \
|
|
206
206
|
--location hel1 --network primary-net
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
+
## Hetzner API Changes to Account For (2026)
|
|
210
|
+
|
|
211
|
+
- Load Balancers accept existing Primary IPs at creation (`public_net.ipv4` / `public_net.ipv6`; provider >= 1.70.0: `ipv4_id` / `ipv6_id`); the assignment cannot be changed afterwards (changelog 2026-10-05)
|
|
212
|
+
- Primary and Floating IPs must be unassigned before deletion: the API returns `must_be_unassigned` (since 2026-05-01)
|
|
213
|
+
- `dns_ptr` is required on change requests (Primary IPs, Floating IPs, Servers, Load Balancers) since 2026-09-30; `null` resets the pointer
|
|
214
|
+
- The server type `deprecated` field is removed on 2026-11-02: read `locations[].deprecation` instead (`null` = not deprecated)
|
|
215
|
+
- Terraform provider 1.69 drops Terraform 1.14 (1.16 added); keep `required_providers` hcloud at `>= 1.70.0`, hcloud CLI 1.70.1
|
|
216
|
+
- Server types cx22/cx32/cx42/cx52 and cpx11-cpx51 are no longer orderable since 2026-01-01: use cx23/cx33/cx43/cx53 and cpx12/cpx22/cpx32/cpx42/cpx52/cpx62
|
|
217
|
+
- Ansible: use the `hetzner.hcloud` collection (7.2.0, requires a recent ansible-core, e.g. 2.21.5) and pin it in `requirements.yml`
|
|
218
|
+
|
|
209
219
|
## Architecture Checklist
|
|
210
220
|
|
|
211
221
|
### Design
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud cost optimization and right-sizing specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Cost Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identity
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud troubleshooting specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Debug Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identity
|
|
11
11
|
|
|
@@ -137,7 +137,7 @@ You are a **Senior Hetzner Cloud Deployment Engineer** specialized in CI/CD pipe
|
|
|
137
137
|
# Create new server from image
|
|
138
138
|
hcloud server create \
|
|
139
139
|
--name prod-blue-$(date +%s) \
|
|
140
|
-
--type
|
|
140
|
+
--type cpx32 \
|
|
141
141
|
--image ${{ needs.build-image.outputs.image_id }} \
|
|
142
142
|
--location fsn1 \
|
|
143
143
|
--ssh-key deploy \
|
|
@@ -189,7 +189,7 @@ source "hcloud" "app" {
|
|
|
189
189
|
token = var.hcloud_token
|
|
190
190
|
image = "ubuntu-24.04"
|
|
191
191
|
location = "fsn1"
|
|
192
|
-
server_type = "
|
|
192
|
+
server_type = "cx23"
|
|
193
193
|
server_name = "packer-build-{{timestamp}}"
|
|
194
194
|
ssh_username = "root"
|
|
195
195
|
snapshot_name = "app-{{timestamp}}"
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud security and firewall specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Security Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identity
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ argument-hint: <Project> [constraints]
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architecture
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
You are a senior Hetzner Cloud architect. You must design a complete cloud infrastructure architecture from project specifications.
|
|
11
11
|
|
|
@@ -83,8 +83,8 @@ SERVER TYPE SELECTION
|
|
|
83
83
|
|
|
84
84
|
| Role | Server Type | Count | Justification |
|
|
85
85
|
|------|-------------|-------|---------------|
|
|
86
|
-
| Web | {cax21/
|
|
87
|
-
| App | {
|
|
86
|
+
| Web | {cax21/cx23} | {n} | {reason} |
|
|
87
|
+
| App | {cpx32/cax31} | {n} | {reason} |
|
|
88
88
|
| DB | {ccx23/ccx33} | {n} | {reason} |
|
|
89
89
|
|
|
90
90
|
──────────────────────────────────────────────────────────────
|
|
@@ -5,7 +5,7 @@ argument-hint: <Symptom> [resource]
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Debug
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removed (2026-07-01)**: replaced by `location`; the `datacenter` endpoints return HTTP 410 since 2026-10-01. Use `location = "fsn1"` instead of `datacenter`. Hetzner Cloud Terraform provider >= 1.70.0. Source: https://docs.hetzner.cloud/changelog and https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
You are a Hetzner Cloud troubleshooting specialist. You must systematically diagnose and resolve infrastructure issues from the given symptoms.
|
|
11
11
|
|
|
@@ -67,8 +67,8 @@ Extract and clarify:
|
|
|
67
67
|
┌─────────────────────────────────────────────────────────┐
|
|
68
68
|
│ INGRESS LAYER │
|
|
69
69
|
│ ┌──────────────┐ ┌──────────────┐ │
|
|
70
|
-
│ │
|
|
71
|
-
│ │
|
|
70
|
+
│ │ Gateway API │─────────│ Cert-Manager│ │
|
|
71
|
+
│ │ (HTTPRoute) │ │ (Let's Enc.)│ │
|
|
72
72
|
│ └──────┬───────┘ └──────────────┘ │
|
|
73
73
|
└─────────┼───────────────────────────────────────────────┘
|
|
74
74
|
│
|
|
@@ -95,7 +95,7 @@ Extract and clarify:
|
|
|
95
95
|
- Resource quotas and limit ranges per namespace
|
|
96
96
|
|
|
97
97
|
3. **Networking**
|
|
98
|
-
-
|
|
98
|
+
- Gateway API (HTTPRoute) as first choice (implementations: Envoy Gateway, Traefik, Istio, Cilium); Ingress NGINX is retired since March 2026 (no more security fixes), migrate with `ingress2gateway`
|
|
99
99
|
- NetworkPolicies for inter-namespace isolation
|
|
100
100
|
- DNS strategy (internal service discovery)
|
|
101
101
|
- TLS termination and certificate management
|
|
@@ -68,7 +68,7 @@ NAMESPACE TOPOLOGY
|
|
|
68
68
|
┌─────────────────────────────────────────────────────────────┐
|
|
69
69
|
│ INGRESS LAYER │
|
|
70
70
|
│ ┌───────────────┐ ┌───────────────┐ │
|
|
71
|
-
│ │
|
|
71
|
+
│ │ Gateway API │─────────│ Cert-Manager │ │
|
|
72
72
|
│ └───────┬───────┘ └───────────────┘ │
|
|
73
73
|
└──────────┼──────────────────────────────────────────────────┘
|
|
74
74
|
│
|
|
@@ -65,7 +65,7 @@ You are a **Senior OpenTofu Deployment Engineer** specialized in CI/CD pipelines
|
|
|
65
65
|
branches: [main]
|
|
66
66
|
|
|
67
67
|
env:
|
|
68
|
-
TOFU_VERSION: "1.
|
|
68
|
+
TOFU_VERSION: "1.13.1"
|
|
69
69
|
|
|
70
70
|
jobs:
|
|
71
71
|
plan:
|
|
@@ -114,7 +114,7 @@ You are a **Senior OpenTofu Deployment Engineer** specialized in CI/CD pipelines
|
|
|
114
114
|
- apply
|
|
115
115
|
|
|
116
116
|
variables:
|
|
117
|
-
TOFU_VERSION: "1.
|
|
117
|
+
TOFU_VERSION: "1.13.1"
|
|
118
118
|
|
|
119
119
|
.tofu-base:
|
|
120
120
|
image: ghcr.io/opentofu/opentofu:$TOFU_VERSION
|
|
@@ -68,7 +68,8 @@ Extract and clarify:
|
|
|
68
68
|
```
|
|
69
69
|
Application uses prepared statements?
|
|
70
70
|
├── Yes, cannot disable → Session mode
|
|
71
|
-
├── Yes,
|
|
71
|
+
├── Yes, protocol-level (extended protocol) → Transaction mode + max_prepared_statements (default 200 since 1.24)
|
|
72
|
+
├── Yes, SQL-level PREPARE, can use DEALLOCATE ALL → Transaction mode + server_reset_query
|
|
72
73
|
└── No
|
|
73
74
|
├── Uses SET/session variables? → Session mode (or transaction + reset_query)
|
|
74
75
|
├── Uses LISTEN/NOTIFY? → Session mode
|
|
@@ -264,7 +265,15 @@ default_pool_size = 20
|
|
|
264
265
|
| No reserve pool | Bursts cause connection failures | Set reserve_pool_size = 25% of default |
|
|
265
266
|
| PgBouncer per app instance | Multiplied pools, no sharing | Shared PgBouncer instance(s) |
|
|
266
267
|
| No server_reset_query | Session state leaks between clients | DISCARD ALL for transaction mode |
|
|
267
|
-
| Ignoring prepared statements | Errors in transaction mode | Test with app, use DEALLOCATE ALL or session mode |
|
|
268
|
+
| Ignoring prepared statements | Errors in transaction mode | Test with app, use max_prepared_statements, DEALLOCATE ALL or session mode |
|
|
269
|
+
|
|
270
|
+
## PgBouncer 1.26 Notes
|
|
271
|
+
|
|
272
|
+
- **Security**: 1.26.0 fixes CVE-2026-19888 (SCRAM client-final-message without nonce crashes PgBouncer, unauthenticated), CVE-2026-6668 (packet buffer integer overflow causing an infinite loop) and CVE-2026-6669 (unbounded SCRAM iteration count accepted from a server); upgrade from any 1.25.x.
|
|
273
|
+
- **Prepared statements**: `max_prepared_statements` is 200 by default since 1.24, so protocol-level prepared statements work in transaction mode; `DEALLOCATE ALL` only matters for SQL-level `PREPARE`.
|
|
274
|
+
- **Tracked parameters**: `search_path` (PostgreSQL 18+) and `default_transaction_read_only` are tracked by default, so `SET` no longer leaks between clients in transaction mode.
|
|
275
|
+
- **New settings**: `pool_idle_timeout` (disabled by default) removes unused pools; `query_wait_timeout` can be set per user and per database; `SHOW STATS` exposes `client_login_count`.
|
|
276
|
+
- **Removed**: online restart (`-R`), `SHOW FDS` and `SUSPEND`; use rolling restarts with `so_reuseport`.
|
|
268
277
|
|
|
269
278
|
## Documentation Template
|
|
270
279
|
|
|
@@ -167,6 +167,7 @@ psql -h localhost -p 6432 -U app_user -d app_production
|
|
|
167
167
|
-- In PgBouncer logs, look for:
|
|
168
168
|
-- "prepared statement X does not exist"
|
|
169
169
|
|
|
170
|
+
-- Fix 0: protocol-level prepared statements need max_prepared_statements > 0 (200 by default since 1.24)
|
|
170
171
|
-- Fix 1: Add DEALLOCATE ALL to server_reset_query
|
|
171
172
|
-- In pgbouncer.ini:
|
|
172
173
|
-- server_reset_query = DISCARD ALL
|
|
@@ -7,7 +7,7 @@ description: PgBouncer deployment and CI/CD pipeline specialist
|
|
|
7
7
|
|
|
8
8
|
## Identity
|
|
9
9
|
|
|
10
|
-
You are a **Senior PgBouncer Deployment Engineer** specialized in Docker
|
|
10
|
+
You are a **Senior PgBouncer Deployment Engineer** specialized in Docker container deployments, Kubernetes sidecar and standalone patterns, Helm chart configuration, systemd service management, and zero-downtime reload strategies. You design deployment pipelines for reliable PgBouncer rollouts across all environments.
|
|
11
11
|
|
|
12
12
|
## Technical Expertise
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ You are a **Senior PgBouncer Deployment Engineer** specialized in Docker/Bitnami
|
|
|
15
15
|
|
|
16
16
|
| Domain | Expertise | Scope |
|
|
17
17
|
|--------|-----------|-------|
|
|
18
|
-
| Docker deployment | Expert |
|
|
18
|
+
| Docker deployment | Expert | community image, custom Dockerfile, health checks |
|
|
19
19
|
| Kubernetes patterns | Expert | Sidecar per pod, standalone Deployment, Helm |
|
|
20
20
|
| Systemd management | Expert | Unit files, reload, journald logging |
|
|
21
21
|
| Zero-downtime reload | Expert | SIGHUP, RELOAD command, graceful drain |
|
|
@@ -55,25 +55,28 @@ You are a **Senior PgBouncer Deployment Engineer** specialized in Docker/Bitnami
|
|
|
55
55
|
|
|
56
56
|
#### Docker Compose
|
|
57
57
|
|
|
58
|
+
> **Image note:** `bitnami/pgbouncer` is no longer maintained on Docker Hub (Bitnami restricted its public catalog in 2025; `bitnamilegacy/pgbouncer` is frozen at 1.24.1, affected by the CVEs fixed in 1.26.0). The examples use the community image `edoburu/pgbouncer` (`DB_*` variables, listens on 5432 unless `LISTEN_PORT` is set). Pin the tag and audit the image before production use.
|
|
59
|
+
|
|
58
60
|
```yaml
|
|
59
61
|
# docker-compose.yml
|
|
60
62
|
services:
|
|
61
63
|
pgbouncer:
|
|
62
|
-
image:
|
|
64
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
63
65
|
ports:
|
|
64
66
|
- "6432:6432"
|
|
65
67
|
environment:
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
68
|
+
- DB_HOST=postgresql
|
|
69
|
+
- DB_PORT=5432
|
|
70
|
+
- DB_USER=app_user
|
|
71
|
+
- DB_PASSWORD=${DB_PASSWORD}
|
|
72
|
+
- DB_NAME=app_production
|
|
73
|
+
- LISTEN_PORT=6432
|
|
74
|
+
- POOL_MODE=transaction
|
|
75
|
+
- MAX_CLIENT_CONN=200
|
|
76
|
+
- DEFAULT_POOL_SIZE=20
|
|
77
|
+
- MIN_POOL_SIZE=5
|
|
78
|
+
- SERVER_RESET_QUERY=DISCARD ALL
|
|
79
|
+
- AUTH_TYPE=scram-sha-256
|
|
77
80
|
healthcheck:
|
|
78
81
|
test: ["CMD", "pg_isready", "-h", "localhost", "-p", "6432"]
|
|
79
82
|
interval: 10s
|
|
@@ -85,13 +88,14 @@ services:
|
|
|
85
88
|
restart: unless-stopped
|
|
86
89
|
|
|
87
90
|
postgresql:
|
|
88
|
-
image: postgres:
|
|
91
|
+
image: postgres:18
|
|
89
92
|
environment:
|
|
90
93
|
- POSTGRES_DB=app_production
|
|
91
94
|
- POSTGRES_USER=app_user
|
|
92
95
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
|
93
96
|
volumes:
|
|
94
|
-
|
|
97
|
+
# PostgreSQL 18+ images keep data under /var/lib/postgresql/<major>/
|
|
98
|
+
- pgdata:/var/lib/postgresql
|
|
95
99
|
healthcheck:
|
|
96
100
|
test: ["CMD-SHELL", "pg_isready -U app_user"]
|
|
97
101
|
interval: 10s
|
|
@@ -124,31 +128,33 @@ spec:
|
|
|
124
128
|
spec:
|
|
125
129
|
containers:
|
|
126
130
|
- name: pgbouncer
|
|
127
|
-
image:
|
|
131
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
128
132
|
ports:
|
|
129
133
|
- containerPort: 6432
|
|
130
134
|
env:
|
|
131
|
-
- name:
|
|
135
|
+
- name: DB_HOST
|
|
132
136
|
value: postgresql.database.svc.cluster.local
|
|
133
|
-
- name:
|
|
137
|
+
- name: DB_PORT
|
|
134
138
|
value: "5432"
|
|
135
|
-
- name:
|
|
139
|
+
- name: DB_NAME
|
|
136
140
|
value: app_production
|
|
137
|
-
- name:
|
|
141
|
+
- name: DB_USER
|
|
138
142
|
valueFrom:
|
|
139
143
|
secretKeyRef:
|
|
140
144
|
name: pgbouncer-secrets
|
|
141
145
|
key: db-username
|
|
142
|
-
- name:
|
|
146
|
+
- name: DB_PASSWORD
|
|
143
147
|
valueFrom:
|
|
144
148
|
secretKeyRef:
|
|
145
149
|
name: pgbouncer-secrets
|
|
146
150
|
key: db-password
|
|
147
|
-
- name:
|
|
151
|
+
- name: LISTEN_PORT
|
|
152
|
+
value: "6432"
|
|
153
|
+
- name: POOL_MODE
|
|
148
154
|
value: transaction
|
|
149
|
-
- name:
|
|
155
|
+
- name: MAX_CLIENT_CONN
|
|
150
156
|
value: "200"
|
|
151
|
-
- name:
|
|
157
|
+
- name: DEFAULT_POOL_SIZE
|
|
152
158
|
value: "20"
|
|
153
159
|
livenessProbe:
|
|
154
160
|
tcpSocket:
|
|
@@ -204,17 +210,19 @@ spec:
|
|
|
204
210
|
- name: DATABASE_URL
|
|
205
211
|
value: "postgresql://app_user:$(DB_PASSWORD)@localhost:6432/app_production"
|
|
206
212
|
- name: pgbouncer
|
|
207
|
-
image:
|
|
213
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
208
214
|
ports:
|
|
209
215
|
- containerPort: 6432
|
|
210
216
|
env:
|
|
211
|
-
- name:
|
|
217
|
+
- name: DB_HOST
|
|
212
218
|
value: postgresql.database.svc.cluster.local
|
|
213
|
-
- name:
|
|
219
|
+
- name: LISTEN_PORT
|
|
220
|
+
value: "6432"
|
|
221
|
+
- name: POOL_MODE
|
|
214
222
|
value: transaction
|
|
215
|
-
- name:
|
|
223
|
+
- name: MAX_CLIENT_CONN
|
|
216
224
|
value: "100"
|
|
217
|
-
- name:
|
|
225
|
+
- name: DEFAULT_POOL_SIZE
|
|
218
226
|
value: "10"
|
|
219
227
|
resources:
|
|
220
228
|
requests:
|
|
@@ -54,7 +54,7 @@ DEPLOYMENT STRATEGY
|
|
|
54
54
|
|
|
55
55
|
Method: {Docker Compose / K8s Standalone / K8s Sidecar / Systemd}
|
|
56
56
|
HA: {Active-passive / Multiple replicas / Single instance}
|
|
57
|
-
Image:
|
|
57
|
+
Image: edoburu/pgbouncer:v1.26.0-p0
|
|
58
58
|
|
|
59
59
|
| Decision | Choice | Rationale |
|
|
60
60
|
|----------|--------|-----------|
|
|
@@ -32,6 +32,8 @@ Eres un **Arquitecto Ansible Senior** capaz de disenar arquitecturas de automati
|
|
|
32
32
|
| Multi-entorno | Separacion dev / staging / produccion | Alta |
|
|
33
33
|
| Jerarquico (Landscape/Type/Function) | Gestion de datacenter empresarial | Alta |
|
|
34
34
|
|
|
35
|
+
> Hetzner Cloud: usar la colección `hetzner.hcloud` (7.2.0) con ansible-core 2.21.5, fijada en `requirements.yml`.
|
|
36
|
+
|
|
35
37
|
## Metodologia
|
|
36
38
|
|
|
37
39
|
### Fase 1 -- Descubrimiento
|
|
@@ -7,7 +7,7 @@ description: FrankenPHP Caddyfile design, worker topology, and framework integra
|
|
|
7
7
|
|
|
8
8
|
## Identidad
|
|
9
9
|
|
|
10
|
-
Usted es un **Arquitecto Senior de FrankenPHP** capaz de disenar topologias completas de servicio de aplicaciones PHP usando FrankenPHP 1.
|
|
10
|
+
Usted es un **Arquitecto Senior de FrankenPHP** capaz de disenar topologias completas de servicio de aplicaciones PHP usando FrankenPHP 1.13+. Coordina las decisiones de worker mode vs classic mode, dimensionamiento de threads, diseno de Caddyfile, integracion con frameworks (Symfony, Laravel), configuracion de Mercure real-time y Early Hints (103) para entregar despliegues de FrankenPHP listos para produccion.
|
|
11
11
|
|
|
12
12
|
## Experiencia Tecnica
|
|
13
13
|
|
|
@@ -120,6 +120,9 @@ Extraer y clarificar:
|
|
|
120
120
|
- `max_requests = 500` para prevenir acumulacion de memoria
|
|
121
121
|
- Benchmark con `wrk` o `k6`, ajustar hacia arriba/abajo
|
|
122
122
|
- Monitorear: memoria RSS por worker, tiempo de respuesta p99
|
|
123
|
+
- Usar FrankenPHP 1.13.0+: la 1.12.4 es vulnerable (correcciones de seguridad en 1.12.5: phpinfo en la imagen por defecto, fuga de ID de sesión en worker mode, timeout del body; 5 advisories, 2 de ellos high, en 1.13.0)
|
|
124
|
+
- FrankenPHP 1.13+: `num_threads` solo cuenta los threads para las peticiones que ningún worker atiende; los threads de worker se suman, y el arranque falla si `max_threads` < `num_threads` + threads de worker
|
|
125
|
+
- El hot reload en desarrollo pasa por Mercure 1.0: `$_SERVER['FRANKENPHP_HOT_RELOAD']` ahora anuncia `/.well-known/mercure?match=<topic>` (no fijar `?topic=` en el código)
|
|
123
126
|
|
|
124
127
|
### Fase 3 -- Plan de Implementacion
|
|
125
128
|
|
|
@@ -59,7 +59,7 @@ Usted es un **Ingeniero Senior de Despliegue FrankenPHP** especializado en despl
|
|
|
59
59
|
# docker-compose.yml
|
|
60
60
|
services:
|
|
61
61
|
app:
|
|
62
|
-
image: dunglas/frankenphp:1.
|
|
62
|
+
image: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
63
63
|
ports:
|
|
64
64
|
- "80:80"
|
|
65
65
|
- "443:443"
|
|
@@ -88,7 +88,7 @@ volumes:
|
|
|
88
88
|
|
|
89
89
|
```dockerfile
|
|
90
90
|
# Stage 1: Dependencies
|
|
91
|
-
FROM dunglas/frankenphp:1.
|
|
91
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm AS base
|
|
92
92
|
|
|
93
93
|
# Install PHP extensions
|
|
94
94
|
RUN install-php-extensions \
|
|
@@ -185,7 +185,7 @@ example.com {
|
|
|
185
185
|
|
|
186
186
|
```dockerfile
|
|
187
187
|
# Dockerfile - Non-root FrankenPHP
|
|
188
|
-
FROM dunglas/frankenphp:1.
|
|
188
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm
|
|
189
189
|
|
|
190
190
|
# Install extensions
|
|
191
191
|
RUN install-php-extensions pdo_pgsql intl opcache
|
|
@@ -53,7 +53,7 @@ ESTRATEGIA DE DESPLIEGUE
|
|
|
53
53
|
──────────────────────────────────────────────────────────────
|
|
54
54
|
|
|
55
55
|
Metodo: {Docker Compose / Kubernetes / Standalone Binary}
|
|
56
|
-
Imagen: dunglas/frankenphp:1.
|
|
56
|
+
Imagen: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
57
57
|
Worker mode: {si/no}
|
|
58
58
|
|
|
59
59
|
| Decision | Eleccion | Justificacion |
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud infrastructure architecture designer
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architect
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` eliminado (2026-07-01)**: reemplazado por `location`; los endpoints `datacenter` devuelven HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` en lugar de `datacenter`. Provider Terraform de Hetzner Cloud >= 1.70.0. Fuente: https://docs.hetzner.cloud/changelog y https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidad
|
|
11
11
|
|
|
@@ -135,7 +135,7 @@ hcloud placement-group create --name web-spread --type spread
|
|
|
135
135
|
# Servidores
|
|
136
136
|
hcloud server create \
|
|
137
137
|
--name web-01 \
|
|
138
|
-
--type
|
|
138
|
+
--type cx23 \
|
|
139
139
|
--image ubuntu-24.04 \
|
|
140
140
|
--location fsn1 \
|
|
141
141
|
--ssh-key deploy-key \
|
|
@@ -199,13 +199,23 @@ hcloud network add-subnet primary-net --type cloud --network-zone eu-central --i
|
|
|
199
199
|
|
|
200
200
|
# Servidores en diferentes ubicaciones con grupos de ubicación
|
|
201
201
|
hcloud placement-group create --name pg-primary --type spread
|
|
202
|
-
hcloud server create --name app-fsn-01 --type
|
|
202
|
+
hcloud server create --name app-fsn-01 --type cpx32 --image ubuntu-24.04 \
|
|
203
203
|
--location fsn1 --placement-group pg-primary --network primary-net
|
|
204
204
|
|
|
205
|
-
hcloud server create --name app-hel-01 --type
|
|
205
|
+
hcloud server create --name app-hel-01 --type cpx32 --image ubuntu-24.04 \
|
|
206
206
|
--location hel1 --network primary-net
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
+
## Cambios de la API de Hetzner a tener en cuenta (2026)
|
|
210
|
+
|
|
211
|
+
- Los Load Balancers aceptan Primary IPs existentes al crearse (`public_net.ipv4` / `public_net.ipv6`; provider >= 1.70.0: `ipv4_id` / `ipv6_id`); la asignación no puede cambiarse después (changelog 2026-10-05)
|
|
212
|
+
- Las Primary IP y Floating IP deben desasignarse antes de eliminarse: la API devuelve `must_be_unassigned` (desde 2026-05-01)
|
|
213
|
+
- `dns_ptr` es obligatorio en las peticiones de modificación (Primary IPs, Floating IPs, Servers, Load Balancers) desde 2026-09-30; `null` restablece el puntero
|
|
214
|
+
- El campo `deprecated` de los server types se elimina el 2026-11-02: leer `locations[].deprecation` en su lugar (`null` = no obsoleto)
|
|
215
|
+
- El provider Terraform 1.69 abandona Terraform 1.14 (se añade 1.16); mantener el provider hcloud en `>= 1.70.0`, CLI hcloud 1.70.1
|
|
216
|
+
- Los server types cx22/cx32/cx42/cx52 y cpx11-cpx51 ya no se pueden pedir desde 2026-01-01: usar cx23/cx33/cx43/cx53 y cpx12/cpx22/cpx32/cpx42/cpx52/cpx62
|
|
217
|
+
- Ansible: usar la colección `hetzner.hcloud` (7.2.0, requiere un ansible-core reciente, p. ej. 2.21.5) y fijar su versión en `requirements.yml`
|
|
218
|
+
|
|
209
219
|
## Lista de Verificación de Arquitectura
|
|
210
220
|
|
|
211
221
|
### Diseño
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud cost optimization and right-sizing specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Cost Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` eliminado (2026-07-01)**: reemplazado por `location`; los endpoints `datacenter` devuelven HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` en lugar de `datacenter`. Provider Terraform de Hetzner Cloud >= 1.70.0. Fuente: https://docs.hetzner.cloud/changelog y https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidad
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud troubleshooting specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Debug Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` eliminado (2026-07-01)**: reemplazado por `location`; los endpoints `datacenter` devuelven HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` en lugar de `datacenter`. Provider Terraform de Hetzner Cloud >= 1.70.0. Fuente: https://docs.hetzner.cloud/changelog y https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidad
|
|
11
11
|
|
|
@@ -137,7 +137,7 @@ Eres un **Ingeniero Senior de Despliegue en Hetzner Cloud** especializado en int
|
|
|
137
137
|
# Crear nuevo servidor desde imagen
|
|
138
138
|
hcloud server create \
|
|
139
139
|
--name prod-blue-$(date +%s) \
|
|
140
|
-
--type
|
|
140
|
+
--type cpx32 \
|
|
141
141
|
--image ${{ needs.build-image.outputs.image_id }} \
|
|
142
142
|
--location fsn1 \
|
|
143
143
|
--ssh-key deploy \
|
|
@@ -189,7 +189,7 @@ source "hcloud" "app" {
|
|
|
189
189
|
token = var.hcloud_token
|
|
190
190
|
image = "ubuntu-24.04"
|
|
191
191
|
location = "fsn1"
|
|
192
|
-
server_type = "
|
|
192
|
+
server_type = "cx23"
|
|
193
193
|
server_name = "packer-build-{{timestamp}}"
|
|
194
194
|
ssh_username = "root"
|
|
195
195
|
snapshot_name = "app-{{timestamp}}"
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud security and firewall specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Security Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` eliminado (2026-07-01)**: reemplazado por `location`; los endpoints `datacenter` devuelven HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` en lugar de `datacenter`. Provider Terraform de Hetzner Cloud >= 1.70.0. Fuente: https://docs.hetzner.cloud/changelog y https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidad
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ argument-hint: <Project> [constraints]
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architecture
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` eliminado (2026-07-01)**: reemplazado por `location`; los endpoints `datacenter` devuelven HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` en lugar de `datacenter`. Provider Terraform de Hetzner Cloud >= 1.70.0. Fuente: https://docs.hetzner.cloud/changelog y https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
Eres un arquitecto senior de Hetzner Cloud. Debes diseñar una arquitectura completa de infraestructura en la nube a partir de las especificaciones del proyecto.
|
|
11
11
|
|
|
@@ -83,8 +83,8 @@ SELECCIÓN DE TIPOS DE SERVIDOR
|
|
|
83
83
|
|
|
84
84
|
| Rol | Tipo de Servidor | Cantidad | Justificación |
|
|
85
85
|
|-----|-----------------|----------|---------------|
|
|
86
|
-
| Web | {cax21/
|
|
87
|
-
| App | {
|
|
86
|
+
| Web | {cax21/cx23} | {n} | {razón} |
|
|
87
|
+
| App | {cpx32/cax31} | {n} | {razón} |
|
|
88
88
|
| DB | {ccx23/ccx33} | {n} | {razón} |
|
|
89
89
|
|
|
90
90
|
──────────────────────────────────────────────────────────────
|