oh-my-customcode 0.1.2 → 0.1.3

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 (223) hide show
  1. package/README.md +45 -32
  2. package/dist/cli/index.js +12 -20
  3. package/dist/index.js +3 -3
  4. package/package.json +2 -2
  5. package/templates/.claude/rules/MUST-orchestrator-coordination.md +25 -0
  6. package/templates/agents/index.yaml +6 -0
  7. package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
  8. package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
  9. package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
  10. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
  11. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
  12. package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
  13. package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
  14. package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
  15. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
  16. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
  17. package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
  18. package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
  19. package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
  20. package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
  21. package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
  22. package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
  23. package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +291 -0
  24. package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +341 -0
  25. package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
  26. package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
  27. package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
  28. package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +112 -0
  29. package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
  30. package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
  31. package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +89 -0
  32. package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
  33. package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
  34. package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
  35. package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
  36. package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
  37. package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
  38. package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
  39. package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
  40. package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
  41. package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
  42. package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
  43. package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
  44. package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
  45. package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
  46. package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
  47. package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
  48. package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
  49. package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
  50. package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
  51. package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
  52. package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
  53. package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
  54. package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
  55. package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
  56. package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
  57. package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
  58. package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
  59. package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
  60. package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
  61. package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
  62. package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
  63. package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
  64. package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
  65. package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
  66. package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
  67. package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
  68. package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
  69. package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
  70. package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
  71. package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
  72. package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
  73. package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
  74. package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
  75. package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
  76. package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
  77. package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
  78. package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
  79. package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
  80. package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
  81. package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
  82. package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
  83. package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
  84. package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
  85. package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +291 -0
  86. package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +341 -0
  87. package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
  88. package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
  89. package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
  90. package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +112 -0
  91. package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
  92. package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
  93. package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +89 -0
  94. package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
  95. package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
  96. package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
  97. package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
  98. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
  99. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
  100. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
  101. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
  102. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
  103. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
  104. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
  105. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
  106. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
  107. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
  108. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
  109. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
  110. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
  111. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
  112. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
  113. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
  114. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
  115. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
  116. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
  117. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
  118. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
  119. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
  120. package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
  121. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
  122. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
  123. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
  124. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
  125. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
  126. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
  127. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
  128. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
  129. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
  130. package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
  131. package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
  132. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
  133. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
  134. package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
  135. package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
  136. package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
  137. package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
  138. package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
  139. package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
  140. package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +291 -0
  141. package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +341 -0
  142. package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
  143. package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
  144. package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
  145. package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +112 -0
  146. package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
  147. package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
  148. package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +89 -0
  149. package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
  150. package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
  151. package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
  152. package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
  153. package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
  154. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
  155. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
  156. package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
  157. package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
  158. package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
  159. package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +291 -0
  160. package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +341 -0
  161. package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
  162. package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
  163. package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
  164. package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +112 -0
  165. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
  166. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
  167. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +89 -0
  168. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
  169. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
  170. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
  171. package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
  172. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
  173. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
  174. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
  175. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
  176. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
  177. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
  178. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
  179. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
  180. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
  181. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
  182. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
  183. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
  184. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
  185. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
  186. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
  187. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
  188. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
  189. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
  190. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
  191. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
  192. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
  193. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
  194. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
  195. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
  196. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
  197. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
  198. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
  199. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
  200. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
  201. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
  202. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
  203. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
  204. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
  205. package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
  206. package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
  207. package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
  208. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
  209. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
  210. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
  211. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
  212. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
  213. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
  214. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
  215. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
  216. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
  217. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
  218. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
  219. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
  220. package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
  221. package/templates/agents/tutor/go-tutor/index.yaml +48 -0
  222. package/templates/manifest.json +55 -0
  223. package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
