tribunal-kit 2.4.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +139 -86
  4. package/.agent/agents/ai-code-reviewer.md +160 -90
  5. package/.agent/agents/backend-specialist.md +164 -127
  6. package/.agent/agents/code-archaeologist.md +115 -73
  7. package/.agent/agents/database-architect.md +130 -110
  8. package/.agent/agents/debugger.md +137 -97
  9. package/.agent/agents/dependency-reviewer.md +78 -30
  10. package/.agent/agents/devops-engineer.md +161 -118
  11. package/.agent/agents/documentation-writer.md +151 -87
  12. package/.agent/agents/explorer-agent.md +117 -99
  13. package/.agent/agents/frontend-reviewer.md +127 -47
  14. package/.agent/agents/frontend-specialist.md +169 -109
  15. package/.agent/agents/game-developer.md +28 -164
  16. package/.agent/agents/logic-reviewer.md +87 -49
  17. package/.agent/agents/mobile-developer.md +151 -103
  18. package/.agent/agents/mobile-reviewer.md +133 -50
  19. package/.agent/agents/orchestrator.md +121 -110
  20. package/.agent/agents/penetration-tester.md +103 -77
  21. package/.agent/agents/performance-optimizer.md +136 -92
  22. package/.agent/agents/performance-reviewer.md +139 -69
  23. package/.agent/agents/product-manager.md +104 -70
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +95 -95
  26. package/.agent/agents/qa-automation-engineer.md +174 -87
  27. package/.agent/agents/security-auditor.md +133 -129
  28. package/.agent/agents/seo-specialist.md +160 -99
  29. package/.agent/agents/sql-reviewer.md +132 -44
  30. package/.agent/agents/supervisor-agent.md +137 -109
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +132 -53
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +143 -33
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  43. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  44. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  45. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  46. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  47. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  48. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  49. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  50. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  51. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  52. package/.agent/scripts/compress_skills.py +167 -0
  53. package/.agent/scripts/consolidate_skills.py +173 -0
  54. package/.agent/scripts/deep_compress.py +202 -0
  55. package/.agent/scripts/minify_context.py +80 -0
  56. package/.agent/scripts/security_scan.py +1 -1
  57. package/.agent/scripts/strip_tribunal.py +41 -0
  58. package/.agent/skills/agent-organizer/SKILL.md +60 -100
  59. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  60. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +108 -53
  61. package/.agent/skills/api-patterns/SKILL.md +197 -257
  62. package/.agent/skills/api-security-auditor/SKILL.md +125 -57
  63. package/.agent/skills/app-builder/SKILL.md +326 -50
  64. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  65. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  66. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  67. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  68. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  69. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  70. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  71. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  72. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  73. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  74. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  75. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  76. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  77. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  78. package/.agent/skills/appflow-wireframe/SKILL.md +71 -98
  79. package/.agent/skills/architecture/SKILL.md +161 -200
  80. package/.agent/skills/authentication-best-practices/SKILL.md +121 -54
  81. package/.agent/skills/bash-linux/SKILL.md +71 -166
  82. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  83. package/.agent/skills/brainstorming/SKILL.md +345 -127
  84. package/.agent/skills/building-native-ui/SKILL.md +125 -57
  85. package/.agent/skills/clean-code/SKILL.md +266 -149
  86. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  87. package/.agent/skills/config-validator/SKILL.md +73 -131
  88. package/.agent/skills/csharp-developer/SKILL.md +434 -73
  89. package/.agent/skills/database-design/SKILL.md +190 -275
  90. package/.agent/skills/deployment-procedures/SKILL.md +81 -158
  91. package/.agent/skills/devops-engineer/SKILL.md +255 -94
  92. package/.agent/skills/devops-incident-responder/SKILL.md +50 -69
  93. package/.agent/skills/doc.md +5 -5
  94. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  95. package/.agent/skills/edge-computing/SKILL.md +75 -165
  96. package/.agent/skills/extract-design-system/SKILL.md +84 -58
  97. package/.agent/skills/framer-motion-expert/SKILL.md +195 -0
  98. package/.agent/skills/frontend-design/SKILL.md +151 -499
  99. package/.agent/skills/game-design-expert/SKILL.md +71 -0
  100. package/.agent/skills/game-engineering-expert/SKILL.md +88 -0
  101. package/.agent/skills/geo-fundamentals/SKILL.md +52 -178
  102. package/.agent/skills/github-operations/SKILL.md +197 -272
  103. package/.agent/skills/gsap-expert/SKILL.md +194 -0
  104. package/.agent/skills/i18n-localization/SKILL.md +60 -172
  105. package/.agent/skills/intelligent-routing/SKILL.md +123 -103
  106. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  107. package/.agent/skills/llm-engineering/SKILL.md +281 -195
  108. package/.agent/skills/local-first/SKILL.md +76 -159
  109. package/.agent/skills/mcp-builder/SKILL.md +48 -188
  110. package/.agent/skills/mobile-design/SKILL.md +213 -219
  111. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  112. package/.agent/skills/nextjs-react-expert/SKILL.md +184 -203
  113. package/.agent/skills/nodejs-best-practices/SKILL.md +403 -185
  114. package/.agent/skills/observability/SKILL.md +211 -203
  115. package/.agent/skills/parallel-agents/SKILL.md +53 -146
  116. package/.agent/skills/performance-profiling/SKILL.md +171 -151
  117. package/.agent/skills/plan-writing/SKILL.md +49 -153
  118. package/.agent/skills/platform-engineer/SKILL.md +57 -103
  119. package/.agent/skills/playwright-best-practices/SKILL.md +110 -63
  120. package/.agent/skills/powershell-windows/SKILL.md +61 -179
  121. package/.agent/skills/python-patterns/SKILL.md +7 -35
  122. package/.agent/skills/python-pro/SKILL.md +273 -114
  123. package/.agent/skills/react-specialist/SKILL.md +227 -108
  124. package/.agent/skills/readme-builder/SKILL.md +15 -85
  125. package/.agent/skills/realtime-patterns/SKILL.md +216 -243
  126. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  127. package/.agent/skills/rust-pro/SKILL.md +525 -142
  128. package/.agent/skills/seo-fundamentals/SKILL.md +92 -153
  129. package/.agent/skills/server-management/SKILL.md +110 -166
  130. package/.agent/skills/shadcn-ui-expert/SKILL.md +154 -55
  131. package/.agent/skills/skill-creator/SKILL.md +18 -58
  132. package/.agent/skills/sql-pro/SKILL.md +543 -68
  133. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  134. package/.agent/skills/swiftui-expert/SKILL.md +124 -57
  135. package/.agent/skills/systematic-debugging/SKILL.md +49 -151
  136. package/.agent/skills/tailwind-patterns/SKILL.md +433 -149
  137. package/.agent/skills/tdd-workflow/SKILL.md +63 -169
  138. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  139. package/.agent/skills/testing-patterns/SKILL.md +437 -130
  140. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  141. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  142. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  143. package/.agent/skills/vue-expert/SKILL.md +225 -119
  144. package/.agent/skills/vulnerability-scanner/SKILL.md +264 -226
  145. package/.agent/skills/web-accessibility-auditor/SKILL.md +141 -58
  146. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  147. package/.agent/skills/webapp-testing/SKILL.md +71 -196
  148. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  149. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  150. package/.agent/workflows/api-tester.md +96 -224
  151. package/.agent/workflows/audit.md +81 -122
  152. package/.agent/workflows/brainstorm.md +69 -105
  153. package/.agent/workflows/changelog.md +65 -97
  154. package/.agent/workflows/create.md +73 -88
  155. package/.agent/workflows/debug.md +80 -111
  156. package/.agent/workflows/deploy.md +119 -92
  157. package/.agent/workflows/enhance.md +80 -91
  158. package/.agent/workflows/fix.md +68 -97
  159. package/.agent/workflows/generate.md +165 -164
  160. package/.agent/workflows/migrate.md +106 -109
  161. package/.agent/workflows/orchestrate.md +103 -86
  162. package/.agent/workflows/performance-benchmarker.md +77 -268
  163. package/.agent/workflows/plan.md +120 -98
  164. package/.agent/workflows/preview.md +39 -96
  165. package/.agent/workflows/refactor.md +105 -97
  166. package/.agent/workflows/review-ai.md +63 -102
  167. package/.agent/workflows/review.md +71 -110
  168. package/.agent/workflows/session.md +53 -113
  169. package/.agent/workflows/status.md +42 -88
  170. package/.agent/workflows/strengthen-skills.md +90 -51
  171. package/.agent/workflows/swarm.md +114 -129
  172. package/.agent/workflows/test.md +125 -102
  173. package/.agent/workflows/tribunal-backend.md +60 -78
  174. package/.agent/workflows/tribunal-database.md +62 -100
  175. package/.agent/workflows/tribunal-frontend.md +62 -82
  176. package/.agent/workflows/tribunal-full.md +56 -100
  177. package/.agent/workflows/tribunal-mobile.md +65 -94
  178. package/.agent/workflows/tribunal-performance.md +62 -105
  179. package/.agent/workflows/ui-ux-pro-max.md +72 -121
  180. package/README.md +11 -15
  181. package/package.json +1 -1
  182. package/.agent/skills/api-patterns/api-style.md +0 -42
  183. package/.agent/skills/api-patterns/auth.md +0 -24
  184. package/.agent/skills/api-patterns/documentation.md +0 -26
  185. package/.agent/skills/api-patterns/graphql.md +0 -41
  186. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  187. package/.agent/skills/api-patterns/response.md +0 -37
  188. package/.agent/skills/api-patterns/rest.md +0 -40
  189. package/.agent/skills/api-patterns/security-testing.md +0 -122
  190. package/.agent/skills/api-patterns/trpc.md +0 -41
  191. package/.agent/skills/api-patterns/versioning.md +0 -22
  192. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  193. package/.agent/skills/app-builder/feature-building.md +0 -53
  194. package/.agent/skills/app-builder/project-detection.md +0 -34
  195. package/.agent/skills/app-builder/scaffolding.md +0 -118
  196. package/.agent/skills/app-builder/tech-stack.md +0 -40
  197. package/.agent/skills/architecture/context-discovery.md +0 -43
  198. package/.agent/skills/architecture/examples.md +0 -94
  199. package/.agent/skills/architecture/pattern-selection.md +0 -68
  200. package/.agent/skills/architecture/patterns-reference.md +0 -50
  201. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  202. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  203. package/.agent/skills/database-design/database-selection.md +0 -43
  204. package/.agent/skills/database-design/indexing.md +0 -39
  205. package/.agent/skills/database-design/migrations.md +0 -48
  206. package/.agent/skills/database-design/optimization.md +0 -36
  207. package/.agent/skills/database-design/orm-selection.md +0 -30
  208. package/.agent/skills/database-design/schema-design.md +0 -56
  209. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  210. package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
  211. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  212. package/.agent/skills/frontend-design/color-system.md +0 -329
  213. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  214. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  215. package/.agent/skills/frontend-design/typography-system.md +0 -363
  216. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  217. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  218. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  219. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  220. package/.agent/skills/game-development/SKILL.md +0 -236
  221. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  222. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  223. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  224. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  225. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  226. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  227. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  228. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
  229. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  230. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  231. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  232. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  233. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  234. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  235. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  236. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  237. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  238. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  239. package/.agent/skills/mobile-design/platform-android.md +0 -666
  240. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  241. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  242. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  243. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  244. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  245. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  246. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  247. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  248. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  249. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  250. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,114 +1,273 @@
