@tinkcarlos/skillora 0.2.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 (234) hide show
  1. package/.claude/skills/.temp-skill-index.md +245 -0
  2. package/.claude/skills/SKILL.md +264 -0
  3. package/.claude/skills/api-scaffolding/SKILL.md +431 -0
  4. package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
  5. package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
  6. package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
  7. package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
  8. package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
  9. package/.claude/skills/api-testing-observability/SKILL.md +583 -0
  10. package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
  11. package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
  12. package/.claude/skills/brainstorming/SKILL.md +283 -0
  13. package/.claude/skills/bug-fixing/SKILL.md +382 -0
  14. package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
  15. package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
  16. package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
  17. package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
  18. package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
  19. package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
  20. package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
  21. package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
  22. package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
  23. package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
  24. package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
  25. package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
  26. package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
  27. package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
  28. package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
  29. package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
  30. package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
  31. package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
  32. package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
  33. package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
  34. package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
  35. package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
  36. package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
  37. package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
  38. package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
  39. package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
  40. package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
  41. package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
  42. package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
  43. package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
  44. package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
  45. package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
  46. package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
  47. package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
  48. package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
  49. package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
  50. package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
  51. package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
  52. package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
  53. package/.claude/skills/code-review/SKILL.md +535 -0
  54. package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
  55. package/.claude/skills/code-review/references/automated-analysis.md +456 -0
  56. package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
  57. package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
  58. package/.claude/skills/code-review/references/backend-review.md +868 -0
  59. package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
  60. package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
  61. package/.claude/skills/code-review/references/common-patterns.md +321 -0
  62. package/.claude/skills/code-review/references/configuration-review.md +425 -0
  63. package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
  64. package/.claude/skills/code-review/references/database-review.md +298 -0
  65. package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
  66. package/.claude/skills/code-review/references/external-standards.md +51 -0
  67. package/.claude/skills/code-review/references/feature-review.md +329 -0
  68. package/.claude/skills/code-review/references/file-review-template.md +326 -0
  69. package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
  70. package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
  71. package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
  72. package/.claude/skills/code-review/references/frontend-review.md +783 -0
  73. package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
  74. package/.claude/skills/code-review/references/fullstack-review.md +477 -0
  75. package/.claude/skills/code-review/references/functional-completeness.md +386 -0
  76. package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
  77. package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
  78. package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
  79. package/.claude/skills/code-review/references/iteration-review.md +264 -0
  80. package/.claude/skills/code-review/references/job-review.md +335 -0
  81. package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
  82. package/.claude/skills/code-review/references/logic-completeness.md +535 -0
  83. package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
  84. package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
  85. package/.claude/skills/code-review/references/new-project-review.md +226 -0
  86. package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
  87. package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
  88. package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
  89. package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
  90. package/.claude/skills/code-review/references/python-patterns.md +494 -0
  91. package/.claude/skills/code-review/references/rca-techniques.md +362 -0
  92. package/.claude/skills/code-review/references/report-template.md +430 -0
  93. package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
  94. package/.claude/skills/code-review/references/review-dimensions.md +311 -0
  95. package/.claude/skills/code-review/references/review-guide.md +202 -0
  96. package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
  97. package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
  98. package/.claude/skills/code-review/references/review-record-template.md +195 -0
  99. package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
  100. package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
  101. package/.claude/skills/containerization/SKILL.md +313 -0
  102. package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
  103. package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
  104. package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
  105. package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
  106. package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
  107. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  108. package/.claude/skills/frontend-design/SKILL.md +587 -0
  109. package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
  110. package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
  111. package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
  112. package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
  113. package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
  114. package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
  115. package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
  116. package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
  117. package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
  118. package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
  119. package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
  120. package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
  121. package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
  122. package/.claude/skills/fullstack-developer/SKILL.md +512 -0
  123. package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
  124. package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
  125. package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
  126. package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
  127. package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
  128. package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
  129. package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
  130. package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
  131. package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
  132. package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
  133. package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
  134. package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
  135. package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
  136. package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
  137. package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
  138. package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
  139. package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
  140. package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
  141. package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
  142. package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
  143. package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
  144. package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
  145. package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
  146. package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
  147. package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
  148. package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
  149. package/.claude/skills/performance-optimization/SKILL.md +250 -0
  150. package/.claude/skills/product-requirements/SKILL.md +357 -0
  151. package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
  152. package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
  153. package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
  154. package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
  155. package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
  156. package/.claude/skills/product-requirements/references/external-standards.md +62 -0
  157. package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
  158. package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
  159. package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
  160. package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
  161. package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
  162. package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
  163. package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
  164. package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
  165. package/.claude/skills/react-best-practices/SKILL.md +198 -0
  166. package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
  167. package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
  168. package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
  169. package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
  170. package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
  171. package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
  172. package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
  173. package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
  174. package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
  175. package/.claude/skills/security-audit/SKILL.md +226 -0
  176. package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
  177. package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
  178. package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
  179. package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
  180. package/.claude/skills/shared-references/skill-call-graph.md +230 -0
  181. package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
  182. package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
  183. package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
  184. package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
  185. package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
  186. package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
  187. package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
  188. package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
  189. package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
  190. package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
  191. package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
  192. package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
  193. package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
  194. package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
  195. package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
  196. package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
  197. package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
  198. package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
  199. package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
  200. package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
  201. package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
  202. package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
  203. package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
  204. package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
  205. package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
  206. package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
  207. package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
  208. package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
  209. package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
  210. package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
  211. package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
  212. package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
  213. package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
  214. package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
  215. package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
  216. package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
  217. package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
  218. package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
  219. package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
  220. package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
  221. package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
  222. package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
  223. package/.claude/skills/test-driven-development/SKILL.md +246 -0
  224. package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
  225. package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
  226. package/.claude/skills/using-skillstack/SKILL.md +127 -0
  227. package/.claude/skills/vercel-deploy/SKILL.md +166 -0
  228. package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
  229. package/.claude/skills/verification-before-completion/SKILL.md +305 -0
  230. package/.claude/skills/writing-plans/SKILL.md +259 -0
  231. package/README.md +69 -0
  232. package/bin/cli.js +468 -0
  233. package/lib/init.js +333 -0
  234. package/package.json +29 -0