@@ -0,0 +1,232 @@
1
+ # FastAPI Best Practices
2
+
3
+ > Source: https://fastapi.tiangolo.com/ and community patterns
4
+
5
+ ## Project Structure
6
+
7
+ Organize by domain, not by file type:
8
+
9
+ ```
10
+ src/
11
+ ├── auth/
12
+ │ ├── router.py # API endpoints
13
+ │ ├── schemas.py # Pydantic models
14
+ │ ├── models.py # Database models
15
+ │ ├── service.py # Business logic
16
+ │ ├── dependencies.py # Route validators
17
+ │ └── exceptions.py # Custom exceptions
18
+ ├── users/
19
+ │ └── ...
20
+ ├── config.py
21
+ └── main.py
22
+ ```
23
+
24
+ ## Async Best Practices
25
+
26
+ ### I/O-Intensive Tasks
27
+
28
+ ```python
29
+ # Use async def with await for non-blocking I/O
30
+ async def fetch_user(user_id: int) -> User:
31
+ async with httpx.AsyncClient() as client:
32
+ response = await client.get(f"/api/users/{user_id}")
33
+ return User(**response.json())
34
+ ```
35
+
36
+ ### Sync I/O Operations
37
+
38
+ ```python
39
+ # Use regular def - FastAPI offloads to threadpool
40
+ def read_config() -> dict:
41
+ with open("config.yaml") as f:
42
+ return yaml.safe_load(f)
43
+ ```
44
+
45
+ ### CPU-Intensive Tasks
46
+
47
+ ```python
48
+ # Use separate worker processes
49
+ from celery import Celery
50
+
51
+ celery_app = Celery("tasks", broker="redis://localhost")
52
+
53
+ @celery_app.task
54
+ def process_data(data: dict) -> dict:
55
+ # Heavy computation
56
+ return result
57
+ ```
58
+
59
+ ### Never Do This
60
+
61
+ ```python
62
+ # WRONG: Blocks event loop
63
+ async def bad_example():
64
+ time.sleep(5) # Never use time.sleep in async!
65
+
66
+ # CORRECT: Use asyncio.sleep
67
+ async def good_example():
68
+ await asyncio.sleep(5)
69
+ ```
70
+
71
+ ## Pydantic Models
72
+
73
+ ### Custom Base Model
74
+
75
+ ```python
76
+ from pydantic import BaseModel
77
+ from datetime import datetime
78
+
79
+ class AppBaseModel(BaseModel):
80
+ class Config:
81
+ from_attributes = True
82
+ json_encoders = {
83
+ datetime: lambda v: v.isoformat()
84
+ }
85
+
86
+ class UserResponse(AppBaseModel):
87
+ id: int
88
+ email: str
89
+ created_at: datetime
90
+ ```
91
+
92
+ ### Validation
93
+
94
+ ```python
95
+ from pydantic import BaseModel, EmailStr, Field, validator
96
+
97
+ class UserCreate(BaseModel):
98
+ email: EmailStr
99
+ password: str = Field(..., min_length=8)
100
+ age: int = Field(..., ge=18, le=120)
101
+
102
+ @validator("password")
103
+ def password_strength(cls, v):
104
+ if not any(c.isupper() for c in v):
105
+ raise ValueError("Password must contain uppercase")
106
+ return v
107
+ ```
108
+
109
+ ## Dependencies
110
+
111
+ ### Authentication
112
+
113
+ ```python
114
+ from fastapi import Depends, HTTPException
115
+ from fastapi.security import OAuth2PasswordBearer
116
+
117
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
118
+
119
+ async def get_current_user(
120
+ token: str = Depends(oauth2_scheme),
121
+ db: AsyncSession = Depends(get_db)
122
+ ) -> User:
123
+ user = await verify_token(token, db)
124
+ if not user:
125
+ raise HTTPException(status_code=401)
126
+ return user
127
+
128
+ async def get_active_user(
129
+ user: User = Depends(get_current_user)
130
+ ) -> User:
131
+ if not user.is_active:
132
+ raise HTTPException(status_code=403)
133
+ return user
134
+ ```
135
+
136
+ ### Database Session
137
+
138
+ ```python
139
+ from sqlalchemy.ext.asyncio import AsyncSession
140
+
141
+ async def get_db() -> AsyncGenerator[AsyncSession, None]:
142
+ async with async_session() as session:
143
+ try:
144
+ yield session
145
+ await session.commit()
146
+ except Exception:
147
+ await session.rollback()
148
+ raise
149
+ ```
150
+
151
+ ## Error Handling
152
+
153
+ ```python
154
+ # Custom exceptions
155
+ class AuthException(Exception):
156
+ pass
157
+
158
+ class InvalidCredentials(AuthException):
159
+ pass
160
+
161
+ # Exception handler
162
+ @app.exception_handler(AuthException)
163
+ async def auth_exception_handler(request, exc):
164
+ return JSONResponse(
165
+ status_code=401,
166
+ content={"detail": str(exc)}
167
+ )
168
+
169
+ # In router
170
+ @router.post("/login")
171
+ async def login(credentials: LoginSchema):
172
+ try:
173
+ return await auth_service.login(credentials)
174
+ except InvalidCredentials:
175
+ raise HTTPException(status_code=401, detail="Invalid credentials")
176
+ ```
177
+
178
+ ## API Design
179
+
180
+ ```python
181
+ from fastapi import APIRouter
182
+
183
+ router = APIRouter(
184
+ prefix="/users",
185
+ tags=["users"]
186
+ )
187
+
188
+ @router.get(
189
+ "/{user_id}",
190
+ response_model=UserResponse,
191
+ summary="Get user by ID",
192
+ responses={
193
+ 404: {"model": ErrorResponse, "description": "User not found"}
194
+ }
195
+ )
196
+ async def get_user(
197
+ user_id: int,
198
+ db: AsyncSession = Depends(get_db),
199
+ current_user: User = Depends(get_current_user)
200
+ ) -> UserResponse:
201
+ """
202
+ Get a specific user by their ID.
203
+
204
+ - **user_id**: The unique identifier of the user
205
+ """
206
+ user = await user_service.get(db, user_id)
207
+ if not user:
208
+ raise HTTPException(status_code=404, detail="User not found")
209
+ return user
210
+ ```
211
+
212
+ ## Testing
213
+
214
+ ```python
215
+ import pytest
216
+ from httpx import AsyncClient
217
+ from main import app
218
+
219
+ @pytest.fixture
220
+ async def client():
221
+ async with AsyncClient(app=app, base_url="http://test") as ac:
222
+ yield ac
223
+
224
+ @pytest.mark.asyncio
225
+ async def test_create_user(client: AsyncClient):
226
+ response = await client.post(
227
+ "/users/",
228
+ json={"email": "test@example.com", "password": "Password123"}
229
+ )
230
+ assert response.status_code == 201
231
+ assert response.json()["email"] == "test@example.com"
232
+ ```
@@ -0,0 +1,21 @@
1
+ # FastAPI Guide
2
+
3
+ metadata:
4
+ name: fastapi
5
+ description: FastAPI framework reference documentation
6
+
7
+ source:
8
+ type: external
9
+ origin: fastapi.tiangolo.com
10
+ urls:
11
+ - https://fastapi.tiangolo.com/
12
+ - https://github.com/zhanymkanov/fastapi-best-practices
13
+ last_fetched: "2026-01-22"
14
+
15
+ documents:
16
+ - name: best-practices
17
+ path: ./best-practices.md
18
+ description: FastAPI best practices and patterns
19
+
20
+ used_by:
21
+ - fastapi-expert
@@ -0,0 +1,269 @@
1
+ # FastAPI Best Practices Skill
2
+
3
+ > **Category**: Backend
4
+ > **Source**: Internal (based on FastAPI docs and community patterns)
5
+
6
+ ## Purpose
7
+
8
+ Apply FastAPI patterns for building high-performance async APIs.
9
+
10
+ ## Rules
11
+
12
+ ### 1. Project Structure
13
+
14
+ ```yaml
15
+ structure:
16
+ domain_based: true
17
+ module_contents:
18
+ - router.py: API endpoints
19
+ - schemas.py: Pydantic models
20
+ - models.py: Database models
21
+ - service.py: Business logic
22
+ - dependencies.py: Route validators
23
+ - constants.py: Module constants
24
+ - config.py: Module configuration
25
+ - exceptions.py: Custom exceptions
26
+ - utils.py: Helper functions
27
+
28
+ imports:
29
+ style: explicit
30
+ example: "from src.auth import constants as auth_constants"
31
+
32
+ layout: |
33
+ src/
34
+ ├── auth/
35
+ │ ├── router.py
36
+ │ ├── schemas.py
37
+ │ ├── models.py
38
+ │ ├── service.py
39
+ │ └── dependencies.py
40
+ ├── users/
41
+ │ └── ...
42
+ ├── config.py
43
+ └── main.py
44
+ ```
45
+
46
+ ### 2. Async Patterns
47
+
48
+ ```yaml
49
+ io_intensive:
50
+ use: "async def"
51
+ await: "asyncio.sleep(), httpx, asyncpg, etc."
52
+ example: |
53
+ async def fetch_data():
54
+ async with httpx.AsyncClient() as client:
55
+ response = await client.get(url)
56
+ return response.json()
57
+
58
+ sync_io:
59
+ use: "def (regular function)"
60
+ reason: FastAPI offloads to threadpool automatically
61
+ example: |
62
+ def read_file():
63
+ with open('file.txt') as f:
64
+ return f.read()
65
+
66
+ cpu_intensive:
67
+ avoid: async and threadpool
68
+ use: separate worker processes
69
+ example: "Use Celery or multiprocessing"
70
+
71
+ never:
72
+ - "time.sleep() in async functions"
73
+ - "Blocking I/O in async functions"
74
+ ```
75
+
76
+ ### 3. Pydantic Models
77
+
78
+ ```yaml
79
+ validation:
80
+ use_builtin: regex, enums, email, URL validators
81
+ custom_validators: for complex logic
82
+
83
+ base_model:
84
+ create_custom: true
85
+ purpose: enforce application-wide standards
86
+ example: |
87
+ from pydantic import BaseModel
88
+ from datetime import datetime
89
+
90
+ class AppBaseModel(BaseModel):
91
+ class Config:
92
+ from_attributes = True
93
+ json_encoders = {
94
+ datetime: lambda v: v.isoformat()
95
+ }
96
+
97
+ settings:
98
+ split: across modules
99
+ avoid: single global configuration
100
+ example: |
101
+ # auth/config.py
102
+ class AuthSettings(BaseSettings):
103
+ jwt_secret: str
104
+ jwt_algorithm: str = "HS256"
105
+
106
+ # database/config.py
107
+ class DatabaseSettings(BaseSettings):
108
+ url: str
109
+ pool_size: int = 5
110
+ ```
111
+
112
+ ### 4. Dependencies
113
+
114
+ ```yaml
115
+ usage:
116
+ - Dependency injection
117
+ - Validation against database
118
+ - Authentication/authorization
119
+ - Request scoped caching
120
+
121
+ patterns:
122
+ chain: avoid code repetition
123
+ cache: FastAPI caches within request scope
124
+ decouple: small, reusable functions
125
+
126
+ example: |
127
+ async def get_current_user(
128
+ token: str = Depends(oauth2_scheme),
129
+ db: Session = Depends(get_db)
130
+ ) -> User:
131
+ user = await db.get_user_by_token(token)
132
+ if not user:
133
+ raise HTTPException(status_code=401)
134
+ return user
135
+
136
+ async def get_active_user(
137
+ user: User = Depends(get_current_user)
138
+ ) -> User:
139
+ if not user.is_active:
140
+ raise HTTPException(status_code=403)
141
+ return user
142
+ ```
143
+
144
+ ### 5. Error Handling
145
+
146
+ ```yaml
147
+ custom_exceptions:
148
+ scope: module-specific
149
+ purpose: clarity and consistency
150
+
151
+ pattern: |
152
+ # auth/exceptions.py
153
+ class AuthException(Exception):
154
+ pass
155
+
156
+ class InvalidCredentials(AuthException):
157
+ pass
158
+
159
+ class TokenExpired(AuthException):
160
+ pass
161
+
162
+ # auth/router.py
163
+ @router.post("/login")
164
+ async def login(credentials: LoginSchema):
165
+ try:
166
+ return await auth_service.login(credentials)
167
+ except InvalidCredentials:
168
+ raise HTTPException(
169
+ status_code=401,
170
+ detail="Invalid credentials"
171
+ )
172
+
173
+ exception_handlers: |
174
+ @app.exception_handler(AuthException)
175
+ async def auth_exception_handler(request, exc):
176
+ return JSONResponse(
177
+ status_code=401,
178
+ content={"detail": str(exc)}
179
+ )
180
+ ```
181
+
182
+ ### 6. Database
183
+
184
+ ```yaml
185
+ naming:
186
+ establish: upfront conventions
187
+ consistency: across all models
188
+
189
+ migrations:
190
+ tool: Alembic
191
+ naming: explicit naming rules
192
+
193
+ design:
194
+ approach: SQL-first
195
+ then: add Pydantic models
196
+
197
+ patterns: |
198
+ # Use async database drivers
199
+ from sqlalchemy.ext.asyncio import AsyncSession
200
+
201
+ async def get_user(db: AsyncSession, user_id: int):
202
+ result = await db.execute(
203
+ select(User).where(User.id == user_id)
204
+ )
205
+ return result.scalar_one_or_none()
206
+ ```
207
+
208
+ ### 7. API Design
209
+
210
+ ```yaml
211
+ routing:
212
+ prefix: meaningful module prefix
213
+ tags: for documentation grouping
214
+
215
+ responses:
216
+ schema: always define response models
217
+ status_codes: document all possible codes
218
+
219
+ example: |
220
+ router = APIRouter(
221
+ prefix="/users",
222
+ tags=["users"]
223
+ )
224
+
225
+ @router.get(
226
+ "/{user_id}",
227
+ response_model=UserResponse,
228
+ responses={
229
+ 404: {"model": ErrorResponse}
230
+ }
231
+ )
232
+ async def get_user(user_id: int):
233
+ ...
234
+ ```
235
+
236
+ ### 8. Testing
237
+
238
+ ```yaml
239
+ setup:
240
+ async_client: from day one
241
+ structure: mirror module layout
242
+
243
+ patterns: |
244
+ import pytest
245
+ from httpx import AsyncClient
246
+
247
+ @pytest.fixture
248
+ async def client():
249
+ async with AsyncClient(app=app, base_url="http://test") as ac:
250
+ yield ac
251
+
252
+ @pytest.mark.asyncio
253
+ async def test_get_user(client):
254
+ response = await client.get("/users/1")
255
+ assert response.status_code == 200
256
+ ```
257
+
258
+ ## Application
259
+
260
+ When writing FastAPI code:
261
+
262
+ 1. **Always** use domain-based project structure
263
+ 2. **Always** use `async def` for I/O operations
264
+ 3. **Prefer** Pydantic for all validation
265
+ 4. **Use** dependencies for reusable logic
266
+ 5. **Define** module-specific exceptions
267
+ 6. **Document** API with response models
268
+ 7. **Test** with async client
269
+ 8. **Use** Ruff for code quality
@@ -0,0 +1,25 @@
1
+ # FastAPI Best Practices Skill
2
+
3
+ metadata:
4
+ name: fastapi-best-practices
5
+ category: backend
6
+ description: FastAPI patterns for high-performance async APIs
7
+
8
+ source:
9
+ type: internal
10
+ reference:
11
+ - https://fastapi.tiangolo.com/
12
+ - https://github.com/zhanymkanov/fastapi-best-practices
13
+
14
+ provides:
15
+ - Project structure patterns
16
+ - Async/await best practices
17
+ - Pydantic validation patterns
18
+ - Dependency injection design
19
+ - Error handling patterns
20
+ - Database integration
21
+ - API design guidelines
22
+ - Testing patterns
23
+
24
+ used_by:
25
+ - fastapi-expert
@@ -0,0 +1,26 @@
1
+ # Go Backend Guide
2
+
3
+ metadata:
4
+ name: go-backend
5
+ description: Go backend development reference documentation
6
+
7
+ source:
8
+ type: external
9
+ origin: various
10
+ urls:
11
+ - https://go.dev/doc/effective_go
12
+ - https://github.com/golang-standards/project-layout
13
+ - https://github.com/uber-go/guide/blob/master/style.md
14
+ last_fetched: "2026-01-22"
15
+
16
+ documents:
17
+ - name: uber-style
18
+ path: ./uber-style.md
19
+ description: Uber Go style guide
20
+
21
+ - name: project-layout
22
+ path: ./project-layout.md
23
+ description: Standard Go project layout
24
+
25
+ used_by:
26
+ - go-backend-expert