1
- ---
2
- name: python-pro
3
- description: Senior Python developer (3.11+) specializing in idiomatic, type-safe, and performant Python. Use for web development (FastAPI/Django), data science, automation, async operations, and solid typing with mypy/Pydantic.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-12
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Python Pro - Claude Code Sub-Agent
11
-
12
- You are a senior Python developer with mastery of Python 3.11+ and its ecosystem, specializing in writing idiomatic, type-safe, and performant Python code. Your expertise spans web development, data science, automation, and system programming with a focus on modern best practices and production-ready solutions.
13
-
14
- ## Configuration & Context Assessment
15
- When invoked:
16
- 1. Query context manager for existing Python codebase patterns and dependencies
17
- 2. Review project structure, virtual environments, and package configuration
18
- 3. Analyze code style, type coverage, and testing conventions
19
- 4. Implement solutions following established Pythonic patterns and project standards
20
-
21
- ---
22
-
23
- ## The Python Excellence Checklist
24
- - Type hints for all function signatures and class attributes
25
- - PEP 8 compliance with `black` formatting
26
- - Comprehensive docstrings (Google style)
27
- - Test coverage exceeding 90% with `pytest`
28
- - Error handling with custom exceptions
29
- - Async/await for I/O-bound operations
30
- - Performance profiling for critical paths
31
- - Security scanning with `bandit`
32
-
33
- ---
34
-
35
- ## Core Architecture Decision Framework
36
-
37
- ### Pythonic Patterns and Idioms
38
- * List/dict/set comprehensions over loops
39
- * Generator expressions for memory efficiency
40
- * Context managers for resource handling
41
- * Decorators for cross-cutting concerns
42
- * Properties for computed attributes
43
- * Dataclasses for data structures
44
- * Pattern matching for complex conditionals
45
-
46
- ### Type System Mastery & Async Programming
47
- * Complete type annotations for public APIs and `mypy` strict mode compliance.
48
- * Generic types (`TypeVar`, `ParamSpec`), `TypedDict`, `Literal` types.
49
- * `asyncio` for I/O bound concurrency, `concurrent.futures` for CPU bound tasks.
50
- * Proper async context managers and async generators.
51
-
52
- ### Web Framework & Data Science Expertise
53
- * **Web Frameworks:** FastAPI for modern async APIs, Pydantic for data validation, Django/Flask, SQLAlchemy for ORM.
54
- * **Data Science:** Pandas/NumPy for vectorized ops, Scikit-learn, Memory-efficient data processing.
55
- * **Package Management:** Poetry / venv / pip-tools compliance.
56
-
57
- ### Performance Optimization & Security
58
- * Profiling with `cProfile`, NumPy vectorization, Cython for critical paths.
59
- * Input validation and sanitization, SQL injection prevention, Secret management with env vars, OWASP compliance.
60
-
61
- ---
62
-
63
- ## Output Format
64
-
65
- When this skill produces or reviews code, structure your output as follows:
66
-
67
- ```
68
- ━━━ Python Pro Report ━━━━━━━━━━━━━━━━━━━━━━━━
69
- Skill: Python Pro
70
- Language: [detected language / framework]
71
- Scope: [N files · N functions]
72
- ─────────────────────────────────────────────────
73
- ✅ Passed: [checks that passed, or "All clean"]
74
- ⚠️ Warnings: [non-blocking issues, or "None"]
75
- Blocked: [blocking issues requiring fix, or "None"]
76
- ─────────────────────────────────────────────────
77
- VBC status: PENDING → VERIFIED
78
- Evidence: [test output / lint pass / compile success]
79
- ```
80
-
81
- **VBC (Verification-Before-Completion) is mandatory.**
82
- Do not mark status as VERIFIED until concrete terminal evidence is provided.
83
-
84
-
85
- ---
86
-
87
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
88
-
89
- **Slash command: `/tribunal-backend`**
90
- **Active reviewers: `logic` · `security` · `dependency` · `type-safety`**
91
-
92
- ### ❌ Forbidden AI Tropes in Python
93
- 1. **Missing Type Hints** — never generate public functions or class signatures without full type hints (`def func(a: int) -> str:`).
94
- 2. **Synchronous I/O in Async Contexts** — never use `requests` or synchronous file reads inside a FastAPI endpoint; use `httpx` or `aiofiles`.
95
- 3. **Broad Exceptions** — never use a bare `except:` or `except Exception:`. Always catch specific exceptions.
96
- 4. **Mutable Default Arguments** — never use `def func(lst=[])`. Use `def func(lst=None)` and initialize inside.
97
- 5. **String Concatenation for SQL** — never use f-strings or `.format()` to build SQL queries. Always use parameterized queries or ORMs.
98
-
99
- ### ✅ Pre-Flight Self-Audit
100
-
101
- Review these questions before generating Python code:
102
- ```text
103
- Are all function signatures fully typed, including the return type?
104
- ✅ Is I/O properly awaited or using `asyncio.to_thread` if blocking?
105
- ✅ Did I use specific exceptions for error handling rather than catching everything?
106
- Is the code strictly PEP 8 / `black` compliant with descriptive docstrings?
107
- Did I rely on built-in standard library tools (e.g. `itertools`, `collections`) instead of reinventing the wheel?
108
- ```
109
-
110
- ### 🛑 Verification-Before-Completion (VBC) Protocol
111
-
112
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
113
- - **Forbidden:** Ending your task or declaring a script complete because the code "looks pythonic" or lacks syntax errors.
114
- - ✅ **Required:** You are explicitly forbidden from completing your task without providing **concrete terminal/test evidence** that the Python code actually runs successfully (e.g., passing `pytest` logs, `mypy` strict success, or local CLI execution output).
1
+ ---
2
+ name: python-pro
3
+ description: Python 3.12+ specialist. FastAPI, Pydantic v2, asyncio, modern types, pytest. Use when building Python APIs, data pipelines, automation, or any Python code.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 3.1.0
6
+ last-updated: 2026-04-06
7
+ ---
8
+
9
+ # Python 3.12+ — Dense Reference
10
+
11
+ ## Hallucination Traps (Read First)
12
+ - `from typing import List, Dict, Optional, Union` `list[str]`, `dict[k,v]`, `X | None`, `X | Y` (Python 3.10+)
13
+ - ❌ `user.dict()` / `user.json()` / `UserCreate.parse_obj()` → ✅ Pydantic v2: `model_dump()`, `model_dump_json()`, `model_validate()`
14
+ - Pydantic `class Config: orm_mode = True` → ✅ `model_config = {"from_attributes": True}`
15
+ - ❌ `@validator` / `@root_validator` → ✅ `@field_validator` / `@model_validator`
16
+ - `@app.on_event("startup")` `lifespan` context manager (deprecated)
17
+ - `import requests` in async code ✅ `httpx.AsyncClient()` (requests BLOCKS the event loop)
18
+ - ❌ `asyncio.run()` inside running loop `await` directly or use `loop.create_task()`
19
+ - `except Exception as e: pass` always log or re-raise
20
+
21
+ ---
22
+
23
+ ## Type System (3.12+)
24
+
25
+ ```python
26
+ # Built-in generics (3.9+) — no typing imports needed for basic types
27
+ def process(items: list[str]) -> dict[str, int]: ...
28
+ def find(user_id: int) -> User | None: ... # 3.10+ union
29
+ def parse(raw: str) -> int | float | None: ...
30
+
31
+ # Generic syntax (3.12+)
32
+ def first[T](items: list[T]) -> T | None:
33
+ return items[0] if items else None
34
+ type Point = tuple[float, float] # 3.12+ type alias
35
+
36
+ # Protocol (structural typing — duck typing with types)
37
+ from typing import Protocol, runtime_checkable
38
+ @runtime_checkable
39
+ class Renderable(Protocol):
40
+ def render(self) -> str: ...
41
+
42
+ # TypedDict typed dict with optional keys
43
+ from typing import TypedDict, NotRequired
44
+ class UserPayload(TypedDict):
45
+ name: str; email: str
46
+ age: NotRequired[int] # optional key
47
+
48
+ # ParamSpec preserve signatures in decorators
49
+ from typing import TypeVar, ParamSpec
50
+ from collections.abc import Callable
51
+ T = TypeVar("T"); P = ParamSpec("P")
52
+ def with_logging(func: Callable[P, T]) -> Callable[P, T]:
53
+ def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
54
+ result = func(*args, **kwargs)
55
+ return result
56
+ return wrapper
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Pydantic v2
62
+
63
+ ```python
64
+ from pydantic import BaseModel, Field, field_validator, model_validator
65
+ from enum import Enum
66
+
67
+ class Role(str, Enum):
68
+ ADMIN = "admin"; USER = "user"
69
+
70
+ class UserCreate(BaseModel):
71
+ name: str = Field(..., min_length=2, max_length=100)
72
+ email: str = Field(..., pattern=r"^[\w.-]+@[\w.-]+\.\w+$")
73
+ age: int = Field(..., ge=13, le=120)
74
+ role: Role = Role.USER
75
+ tags: list[str] = Field(default_factory=list)
76
+
77
+ @field_validator("name")
78
+ @classmethod
79
+ def name_titlecase(cls, v: str) -> str:
80
+ if not v[0].isupper(): raise ValueError("Name must start with uppercase")
81
+ return v.strip()
82
+
83
+ @model_validator(mode="after")
84
+ def check_admin_age(self) -> "UserCreate":
85
+ if self.role == Role.ADMIN and self.age < 18:
86
+ raise ValueError("Admins must be 18+")
87
+ return self
88
+
89
+ class UserResponse(BaseModel):
90
+ id: int; name: str; email: str
91
+ model_config = {"from_attributes": True} # ORM mode (was orm_mode=True in v1)
92
+
93
+ # Serialization
94
+ user.model_dump() # (was .dict())
95
+ user.model_dump_json() # (was .json())
96
+ user.model_dump(exclude={"password"}, mode="json")
97
+ UserCreate.model_validate({"name": "Alice", "email": "a@b.com", "age": 30}) # (was parse_obj)
98
+ UserCreate.model_validate_json('{"name": "Bob", ...}')
99
+ ```
100
+
101
+ ---
102
+
103
+ ## FastAPI
104
+
105
+ ```python
106
+ from fastapi import FastAPI, HTTPException, Depends, Query, Path, status
107
+ from contextlib import asynccontextmanager
108
+
109
+ @asynccontextmanager
110
+ async def lifespan(app: FastAPI):
111
+ await init_db(); await redis.connect() # startup
112
+ yield
113
+ await redis.close() # shutdown
114
+
115
+ app = FastAPI(title="My API", version="1.0.0", lifespan=lifespan)
116
+
117
+ # CORS — never "*" in production
118
+ from fastapi.middleware.cors import CORSMiddleware
119
+ app.add_middleware(CORSMiddleware,
120
+ allow_origins=["https://myapp.com"], # ❌ NEVER ["*"]
121
+ allow_credentials=True, allow_methods=["GET","POST","PUT","DELETE"], allow_headers=["*"])
122
+
123
+ # Routes
124
+ @app.get("/users", response_model=list[UserResponse])
125
+ async def list_users(skip: int = Query(0, ge=0), limit: int = Query(20, le=100)) -> list[UserResponse]:
126
+ return await db.execute(select(User).offset(skip).limit(limit))
127
+
128
+ @app.post("/users", response_model=UserResponse, status_code=status.HTTP_201_CREATED)
129
+ async def create_user(payload: UserCreate) -> UserResponse:
130
+ user = User(**payload.model_dump())
131
+ db.add(user); await db.commit(); await db.refresh(user)
132
+ return user
133
+
134
+ # Dependency Injection
135
+ async def get_db() -> AsyncGenerator[AsyncSession, None]:
136
+ async with async_session() as session:
137
+ try: yield session
138
+ finally: await session.close()
139
+
140
+ async def get_current_user(token: str = Depends(oauth2_scheme), db: AsyncSession = Depends(get_db)) -> User:
141
+ payload = decode_jwt(token)
142
+ user = await db.get(User, payload["sub"])
143
+ if not user: raise HTTPException(status_code=401, detail="Invalid credentials")
144
+ return user
145
+
146
+ def require_role(role: Role):
147
+ async def checker(user: User = Depends(get_current_user)) -> User:
148
+ if user.role != role: raise HTTPException(status_code=403, detail="Forbidden")
149
+ return user
150
+ return checker
151
+
152
+ # Background Tasks
153
+ from fastapi import BackgroundTasks
154
+ @app.post("/orders")
155
+ async def create_order(order: OrderCreate, bg: BackgroundTasks) -> OrderResponse:
156
+ result = await save_order(order)
157
+ bg.add_task(send_email, result.email)
158
+ return result
159
+
160
+ # Exception handlers
161
+ from fastapi.responses import JSONResponse
162
+ @app.exception_handler(AppError)
163
+ async def app_error(request: Request, exc: AppError) -> JSONResponse:
164
+ return JSONResponse(status_code=exc.status_code, content={"error": exc.message})
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Async Patterns
170
+
171
+ ```python
172
+ import asyncio, httpx
173
+
174
+ # Parallel calls — await all simultaneously
175
+ async def fetch_all() -> tuple:
176
+ async with httpx.AsyncClient() as client:
177
+ users, posts = await asyncio.gather(
178
+ client.get("/users"), client.get("/posts")
179
+ )
180
+ return users.json(), posts.json()
181
+
182
+ # Timeout
183
+ async with asyncio.timeout(5.0): # 3.11+ (was asyncio.wait_for)
184
+ result = await slow_operation()
185
+
186
+ # Semaphore — limit concurrent ops
187
+ sem = asyncio.Semaphore(10)
188
+ async def limited_fetch(url: str) -> dict:
189
+ async with sem:
190
+ async with httpx.AsyncClient() as client:
191
+ return (await client.get(url)).json()
192
+
193
+ # Producer-Consumer
194
+ async def producer(q: asyncio.Queue[str]):
195
+ for item in data: await q.put(item)
196
+ await q.put(None) # sentinel
197
+
198
+ async def consumer(q: asyncio.Queue[str]):
199
+ while (item := await q.get()) is not None:
200
+ await process(item)
201
+ q.task_done()
202
+ ```
203
+
204
+ ---
205
+
206
+ ## Error Handling
207
+
208
+ ```python
209
+ # NEVER silently swallow exceptions
210
+ try: result = await risky_op()
211
+ except SpecificError as e: logger.error("Failed: %s", e); raise
212
+ except Exception: logger.exception("Unexpected"); raise
213
+
214
+ # Custom exceptions with context
215
+ class ServiceError(Exception):
216
+ def __init__(self, msg: str, code: int = 500, context: dict | None = None):
217
+ super().__init__(msg)
218
+ self.code = code; self.context = context or {}
219
+
220
+ # Context managers for cleanup
221
+ from contextlib import asynccontextmanager
222
+ @asynccontextmanager
223
+ async def managed_connection():
224
+ conn = await db.connect()
225
+ try: yield conn
226
+ finally: await conn.close()
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Testing (pytest)
232
+
233
+ ```python
234
+ import pytest
235
+ from httpx import AsyncClient, ASGITransport
236
+
237
+ @pytest.fixture
238
+ async def client():
239
+ async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test") as c:
240
+ yield c
241
+
242
+ @pytest.mark.anyio
243
+ async def test_create_user(client: AsyncClient):
244
+ r = await client.post("/users", json={"name": "Alice", "email": "a@b.com", "age": 25})
245
+ assert r.status_code == 201
246
+ assert r.json()["name"] == "Alice"
247
+
248
+ # Fixtures with factories (avoid fixtures that return complex data directly)
249
+ @pytest.fixture
250
+ def make_user(db_session):
251
+ async def _make(name="Alice", role="user"):
252
+ return await User.create(db=db_session, name=name, role=role)
253
+ return _make
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Project Structure
259
+
260
+ ```
261
+ my-api/
262
+ ├── app/
263
+ │ ├── main.py # FastAPI app + lifespan
264
+ │ ├── models/ # SQLAlchemy ORM models
265
+ │ ├── schemas/ # Pydantic request/response models
266
+ │ ├── routers/ # APIRouter groups
267
+ │ ├── services/ # Business logic (no FastAPI imports)
268
+ │ ├── dependencies.py # Shared Depends() callables
269
+ │ └── config.py # Settings via pydantic-settings
270
+ ├── tests/
271
+ ├── alembic/ # Migrations
272
+ └── pyproject.toml
273
+ ```