instant-python 0.21.0__tar.gz → 0.22.0__tar.gz
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.
- instant_python-0.22.0/.agents/commands/code-review.md +36 -0
- instant_python-0.22.0/.agents/commands/commit.md +62 -0
- instant_python-0.22.0/.agents/commands/security-review.md +22 -0
- instant_python-0.22.0/.agents/commands/technical-debt-review.md +33 -0
- instant_python-0.22.0/.agents/skills/adr/SKILL.md +34 -0
- instant_python-0.22.0/.agents/skills/complexity-review/REFERENCE.md +630 -0
- instant_python-0.22.0/.agents/skills/complexity-review/SKILL.md +406 -0
- instant_python-0.22.0/.agents/skills/design-doc/SKILL.md +42 -0
- instant_python-0.22.0/.agents/skills/hamburger-method/REFERENCE.md +586 -0
- instant_python-0.22.0/.agents/skills/hamburger-method/SKILL.md +262 -0
- instant_python-0.22.0/.agents/skills/micro-steps-coach/REFERENCE.md +568 -0
- instant_python-0.22.0/.agents/skills/micro-steps-coach/SKILL.md +354 -0
- instant_python-0.22.0/.agents/skills/mutation-testing/SKILL.md +744 -0
- instant_python-0.22.0/.agents/skills/story-splitting/REFERENCE.md +115 -0
- instant_python-0.22.0/.agents/skills/story-splitting/SKILL.md +429 -0
- instant_python-0.22.0/.agents/skills/test-desiderata/REFERENCE.md +391 -0
- instant_python-0.22.0/.agents/skills/test-desiderata/SKILL.md +192 -0
- instant_python-0.22.0/.agents/skills/xp-refactor/SKILL.md +37 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/workflows/ci.yml +3 -4
- instant_python-0.22.0/.github/workflows/pages.yml +80 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.gitignore +3 -0
- instant_python-0.22.0/AGENTS.md +226 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/CHANGELOG.md +64 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/PKG-INFO +17 -1
- {instant_python-0.21.0 → instant_python-0.22.0}/README.md +15 -0
- instant_python-0.22.0/docs/adrs/adr-guidelines.md +73 -0
- instant_python-0.22.0/docs/design_docs/0001-metrics-middleware-refactor.md +144 -0
- instant_python-0.22.0/docs/design_docs/design-doc-guidelines.md +185 -0
- instant_python-0.22.0/docs/design_docs/technical-debt-review.md +286 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/default_features.md +59 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/template_reference.md +94 -0
- instant_python-0.22.0/instant_python/__init__.py +1 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/delivery/metrics_middleware.py +3 -1
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/supported_built_in_features.py +1 -0
- instant_python-0.21.0/instant_python/templates/boilerplate/.pre-commit-config.yml → instant_python-0.22.0/instant_python/templates/boilerplate/.pre-commit-config.yaml +1 -1
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/AGENTS.md +226 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/adr-guidelines.md +73 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/commands/code-review.md +36 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/commands/commit.md +62 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/commands/security-review.md +22 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/commands/technical-debt-review.md +33 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/design-doc-guidelines.md +185 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/adr/SKILL.md +34 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/complexity-review/REFERENCE.md +630 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/complexity-review/SKILL.md +406 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/design-doc/SKILL.md +42 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/hamburger-method/REFERENCE.md +586 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/hamburger-method/SKILL.md +262 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/micro-steps-coach/REFERENCE.md +570 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/micro-steps-coach/SKILL.md +354 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/mutation-testing/SKILL.md +744 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/story-splitting/REFERENCE.md +115 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/story-splitting/SKILL.md +429 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/test-desiderata/REFERENCE.md +391 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/test-desiderata/SKILL.md +192 -0
- instant_python-0.22.0/instant_python/templates/boilerplate/agents/skills/xp-refactor/SKILL.md +37 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/pyproject.toml +32 -5
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/makefile +20 -1
- instant_python-0.22.0/instant_python/templates/project_structure/agents/agents.yml +129 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/main_structure.yml +2 -3
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml +2 -3
- instant_python-0.22.0/instant_python/templates/project_structure/github/precommit_hook.yml +4 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/main_structure.yml +2 -3
- {instant_python-0.21.0 → instant_python-0.22.0}/makefile +16 -1
- {instant_python-0.21.0 → instant_python-0.22.0}/mkdocs.yml +2 -1
- instant_python-0.22.0/opencode.json +10 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/pyproject.toml +6 -5
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_template_section_combinations.approved.txt +4 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/test_init_cli.py +18 -2
- {instant_python-0.21.0 → instant_python-0.22.0}/tox.ini +5 -1
- instant_python-0.22.0/uv.lock +3691 -0
- instant_python-0.21.0/.github/workflows/pages.yml +0 -34
- instant_python-0.21.0/instant_python/__init__.py +0 -1
- instant_python-0.21.0/instant_python/templates/boilerplate/pytest.ini +0 -10
- instant_python-0.21.0/instant_python/templates/project_structure/config_files/pytest.yml +0 -4
- instant_python-0.21.0/instant_python/templates/project_structure/github/precommit_hook.yml +0 -4
- instant_python-0.21.0/uv.lock +0 -3207
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/FUNDING.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/actions/python_setup/action.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/pull_request_template.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.github/workflows/release.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.pre-commit-config.yaml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/.python-version +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/CITATION.cff +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/LICENSE +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/SECURITY.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/codeql-config.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/changelog_header.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/changelog_init.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/changelog_update.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/changes.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/first_release.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/macros.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/.release_notes.md.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/docs/changelog/CHANGELOG.md.j2 +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/assets/favicon.svg +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/assets/logo.svg +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/development/contributing.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/development/releases.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/development/security.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/downloads_macro.py +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/getting_started/first_steps.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/getting_started/installation.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/getting_started/privacy_and_metrics.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/command_config.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/command_init.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/custom_projects.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/guide/index.md +0 -0
- {instant_python-0.21.0/docs → instant_python-0.22.0/docs/documentation}/home/index.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/cli/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/cli/cli.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/cli/instant_python_typer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/application/config_generator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/delivery/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/delivery/cli.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/domain/question_wizard.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/general_step.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/application/project_initializer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/delivery/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/delivery/cli.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/env_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/node.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/project_formatter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/project_renderer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/project_structure.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/project_writer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/domain/version_control_configurer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/env_manager/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/env_manager/env_manager_factory.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/env_manager/pdm_env_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/env_manager/system_console.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/env_manager/uv_env_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/formatter/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/formatter/ruff_project_formatter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/renderer/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/renderer/jinja_environment.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/renderer/jinja_project_renderer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/version_control/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/version_control/git_configurer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/writer/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/initialize/infra/writer/file_system_project_writer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/application/config_snapshot_creator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/application/usage_metrics_sender.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/delivery/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/domain/config_snapshot.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/domain/error_metrics_event.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/domain/metrics_reporter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/domain/usage_metrics_data.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/infra/post_hog_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/infra/post_hog_metrics_reporter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/metrics/infra/user_identity_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/application_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/config_repository.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/config_schema.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/dependency_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/general_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/git_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/domain/template_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/infra/persistence/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/infra/persistence/yaml_config_repository.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/supported_licenses.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/supported_managers.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/supported_python_versions.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/shared/supported_templates.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/.python-version +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/CITATION.cff +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/LICENSE +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/README.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/SECURITY.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/base_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/github/ci.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/github/release.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/async_session.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/application.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/source.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/clean_architecture/test.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/config_files/gitignore.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/config_files/mypy.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/config_files/pyproject.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/config_files/python_version.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/documentation/citation.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/documentation/license.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/documentation/readme.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/documentation/security.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/bounded_context.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/source.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/domain_driven_design/test.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/errors.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/events/event_bus_domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/events/event_bus_infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/events/mock_event_bus.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/fastapi/fastapi_app.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/fastapi/fastapi_domain.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/fastapi/fastapi_infra.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/github/github_action.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/github/github_issues_template.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/github/makefile.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/logger.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/macros.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/alembic_migrator.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/async_alembic.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/async_engine_conftest.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/async_sqlalchemy.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/persistence.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/persistence/synchronous_sqlalchemy.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/layers/source_features.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/layers/test_features.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/source.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/instant_python/templates/project_structure/standard_project/test.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/mypy.ini +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/schemas/ipy-schema.json +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/schemas/main-structure-schema.json +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/cli/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/cli/test_version_command.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/config/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/config/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/config/application/test_config_generator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/application/test_project_initializer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approvaltests_config.json +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_custom_project_structure.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_git_section_combinations.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_predefined_dependencies_and_different_managers.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/domain/mothers/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/domain/mothers/node_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/domain/mothers/project_structure_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/domain/test_node.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/mother/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/mother/command_execution_result_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/test_pdm_env_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/test_system_console.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/env_manager/test_uv_env_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/formatter/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/formatter/test_ruff_project_formatter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/renderer/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/renderer/test_jinja_environment.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/renderer/test_jinja_project_renderer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/version_control/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/version_control/test_git_configurer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_file_in_file_system.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_python_module_in_file_system.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_standard_directory_in_file_system.approved.txt +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/writer/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/initialize/infra/writer/test_file_system_project_writer.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/application/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/application/test_config_snapshot_creator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/application/test_usage_metrics_sender.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/domain/config_snapshot_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/domain/error_metrics_event_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/domain/usage_metrics_event_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/cassettes/error_posthog_reporter.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/cassettes/success_posthog_reporter.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/test_post_hog_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/test_post_hog_metrics_reporter.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/metrics/infra/test_user_identity_manager.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/random_generator.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/resources/base_ipy_config.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/resources/domain_error_template.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/resources/hello_world.j2 +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/resources/main_structure.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/resources/standard_project/main_structure.yml +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/config_schema_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/dependency_config_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/general_config_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/git_config_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/mothers/template_config_mother.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/test_config_schema.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/test_dependency_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/test_general_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/test_git_config.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/domain/test_template_configuration.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/persistence/__init__.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/shared/persistence/test_yaml_config_repository.py +0 -0
- {instant_python-0.21.0 → instant_python-0.22.0}/test/utils.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
## Senior XP Developer — Pending Changes Review (Tests, Maintainability, Project Rules)
|
|
2
|
+
|
|
3
|
+
Act as a **Senior XP Developer** performing a thoughtful code review of the **pending, uncommitted changes**.
|
|
4
|
+
Focus on **test quality**, **maintainability**, **simplicity**, and **alignment with project rules and standards**.
|
|
5
|
+
|
|
6
|
+
### Task
|
|
7
|
+
Review the pending changes with attention to:
|
|
8
|
+
|
|
9
|
+
1. **Test Coverage & Quality**
|
|
10
|
+
- Are new behaviors backed by clear, intention-revealing tests?
|
|
11
|
+
- Do tests follow the project's testing style (naming, structure, speed, isolation)?
|
|
12
|
+
- Are edge cases, failure paths, and boundaries tested?
|
|
13
|
+
- Do tests help prevent regressions and clarify expected behavior?
|
|
14
|
+
|
|
15
|
+
2. **Maintainability & Simplicity**
|
|
16
|
+
- Is the code easy to understand at a glance?
|
|
17
|
+
- Are names clear and aligned with domain concepts?
|
|
18
|
+
- Is there unnecessary complexity that could be simplified?
|
|
19
|
+
- Are functions/classes/modules small, cohesive, and well-factored?
|
|
20
|
+
- Does the change make the system easier or harder to evolve?
|
|
21
|
+
|
|
22
|
+
3. **Project Rules & Conventions**
|
|
23
|
+
- Validate the changes against the project’s explicit rules (coding standards, architectural guidelines, patterns, constraints).
|
|
24
|
+
- Check that dependencies, error handling, and logging follow the agreed practices.
|
|
25
|
+
- Identify deviations and justify whether they are acceptable or need correction.
|
|
26
|
+
|
|
27
|
+
4. **Risk & Impact**
|
|
28
|
+
- Highlight areas likely to fail in production or introduce hidden coupling.
|
|
29
|
+
- Call out missing tests for critical paths.
|
|
30
|
+
- Evaluate how the change affects overall reliability and flow.
|
|
31
|
+
|
|
32
|
+
### Deliverables
|
|
33
|
+
Provide:
|
|
34
|
+
- A **structured review** detailing strengths and weaknesses.
|
|
35
|
+
- **Specific, actionable improvements** to increase clarity, testability, and alignment with project rules.
|
|
36
|
+
- A brief final summary: *Is this change ready to commit? If not, what is the smallest next improvement?*
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: commit
|
|
3
|
+
description: Split uncommitted changes into atomic conventional commits with a focus on why each change was made. Use only when the user explicitly invokes this command.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Split the currently uncommitted changes into multiple atomic conventional commits. This command is **conversational**: you will ask the user before every decision.
|
|
7
|
+
|
|
8
|
+
## Steps
|
|
9
|
+
|
|
10
|
+
1. Run `git status` and `git diff` (staged + unstaged) to see everything that exists. For files with multiple unrelated hunks, also inspect `git diff` per file.
|
|
11
|
+
|
|
12
|
+
2. Propose a grouping plan: list each commit you would create, which files (or hunks) go into it, and the conventional commit subject you suggest. Show this as a numbered list. Each commit must represent a **chunk of correct functional code** — it should compile and work on its own.
|
|
13
|
+
|
|
14
|
+
3. **Ask the user** to confirm or correct the grouping before doing anything.
|
|
15
|
+
|
|
16
|
+
4. For each commit in the agreed order:
|
|
17
|
+
- Stage exactly the files (or hunks via `git add -p` if needed) that belong to this commit. Never use `git add .` or `git add -A`.
|
|
18
|
+
- Draft a subject line and **optional body** that explain **why** the change was made, not just what changed. Ask yourself: does the commit benefit from extra context? If yes, include a body. If the subject already tells the full story, omit the body.
|
|
19
|
+
- Confirm the subject and body (if any) with the user.
|
|
20
|
+
- Commit with the subject line only, or subject + body if applicable.
|
|
21
|
+
- Run `git status` to confirm only the intended files were committed.
|
|
22
|
+
|
|
23
|
+
5. After the last commit, run `git status` and `git log --oneline` so the user can verify the result.
|
|
24
|
+
|
|
25
|
+
## Commit message guidance
|
|
26
|
+
|
|
27
|
+
- The subject should express **intent**: *what was done and why* (e.g., `feat(api): add rate limiting to prevent abuse` rather than `feat(api): add rate limiting`).
|
|
28
|
+
- Add a body only when the subject alone doesn't capture the reasoning. The body is for context: trade-offs considered, alternatives rejected, or non-obvious implications.
|
|
29
|
+
- Use `!` after the type/scope to mark a breaking change (e.g., `feat(api)!: remove deprecated v1 endpoints`). If breaking, also include a `BREAKING CHANGE:` trailer in the body explaining the migration path.
|
|
30
|
+
- Reference issues with `Closes #123`, `Fixes #456`, or `Refs #789` in the body when applicable.
|
|
31
|
+
- If in doubt about whether a body adds value, ask the user.
|
|
32
|
+
|
|
33
|
+
## Commit types
|
|
34
|
+
|
|
35
|
+
| Type | When to use |
|
|
36
|
+
|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
37
|
+
| `feat` | Code changes that add new functionality, modify existing behavior/return values (often breaks tests), or remove a feature. |
|
|
38
|
+
| `fix` | Changes that fix a bug — either an unidentified bug, or a test that broke after a behavior change and needs correction. |
|
|
39
|
+
| `refactor` | Changes that modify existing code without altering its behavior: type hints, removing unused imports, renaming variables, etc. |
|
|
40
|
+
| `test` | Changes related only to tests: object mothers, fixing a test that was incorrectly implemented, renaming test variables, reorganizing test structure. |
|
|
41
|
+
| `style` | Formatting changes that don't modify code behavior (whitespace, formatting, etc.). |
|
|
42
|
+
| `build` | Changes to the build process, dependencies, or tooling that don't affect code behavior. |
|
|
43
|
+
| `docs` | Documentation changes like README, ADRs, or design docs. |
|
|
44
|
+
| `chore` | Changes that don't fit other types and don't touch src, tests, or docs (e.g., .gitignore, editor config). |
|
|
45
|
+
| `ci` | Changes to CI/CD pipeline files or configuration. |
|
|
46
|
+
| `perf` | Performance improvements that change behaviour to make it faster. |
|
|
47
|
+
|
|
48
|
+
## Questions you should ask
|
|
49
|
+
|
|
50
|
+
- Is this grouping correct, or should X go with Y instead?
|
|
51
|
+
- For the proposed subject `feat(api): add rate limiting to prevent abuse`, is the scope right?
|
|
52
|
+
- Does this commit deserve a body, or is the subject enough?
|
|
53
|
+
- Should any change be discarded instead of committed?
|
|
54
|
+
|
|
55
|
+
Err on the side of asking more rather than less.
|
|
56
|
+
|
|
57
|
+
## Hard rules
|
|
58
|
+
|
|
59
|
+
- **No Claude attribution.** Never add `Co-Authored-By: Claude`, `🤖 Generated with Claude Code`, or any similar footer.
|
|
60
|
+
- **No `--no-verify`.** If a hook fails, stop and ask the user.
|
|
61
|
+
- **Never bundle unrelated changes.** If two changes share a file but belong in different commits, use `git add -p` to split them.
|
|
62
|
+
- **Do not push.**
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
## Security Expert — Deep, Pragmatic Risk Analysis
|
|
2
|
+
|
|
3
|
+
Act as a **senior security expert** with experience in **OWASP**, **threat modeling**, **cloud security**, **secure engineering**, and **production risk assessment**. Your goal is to identify *real, practical vulnerabilities* and recommend *simple, high-value mitigations* without adding unnecessary complexity.
|
|
4
|
+
|
|
5
|
+
### Task
|
|
6
|
+
**Analyze the code, architecture, or system from a security perspective**, focusing on:
|
|
7
|
+
|
|
8
|
+
- Attack surface and weak entry points
|
|
9
|
+
- Insufficient validation, untrusted inputs, injection vectors
|
|
10
|
+
- Dependency risks, secret/credential exposure, unsafe configuration
|
|
11
|
+
- Common failure modes: insecure deserialization, session issues, broken authorization, etc.
|
|
12
|
+
- Behavior under stress, unexpected conditions, or malformed data
|
|
13
|
+
|
|
14
|
+
### Deliverables
|
|
15
|
+
Provide:
|
|
16
|
+
|
|
17
|
+
1. **Identified risks**, clearly described and prioritized
|
|
18
|
+
2. **Realistic exploitation scenarios** showing how each risk could impact production
|
|
19
|
+
3. **Concrete, lightweight mitigations** to reduce risk without adding friction
|
|
20
|
+
4. **Ongoing defensive practices** to keep the system secure over time
|
|
21
|
+
|
|
22
|
+
Stay pragmatic: minimal complexity, maximum clarity, high reliability.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## Senior XP Developer — Technical Debt Analysis
|
|
2
|
+
|
|
3
|
+
Act as a **Senior XP Developer** with **Lean thinking** and a focus on sustainable pace.
|
|
4
|
+
|
|
5
|
+
### Task
|
|
6
|
+
**Identify and prioritize technical debt** in the codebase:
|
|
7
|
+
|
|
8
|
+
1. **Catalog debt items**
|
|
9
|
+
- Code smells (long methods, god classes, primitive obsession, etc.)
|
|
10
|
+
- Missing or weak tests
|
|
11
|
+
- Outdated dependencies
|
|
12
|
+
- Unclear or misleading names
|
|
13
|
+
- Duplicated logic
|
|
14
|
+
- Broken windows (small issues left unfixed)
|
|
15
|
+
|
|
16
|
+
2. **Classify by type**
|
|
17
|
+
- **Deliberate/Prudent**: Conscious trade-offs made knowingly
|
|
18
|
+
- **Inadvertent/Reckless**: Mistakes or lack of knowledge
|
|
19
|
+
- **Bit rot**: Accumulated entropy over time
|
|
20
|
+
|
|
21
|
+
3. **Prioritize by ROI**
|
|
22
|
+
- Impact on current development flow
|
|
23
|
+
- Risk to production reliability
|
|
24
|
+
- Cost of deferral vs. cost of fix
|
|
25
|
+
- Frequency of change in affected area
|
|
26
|
+
|
|
27
|
+
### Deliverables
|
|
28
|
+
- **Top 5 debt items** with clear descriptions
|
|
29
|
+
- **Recommended payoff order** with rationale
|
|
30
|
+
- **Quick wins**: items fixable in < 30 minutes
|
|
31
|
+
- **Strategic debt**: items to defer consciously (and why)
|
|
32
|
+
|
|
33
|
+
**Keep the codebase healthy. Pay debt before it compounds.**
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: adr
|
|
3
|
+
description: Create or improve adr documentation based on the current conversation. Use this when a plan has been created and changes
|
|
4
|
+
were requested because it didn’t follow the repository’s conventions.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Based on the current conversation, create new or improve existing documentation files inside the `docs/adrs` folder.
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Identify conventions, patterns, or decisions discussed in the conversation that should be documented.
|
|
12
|
+
2. Check if a relevant doc already exists in `docs/adrs` (organized by area: `testing/`, `database/`, etc.).
|
|
13
|
+
- If it exists, improve it while preserving the required structure.
|
|
14
|
+
- If it does not exist, create a new file in the appropriate subfolder.
|
|
15
|
+
3. Read `docs/adrs/adr-guidelines.md` and follow its structure exactly. Every document MUST include these sections in order:
|
|
16
|
+
```
|
|
17
|
+
# Name of the convention
|
|
18
|
+
|
|
19
|
+
## Convention
|
|
20
|
+
## Benefits
|
|
21
|
+
## Examples (with Good and Bad subsections)
|
|
22
|
+
## Real world examples
|
|
23
|
+
## Related agreements
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
4. Ask the user to confirm the target file path before writing.
|
|
27
|
+
5. Update the AGENTS.md index with the new doc.
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
|
|
31
|
+
- Each convention goes in its own standalone Markdown file — never bundle multiple conventions into one doc.
|
|
32
|
+
- Place files in the correct area subfolder (`database/`, `testing/`, etc.).
|
|
33
|
+
- Include concrete good and bad examples with code blocks when applicable.
|
|
34
|
+
- Link to real files in the codebase that follow the convention in the "Real world examples" section.
|