statuspro-openapi-client 0.1.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.
- statuspro_openapi_client-0.1.0/.claude/agents/code-modernizer.md +96 -0
- statuspro_openapi_client-0.1.0/.claude/agents/pr-preparer.md +84 -0
- statuspro_openapi_client-0.1.0/.claude/agents/spec-auditor.md +64 -0
- statuspro_openapi_client-0.1.0/.claude/commands/generate-docs.md +116 -0
- statuspro_openapi_client-0.1.0/.claude/commands/pre-commit.md +65 -0
- statuspro_openapi_client-0.1.0/.claude/commands/review.md +101 -0
- statuspro_openapi_client-0.1.0/.claude/commands/techdebt.md +95 -0
- statuspro_openapi_client-0.1.0/.claude/commands/verify.md +101 -0
- statuspro_openapi_client-0.1.0/.claude/commands/write-tests.md +81 -0
- statuspro_openapi_client-0.1.0/.claude/skills/open-pr/SKILL.md +246 -0
- statuspro_openapi_client-0.1.0/.claude/skills/review-pr/SKILL.md +296 -0
- statuspro_openapi_client-0.1.0/.cursorrules +252 -0
- statuspro_openapi_client-0.1.0/.devcontainer/README.md +194 -0
- statuspro_openapi_client-0.1.0/.devcontainer/devcontainer.json +77 -0
- statuspro_openapi_client-0.1.0/.devcontainer/oncreate.sh +24 -0
- statuspro_openapi_client-0.1.0/.devcontainer/setup.sh +52 -0
- statuspro_openapi_client-0.1.0/.env.example +27 -0
- statuspro_openapi_client-0.1.0/.github/CODEOWNERS +14 -0
- statuspro_openapi_client-0.1.0/.github/FUNDING.yml +15 -0
- statuspro_openapi_client-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +66 -0
- statuspro_openapi_client-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +51 -0
- statuspro_openapi_client-0.1.0/.github/agents/ci-cd-specialist.agent.md +346 -0
- statuspro_openapi_client-0.1.0/.github/agents/code-reviewer.agent.md +508 -0
- statuspro_openapi_client-0.1.0/.github/agents/documentation-writer.agent.md +528 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/CONTEXT_INVESTIGATION.md +307 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/COPILOT_ARCHITECTURE.md +602 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/README.md +128 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/REFACTORING_SUMMARY.md +627 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/devops/CI_DEBUGGING.md +558 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/devops/CLIENT_REGENERATION.md +592 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/devops/DEPENDENCY_UPDATES.md +439 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/devops/RELEASE_PROCESS.md +480 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/plan/EFFORT_ESTIMATION.md +636 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/plan/ISSUE_TEMPLATES.md +564 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/plan/PLANNING_PROCESS.md +796 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/shared/ARCHITECTURE_QUICK_REF.md +559 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/shared/COMMIT_STANDARDS.md +355 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/shared/FILE_ORGANIZATION.md +445 -0
- statuspro_openapi_client-0.1.0/.github/agents/guides/shared/VALIDATION_TIERS.md +240 -0
- statuspro_openapi_client-0.1.0/.github/agents/project-coordinator.agent.md +529 -0
- statuspro_openapi_client-0.1.0/.github/agents/python-developer.agent.md +426 -0
- statuspro_openapi_client-0.1.0/.github/agents/task-planner.agent.md +262 -0
- statuspro_openapi_client-0.1.0/.github/agents/tdd-specialist.agent.md +626 -0
- statuspro_openapi_client-0.1.0/.github/copilot-instructions.md +405 -0
- statuspro_openapi_client-0.1.0/.github/dependabot.yml +98 -0
- statuspro_openapi_client-0.1.0/.github/instructions/markdown.instructions.md +223 -0
- statuspro_openapi_client-0.1.0/.github/instructions/pytest.instructions.md +224 -0
- statuspro_openapi_client-0.1.0/.github/instructions/python-mcp-server.instructions.md +200 -0
- statuspro_openapi_client-0.1.0/.github/instructions/python.instructions.md +205 -0
- statuspro_openapi_client-0.1.0/.github/prompts/breakdown-feature.prompt.md +199 -0
- statuspro_openapi_client-0.1.0/.github/prompts/create-adr.prompt.md +121 -0
- statuspro_openapi_client-0.1.0/.github/prompts/create-test.prompt.md +166 -0
- statuspro_openapi_client-0.1.0/.github/prompts/regenerate-client.prompt.md +113 -0
- statuspro_openapi_client-0.1.0/.github/prompts/update-docs.prompt.md +198 -0
- statuspro_openapi_client-0.1.0/.github/pull_request_template.md +40 -0
- statuspro_openapi_client-0.1.0/.github/workflows/README.md +291 -0
- statuspro_openapi_client-0.1.0/.github/workflows/ci.yml +126 -0
- statuspro_openapi_client-0.1.0/.github/workflows/codespaces-prebuild.yml +33 -0
- statuspro_openapi_client-0.1.0/.github/workflows/copilot-setup-steps.yml +79 -0
- statuspro_openapi_client-0.1.0/.github/workflows/docs.yml +62 -0
- statuspro_openapi_client-0.1.0/.github/workflows/release-mcp.yml +67 -0
- statuspro_openapi_client-0.1.0/.github/workflows/release-ts.yml +136 -0
- statuspro_openapi_client-0.1.0/.github/workflows/release.yml +314 -0
- statuspro_openapi_client-0.1.0/.github/workflows/security.yml +63 -0
- statuspro_openapi_client-0.1.0/.github/workflows/update-mcp-dependency.yml +106 -0
- statuspro_openapi_client-0.1.0/.gitignore +179 -0
- statuspro_openapi_client-0.1.0/.mcp.json +34 -0
- statuspro_openapi_client-0.1.0/.mdformatignore +1 -0
- statuspro_openapi_client-0.1.0/.pre-commit-config.yaml +59 -0
- statuspro_openapi_client-0.1.0/.yamllint.yml +48 -0
- statuspro_openapi_client-0.1.0/AGENT_WORKFLOW.md +1156 -0
- statuspro_openapi_client-0.1.0/CLAUDE.md +266 -0
- statuspro_openapi_client-0.1.0/LICENSE +21 -0
- statuspro_openapi_client-0.1.0/PKG-INFO +337 -0
- statuspro_openapi_client-0.1.0/README.md +266 -0
- statuspro_openapi_client-0.1.0/docs/CHANGELOG.md +17 -0
- statuspro_openapi_client-0.1.0/docs/CODE_OF_CONDUCT.md +121 -0
- statuspro_openapi_client-0.1.0/docs/CONTRIBUTING.md +298 -0
- statuspro_openapi_client-0.1.0/docs/MONOREPO_SEMANTIC_RELEASE.md +345 -0
- statuspro_openapi_client-0.1.0/docs/PYPI_SETUP.md +161 -0
- statuspro_openapi_client-0.1.0/docs/README.md +125 -0
- statuspro_openapi_client-0.1.0/docs/RELEASE.md +318 -0
- statuspro_openapi_client-0.1.0/docs/UV_USAGE.md +410 -0
- statuspro_openapi_client-0.1.0/docs/adr/0009-migrate-from-poetry-to-uv.md +353 -0
- statuspro_openapi_client-0.1.0/docs/adr/0013-module-local-documentation.md +172 -0
- statuspro_openapi_client-0.1.0/docs/adr/0014-github-copilot-custom-agents.md +240 -0
- statuspro_openapi_client-0.1.0/docs/adr/README.md +77 -0
- statuspro_openapi_client-0.1.0/docs/adr/template.md +61 -0
- statuspro_openapi_client-0.1.0/docs/client/CHANGELOG.md +10 -0
- statuspro_openapi_client-0.1.0/docs/client/CHANGELOG.pending.md +3 -0
- statuspro_openapi_client-0.1.0/docs/client/README.md +31 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0001-transport-layer-resilience.md +177 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0002-openapi-code-generation.md +192 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0003-transparent-pagination.md +290 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0004-defer-observability-to-httpx.md +280 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0005-sync-async-apis.md +270 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0006-response-unwrapping-utilities.md +293 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0008-avoid-builder-pattern.md +263 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0011-pydantic-domain-models.md +165 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/0012-validation-tiers-for-agent-workflows.md +148 -0
- statuspro_openapi_client-0.1.0/docs/client/adr/README.md +45 -0
- statuspro_openapi_client-0.1.0/docs/client/cookbook.md +192 -0
- statuspro_openapi_client-0.1.0/docs/client/guide.md +270 -0
- statuspro_openapi_client-0.1.0/docs/client/testing.md +239 -0
- statuspro_openapi_client-0.1.0/docs/css/mkdocstrings.css +71 -0
- statuspro_openapi_client-0.1.0/docs/gen_ref_pages.py +45 -0
- statuspro_openapi_client-0.1.0/docs/index.md +141 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/LOGGING.md +471 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/README.md +37 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/adr/0016-tool-interface-pattern.md +223 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/adr/0017-automated-tool-documentation.md +333 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/adr/README.md +42 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/deployment.md +388 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/development.md +376 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/docker.md +276 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/examples.md +133 -0
- statuspro_openapi_client-0.1.0/docs/mcp-server/index.md +1 -0
- statuspro_openapi_client-0.1.0/docs/openapi-docs.md +60 -0
- statuspro_openapi_client-0.1.0/docs/statuspro-openapi.yaml +859 -0
- statuspro_openapi_client-0.1.0/examples/README.md +32 -0
- statuspro_openapi_client-0.1.0/mkdocs.yml +181 -0
- statuspro_openapi_client-0.1.0/openapi-python-client-config.yml +6 -0
- statuspro_openapi_client-0.1.0/package.json +32 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/.gitignore +11 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/.releaserc.json +77 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/README.md +236 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/biome.json +32 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/README.md +45 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0001-composable-fetch-wrappers.md +146 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0002-hey-api-code-generation.md +139 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0003-biome-for-linting.md +160 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/README.md +47 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/cookbook.md +223 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/guide.md +240 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/testing.md +492 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/openapi-ts.config.ts +14 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/package.json +82 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/client.ts +422 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/errors.ts +209 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/client.gen.ts +301 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/index.ts +25 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/types.gen.ts +242 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/utils.gen.ts +337 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client.gen.ts +27 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/auth.gen.ts +42 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/bodySerializer.gen.ts +100 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/params.gen.ts +176 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/pathSerializer.gen.ts +180 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/queryKeySerializer.gen.ts +136 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/serverSentEvents.gen.ts +266 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/types.gen.ts +118 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/utils.gen.ts +143 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/index.ts +4 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/sdk.gen.ts +228 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/types.gen.ts +596 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/index.ts +61 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/transport/pagination.ts +364 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/transport/resilient.ts +224 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/src/types.ts +14 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/client.test.ts +281 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/errors.test.ts +182 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/sdk-integration.test.ts +188 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/transport/pagination.test.ts +460 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/transport/retry.test.ts +278 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tsconfig.json +27 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/tsup.config.ts +22 -0
- statuspro_openapi_client-0.1.0/packages/statuspro-client/vitest.config.ts +15 -0
- statuspro_openapi_client-0.1.0/pnpm-lock.yaml +4928 -0
- statuspro_openapi_client-0.1.0/pnpm-workspace.yaml +2 -0
- statuspro_openapi_client-0.1.0/pyproject.toml +626 -0
- statuspro_openapi_client-0.1.0/pyrightconfig.json +29 -0
- statuspro_openapi_client-0.1.0/redocly.yaml +16 -0
- statuspro_openapi_client-0.1.0/scripts/__init__.py +1 -0
- statuspro_openapi_client-0.1.0/scripts/analyze_coverage.py +314 -0
- statuspro_openapi_client-0.1.0/scripts/check_generated_client_ast.py +70 -0
- statuspro_openapi_client-0.1.0/scripts/generate_pydantic_models.py +954 -0
- statuspro_openapi_client-0.1.0/scripts/generate_tools_json.py +232 -0
- statuspro_openapi_client-0.1.0/scripts/regenerate_client.py +782 -0
- statuspro_openapi_client-0.1.0/scripts/start_mcp_server.sh +103 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/.claude-desktop-config.example.json +20 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/.dockerignore +40 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/.env.example +26 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/CHANGELOG.md +5 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/Dockerfile +46 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/MCP_CURSOR_SETUP.md +176 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/README.md +307 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/docker-compose.yml +49 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/pyproject.toml +124 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/README.md +1 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/__init__.py +36 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/__main__.py +46 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/_fastmcp_patches.py +182 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/logging.py +321 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/prompts/__init__.py +15 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/__init__.py +25 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/help.py +66 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/statuses.py +30 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/server.py +302 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/services/__init__.py +12 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/services/dependencies.py +35 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/templates/__init__.py +69 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/__init__.py +20 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/orders.py +367 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/schemas.py +57 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/statuses.py +56 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/unpack.py +266 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/__init__.py +1 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/conftest.py +78 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_logging.py +247 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_observability_decorators.py +328 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_package.py +47 -0
- statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_unpack.py +272 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/__init__.py +36 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/_logging.py +33 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/__init__.py +1 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/__init__.py +1 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/add_order_comment.py +215 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/bulk_update_order_status.py +194 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/get_order.py +188 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/get_viable_statuses.py +193 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/list_orders.py +366 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/lookup_order.py +208 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/set_order_due_date.py +215 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/update_order_status.py +215 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/statuses/__init__.py +1 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/statuses/get_statuses.py +161 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/__init__.py +15 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_namespace.py +40 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_registry.py +43 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_resource.py +116 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/client.py +267 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/client_types.py +54 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/__init__.py +33 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/base.py +117 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/converters.py +71 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/order.py +87 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/status.py +30 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/errors.py +16 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/__init__.py +21 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/base.py +26 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/orders.py +78 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/statuses.py +37 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/log_setup.py +99 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/__init__.py +53 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/add_order_comment_request.py +68 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/bulk_status_update_request.py +124 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/bulk_status_update_response.py +72 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/customer.py +74 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/error_response.py +58 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/history_item.py +171 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/list_orders_financial_status_item.py +15 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/list_orders_fulfillment_status_item.py +11 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/locale_translation.py +66 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/mail_log.py +82 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/message_response.py +58 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_item.py +180 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_meta.py +120 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_response.py +81 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_response.py +220 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/progress_timeline_item.py +93 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/set_due_date_request.py +95 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status.py +190 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status_definition.py +82 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status_translations.py +62 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/update_order_status_request.py +92 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/validation_error_response.py +81 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/validation_error_response_errors.py +54 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/viable_status.py +82 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/__init__.py +122 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_auto_registry.py +115 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_base.py +349 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/__init__.py +53 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/errors.py +24 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/orders.py +136 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/statuses.py +25 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_registry.py +171 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/converters.py +184 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/py.typed +1 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/statuspro_client.py +1156 -0
- statuspro_openapi_client-0.1.0/statuspro_public_api_client/utils.py +290 -0
- statuspro_openapi_client-0.1.0/tests/conftest.py +314 -0
- statuspro_openapi_client-0.1.0/tests/test_documentation.py +154 -0
- statuspro_openapi_client-0.1.0/tests/test_generated_client.py +218 -0
- statuspro_openapi_client-0.1.0/tests/test_openapi_specification.py +193 -0
- statuspro_openapi_client-0.1.0/tests/test_rate_limit_retry.py +460 -0
- statuspro_openapi_client-0.1.0/tests/test_statuspro_client.py +661 -0
- statuspro_openapi_client-0.1.0/tests/test_statuspro_client_init.py +613 -0
- statuspro_openapi_client-0.1.0/tests/test_transport_integration.py +106 -0
- statuspro_openapi_client-0.1.0/uv.lock +3493 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Code Modernizer
|
|
2
|
+
|
|
3
|
+
Simplify and modernize editable code while respecting this repo's generated file
|
|
4
|
+
boundaries and established patterns.
|
|
5
|
+
|
|
6
|
+
## Mission
|
|
7
|
+
|
|
8
|
+
Find and fix outdated patterns, anti-patterns, and unnecessarily complex code in
|
|
9
|
+
editable files. This agent has repo-specific knowledge that the generic `/simplify`
|
|
10
|
+
skill lacks.
|
|
11
|
+
|
|
12
|
+
## File Boundaries
|
|
13
|
+
|
|
14
|
+
**ONLY touch editable files.** NEVER modify generated files:
|
|
15
|
+
|
|
16
|
+
- SKIP: `statuspro_public_api_client/api/**/*.py`
|
|
17
|
+
- SKIP: `statuspro_public_api_client/models/**/*.py`
|
|
18
|
+
- SKIP: `statuspro_public_api_client/client.py`
|
|
19
|
+
- SCAN: `statuspro_public_api_client/` (excluding above), `statuspro_mcp_server/`, `tests/`,
|
|
20
|
+
`scripts/`
|
|
21
|
+
|
|
22
|
+
## Detection Rules
|
|
23
|
+
|
|
24
|
+
### UNSET Sentinel Misuse
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
# BAD: raw isinstance check
|
|
28
|
+
if not isinstance(value, type(UNSET)):
|
|
29
|
+
use(value)
|
|
30
|
+
|
|
31
|
+
# GOOD: use unwrap_unset
|
|
32
|
+
use(unwrap_unset(value, default))
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
# BAD: manual None-to-UNSET conversion
|
|
37
|
+
value if value is not None else UNSET
|
|
38
|
+
|
|
39
|
+
# GOOD: use to_unset
|
|
40
|
+
to_unset(value)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Response Handling
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# BAD: manual status code check
|
|
47
|
+
if response.status_code == 200:
|
|
48
|
+
result = response.parsed
|
|
49
|
+
|
|
50
|
+
# GOOD: use helpers
|
|
51
|
+
result = unwrap_as(response, ExpectedType)
|
|
52
|
+
items = unwrap_data(response, default=[])
|
|
53
|
+
if is_success(response): ...
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Architecture Violations
|
|
57
|
+
|
|
58
|
+
- Wrapping API methods with retry logic (resilience is at the transport layer)
|
|
59
|
+
- `hasattr` checks on attrs-defined fields (they always exist, may be UNSET)
|
|
60
|
+
- Broad `except Exception` without re-raise or logging
|
|
61
|
+
|
|
62
|
+
### Code Complexity
|
|
63
|
+
|
|
64
|
+
- Functions with too many parameters (extract a dataclass)
|
|
65
|
+
- Names that shadow builtins (rename them)
|
|
66
|
+
- Deeply nested conditionals (extract early returns or helper functions)
|
|
67
|
+
- Duplicate logic across test fixtures (consolidate into `conftest.py`)
|
|
68
|
+
|
|
69
|
+
## Process
|
|
70
|
+
|
|
71
|
+
1. Scan editable files for each detection rule category
|
|
72
|
+
1. Before rewriting a suspected anti-pattern, verify with the LSP:
|
|
73
|
+
- `hasattr` flag: run `LSP hover` on the attribute. If the type points into an
|
|
74
|
+
attrs-generated model (fields carry `Unset | T`), the rewrite to `unwrap_unset` is
|
|
75
|
+
safe. If hover shows a plain Python class, it may be a real `hasattr` check — leave
|
|
76
|
+
it alone.
|
|
77
|
+
- Dead-code flag: run `LSP findReferences` on the symbol definition. Zero references
|
|
78
|
+
means safe to delete; any reference means it's still wired up.
|
|
79
|
+
1. For each confirmed finding, report the file, line, current pattern, and fix
|
|
80
|
+
1. Apply fixes incrementally (one category at a time)
|
|
81
|
+
1. After each batch of changes, run `uv run poe agent-check` to verify
|
|
82
|
+
1. Summarize all changes made
|
|
83
|
+
|
|
84
|
+
## Constraints
|
|
85
|
+
|
|
86
|
+
- Do not add unnecessary abstractions for one-time patterns
|
|
87
|
+
- Do not add docstrings or type annotations to code you didn't otherwise change
|
|
88
|
+
- Preserve existing test behavior - modernize structure, not assertions
|
|
89
|
+
- If a fix would require changing generated files, note it but skip it
|
|
90
|
+
|
|
91
|
+
## Relationship to /techdebt
|
|
92
|
+
|
|
93
|
+
`/techdebt` is a broad scanner that reports findings across 5 categories (dead code,
|
|
94
|
+
duplication, smells, etc.) without applying fixes. This agent is narrower: it focuses on
|
|
95
|
+
repo-specific anti-patterns and actively applies fixes. Use `/techdebt` to survey, use
|
|
96
|
+
this agent to remediate.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# PR Preparer
|
|
2
|
+
|
|
3
|
+
Mechanical readiness checklist for pull requests. Focuses on process compliance (commit
|
|
4
|
+
format, generated file integrity, coverage thresholds) rather than code quality analysis
|
|
5
|
+
(which `/review` handles). Use this agent for the "is the branch shippable?" question,
|
|
6
|
+
not "is the code good?"
|
|
7
|
+
|
|
8
|
+
## Mission
|
|
9
|
+
|
|
10
|
+
Run a comprehensive readiness assessment and produce a pass/fail report. This is the
|
|
11
|
+
process gate before opening a PR.
|
|
12
|
+
|
|
13
|
+
## Readiness Checks
|
|
14
|
+
|
|
15
|
+
### 1. Validation Suite
|
|
16
|
+
|
|
17
|
+
Run `uv run poe check` (Tier 3 validation - format, lint, type check, tests). All checks
|
|
18
|
+
must pass clean with zero warnings.
|
|
19
|
+
|
|
20
|
+
### 2. Commit Standards
|
|
21
|
+
|
|
22
|
+
Review all commits on this branch (vs main) for:
|
|
23
|
+
|
|
24
|
+
- Conventional commit format: `type(scope): description`
|
|
25
|
+
- Valid types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `build`,
|
|
26
|
+
`ci`, `perf`
|
|
27
|
+
- Valid scopes: `client`, `mcp`, or no scope for cross-cutting changes
|
|
28
|
+
- Breaking changes marked with `!`: `feat(client)!: description`
|
|
29
|
+
- Concise, meaningful descriptions (not "fix stuff" or "updates")
|
|
30
|
+
|
|
31
|
+
### 3. Generated File Integrity
|
|
32
|
+
|
|
33
|
+
- If generated files (`api/**/*.py`, `models/**/*.py`, `client.py`) appear in the diff,
|
|
34
|
+
verify they came from regeneration (spec change + `uv run poe regenerate-client`), not
|
|
35
|
+
manual edits
|
|
36
|
+
- If `docs/statuspro-openapi.yaml` was modified, verify that client was regenerated AND
|
|
37
|
+
pydantic models were regenerated (`uv run poe generate-pydantic`)
|
|
38
|
+
|
|
39
|
+
### 4. Coverage Check
|
|
40
|
+
|
|
41
|
+
- Run `uv run poe test-coverage` and verify core logic maintains 87%+ coverage
|
|
42
|
+
- New code has test coverage for both success and error paths
|
|
43
|
+
- No test files with only happy-path assertions
|
|
44
|
+
|
|
45
|
+
### 5. Documentation
|
|
46
|
+
|
|
47
|
+
- Public functions/classes added or modified have docstrings
|
|
48
|
+
- If an architectural decision was made, check for a corresponding ADR in `docs/adr/`
|
|
49
|
+
- If new patterns or pitfalls were discovered, verify CLAUDE.md was updated
|
|
50
|
+
- If MCP tools were added/modified, verify help resource in
|
|
51
|
+
`statuspro_mcp_server/.../resources/help.py` is in sync
|
|
52
|
+
|
|
53
|
+
### 6. Anti-Pattern Scan
|
|
54
|
+
|
|
55
|
+
Quick scan of the diff for anti-patterns listed in CLAUDE.md's "Known Pitfalls" and
|
|
56
|
+
"Anti-Patterns to Avoid" sections.
|
|
57
|
+
|
|
58
|
+
## Output Format
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
## PR Readiness Report
|
|
62
|
+
|
|
63
|
+
### Status: [READY | NOT READY]
|
|
64
|
+
|
|
65
|
+
### Checks
|
|
66
|
+
- [ ] Validation suite: [PASS/FAIL - details]
|
|
67
|
+
- [ ] Commit standards: [PASS/FAIL - details]
|
|
68
|
+
- [ ] Generated files: [PASS/FAIL - details]
|
|
69
|
+
- [ ] Coverage: [PASS/FAIL - N%]
|
|
70
|
+
- [ ] Documentation: [PASS/FAIL - details]
|
|
71
|
+
- [ ] Anti-patterns: [PASS/FAIL - details]
|
|
72
|
+
|
|
73
|
+
### Blocking Issues
|
|
74
|
+
[List of issues that must be fixed before PR]
|
|
75
|
+
|
|
76
|
+
### Suggestions
|
|
77
|
+
[Non-blocking improvements noticed during review]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Important
|
|
81
|
+
|
|
82
|
+
- Run real commands for every check - do not assume anything passes
|
|
83
|
+
- If `uv run poe check` fails, list specific failures as blocking issues
|
|
84
|
+
- Never suggest `--no-verify` or skipping any check
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Spec Auditor
|
|
2
|
+
|
|
3
|
+
Audit the local OpenAPI spec against the upstream StatusPro API to detect drift, missing
|
|
4
|
+
endpoints, field mismatches, and type discrepancies.
|
|
5
|
+
|
|
6
|
+
## Mission
|
|
7
|
+
|
|
8
|
+
Compare `docs/statuspro-openapi.yaml` (our local spec) against the upstream StatusPro
|
|
9
|
+
spec and identify any differences that need resolution.
|
|
10
|
+
|
|
11
|
+
**Note on upstream source**: StatusPro does not appear to publish their OpenAPI spec at
|
|
12
|
+
a public URL. Until an upstream source is confirmed, treat this agent as operating in
|
|
13
|
+
**local-only mode** — verify internal consistency, cross-check against API behavior
|
|
14
|
+
observed in tests, and flag anything that looks out-of-date. If/when the user provides
|
|
15
|
+
an upstream URL, update this file with the URL and switch to full drift-detection mode.
|
|
16
|
+
|
|
17
|
+
## Knowledge
|
|
18
|
+
|
|
19
|
+
- Local spec lives at `docs/statuspro-openapi.yaml`
|
|
20
|
+
- Generated files (`api/**/*.py`, `models/**/*.py`, `client.py`) are derived from the
|
|
21
|
+
spec via `uv run poe regenerate-client` followed by `uv run poe generate-pydantic`
|
|
22
|
+
- Pydantic models inherit from `StatusProPydanticBase`, which uses `extra="forbid"`;
|
|
23
|
+
the attrs models tolerate unknown fields via `additional_properties`
|
|
24
|
+
- Most list endpoints wrap data in `{"data": [...], "meta": {...}}` (page/per_page
|
|
25
|
+
pagination). Two endpoints return raw arrays: `GET /statuses` and
|
|
26
|
+
`GET /orders/{id}/viable-statuses`
|
|
27
|
+
|
|
28
|
+
## Audit Process
|
|
29
|
+
|
|
30
|
+
1. **If an upstream URL is known**, fetch it and diff paths + schemas. Otherwise,
|
|
31
|
+
skip this step and audit internal consistency only.
|
|
32
|
+
1. **Compare paths**: identify endpoints in upstream but missing locally, and vice versa
|
|
33
|
+
1. **Compare schemas**: for shared endpoints, diff request/response schemas for field
|
|
34
|
+
additions, removals, type changes, and nullable mismatches
|
|
35
|
+
1. **Internal consistency**: every `$ref` resolves; every path referenced in tool or
|
|
36
|
+
helper code exists in the spec
|
|
37
|
+
1. **Check parameter alignment**: path params, query params, request bodies
|
|
38
|
+
|
|
39
|
+
## Output Format
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
## Spec Audit Report
|
|
43
|
+
|
|
44
|
+
### Path Comparison
|
|
45
|
+
- Upstream paths: N (or "upstream not available")
|
|
46
|
+
- Local paths: N
|
|
47
|
+
- Missing locally: [list]
|
|
48
|
+
- Extra locally: [list]
|
|
49
|
+
|
|
50
|
+
### Schema Differences
|
|
51
|
+
For each endpoint with differences:
|
|
52
|
+
- **[METHOD /path]**: [description of difference]
|
|
53
|
+
|
|
54
|
+
### Recommended Actions
|
|
55
|
+
1. [Specific changes to make to docs/statuspro-openapi.yaml]
|
|
56
|
+
2. [Whether regeneration is needed]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Important
|
|
60
|
+
|
|
61
|
+
- NEVER edit generated files directly — only modify `docs/statuspro-openapi.yaml`
|
|
62
|
+
- After spec changes, the pipeline is: edit spec → `uv run poe regenerate-client` →
|
|
63
|
+
`uv run poe generate-pydantic` → `uv run poe agent-check`
|
|
64
|
+
- Never include real user names or emails from API responses in reports or examples
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Generate Documentation
|
|
2
|
+
|
|
3
|
+
Generate or update documentation for the specified code, feature, or architectural
|
|
4
|
+
decision. If no target is specified, identify documentation gaps and address them.
|
|
5
|
+
|
|
6
|
+
## Documentation Types
|
|
7
|
+
|
|
8
|
+
### 1. Docstrings (Google Style)
|
|
9
|
+
|
|
10
|
+
Required for all public functions, classes, and modules:
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
def unwrap_as(response: Response, expected_type: type[T]) -> T:
|
|
14
|
+
"""Extract and validate a parsed response as the expected type.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
response: The HTTP response to unwrap.
|
|
18
|
+
expected_type: The type to validate the parsed response against.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
The parsed response cast to the expected type.
|
|
22
|
+
|
|
23
|
+
Raises:
|
|
24
|
+
AuthenticationError: If the response is 401 Unauthorized.
|
|
25
|
+
ValidationError: If the response is 422 Unprocessable Entity.
|
|
26
|
+
APIError: For other non-success status codes.
|
|
27
|
+
"""
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. Architecture Decision Records (ADRs)
|
|
31
|
+
|
|
32
|
+
For architectural decisions, create an ADR in `docs/adr/`:
|
|
33
|
+
|
|
34
|
+
- Numbering: 4-digit sequential (`0001`, `0002`, etc.)
|
|
35
|
+
- Find next number: `ls docs/adr/*.md | grep -o '[0-9]\{4\}' | sort -n | tail -1`
|
|
36
|
+
- Use the template at `docs/adr/template.md`
|
|
37
|
+
- Update `docs/adr/README.md` index after creating
|
|
38
|
+
|
|
39
|
+
### 3. README Structure Template
|
|
40
|
+
|
|
41
|
+
When creating a new README or major documentation page:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
# Project/Package Name
|
|
45
|
+
|
|
46
|
+
Brief description of what this does and why it exists.
|
|
47
|
+
|
|
48
|
+
## Installation
|
|
49
|
+
|
|
50
|
+
How to install or set up.
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
53
|
+
|
|
54
|
+
Minimal working example to get started fast.
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
Detailed usage patterns with examples.
|
|
59
|
+
|
|
60
|
+
## API Reference
|
|
61
|
+
|
|
62
|
+
Key functions/classes with signatures and descriptions.
|
|
63
|
+
|
|
64
|
+
## Configuration
|
|
65
|
+
|
|
66
|
+
Environment variables, config files, options.
|
|
67
|
+
|
|
68
|
+
## Contributing
|
|
69
|
+
|
|
70
|
+
How to contribute (or link to CONTRIBUTING.md).
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 4. Cookbook Recipes
|
|
74
|
+
|
|
75
|
+
For new usage patterns, add to `docs/COOKBOOK.md`:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
### Recipe: [What You Want to Do]
|
|
79
|
+
|
|
80
|
+
**When to use**: [Scenario description]
|
|
81
|
+
|
|
82
|
+
\`\`\`python
|
|
83
|
+
# Working, tested code example
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
**Notes**: [Gotchas, alternatives, related recipes]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. User Guides
|
|
90
|
+
|
|
91
|
+
For complex features, create or update guides in `docs/`:
|
|
92
|
+
|
|
93
|
+
- Step-by-step instructions
|
|
94
|
+
- Working code examples (tested)
|
|
95
|
+
- Common pitfalls and solutions
|
|
96
|
+
- Links to related documentation
|
|
97
|
+
|
|
98
|
+
## Standards
|
|
99
|
+
|
|
100
|
+
See CLAUDE.md's "Detailed Documentation" table for project doc structure. Format
|
|
101
|
+
markdown with `uv run poe format` (88 char line length, ATX headers).
|
|
102
|
+
|
|
103
|
+
## Process
|
|
104
|
+
|
|
105
|
+
1. Read the target code or feature thoroughly
|
|
106
|
+
1. Identify which documentation type(s) are needed
|
|
107
|
+
1. Write documentation following the templates above
|
|
108
|
+
1. Verify all code examples are correct and tested
|
|
109
|
+
1. Run `uv run poe format` to format markdown
|
|
110
|
+
1. If updating MkDocs content, run `uv run poe docs-build` to verify
|
|
111
|
+
|
|
112
|
+
## Self-Improvement
|
|
113
|
+
|
|
114
|
+
If you notice that existing documentation is wrong, incomplete, or misleading while
|
|
115
|
+
generating new docs, fix it. Don't just document new things - improve what's already
|
|
116
|
+
there.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Pre-Commit Check
|
|
2
|
+
|
|
3
|
+
Quick pre-flight validation of staged and unstaged changes before committing. Lighter
|
|
4
|
+
than `/review` (which reviews the whole branch) - this focuses on catching common
|
|
5
|
+
mistakes in the current changeset.
|
|
6
|
+
|
|
7
|
+
## Process
|
|
8
|
+
|
|
9
|
+
### 1. Run Tier 2 Validation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
uv run poe agent-check
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If this fails, report the failures and stop. Fix before committing.
|
|
16
|
+
|
|
17
|
+
### 2. Scan the Diff for Anti-Patterns
|
|
18
|
+
|
|
19
|
+
Review the output of `git diff` and `git diff --cached` for:
|
|
20
|
+
|
|
21
|
+
- **Generated file modifications**: any changes to `api/**/*.py`, `models/**/*.py`, or
|
|
22
|
+
`client.py` that didn't come from regeneration
|
|
23
|
+
- Anti-patterns listed in CLAUDE.md's "Known Pitfalls" and "Anti-Patterns to Avoid"
|
|
24
|
+
sections
|
|
25
|
+
|
|
26
|
+
### 3. Verify Test Coverage
|
|
27
|
+
|
|
28
|
+
If new or changed code is in the diff:
|
|
29
|
+
|
|
30
|
+
- Check that corresponding test files were also modified or created
|
|
31
|
+
- Flag any new functions without test coverage
|
|
32
|
+
|
|
33
|
+
### 4. Check Commit Message Format
|
|
34
|
+
|
|
35
|
+
If a commit message is provided or can be inferred, verify it follows:
|
|
36
|
+
|
|
37
|
+
- Conventional commit format: `type(scope): description`
|
|
38
|
+
- Valid types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`, `build`,
|
|
39
|
+
`ci`, `perf`
|
|
40
|
+
- Valid scopes: `client`, `mcp`, or none for cross-cutting changes
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
## Pre-Commit Report
|
|
46
|
+
|
|
47
|
+
### Status: [PASS | FAIL]
|
|
48
|
+
|
|
49
|
+
### Validation: [PASS/FAIL]
|
|
50
|
+
[Details if failed]
|
|
51
|
+
|
|
52
|
+
### Anti-Pattern Scan: [PASS/FAIL]
|
|
53
|
+
[List of findings, if any]
|
|
54
|
+
|
|
55
|
+
### Test Coverage: [PASS/FAIL]
|
|
56
|
+
[Uncovered changes, if any]
|
|
57
|
+
|
|
58
|
+
### Commit Format: [PASS/FAIL]
|
|
59
|
+
[Issues with message format, if any]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Key Principle
|
|
63
|
+
|
|
64
|
+
This check should be fast. If it passes, you can commit with confidence. If it fails,
|
|
65
|
+
fix the issues first - never use `--no-verify`.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Code Review
|
|
2
|
+
|
|
3
|
+
Review the current branch's changes against main for quality, correctness, and project
|
|
4
|
+
standards.
|
|
5
|
+
|
|
6
|
+
## Review Process
|
|
7
|
+
|
|
8
|
+
### Step 1: Initial Classification
|
|
9
|
+
|
|
10
|
+
Before diving into details, classify the change:
|
|
11
|
+
|
|
12
|
+
- **Type**: Feature / Bug Fix / Refactor / Spec Change / Config / Docs
|
|
13
|
+
- **Risk**: Low (cosmetic, docs) / Medium (new feature, test changes) / High (spec
|
|
14
|
+
changes, transport layer, auth, breaking changes)
|
|
15
|
+
- **Affected packages**: client / mcp / typescript / cross-cutting
|
|
16
|
+
|
|
17
|
+
This classification guides where to focus review attention.
|
|
18
|
+
|
|
19
|
+
### Step 2: Full Context Review
|
|
20
|
+
|
|
21
|
+
1. Identify the diff: `git diff main...HEAD`
|
|
22
|
+
1. Read every changed file in full context (not just the diff lines)
|
|
23
|
+
1. Check surrounding code for broken assumptions - changes may invalidate logic in
|
|
24
|
+
adjacent functions or callers that aren't in the diff
|
|
25
|
+
1. For every function whose signature or behavior changed, run `LSP findReferences` (or
|
|
26
|
+
`LSP incomingCalls`) to enumerate callers. Read each caller and confirm it still
|
|
27
|
+
works with the new semantics. This catches ripple effects that a diff-only review
|
|
28
|
+
misses — a diff only shows what changed, not what depends on it.
|
|
29
|
+
1. Run `uv run poe check` to verify everything passes
|
|
30
|
+
1. Produce the structured review below
|
|
31
|
+
|
|
32
|
+
## Review Dimensions (Priority Order)
|
|
33
|
+
|
|
34
|
+
Focus review effort in this order - higher priorities get more scrutiny:
|
|
35
|
+
|
|
36
|
+
1. **Correctness** - Does the code do what it claims? Edge cases handled? Bugs?
|
|
37
|
+
1. **Security** - Input validation, auth checks, no secrets in code, safe API handling
|
|
38
|
+
1. **Architecture** - Respects generated file boundaries, transport-layer resilience
|
|
39
|
+
pattern, UNSET/response helper conventions
|
|
40
|
+
1. **Completeness** - All requirements met, tests cover success + error paths, docs
|
|
41
|
+
updated
|
|
42
|
+
1. **Readability** - Clear naming, appropriate abstractions, maintainable
|
|
43
|
+
1. **Performance** - Efficient patterns, no N+1 queries, appropriate pagination
|
|
44
|
+
|
|
45
|
+
## Output Format
|
|
46
|
+
|
|
47
|
+
### Classification
|
|
48
|
+
|
|
49
|
+
Type, risk level, and affected packages (from Step 1).
|
|
50
|
+
|
|
51
|
+
### Summary
|
|
52
|
+
|
|
53
|
+
One paragraph describing what the changes do, their scope, and overall assessment.
|
|
54
|
+
|
|
55
|
+
### Strengths
|
|
56
|
+
|
|
57
|
+
Bullet list of things done well - good patterns, clean code, thorough tests.
|
|
58
|
+
|
|
59
|
+
### Issues
|
|
60
|
+
|
|
61
|
+
Each issue gets a severity tag:
|
|
62
|
+
|
|
63
|
+
- **[BLOCKING]** - Must fix before merge. Bugs, security issues, broken tests,
|
|
64
|
+
architecture violations.
|
|
65
|
+
- **[SUGGESTION]** - Recommended improvement. Better patterns, missing edge cases,
|
|
66
|
+
unclear naming.
|
|
67
|
+
- **[NITPICK]** - Minor style or preference. Take it or leave it.
|
|
68
|
+
|
|
69
|
+
Format each issue as:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
**[SEVERITY]** `file:line` - Brief description
|
|
73
|
+
Explanation of the problem and suggested fix.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Questions
|
|
77
|
+
|
|
78
|
+
Anything unclear about intent, design choices, or missing context. Questions are not
|
|
79
|
+
criticisms.
|
|
80
|
+
|
|
81
|
+
## Project-Specific Checklist
|
|
82
|
+
|
|
83
|
+
Verify these for every review (see CLAUDE.md for details on each):
|
|
84
|
+
|
|
85
|
+
- [ ] Generated files not manually edited; pydantic models regenerated if the OpenAPI
|
|
86
|
+
client was regenerated
|
|
87
|
+
- [ ] Resilience at transport layer, not wrapping API methods
|
|
88
|
+
([ADR-001](statuspro_public_api_client/docs/adr/0001-transport-layer-resilience.md))
|
|
89
|
+
- [ ] Full type annotations; UNSET/response handling per CLAUDE.md patterns
|
|
90
|
+
- [ ] New functionality has tests (success + error paths, 87%+ coverage)
|
|
91
|
+
- [ ] Public APIs have docstrings; ADR created for architectural decisions
|
|
92
|
+
|
|
93
|
+
## Verification
|
|
94
|
+
|
|
95
|
+
Before approving, confirm `uv run poe check` passes clean. If it doesn't, list the
|
|
96
|
+
failures as `[BLOCKING]` issues.
|
|
97
|
+
|
|
98
|
+
## Self-Improvement
|
|
99
|
+
|
|
100
|
+
If the review reveals a pattern worth codifying (new anti-pattern, missing convention,
|
|
101
|
+
or a pitfall that tripped up the author), update CLAUDE.md so future work benefits.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Tech Debt Scanner
|
|
2
|
+
|
|
3
|
+
Scan the codebase for tech debt, anti-patterns, and improvement opportunities.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
Only scan **editable** files. NEVER flag or modify generated files:
|
|
8
|
+
|
|
9
|
+
- SKIP (generated): `statuspro_public_api_client/api/**/*.py`,
|
|
10
|
+
`statuspro_public_api_client/models/**/*.py`, `statuspro_public_api_client/client.py`
|
|
11
|
+
- SCAN: `statuspro_public_api_client/` (excluding generated paths above),
|
|
12
|
+
`statuspro_mcp_server/`, `tests/`, `scripts/`
|
|
13
|
+
|
|
14
|
+
## Categories to Check
|
|
15
|
+
|
|
16
|
+
### 1. Dead Code
|
|
17
|
+
|
|
18
|
+
- Unused imports, variables, functions, classes
|
|
19
|
+
- Unreachable code paths
|
|
20
|
+
- Commented-out code blocks
|
|
21
|
+
|
|
22
|
+
For candidate unused functions/classes, use `LSP findReferences` on the symbol
|
|
23
|
+
definition to confirm zero usages before flagging. Pyright walks the real import graph
|
|
24
|
+
(including `from module import *` and aliased re-exports) that a plain `Grep` can miss,
|
|
25
|
+
so LSP is the authoritative check. If there are no references outside the definition
|
|
26
|
+
itself, the symbol is dead and safe to remove.
|
|
27
|
+
|
|
28
|
+
### 2. Outdated Patterns (Project-Specific)
|
|
29
|
+
|
|
30
|
+
Flag anti-patterns from CLAUDE.md's "Known Pitfalls" and "Anti-Patterns to Avoid"
|
|
31
|
+
sections.
|
|
32
|
+
|
|
33
|
+
### 3. Code Duplication
|
|
34
|
+
|
|
35
|
+
- Repeated logic that should be extracted into helpers
|
|
36
|
+
- Copy-pasted test setup that should be fixtures
|
|
37
|
+
- Duplicate error handling patterns
|
|
38
|
+
|
|
39
|
+
### 4. Code Smells
|
|
40
|
+
|
|
41
|
+
- Overly broad exception handling (`except Exception`)
|
|
42
|
+
- Missing type annotations on public functions
|
|
43
|
+
- Issues listed in CLAUDE.md's "Proper fixes" section (parameter count, shadowing,
|
|
44
|
+
circular imports)
|
|
45
|
+
|
|
46
|
+
### 5. Missing Best Practices
|
|
47
|
+
|
|
48
|
+
- Public functions without docstrings
|
|
49
|
+
- Tests without descriptive names
|
|
50
|
+
- Missing `@pytest.mark.asyncio` on async tests
|
|
51
|
+
- Fixtures that should use `@pytest.fixture(scope="session")`
|
|
52
|
+
|
|
53
|
+
## Process
|
|
54
|
+
|
|
55
|
+
1. Run `uv run poe quick-check` to get current lint status
|
|
56
|
+
1. Scan editable files category by category
|
|
57
|
+
1. For each finding, report:
|
|
58
|
+
- **File and line**: exact location
|
|
59
|
+
- **Category**: which of the 5 categories above
|
|
60
|
+
- **Current code**: the problematic pattern
|
|
61
|
+
- **Suggested fix**: concrete replacement
|
|
62
|
+
- **Priority**: HIGH (breaks conventions), MEDIUM (code quality), LOW (nice to have)
|
|
63
|
+
1. Run `uv run poe fix` to auto-fix what's possible
|
|
64
|
+
1. Summarize findings by category with counts
|
|
65
|
+
|
|
66
|
+
## Output Format
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
## Tech Debt Report
|
|
70
|
+
|
|
71
|
+
### Summary
|
|
72
|
+
- Dead code: N findings
|
|
73
|
+
- Outdated patterns: N findings
|
|
74
|
+
- Code duplication: N findings
|
|
75
|
+
- Code smells: N findings
|
|
76
|
+
- Missing best practices: N findings
|
|
77
|
+
|
|
78
|
+
### HIGH Priority
|
|
79
|
+
[findings...]
|
|
80
|
+
|
|
81
|
+
### MEDIUM Priority
|
|
82
|
+
[findings...]
|
|
83
|
+
|
|
84
|
+
### LOW Priority
|
|
85
|
+
[findings...]
|
|
86
|
+
|
|
87
|
+
### Improvements to CLAUDE.md
|
|
88
|
+
[Any new anti-patterns or pitfalls discovered that should be added]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Self-Improvement
|
|
92
|
+
|
|
93
|
+
If this scan reveals a recurring anti-pattern not already documented in CLAUDE.md's
|
|
94
|
+
"Known Pitfalls" or "Anti-Patterns to Avoid" sections, add it there so future sessions
|
|
95
|
+
can catch it earlier.
|