@@ -0,0 +1,312 @@
1
+ # API Contract Guide
2
+
3
+ > Define APIs before implementation. Swagger/OpenAPI is MANDATORY.
4
+
5
+ ## API-First Development
6
+
7
+ ### Workflow
8
+
9
+ ```
10
+ 1. Write OpenAPI spec
11
+ 2. Review with frontend
12
+ 3. Generate server stubs (optional)
13
+ 4. Implement endpoints
14
+ 5. Validate against spec
15
+ 6. Deploy with Swagger UI
16
+ ```
17
+
18
+ ---
19
+
20
+ ## OpenAPI Specification Template
21
+
22
+ ```yaml
23
+ openapi: 3.0.3
24
+ info:
25
+ title: API Name
26
+ description: API description
27
+ version: 1.0.0
28
+
29
+ servers:
30
+ - url: http://localhost:8000/api
31
+ description: Development
32
+ - url: https://api.example.com
33
+ description: Production
34
+
35
+ paths:
36
+ /users:
37
+ get:
38
+ summary: List all users
39
+ tags: [Users]
40
+ parameters:
41
+ - name: page
42
+ in: query
43
+ schema:
44
+ type: integer
45
+ default: 1
46
+ - name: limit
47
+ in: query
48
+ schema:
49
+ type: integer
50
+ default: 20
51
+ responses:
52
+ 200:
53
+ description: Success
54
+ content:
55
+ application/json:
56
+ schema:
57
+ type: object
58
+ properties:
59
+ data:
60
+ type: array
61
+ items:
62
+ $ref: '#/components/schemas/User'
63
+ total:
64
+ type: integer
65
+ 401:
66
+ $ref: '#/components/responses/Unauthorized'
67
+
68
+ post:
69
+ summary: Create user
70
+ tags: [Users]
71
+ requestBody:
72
+ required: true
73
+ content:
74
+ application/json:
75
+ schema:
76
+ $ref: '#/components/schemas/UserCreate'
77
+ responses:
78
+ 201:
79
+ description: Created
80
+ content:
81
+ application/json:
82
+ schema:
83
+ $ref: '#/components/schemas/User'
84
+ 400:
85
+ $ref: '#/components/responses/BadRequest'
86
+ 422:
87
+ $ref: '#/components/responses/ValidationError'
88
+
89
+ /users/{id}:
90
+ get:
91
+ summary: Get user by ID
92
+ tags: [Users]
93
+ parameters:
94
+ - name: id
95
+ in: path
96
+ required: true
97
+ schema:
98
+ type: integer
99
+ responses:
100
+ 200:
101
+ description: Success
102
+ content:
103
+ application/json:
104
+ schema:
105
+ $ref: '#/components/schemas/User'
106
+ 404:
107
+ $ref: '#/components/responses/NotFound'
108
+
109
+ components:
110
+ schemas:
111
+ User:
112
+ type: object
113
+ required: [id, email, name]
114
+ properties:
115
+ id:
116
+ type: integer
117
+ email:
118
+ type: string
119
+ format: email
120
+ name:
121
+ type: string
122
+ created_at:
123
+ type: string
124
+ format: date-time
125
+
126
+ UserCreate:
127
+ type: object
128
+ required: [email, name, password]
129
+ properties:
130
+ email:
131
+ type: string
132
+ format: email
133
+ name:
134
+ type: string
135
+ minLength: 2
136
+ password:
137
+ type: string
138
+ minLength: 8
139
+
140
+ Error:
141
+ type: object
142
+ properties:
143
+ code:
144
+ type: string
145
+ message:
146
+ type: string
147
+ details:
148
+ type: object
149
+
150
+ responses:
151
+ BadRequest:
152
+ description: Bad request
153
+ content:
154
+ application/json:
155
+ schema:
156
+ $ref: '#/components/schemas/Error'
157
+
158
+ Unauthorized:
159
+ description: Authentication required
160
+ content:
161
+ application/json:
162
+ schema:
163
+ $ref: '#/components/schemas/Error'
164
+
165
+ NotFound:
166
+ description: Resource not found
167
+ content:
168
+ application/json:
169
+ schema:
170
+ $ref: '#/components/schemas/Error'
171
+
172
+ ValidationError:
173
+ description: Validation failed
174
+ content:
175
+ application/json:
176
+ schema:
177
+ $ref: '#/components/schemas/Error'
178
+
179
+ securitySchemes:
180
+ bearerAuth:
181
+ type: http
182
+ scheme: bearer
183
+ bearerFormat: JWT
184
+
185
+ security:
186
+ - bearerAuth: []
187
+ ```
188
+
189
+ ---
190
+
191
+ ## Framework Integration
192
+
193
+ ### Python FastAPI
194
+
195
+ ```python
196
+ from fastapi import FastAPI
197
+ from fastapi.openapi.utils import get_openapi
198
+
199
+ app = FastAPI(
200
+ title="My API",
201
+ description="API description",
202
+ version="1.0.0",
203
+ docs_url="/docs", # Swagger UI
204
+ redoc_url="/redoc", # ReDoc
205
+ )
206
+
207
+ # Custom OpenAPI schema
208
+ def custom_openapi():
209
+ if app.openapi_schema:
210
+ return app.openapi_schema
211
+ openapi_schema = get_openapi(
212
+ title="My API",
213
+ version="1.0.0",
214
+ routes=app.routes,
215
+ )
216
+ app.openapi_schema = openapi_schema
217
+ return app.openapi_schema
218
+
219
+ app.openapi = custom_openapi
220
+ ```
221
+
222
+ ### Node.js Express
223
+
224
+ ```javascript
225
+ const swaggerJsdoc = require('swagger-jsdoc');
226
+ const swaggerUi = require('swagger-ui-express');
227
+
228
+ const options = {
229
+ definition: {
230
+ openapi: '3.0.0',
231
+ info: {
232
+ title: 'My API',
233
+ version: '1.0.0',
234
+ },
235
+ },
236
+ apis: ['./routes/*.js'],
237
+ };
238
+
239
+ const specs = swaggerJsdoc(options);
240
+ app.use('/docs', swaggerUi.serve, swaggerUi.setup(specs));
241
+ ```
242
+
243
+ ---
244
+
245
+ ## Contract Verification Checklist
246
+
247
+ ### Before Implementation
248
+
249
+ - [ ] OpenAPI spec written
250
+ - [ ] All endpoints documented
251
+ - [ ] Request/response schemas defined
252
+ - [ ] Error responses documented
253
+ - [ ] Auth requirements specified
254
+ - [ ] Frontend team reviewed and approved
255
+
256
+ ### After Implementation
257
+
258
+ - [ ] Swagger UI accessible
259
+ - [ ] All endpoints match spec
260
+ - [ ] Response schemas validated
261
+ - [ ] Error codes match documentation
262
+ - [ ] Examples work in Swagger UI
263
+
264
+ ---
265
+
266
+ ## Frontend Mock Generation
267
+
268
+ From OpenAPI spec, generate mocks:
269
+
270
+ ```typescript
271
+ // Generated from OpenAPI spec
272
+ export interface User {
273
+ id: number;
274
+ email: string;
275
+ name: string;
276
+ created_at: string;
277
+ }
278
+
279
+ export interface UserCreate {
280
+ email: string;
281
+ name: string;
282
+ password: string;
283
+ }
284
+
285
+ // Mock data matching schema
286
+ export const mockUsers: User[] = [
287
+ {
288
+ id: 1,
289
+ email: 'user@example.com',
290
+ name: 'Test User',
291
+ created_at: '2024-01-01T00:00:00Z'
292
+ }
293
+ ];
294
+
295
+ // Mock API matching endpoints
296
+ export const mockApi = {
297
+ getUsers: async (): Promise<{ data: User[], total: number }> => {
298
+ return { data: mockUsers, total: mockUsers.length };
299
+ },
300
+
301
+ createUser: async (data: UserCreate): Promise<User> => {
302
+ return { ...mockUsers[0], ...data, id: Date.now() };
303
+ },
304
+
305
+ getUser: async (id: number): Promise<User> => {
306
+ const user = mockUsers.find(u => u.id === id);
307
+ if (!user) throw new Error('Not found');
308
+ return user;
309
+ }
310
+ };
311
+ ```
312
+
@@ -0,0 +1,223 @@
1
+ # API Response Patterns
2
+
3
+ Best practices for handling API responses, especially distinguishing HTTP status from business status.
4
+
5
+ ## The HTTP vs Business Status Problem
6
+
7
+ **Common Bug**: Treating HTTP 200 as "success" when the response body contains a business error.
8
+
9
+ ```
10
+ HTTP 200 OK
11
+ {
12
+ "code": -1,
13
+ "message": "User not found",
14
+ "data": null
15
+ }
16
+ ```
17
+
18
+ This is HTTP success but **business failure**. Code that only checks HTTP status will miss this.
19
+
20
+ ## Common Response Patterns
21
+
22
+ ### Pattern A: Numeric Code
23
+
24
+ ```json
25
+ {
26
+ "code": 0,
27
+ "message": "success",
28
+ "data": { ... }
29
+ }
30
+ ```
31
+
32
+ | Code | Meaning |
33
+ |------|---------|
34
+ | 0 | Success |
35
+ | 200 | Success (alternative) |
36
+ | -1, 400, 500, etc. | Error |
37
+
38
+ ### Pattern B: Boolean Success
39
+
40
+ ```json
41
+ {
42
+ "success": true,
43
+ "result": { ... }
44
+ }
45
+ ```
46
+
47
+ ```json
48
+ {
49
+ "success": false,
50
+ "error": "Invalid input"
51
+ }
52
+ ```
53
+
54
+ ### Pattern C: String Status
55
+
56
+ ```json
57
+ {
58
+ "status": "success",
59
+ "payload": { ... }
60
+ }
61
+ ```
62
+
63
+ ```json
64
+ {
65
+ "status": "error",
66
+ "message": "Something went wrong"
67
+ }
68
+ ```
69
+
70
+ ### Pattern D: Error-First
71
+
72
+ ```json
73
+ {
74
+ "error": null,
75
+ "data": { ... }
76
+ }
77
+ ```
78
+
79
+ ```json
80
+ {
81
+ "error": {
82
+ "code": "INVALID_INPUT",
83
+ "message": "Email is required"
84
+ },
85
+ "data": null
86
+ }
87
+ ```
88
+
89
+ ## Response Validation Checklist
90
+
91
+ ### 1. Identify Response Structure
92
+
93
+ - [ ] What field indicates success/failure? (code, success, status, error)
94
+ - [ ] What are the success values? (0, 200, true, "success", null error)
95
+ - [ ] Where is the error message? (message, msg, error, error.message)
96
+ - [ ] Where is the payload? (data, result, payload, body)
97
+
98
+ ### 2. Define Success Condition
99
+
100
+ ```javascript
101
+ // Bad: Only check HTTP status
102
+ const isSuccess = response.status === 200;
103
+
104
+ // Good: Check HTTP status AND business status
105
+ const isSuccess = response.status === 200 &&
106
+ (data.code === 0 || data.code === 200 || data.success === true);
107
+ ```
108
+
109
+ ### 3. Extract Error Information
110
+
111
+ ```javascript
112
+ // Handle multiple error message locations
113
+ const errorMessage =
114
+ data.message ||
115
+ data.msg ||
116
+ data.error?.message ||
117
+ data.error ||
118
+ `HTTP ${response.status}`;
119
+ ```
120
+
121
+ ### 4. Handle Edge Cases
122
+
123
+ | Case | Handling |
124
+ |------|----------|
125
+ | Non-JSON response | Fallback to HTTP status text |
126
+ | Empty body | Treat as success if HTTP 2xx |
127
+ | Network timeout | Explicit error with retry option |
128
+ | Partial response | Validate required fields before use |
129
+
130
+ ## Implementation Pattern
131
+
132
+ ### Backend (Python example)
133
+
134
+ ```python
135
+ def check_business_status(response_body: str) -> tuple[bool, str]:
136
+ """
137
+ Check business status from response body.
138
+ Returns (is_success, error_message).
139
+ """
140
+ try:
141
+ data = json.loads(response_body)
142
+
143
+ # Pattern A: Numeric code
144
+ if "code" in data:
145
+ success_codes = [0, 200, "0", "200"]
146
+ if data["code"] not in success_codes:
147
+ return False, data.get("message") or f"Error code: {data['code']}"
148
+
149
+ # Pattern B: Boolean success
150
+ if "success" in data:
151
+ if not data["success"]:
152
+ return False, data.get("message") or "Operation failed"
153
+
154
+ # Pattern C: String status
155
+ if "status" in data and isinstance(data["status"], str):
156
+ if data["status"].lower() in ["error", "fail", "failed"]:
157
+ return False, data.get("message") or f"Status: {data['status']}"
158
+
159
+ return True, ""
160
+ except (json.JSONDecodeError, TypeError):
161
+ return True, "" # Let HTTP status decide
162
+ ```
163
+
164
+ ### Frontend (TypeScript example)
165
+
166
+ ```typescript
167
+ interface ApiResponse<T> {
168
+ code?: number;
169
+ success?: boolean;
170
+ status?: string;
171
+ message?: string;
172
+ msg?: string;
173
+ error?: string | { message: string };
174
+ data?: T;
175
+ }
176
+
177
+ function isBusinessSuccess<T>(response: ApiResponse<T>): boolean {
178
+ // Check code field
179
+ if (response.code !== undefined) {
180
+ return [0, 200].includes(response.code);
181
+ }
182
+ // Check success field
183
+ if (response.success !== undefined) {
184
+ return response.success === true;
185
+ }
186
+ // Check status field
187
+ if (typeof response.status === 'string') {
188
+ return !['error', 'fail', 'failed'].includes(response.status.toLowerCase());
189
+ }
190
+ // No business status field, assume success
191
+ return true;
192
+ }
193
+
194
+ function extractErrorMessage<T>(response: ApiResponse<T>): string {
195
+ return response.message
196
+ || response.msg
197
+ || (typeof response.error === 'string' ? response.error : response.error?.message)
198
+ || 'Unknown error';
199
+ }
200
+ ```
201
+
202
+ ## Testing Checklist
203
+
204
+ | Test Case | Input | Expected Behavior |
205
+ |-----------|-------|-------------------|
206
+ | HTTP 200, code 0 | Success response | Treat as success |
207
+ | HTTP 200, code -1 | Business error | Treat as failure, show message |
208
+ | HTTP 200, success false | Business error | Treat as failure |
209
+ | HTTP 500 | Server error | Treat as error |
210
+ | HTTP 200, empty body | Edge case | Treat as success |
211
+ | HTTP 200, non-JSON | Edge case | Fallback to HTTP status |
212
+ | Network timeout | Edge case | Show timeout error |
213
+
214
+ ## Common Mistakes
215
+
216
+ | Mistake | Problem | Fix |
217
+ |---------|---------|-----|
218
+ | Only check HTTP status | Miss business errors | Also check response body |
219
+ | Assume response shape | Crash on unexpected structure | Defensive parsing |
220
+ | Hardcode error field | Miss alternative locations | Check multiple fields |
221
+ | Ignore non-JSON | Crash on HTML error pages | Type check before parse |
222
+ | No timeout handling | Hung requests | Set timeout, show message |
223
+