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.
Files changed (289) hide show
  1. statuspro_openapi_client-0.1.0/.claude/agents/code-modernizer.md +96 -0
  2. statuspro_openapi_client-0.1.0/.claude/agents/pr-preparer.md +84 -0
  3. statuspro_openapi_client-0.1.0/.claude/agents/spec-auditor.md +64 -0
  4. statuspro_openapi_client-0.1.0/.claude/commands/generate-docs.md +116 -0
  5. statuspro_openapi_client-0.1.0/.claude/commands/pre-commit.md +65 -0
  6. statuspro_openapi_client-0.1.0/.claude/commands/review.md +101 -0
  7. statuspro_openapi_client-0.1.0/.claude/commands/techdebt.md +95 -0
  8. statuspro_openapi_client-0.1.0/.claude/commands/verify.md +101 -0
  9. statuspro_openapi_client-0.1.0/.claude/commands/write-tests.md +81 -0
  10. statuspro_openapi_client-0.1.0/.claude/skills/open-pr/SKILL.md +246 -0
  11. statuspro_openapi_client-0.1.0/.claude/skills/review-pr/SKILL.md +296 -0
  12. statuspro_openapi_client-0.1.0/.cursorrules +252 -0
  13. statuspro_openapi_client-0.1.0/.devcontainer/README.md +194 -0
  14. statuspro_openapi_client-0.1.0/.devcontainer/devcontainer.json +77 -0
  15. statuspro_openapi_client-0.1.0/.devcontainer/oncreate.sh +24 -0
  16. statuspro_openapi_client-0.1.0/.devcontainer/setup.sh +52 -0
  17. statuspro_openapi_client-0.1.0/.env.example +27 -0
  18. statuspro_openapi_client-0.1.0/.github/CODEOWNERS +14 -0
  19. statuspro_openapi_client-0.1.0/.github/FUNDING.yml +15 -0
  20. statuspro_openapi_client-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +66 -0
  21. statuspro_openapi_client-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +51 -0
  22. statuspro_openapi_client-0.1.0/.github/agents/ci-cd-specialist.agent.md +346 -0
  23. statuspro_openapi_client-0.1.0/.github/agents/code-reviewer.agent.md +508 -0
  24. statuspro_openapi_client-0.1.0/.github/agents/documentation-writer.agent.md +528 -0
  25. statuspro_openapi_client-0.1.0/.github/agents/guides/CONTEXT_INVESTIGATION.md +307 -0
  26. statuspro_openapi_client-0.1.0/.github/agents/guides/COPILOT_ARCHITECTURE.md +602 -0
  27. statuspro_openapi_client-0.1.0/.github/agents/guides/README.md +128 -0
  28. statuspro_openapi_client-0.1.0/.github/agents/guides/REFACTORING_SUMMARY.md +627 -0
  29. statuspro_openapi_client-0.1.0/.github/agents/guides/devops/CI_DEBUGGING.md +558 -0
  30. statuspro_openapi_client-0.1.0/.github/agents/guides/devops/CLIENT_REGENERATION.md +592 -0
  31. statuspro_openapi_client-0.1.0/.github/agents/guides/devops/DEPENDENCY_UPDATES.md +439 -0
  32. statuspro_openapi_client-0.1.0/.github/agents/guides/devops/RELEASE_PROCESS.md +480 -0
  33. statuspro_openapi_client-0.1.0/.github/agents/guides/plan/EFFORT_ESTIMATION.md +636 -0
  34. statuspro_openapi_client-0.1.0/.github/agents/guides/plan/ISSUE_TEMPLATES.md +564 -0
  35. statuspro_openapi_client-0.1.0/.github/agents/guides/plan/PLANNING_PROCESS.md +796 -0
  36. statuspro_openapi_client-0.1.0/.github/agents/guides/shared/ARCHITECTURE_QUICK_REF.md +559 -0
  37. statuspro_openapi_client-0.1.0/.github/agents/guides/shared/COMMIT_STANDARDS.md +355 -0
  38. statuspro_openapi_client-0.1.0/.github/agents/guides/shared/FILE_ORGANIZATION.md +445 -0
  39. statuspro_openapi_client-0.1.0/.github/agents/guides/shared/VALIDATION_TIERS.md +240 -0
  40. statuspro_openapi_client-0.1.0/.github/agents/project-coordinator.agent.md +529 -0
  41. statuspro_openapi_client-0.1.0/.github/agents/python-developer.agent.md +426 -0
  42. statuspro_openapi_client-0.1.0/.github/agents/task-planner.agent.md +262 -0
  43. statuspro_openapi_client-0.1.0/.github/agents/tdd-specialist.agent.md +626 -0
  44. statuspro_openapi_client-0.1.0/.github/copilot-instructions.md +405 -0
  45. statuspro_openapi_client-0.1.0/.github/dependabot.yml +98 -0
  46. statuspro_openapi_client-0.1.0/.github/instructions/markdown.instructions.md +223 -0
  47. statuspro_openapi_client-0.1.0/.github/instructions/pytest.instructions.md +224 -0
  48. statuspro_openapi_client-0.1.0/.github/instructions/python-mcp-server.instructions.md +200 -0
  49. statuspro_openapi_client-0.1.0/.github/instructions/python.instructions.md +205 -0
  50. statuspro_openapi_client-0.1.0/.github/prompts/breakdown-feature.prompt.md +199 -0
  51. statuspro_openapi_client-0.1.0/.github/prompts/create-adr.prompt.md +121 -0
  52. statuspro_openapi_client-0.1.0/.github/prompts/create-test.prompt.md +166 -0
  53. statuspro_openapi_client-0.1.0/.github/prompts/regenerate-client.prompt.md +113 -0
  54. statuspro_openapi_client-0.1.0/.github/prompts/update-docs.prompt.md +198 -0
  55. statuspro_openapi_client-0.1.0/.github/pull_request_template.md +40 -0
  56. statuspro_openapi_client-0.1.0/.github/workflows/README.md +291 -0
  57. statuspro_openapi_client-0.1.0/.github/workflows/ci.yml +126 -0
  58. statuspro_openapi_client-0.1.0/.github/workflows/codespaces-prebuild.yml +33 -0
  59. statuspro_openapi_client-0.1.0/.github/workflows/copilot-setup-steps.yml +79 -0
  60. statuspro_openapi_client-0.1.0/.github/workflows/docs.yml +62 -0
  61. statuspro_openapi_client-0.1.0/.github/workflows/release-mcp.yml +67 -0
  62. statuspro_openapi_client-0.1.0/.github/workflows/release-ts.yml +136 -0
  63. statuspro_openapi_client-0.1.0/.github/workflows/release.yml +314 -0
  64. statuspro_openapi_client-0.1.0/.github/workflows/security.yml +63 -0
  65. statuspro_openapi_client-0.1.0/.github/workflows/update-mcp-dependency.yml +106 -0
  66. statuspro_openapi_client-0.1.0/.gitignore +179 -0
  67. statuspro_openapi_client-0.1.0/.mcp.json +34 -0
  68. statuspro_openapi_client-0.1.0/.mdformatignore +1 -0
  69. statuspro_openapi_client-0.1.0/.pre-commit-config.yaml +59 -0
  70. statuspro_openapi_client-0.1.0/.yamllint.yml +48 -0
  71. statuspro_openapi_client-0.1.0/AGENT_WORKFLOW.md +1156 -0
  72. statuspro_openapi_client-0.1.0/CLAUDE.md +266 -0
  73. statuspro_openapi_client-0.1.0/LICENSE +21 -0
  74. statuspro_openapi_client-0.1.0/PKG-INFO +337 -0
  75. statuspro_openapi_client-0.1.0/README.md +266 -0
  76. statuspro_openapi_client-0.1.0/docs/CHANGELOG.md +17 -0
  77. statuspro_openapi_client-0.1.0/docs/CODE_OF_CONDUCT.md +121 -0
  78. statuspro_openapi_client-0.1.0/docs/CONTRIBUTING.md +298 -0
  79. statuspro_openapi_client-0.1.0/docs/MONOREPO_SEMANTIC_RELEASE.md +345 -0
  80. statuspro_openapi_client-0.1.0/docs/PYPI_SETUP.md +161 -0
  81. statuspro_openapi_client-0.1.0/docs/README.md +125 -0
  82. statuspro_openapi_client-0.1.0/docs/RELEASE.md +318 -0
  83. statuspro_openapi_client-0.1.0/docs/UV_USAGE.md +410 -0
  84. statuspro_openapi_client-0.1.0/docs/adr/0009-migrate-from-poetry-to-uv.md +353 -0
  85. statuspro_openapi_client-0.1.0/docs/adr/0013-module-local-documentation.md +172 -0
  86. statuspro_openapi_client-0.1.0/docs/adr/0014-github-copilot-custom-agents.md +240 -0
  87. statuspro_openapi_client-0.1.0/docs/adr/README.md +77 -0
  88. statuspro_openapi_client-0.1.0/docs/adr/template.md +61 -0
  89. statuspro_openapi_client-0.1.0/docs/client/CHANGELOG.md +10 -0
  90. statuspro_openapi_client-0.1.0/docs/client/CHANGELOG.pending.md +3 -0
  91. statuspro_openapi_client-0.1.0/docs/client/README.md +31 -0
  92. statuspro_openapi_client-0.1.0/docs/client/adr/0001-transport-layer-resilience.md +177 -0
  93. statuspro_openapi_client-0.1.0/docs/client/adr/0002-openapi-code-generation.md +192 -0
  94. statuspro_openapi_client-0.1.0/docs/client/adr/0003-transparent-pagination.md +290 -0
  95. statuspro_openapi_client-0.1.0/docs/client/adr/0004-defer-observability-to-httpx.md +280 -0
  96. statuspro_openapi_client-0.1.0/docs/client/adr/0005-sync-async-apis.md +270 -0
  97. statuspro_openapi_client-0.1.0/docs/client/adr/0006-response-unwrapping-utilities.md +293 -0
  98. statuspro_openapi_client-0.1.0/docs/client/adr/0008-avoid-builder-pattern.md +263 -0
  99. statuspro_openapi_client-0.1.0/docs/client/adr/0011-pydantic-domain-models.md +165 -0
  100. statuspro_openapi_client-0.1.0/docs/client/adr/0012-validation-tiers-for-agent-workflows.md +148 -0
  101. statuspro_openapi_client-0.1.0/docs/client/adr/README.md +45 -0
  102. statuspro_openapi_client-0.1.0/docs/client/cookbook.md +192 -0
  103. statuspro_openapi_client-0.1.0/docs/client/guide.md +270 -0
  104. statuspro_openapi_client-0.1.0/docs/client/testing.md +239 -0
  105. statuspro_openapi_client-0.1.0/docs/css/mkdocstrings.css +71 -0
  106. statuspro_openapi_client-0.1.0/docs/gen_ref_pages.py +45 -0
  107. statuspro_openapi_client-0.1.0/docs/index.md +141 -0
  108. statuspro_openapi_client-0.1.0/docs/mcp-server/LOGGING.md +471 -0
  109. statuspro_openapi_client-0.1.0/docs/mcp-server/README.md +37 -0
  110. statuspro_openapi_client-0.1.0/docs/mcp-server/adr/0016-tool-interface-pattern.md +223 -0
  111. statuspro_openapi_client-0.1.0/docs/mcp-server/adr/0017-automated-tool-documentation.md +333 -0
  112. statuspro_openapi_client-0.1.0/docs/mcp-server/adr/README.md +42 -0
  113. statuspro_openapi_client-0.1.0/docs/mcp-server/deployment.md +388 -0
  114. statuspro_openapi_client-0.1.0/docs/mcp-server/development.md +376 -0
  115. statuspro_openapi_client-0.1.0/docs/mcp-server/docker.md +276 -0
  116. statuspro_openapi_client-0.1.0/docs/mcp-server/examples.md +133 -0
  117. statuspro_openapi_client-0.1.0/docs/mcp-server/index.md +1 -0
  118. statuspro_openapi_client-0.1.0/docs/openapi-docs.md +60 -0
  119. statuspro_openapi_client-0.1.0/docs/statuspro-openapi.yaml +859 -0
  120. statuspro_openapi_client-0.1.0/examples/README.md +32 -0
  121. statuspro_openapi_client-0.1.0/mkdocs.yml +181 -0
  122. statuspro_openapi_client-0.1.0/openapi-python-client-config.yml +6 -0
  123. statuspro_openapi_client-0.1.0/package.json +32 -0
  124. statuspro_openapi_client-0.1.0/packages/statuspro-client/.gitignore +11 -0
  125. statuspro_openapi_client-0.1.0/packages/statuspro-client/.releaserc.json +77 -0
  126. statuspro_openapi_client-0.1.0/packages/statuspro-client/README.md +236 -0
  127. statuspro_openapi_client-0.1.0/packages/statuspro-client/biome.json +32 -0
  128. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/README.md +45 -0
  129. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0001-composable-fetch-wrappers.md +146 -0
  130. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0002-hey-api-code-generation.md +139 -0
  131. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/0003-biome-for-linting.md +160 -0
  132. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/adr/README.md +47 -0
  133. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/cookbook.md +223 -0
  134. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/guide.md +240 -0
  135. statuspro_openapi_client-0.1.0/packages/statuspro-client/docs/testing.md +492 -0
  136. statuspro_openapi_client-0.1.0/packages/statuspro-client/openapi-ts.config.ts +14 -0
  137. statuspro_openapi_client-0.1.0/packages/statuspro-client/package.json +82 -0
  138. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/client.ts +422 -0
  139. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/errors.ts +209 -0
  140. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/client.gen.ts +301 -0
  141. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/index.ts +25 -0
  142. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/types.gen.ts +242 -0
  143. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client/utils.gen.ts +337 -0
  144. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/client.gen.ts +27 -0
  145. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/auth.gen.ts +42 -0
  146. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/bodySerializer.gen.ts +100 -0
  147. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/params.gen.ts +176 -0
  148. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/pathSerializer.gen.ts +180 -0
  149. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/queryKeySerializer.gen.ts +136 -0
  150. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/serverSentEvents.gen.ts +266 -0
  151. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/types.gen.ts +118 -0
  152. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/core/utils.gen.ts +143 -0
  153. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/index.ts +4 -0
  154. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/sdk.gen.ts +228 -0
  155. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/generated/types.gen.ts +596 -0
  156. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/index.ts +61 -0
  157. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/transport/pagination.ts +364 -0
  158. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/transport/resilient.ts +224 -0
  159. statuspro_openapi_client-0.1.0/packages/statuspro-client/src/types.ts +14 -0
  160. statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/client.test.ts +281 -0
  161. statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/errors.test.ts +182 -0
  162. statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/sdk-integration.test.ts +188 -0
  163. statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/transport/pagination.test.ts +460 -0
  164. statuspro_openapi_client-0.1.0/packages/statuspro-client/tests/transport/retry.test.ts +278 -0
  165. statuspro_openapi_client-0.1.0/packages/statuspro-client/tsconfig.json +27 -0
  166. statuspro_openapi_client-0.1.0/packages/statuspro-client/tsup.config.ts +22 -0
  167. statuspro_openapi_client-0.1.0/packages/statuspro-client/vitest.config.ts +15 -0
  168. statuspro_openapi_client-0.1.0/pnpm-lock.yaml +4928 -0
  169. statuspro_openapi_client-0.1.0/pnpm-workspace.yaml +2 -0
  170. statuspro_openapi_client-0.1.0/pyproject.toml +626 -0
  171. statuspro_openapi_client-0.1.0/pyrightconfig.json +29 -0
  172. statuspro_openapi_client-0.1.0/redocly.yaml +16 -0
  173. statuspro_openapi_client-0.1.0/scripts/__init__.py +1 -0
  174. statuspro_openapi_client-0.1.0/scripts/analyze_coverage.py +314 -0
  175. statuspro_openapi_client-0.1.0/scripts/check_generated_client_ast.py +70 -0
  176. statuspro_openapi_client-0.1.0/scripts/generate_pydantic_models.py +954 -0
  177. statuspro_openapi_client-0.1.0/scripts/generate_tools_json.py +232 -0
  178. statuspro_openapi_client-0.1.0/scripts/regenerate_client.py +782 -0
  179. statuspro_openapi_client-0.1.0/scripts/start_mcp_server.sh +103 -0
  180. statuspro_openapi_client-0.1.0/statuspro_mcp_server/.claude-desktop-config.example.json +20 -0
  181. statuspro_openapi_client-0.1.0/statuspro_mcp_server/.dockerignore +40 -0
  182. statuspro_openapi_client-0.1.0/statuspro_mcp_server/.env.example +26 -0
  183. statuspro_openapi_client-0.1.0/statuspro_mcp_server/CHANGELOG.md +5 -0
  184. statuspro_openapi_client-0.1.0/statuspro_mcp_server/Dockerfile +46 -0
  185. statuspro_openapi_client-0.1.0/statuspro_mcp_server/MCP_CURSOR_SETUP.md +176 -0
  186. statuspro_openapi_client-0.1.0/statuspro_mcp_server/README.md +307 -0
  187. statuspro_openapi_client-0.1.0/statuspro_mcp_server/docker-compose.yml +49 -0
  188. statuspro_openapi_client-0.1.0/statuspro_mcp_server/pyproject.toml +124 -0
  189. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/README.md +1 -0
  190. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/__init__.py +36 -0
  191. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/__main__.py +46 -0
  192. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/_fastmcp_patches.py +182 -0
  193. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/logging.py +321 -0
  194. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/prompts/__init__.py +15 -0
  195. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/__init__.py +25 -0
  196. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/help.py +66 -0
  197. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/statuses.py +30 -0
  198. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/server.py +302 -0
  199. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/services/__init__.py +12 -0
  200. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/services/dependencies.py +35 -0
  201. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/templates/__init__.py +69 -0
  202. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/__init__.py +20 -0
  203. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/orders.py +367 -0
  204. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/schemas.py +57 -0
  205. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/statuses.py +56 -0
  206. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/unpack.py +266 -0
  207. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/__init__.py +1 -0
  208. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/conftest.py +78 -0
  209. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_logging.py +247 -0
  210. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_observability_decorators.py +328 -0
  211. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_package.py +47 -0
  212. statuspro_openapi_client-0.1.0/statuspro_mcp_server/tests/test_unpack.py +272 -0
  213. statuspro_openapi_client-0.1.0/statuspro_public_api_client/__init__.py +36 -0
  214. statuspro_openapi_client-0.1.0/statuspro_public_api_client/_logging.py +33 -0
  215. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/__init__.py +1 -0
  216. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/__init__.py +1 -0
  217. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/add_order_comment.py +215 -0
  218. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/bulk_update_order_status.py +194 -0
  219. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/get_order.py +188 -0
  220. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/get_viable_statuses.py +193 -0
  221. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/list_orders.py +366 -0
  222. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/lookup_order.py +208 -0
  223. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/set_order_due_date.py +215 -0
  224. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/orders/update_order_status.py +215 -0
  225. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/statuses/__init__.py +1 -0
  226. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api/statuses/get_statuses.py +161 -0
  227. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/__init__.py +15 -0
  228. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_namespace.py +40 -0
  229. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_registry.py +43 -0
  230. statuspro_openapi_client-0.1.0/statuspro_public_api_client/api_wrapper/_resource.py +116 -0
  231. statuspro_openapi_client-0.1.0/statuspro_public_api_client/client.py +267 -0
  232. statuspro_openapi_client-0.1.0/statuspro_public_api_client/client_types.py +54 -0
  233. statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/__init__.py +33 -0
  234. statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/base.py +117 -0
  235. statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/converters.py +71 -0
  236. statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/order.py +87 -0
  237. statuspro_openapi_client-0.1.0/statuspro_public_api_client/domain/status.py +30 -0
  238. statuspro_openapi_client-0.1.0/statuspro_public_api_client/errors.py +16 -0
  239. statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/__init__.py +21 -0
  240. statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/base.py +26 -0
  241. statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/orders.py +78 -0
  242. statuspro_openapi_client-0.1.0/statuspro_public_api_client/helpers/statuses.py +37 -0
  243. statuspro_openapi_client-0.1.0/statuspro_public_api_client/log_setup.py +99 -0
  244. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/__init__.py +53 -0
  245. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/add_order_comment_request.py +68 -0
  246. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/bulk_status_update_request.py +124 -0
  247. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/bulk_status_update_response.py +72 -0
  248. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/customer.py +74 -0
  249. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/error_response.py +58 -0
  250. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/history_item.py +171 -0
  251. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/list_orders_financial_status_item.py +15 -0
  252. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/list_orders_fulfillment_status_item.py +11 -0
  253. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/locale_translation.py +66 -0
  254. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/mail_log.py +82 -0
  255. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/message_response.py +58 -0
  256. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_item.py +180 -0
  257. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_meta.py +120 -0
  258. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_list_response.py +81 -0
  259. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/order_response.py +220 -0
  260. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/progress_timeline_item.py +93 -0
  261. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/set_due_date_request.py +95 -0
  262. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status.py +190 -0
  263. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status_definition.py +82 -0
  264. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/status_translations.py +62 -0
  265. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/update_order_status_request.py +92 -0
  266. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/validation_error_response.py +81 -0
  267. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/validation_error_response_errors.py +54 -0
  268. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models/viable_status.py +82 -0
  269. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/__init__.py +122 -0
  270. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_auto_registry.py +115 -0
  271. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_base.py +349 -0
  272. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/__init__.py +53 -0
  273. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/errors.py +24 -0
  274. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/orders.py +136 -0
  275. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_generated/statuses.py +25 -0
  276. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/_registry.py +171 -0
  277. statuspro_openapi_client-0.1.0/statuspro_public_api_client/models_pydantic/converters.py +184 -0
  278. statuspro_openapi_client-0.1.0/statuspro_public_api_client/py.typed +1 -0
  279. statuspro_openapi_client-0.1.0/statuspro_public_api_client/statuspro_client.py +1156 -0
  280. statuspro_openapi_client-0.1.0/statuspro_public_api_client/utils.py +290 -0
  281. statuspro_openapi_client-0.1.0/tests/conftest.py +314 -0
  282. statuspro_openapi_client-0.1.0/tests/test_documentation.py +154 -0
  283. statuspro_openapi_client-0.1.0/tests/test_generated_client.py +218 -0
  284. statuspro_openapi_client-0.1.0/tests/test_openapi_specification.py +193 -0
  285. statuspro_openapi_client-0.1.0/tests/test_rate_limit_retry.py +460 -0
  286. statuspro_openapi_client-0.1.0/tests/test_statuspro_client.py +661 -0
  287. statuspro_openapi_client-0.1.0/tests/test_statuspro_client_init.py +613 -0
  288. statuspro_openapi_client-0.1.0/tests/test_transport_integration.py +106 -0
  289. 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.