@rosetears/aili-pi 0.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 (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/THIRD_PARTY_NOTICES.md +64 -0
  4. package/extensions/index.ts +6 -0
  5. package/install.sh +5 -0
  6. package/manifests/adapter-evidence.json +45 -0
  7. package/manifests/capabilities.json +124 -0
  8. package/manifests/live-verification.json +26 -0
  9. package/manifests/provenance.json +71 -0
  10. package/manifests/roles.json +474 -0
  11. package/manifests/sbom.json +7797 -0
  12. package/manifests/skill-compatibility.json +8100 -0
  13. package/manifests/subagent-provenance.json +37 -0
  14. package/package.json +91 -0
  15. package/prompts/build.md +8 -0
  16. package/prompts/define.md +8 -0
  17. package/prompts/ideate.md +8 -0
  18. package/prompts/local-review.md +8 -0
  19. package/prompts/ship.md +8 -0
  20. package/roles/agent-evaluator.md +47 -0
  21. package/roles/ai-regression-scout.md +47 -0
  22. package/roles/browser-qa-runner.md +47 -0
  23. package/roles/code-reviewer.md +47 -0
  24. package/roles/code-scout.md +47 -0
  25. package/roles/convergence-reviewer.md +55 -0
  26. package/roles/doc-researcher.md +47 -0
  27. package/roles/e2e-artifact-runner.md +47 -0
  28. package/roles/implementer.md +47 -0
  29. package/roles/opensource-sanitizer.md +47 -0
  30. package/roles/plan-auditor.md +47 -0
  31. package/roles/pr-test-analyzer.md +47 -0
  32. package/roles/security-auditor.md +47 -0
  33. package/roles/silent-failure-reviewer.md +47 -0
  34. package/roles/spec-miner.md +47 -0
  35. package/roles/test-coverage-reviewer.md +47 -0
  36. package/roles/test-engineer.md +48 -0
  37. package/roles/web-performance-auditor.md +47 -0
  38. package/roles/web-researcher.md +47 -0
  39. package/scripts/apply-adapter-evidence.ts +73 -0
  40. package/scripts/bootstrap.sh +180 -0
  41. package/scripts/generate-provenance.ts +143 -0
  42. package/scripts/local-package-e2e.ts +51 -0
  43. package/scripts/sync-roles.ts +213 -0
  44. package/scripts/sync-skills.ts +356 -0
  45. package/scripts/validate-runtime.ts +11 -0
  46. package/skills/academic-paper-review/SKILL.md +81 -0
  47. package/skills/agents-md-initialization/SKILL.md +121 -0
  48. package/skills/agents-md-initialization/references/agents-template.md +83 -0
  49. package/skills/agents-md-initialization/references/agents_md.py +215 -0
  50. package/skills/ai-regression-scout/SKILL.md +24 -0
  51. package/skills/aili-delivery-flow/SKILL.md +125 -0
  52. package/skills/aili-delivery-flow/references/artifact-contracts.md +138 -0
  53. package/skills/aili-delivery-flow/references/backend-routing.md +40 -0
  54. package/skills/aili-delivery-flow/references/build-execution-loop.md +113 -0
  55. package/skills/aili-delivery-flow/references/build-goal-mode.md +3 -0
  56. package/skills/aili-delivery-flow/references/direct-vs-delegated-work.md +38 -0
  57. package/skills/aili-delivery-flow/references/implementation-packages.md +54 -0
  58. package/skills/aili-delivery-flow/references/lifecycle.md +127 -0
  59. package/skills/aili-delivery-flow/references/protocols/acceptance-test-plan.md +18 -0
  60. package/skills/aili-delivery-flow/references/protocols/alignment-questionnaire.md +10 -0
  61. package/skills/aili-delivery-flow/references/protocols/closeout-report.md +101 -0
  62. package/skills/aili-delivery-flow/references/protocols/compact-evidence-pack.md +46 -0
  63. package/skills/aili-delivery-flow/references/protocols/idea-brief.md +10 -0
  64. package/skills/aili-delivery-flow/references/protocols/implementation-package.md +53 -0
  65. package/skills/aili-delivery-flow/references/protocols/research-evidence-pack.md +19 -0
  66. package/skills/aili-delivery-flow/references/protocols/review-report.md +7 -0
  67. package/skills/aili-delivery-flow/references/protocols/spec-draft.md +12 -0
  68. package/skills/aili-delivery-flow/references/protocols/subagent-result.md +60 -0
  69. package/skills/aili-delivery-flow/references/protocols/subagent-task-packet.md +29 -0
  70. package/skills/aili-delivery-flow/references/protocols/worktree-context.md +109 -0
  71. package/skills/aili-delivery-flow/references/questionnaire-policy.md +62 -0
  72. package/skills/aili-delivery-flow/references/review-repair-loop.md +16 -0
  73. package/skills/aili-delivery-flow/references/test-document-policy.md +35 -0
  74. package/skills/android-native-dev/SKILL.md +722 -0
  75. package/skills/android-native-dev/references/accessibility.md +209 -0
  76. package/skills/android-native-dev/references/adaptive-screens.md +231 -0
  77. package/skills/android-native-dev/references/design-style-guide.md +365 -0
  78. package/skills/android-native-dev/references/functional-requirements.md +229 -0
  79. package/skills/android-native-dev/references/motion-system.md +203 -0
  80. package/skills/android-native-dev/references/performance-stability.md +223 -0
  81. package/skills/android-native-dev/references/privacy-security.md +244 -0
  82. package/skills/android-native-dev/references/testing.md +554 -0
  83. package/skills/android-native-dev/references/visual-design.md +246 -0
  84. package/skills/api-and-interface-design/SKILL.md +318 -0
  85. package/skills/browser-qa/SKILL.md +32 -0
  86. package/skills/browser-testing-with-devtools/SKILL.md +323 -0
  87. package/skills/build-failure-repair/SKILL.md +49 -0
  88. package/skills/chart-visualization/SKILL.md +73 -0
  89. package/skills/ci-cd-and-automation/SKILL.md +353 -0
  90. package/skills/code-review-and-quality/SKILL.md +375 -0
  91. package/skills/code-review-quality-gates/SKILL.md +132 -0
  92. package/skills/code-simplification/SKILL.md +371 -0
  93. package/skills/comment-accuracy-review/SKILL.md +37 -0
  94. package/skills/consulting-analysis/SKILL.md +69 -0
  95. package/skills/context-engineering/SKILL.md +375 -0
  96. package/skills/coverage-review/SKILL.md +24 -0
  97. package/skills/data-analysis/SKILL.md +74 -0
  98. package/skills/deprecation-and-migration/SKILL.md +222 -0
  99. package/skills/documentation-and-adrs/SKILL.md +330 -0
  100. package/skills/e2e-artifact-handling/SKILL.md +30 -0
  101. package/skills/evidence-scoped-retrospective/SKILL.md +156 -0
  102. package/skills/explain-by-allegory/SKILL.md +99 -0
  103. package/skills/flutter-dev/SKILL.md +162 -0
  104. package/skills/flutter-dev/references/animations.md +497 -0
  105. package/skills/flutter-dev/references/bloc-state.md +281 -0
  106. package/skills/flutter-dev/references/forms.md +656 -0
  107. package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
  108. package/skills/flutter-dev/references/localization.md +510 -0
  109. package/skills/flutter-dev/references/networking.md +566 -0
  110. package/skills/flutter-dev/references/performance.md +305 -0
  111. package/skills/flutter-dev/references/platform-specific.md +417 -0
  112. package/skills/flutter-dev/references/project-structure.md +273 -0
  113. package/skills/flutter-dev/references/riverpod-state.md +232 -0
  114. package/skills/flutter-dev/references/testing.md +364 -0
  115. package/skills/flutter-dev/references/widget-patterns.md +233 -0
  116. package/skills/frontend-dev/SKILL.md +468 -0
  117. package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  118. package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  119. package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  120. package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
  121. package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  122. package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
  123. package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
  124. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  125. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  126. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  127. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  128. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  129. package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  130. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  131. package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
  132. package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
  133. package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
  134. package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
  135. package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
  136. package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
  137. package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
  138. package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
  139. package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
  140. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  141. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  142. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  143. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  144. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  145. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  146. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  147. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  148. package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  149. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  150. package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  151. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  152. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  153. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  154. package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
  155. package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
  156. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  157. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  158. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  159. package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
  160. package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
  161. package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
  162. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  163. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  164. package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
  165. package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  166. package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
  167. package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
  168. package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
  169. package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
  170. package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
  171. package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
  172. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  173. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  174. package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
  175. package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
  176. package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
  177. package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  178. package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
  179. package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
  180. package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  181. package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  182. package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
  183. package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  184. package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
  185. package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  186. package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  187. package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
  188. package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
  189. package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
  190. package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
  191. package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
  192. package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  193. package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
  194. package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
  195. package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
  196. package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
  197. package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  198. package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
  199. package/skills/frontend-dev/references/env-setup.md +33 -0
  200. package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
  201. package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
  202. package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
  203. package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
  204. package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
  205. package/skills/frontend-dev/references/minimax-voice-catalog.md +685 -0
  206. package/skills/frontend-dev/references/motion-recipes.md +407 -0
  207. package/skills/frontend-dev/references/troubleshooting.md +85 -0
  208. package/skills/frontend-dev/scripts/minimax_image.py +137 -0
  209. package/skills/frontend-dev/scripts/minimax_music.py +157 -0
  210. package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
  211. package/skills/frontend-dev/scripts/minimax_video.py +187 -0
  212. package/skills/frontend-dev/templates/generator_template.js +223 -0
  213. package/skills/frontend-dev/templates/viewer.html +599 -0
  214. package/skills/frontend-ui-engineering/SKILL.md +367 -0
  215. package/skills/fullstack-dev/SKILL.md +819 -0
  216. package/skills/fullstack-dev/references/api-design.md +444 -0
  217. package/skills/fullstack-dev/references/auth-flow.md +165 -0
  218. package/skills/fullstack-dev/references/db-schema.md +706 -0
  219. package/skills/fullstack-dev/references/django-best-practices.md +466 -0
  220. package/skills/fullstack-dev/references/environment-management.md +78 -0
  221. package/skills/fullstack-dev/references/release-checklist.md +278 -0
  222. package/skills/fullstack-dev/references/technology-selection.md +254 -0
  223. package/skills/fullstack-dev/references/testing-strategy.md +404 -0
  224. package/skills/git-workflow-and-versioning/SKILL.md +446 -0
  225. package/skills/github-evidence-triage/SKILL.md +115 -0
  226. package/skills/harness-evolution/SKILL.md +59 -0
  227. package/skills/harness-evolution/references/activation-matrix.md +13 -0
  228. package/skills/harness-evolution/references/approval-policy.md +20 -0
  229. package/skills/harness-evolution/references/change-report-template.md +33 -0
  230. package/skills/harness-evolution/references/component-taxonomy.md +19 -0
  231. package/skills/harness-evolution/references/verdict-policy.md +13 -0
  232. package/skills/harness-issue-triage/SKILL.md +72 -0
  233. package/skills/harness-issue-triage/references/component-diagnosis.md +25 -0
  234. package/skills/harness-issue-triage/references/triage-report-template.md +34 -0
  235. package/skills/harness-optimization-audit/SKILL.md +125 -0
  236. package/skills/idea-refine/SKILL.md +191 -0
  237. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  238. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  239. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/SKILL.upstream.md +178 -0
  240. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/examples.md +238 -0
  241. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/frameworks.md +99 -0
  242. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/refinement-criteria.md +113 -0
  243. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/scripts/idea-refine.upstream.sh +15 -0
  244. package/skills/incremental-implementation/SKILL.md +252 -0
  245. package/skills/ios-application-dev/SKILL.md +212 -0
  246. package/skills/ios-application-dev/references/accessibility.md +259 -0
  247. package/skills/ios-application-dev/references/graphics-animation.md +350 -0
  248. package/skills/ios-application-dev/references/layout-system.md +199 -0
  249. package/skills/ios-application-dev/references/metal-shader.md +178 -0
  250. package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
  251. package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
  252. package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
  253. package/skills/ios-application-dev/references/system-integration.md +401 -0
  254. package/skills/ios-application-dev/references/uikit-components.md +297 -0
  255. package/skills/local-review-gate/SKILL.md +207 -0
  256. package/skills/local-review-gate/references/addyosmani-code-review-rubric.md +33 -0
  257. package/skills/local-review-gate/references/codex-github-compatibility.md +26 -0
  258. package/skills/local-review-gate/references/ecc-code-review-adaptation.md +40 -0
  259. package/skills/local-review-gate/references/graphify-local-review.md +33 -0
  260. package/skills/local-review-gate/references/orchestration-adaptation.md +51 -0
  261. package/skills/local-review-gate/references/review-repair-lane-adaptation.md +46 -0
  262. package/skills/local-review-gate/references/upstream-provenance.md +61 -0
  263. package/skills/mature-project-pattern-research/SKILL.md +155 -0
  264. package/skills/mature-project-pattern-research/references/research-rubric.md +45 -0
  265. package/skills/minimax-docx/LICENSE +21 -0
  266. package/skills/minimax-docx/SKILL.md +273 -0
  267. package/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  268. package/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  269. package/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  270. package/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  271. package/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  272. package/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  273. package/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  274. package/skills/minimax-docx/references/cjk_typography.md +357 -0
  275. package/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  276. package/skills/minimax-docx/references/comments_guide.md +191 -0
  277. package/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  278. package/skills/minimax-docx/references/design_principles.md +819 -0
  279. package/skills/minimax-docx/references/openxml_element_order.md +308 -0
  280. package/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  281. package/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  282. package/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  283. package/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  284. package/skills/minimax-docx/references/openxml_units.md +72 -0
  285. package/skills/minimax-docx/references/scenario_a_create.md +284 -0
  286. package/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  287. package/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  288. package/skills/minimax-docx/references/track_changes_guide.md +200 -0
  289. package/skills/minimax-docx/references/troubleshooting.md +506 -0
  290. package/skills/minimax-docx/references/typography_guide.md +294 -0
  291. package/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  292. package/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  293. package/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  294. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  295. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  296. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  297. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  298. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  299. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  300. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  301. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  302. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  303. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  304. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  305. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  306. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  307. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  308. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  309. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  310. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  311. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  312. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  313. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  314. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  315. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  316. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  317. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  318. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  319. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  320. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  321. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  322. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  323. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  324. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  325. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  326. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  327. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  328. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  329. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  330. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  331. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  332. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  333. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  334. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  335. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  336. package/skills/minimax-docx/scripts/env_check.sh +196 -0
  337. package/skills/minimax-docx/scripts/setup.ps1 +274 -0
  338. package/skills/minimax-docx/scripts/setup.sh +504 -0
  339. package/skills/minimax-pdf/README.md +222 -0
  340. package/skills/minimax-pdf/SKILL.md +218 -0
  341. package/skills/minimax-pdf/design/design.md +381 -0
  342. package/skills/minimax-pdf/scripts/cover.py +1579 -0
  343. package/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  344. package/skills/minimax-pdf/scripts/fill_write.py +242 -0
  345. package/skills/minimax-pdf/scripts/make.sh +491 -0
  346. package/skills/minimax-pdf/scripts/merge.py +112 -0
  347. package/skills/minimax-pdf/scripts/palette.py +521 -0
  348. package/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  349. package/skills/minimax-pdf/scripts/render_body.py +1052 -0
  350. package/skills/minimax-pdf/scripts/render_cover.js +111 -0
  351. package/skills/minimax-xlsx/SKILL.md +156 -0
  352. package/skills/minimax-xlsx/references/create.md +691 -0
  353. package/skills/minimax-xlsx/references/edit.md +684 -0
  354. package/skills/minimax-xlsx/references/fix.md +37 -0
  355. package/skills/minimax-xlsx/references/format.md +768 -0
  356. package/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  357. package/skills/minimax-xlsx/references/read-analyze.md +97 -0
  358. package/skills/minimax-xlsx/references/validate.md +772 -0
  359. package/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  360. package/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  361. package/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  362. package/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  363. package/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  364. package/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  365. package/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  366. package/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  367. package/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  368. package/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  369. package/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  370. package/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  371. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  372. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  373. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  374. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  375. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  376. package/skills/newsletter-generation/SKILL.md +71 -0
  377. package/skills/oss-release-readiness/SKILL.md +47 -0
  378. package/skills/parallel-subagent-dispatch/SKILL.md +58 -0
  379. package/skills/performance-optimization/SKILL.md +364 -0
  380. package/skills/planning-and-task-breakdown/SKILL.md +290 -0
  381. package/skills/pptx-generator/SKILL.md +275 -0
  382. package/skills/pptx-generator/references/design-system.md +392 -0
  383. package/skills/pptx-generator/references/editing.md +162 -0
  384. package/skills/pptx-generator/references/pitfalls.md +112 -0
  385. package/skills/pptx-generator/references/pptxgenjs.md +420 -0
  386. package/skills/pptx-generator/references/slide-types.md +413 -0
  387. package/skills/pr-test-analysis/SKILL.md +24 -0
  388. package/skills/react-native-dev/SKILL.md +180 -0
  389. package/skills/react-native-dev/references/animations.md +254 -0
  390. package/skills/react-native-dev/references/components.md +124 -0
  391. package/skills/react-native-dev/references/engineering.md +527 -0
  392. package/skills/react-native-dev/references/forms.md +300 -0
  393. package/skills/react-native-dev/references/native-capabilities.md +163 -0
  394. package/skills/react-native-dev/references/navigation.md +271 -0
  395. package/skills/react-native-dev/references/networking.md +346 -0
  396. package/skills/react-native-dev/references/performance.md +215 -0
  397. package/skills/react-native-dev/references/state-management.md +230 -0
  398. package/skills/react-native-dev/references/styling.md +117 -0
  399. package/skills/react-native-dev/references/testing.md +341 -0
  400. package/skills/requirements-grilling/SKILL.md +447 -0
  401. package/skills/requirements-grilling/references/ADR-FORMAT.md +46 -0
  402. package/skills/requirements-grilling/references/CONTEXT-FORMAT.md +41 -0
  403. package/skills/requirements-grilling/references/INTERVIEW-PACKET-FORMAT.md +62 -0
  404. package/skills/requirements-grilling/references/MIT-LICENSE-MATT-POCOCK.md +25 -0
  405. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  406. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  407. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/interview-me/SKILL.upstream.md +225 -0
  408. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/LICENSE +21 -0
  409. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/NOTICE.md +12 -0
  410. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/batch-grill-me/SKILL.upstream.md +15 -0
  411. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grill-me/SKILL.upstream.md +7 -0
  412. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grilling/SKILL.upstream.md +12 -0
  413. package/skills/review-pipeline/SKILL.md +38 -0
  414. package/skills/rose-memory/SKILL.md +210 -0
  415. package/skills/rose-memory/references/README.md +48 -0
  416. package/skills/rose-memory/references/memory_cli.py +2384 -0
  417. package/skills/rose-memory/references/schema.sql +315 -0
  418. package/skills/security-and-hardening/SKILL.md +369 -0
  419. package/skills/session-handoff/SKILL.md +88 -0
  420. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  421. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  422. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/handoff/SKILL.upstream.md +16 -0
  423. package/skills/session-handoff/scripts/session_handoff.py +764 -0
  424. package/skills/shader-dev/SKILL.md +316 -0
  425. package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
  426. package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
  427. package/skills/shader-dev/reference/anti-aliasing.md +71 -0
  428. package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
  429. package/skills/shader-dev/reference/camera-effects.md +80 -0
  430. package/skills/shader-dev/reference/cellular-automata.md +635 -0
  431. package/skills/shader-dev/reference/color-palette.md +481 -0
  432. package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
  433. package/skills/shader-dev/reference/domain-repetition.md +436 -0
  434. package/skills/shader-dev/reference/domain-warping.md +419 -0
  435. package/skills/shader-dev/reference/fluid-simulation.md +425 -0
  436. package/skills/shader-dev/reference/fractal-rendering.md +525 -0
  437. package/skills/shader-dev/reference/lighting-model.md +639 -0
  438. package/skills/shader-dev/reference/matrix-transform.md +535 -0
  439. package/skills/shader-dev/reference/multipass-buffer.md +571 -0
  440. package/skills/shader-dev/reference/normal-estimation.md +418 -0
  441. package/skills/shader-dev/reference/particle-system.md +589 -0
  442. package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
  443. package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
  444. package/skills/shader-dev/reference/post-processing.md +375 -0
  445. package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
  446. package/skills/shader-dev/reference/procedural-noise.md +551 -0
  447. package/skills/shader-dev/reference/ray-marching.md +396 -0
  448. package/skills/shader-dev/reference/sdf-2d.md +724 -0
  449. package/skills/shader-dev/reference/sdf-3d.md +805 -0
  450. package/skills/shader-dev/reference/sdf-tricks.md +63 -0
  451. package/skills/shader-dev/reference/shadow-techniques.md +476 -0
  452. package/skills/shader-dev/reference/simulation-physics.md +644 -0
  453. package/skills/shader-dev/reference/sound-synthesis.md +578 -0
  454. package/skills/shader-dev/reference/terrain-rendering.md +839 -0
  455. package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
  456. package/skills/shader-dev/reference/texture-sampling.md +553 -0
  457. package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
  458. package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
  459. package/skills/shader-dev/reference/voxel-rendering.md +701 -0
  460. package/skills/shader-dev/reference/water-ocean.md +445 -0
  461. package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
  462. package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
  463. package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
  464. package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
  465. package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
  466. package/skills/shader-dev/techniques/camera-effects.md +115 -0
  467. package/skills/shader-dev/techniques/cellular-automata.md +531 -0
  468. package/skills/shader-dev/techniques/color-palette.md +380 -0
  469. package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
  470. package/skills/shader-dev/techniques/domain-repetition.md +333 -0
  471. package/skills/shader-dev/techniques/domain-warping.md +414 -0
  472. package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
  473. package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
  474. package/skills/shader-dev/techniques/lighting-model.md +527 -0
  475. package/skills/shader-dev/techniques/matrix-transform.md +455 -0
  476. package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
  477. package/skills/shader-dev/techniques/normal-estimation.md +318 -0
  478. package/skills/shader-dev/techniques/particle-system.md +1203 -0
  479. package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
  480. package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
  481. package/skills/shader-dev/techniques/post-processing.md +788 -0
  482. package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
  483. package/skills/shader-dev/techniques/procedural-noise.md +554 -0
  484. package/skills/shader-dev/techniques/ray-marching.md +467 -0
  485. package/skills/shader-dev/techniques/sdf-2d.md +631 -0
  486. package/skills/shader-dev/techniques/sdf-3d.md +589 -0
  487. package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
  488. package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
  489. package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
  490. package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
  491. package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
  492. package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
  493. package/skills/shader-dev/techniques/texture-sampling.md +382 -0
  494. package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
  495. package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
  496. package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
  497. package/skills/shader-dev/techniques/water-ocean.md +490 -0
  498. package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
  499. package/skills/shipping-and-launch/SKILL.md +334 -0
  500. package/skills/silent-failure-hunting/SKILL.md +24 -0
  501. package/skills/source-driven-development/SKILL.md +223 -0
  502. package/skills/spec-driven-development/SKILL.md +235 -0
  503. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  504. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  505. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/spec-driven-development/SKILL.upstream.md +206 -0
  506. package/skills/strategy-stress-test/SKILL.md +185 -0
  507. package/skills/systematic-literature-review/SKILL.md +77 -0
  508. package/skills/test-document-generator/SKILL.md +152 -0
  509. package/skills/test-document-generator/references/test-document-template.md +45 -0
  510. package/skills/test-driven-development/SKILL.md +399 -0
  511. package/skills/write-skills/GLOSSARY.md +113 -0
  512. package/skills/write-skills/SKILL.md +133 -0
  513. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  514. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  515. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/GLOSSARY.md +201 -0
  516. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/SKILL.upstream.md +83 -0
  517. package/src/runtime/child-guard.ts +70 -0
  518. package/src/runtime/conflicts.ts +25 -0
  519. package/src/runtime/contracts.ts +9 -0
  520. package/src/runtime/doctor.ts +134 -0
  521. package/src/runtime/global-resources.ts +152 -0
  522. package/src/runtime/index.ts +23 -0
  523. package/src/runtime/lifecycle.ts +19 -0
  524. package/src/runtime/native-integrations.ts +44 -0
  525. package/src/runtime/path-boundaries.ts +69 -0
  526. package/src/runtime/registry.ts +213 -0
  527. package/src/runtime/roles.ts +64 -0
  528. package/src/runtime/rose-context.ts +24 -0
  529. package/src/runtime/subagents.ts +426 -0
  530. package/templates/APPEND_SYSTEM.md +12 -0
  531. package/upstream/aili-workflows.lock.json +3226 -0
@@ -0,0 +1,444 @@
1
+ ---
2
+ name: fullstack-dev-api-design
3
+ description: "API design patterns and best practices. Use when creating endpoints, choosing methods/status codes, implementing pagination, or writing OpenAPI specs. Prevents common REST/GraphQL/gRPC mistakes."
4
+ license: MIT
5
+ metadata:
6
+ version: "2.0.0"
7
+ sources:
8
+ - Microsoft REST API Guidelines
9
+ - Google API Design Guide
10
+ - Zalando RESTful API Guidelines
11
+ - JSON:API Specification
12
+ - RFC 9457 (Problem Details for HTTP APIs)
13
+ - RFC 9110 (HTTP Semantics)
14
+ ---
15
+
16
+ # API Design Guidelines
17
+
18
+ Framework-agnostic API design guide for backend and full-stack engineers. 50+ rules across 10 categories, prioritized by impact. Covers REST, GraphQL, and gRPC.
19
+
20
+ ## Scope
21
+
22
+ **USE this skill when:**
23
+ - Designing a new API or adding endpoints
24
+ - Reviewing API pull requests
25
+ - Choosing between REST / GraphQL / gRPC
26
+ - Writing OpenAPI specifications
27
+ - Migrating or versioning an existing API
28
+
29
+ **NOT for:**
30
+ - Framework-specific implementation details (use your framework's own skill/docs)
31
+ - Frontend data fetching patterns (use React Query / SWR docs)
32
+ - Authentication implementation details (use your auth library's docs)
33
+ - Database schema design (→ `database-schema-design`)
34
+
35
+ ## Context Required
36
+
37
+ Before applying this skill, gather:
38
+
39
+ | Required | Optional |
40
+ |----------|----------|
41
+ | Target consumers (browser, mobile, service) | Existing API conventions in the project |
42
+ | Expected request volume (RPS estimate) | Current OpenAPI / Swagger spec |
43
+ | Authentication method (JWT, API key, OAuth) | Rate limiting requirements |
44
+ | Data model / domain entities | Caching strategy |
45
+
46
+ ---
47
+
48
+ ## Quick Start Checklist
49
+
50
+ New API endpoint? Run through this before writing code:
51
+
52
+ - [ ] Resource named as **plural noun** (`/orders`, not `/getOrders`)
53
+ - [ ] URL in **kebab-case**, body fields in **camelCase**
54
+ - [ ] Correct **HTTP method** (GET=read, POST=create, PUT=replace, PATCH=partial, DELETE=remove)
55
+ - [ ] Correct **status code** (201 Created, 422 Validation, 404 Not Found…)
56
+ - [ ] Error response follows **RFC 9457** envelope
57
+ - [ ] **Pagination** on all list endpoints (default 20, max 100)
58
+ - [ ] **Authentication** required (Bearer token, not query param)
59
+ - [ ] **Request ID** in response header (`X-Request-Id`)
60
+ - [ ] **Rate limit** headers included
61
+ - [ ] Endpoint documented in **OpenAPI spec**
62
+
63
+ ---
64
+
65
+ ## Quick Navigation
66
+
67
+ | Need to… | Jump to |
68
+ |----------|---------|
69
+ | Name a resource URL | [1. Resource Modeling](#1-resource-modeling-critical) |
70
+ | Pick HTTP method + status code | [3. HTTP Methods & Status Codes](#3-http-methods--status-codes-critical) |
71
+ | Format error responses | [4. Error Handling](#4-error-handling-high) |
72
+ | Add pagination or filtering | [6. Pagination & Filtering](#6-pagination--filtering-high) |
73
+ | Choose API style (REST vs GraphQL vs gRPC) | [10. API Style Decision](#10-api-style-decision-tree) |
74
+ | Version an existing API | [7. Versioning](#7-versioning-medium-high) |
75
+ | Avoid common mistakes | [Anti-Patterns](#anti-patterns-checklist) |
76
+
77
+ ---
78
+
79
+ ## 1. Resource Modeling (CRITICAL)
80
+
81
+ ### Core Rules
82
+
83
+ ```
84
+ ✅ /users — plural noun
85
+ ✅ /users/{id}/orders — 1 level nesting
86
+ ✅ /reviews?orderId={oid} — flatten deep nesting with query params
87
+
88
+ ❌ /getUsers — verb in URL
89
+ ❌ /user — singular
90
+ ❌ /users/{uid}/orders/{oid}/items/{iid}/reviews — 3+ levels deep
91
+ ```
92
+
93
+ **Max nesting: 2 levels.** Beyond that, promote to top-level resource with filters.
94
+
95
+ ### Domain Alignment
96
+
97
+ Resources map to **domain concepts**, not database tables:
98
+
99
+ ```
100
+ ✅ /checkout-sessions (domain aggregate)
101
+ ✅ /shipping-labels (domain concept)
102
+
103
+ ❌ /tbl_order_header (database table leak)
104
+ ❌ /join_user_role (internal schema leak)
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 2. URL & Naming (CRITICAL)
110
+
111
+ | Context | Convention | Example |
112
+ |---------|-----------|---------|
113
+ | URL path | kebab-case | `/order-items` |
114
+ | JSON body fields | camelCase | `{ "firstName": "Jane" }` |
115
+ | Query params | camelCase or snake_case (be consistent) | `?sortBy=createdAt` |
116
+ | Headers | Train-Case | `X-Request-Id` |
117
+
118
+ **Python exception:** If your entire stack is Python/snake_case, you MAY use `snake_case` in JSON — but be **consistent across all endpoints**.
119
+
120
+ ```
121
+ ✅ GET /users ❌ GET /users/
122
+ ✅ GET /reports/annual ❌ GET /reports/annual.json
123
+ ✅ POST /users ❌ POST /users/create
124
+ ```
125
+
126
+ ---
127
+
128
+ ## 3. HTTP Methods & Status Codes (CRITICAL)
129
+
130
+ ### Method Semantics
131
+
132
+ | Method | Semantics | Idempotent | Safe | Request Body |
133
+ |--------|-----------|-----------|------|-------------|
134
+ | GET | Read | ✅ | ✅ | ❌ Never |
135
+ | POST | Create / Action | ❌ | ❌ | ✅ Always |
136
+ | PUT | Full replace | ✅ | ❌ | ✅ Always |
137
+ | PATCH | Partial update | ❌* | ❌ | ✅ Always |
138
+ | DELETE | Remove | ✅ | ❌ | ❌ Rarely |
139
+
140
+ ### Status Code Quick Reference
141
+
142
+ **Success:**
143
+
144
+ | Code | When | Response Body |
145
+ |------|------|--------------|
146
+ | 200 OK | GET, PUT, PATCH success | Resource / result |
147
+ | 201 Created | POST created resource | Created resource + `Location` header |
148
+ | 202 Accepted | Async operation started | Job ID / status URL |
149
+ | 204 No Content | DELETE success, PUT with no body | None |
150
+
151
+ **Client Errors:**
152
+
153
+ | Code | When | Key Distinction |
154
+ |------|------|-----------------|
155
+ | 400 Bad Request | Malformed syntax | Can't even parse |
156
+ | 401 Unauthorized | Missing / invalid auth | "Who are you?" |
157
+ | 403 Forbidden | Authenticated, no permission | "I know you, but no" |
158
+ | 404 Not Found | Resource doesn't exist | Also use to hide 403 |
159
+ | 409 Conflict | Duplicate, version mismatch | State conflict |
160
+ | 422 Unprocessable | Valid syntax, failed validation | Semantic errors |
161
+ | 429 Too Many Requests | Rate limit hit | Include `Retry-After` |
162
+
163
+ **Server Errors:** 500 (unexpected), 502 (upstream fail), 503 (overloaded), 504 (upstream timeout)
164
+
165
+ ---
166
+
167
+ ## 4. Error Handling (HIGH)
168
+
169
+ ### Standard Error Envelope (RFC 9457)
170
+
171
+ Every error response uses this format:
172
+
173
+ ```json
174
+ {
175
+ "type": "https://api.example.com/errors/insufficient-funds",
176
+ "title": "Insufficient Funds",
177
+ "status": 422,
178
+ "detail": "Account balance $10.00 is less than withdrawal $50.00.",
179
+ "instance": "/transactions/txn_abc123",
180
+ "request_id": "req_7f3a8b2c",
181
+ "errors": [
182
+ { "field": "amount", "message": "Exceeds balance", "code": "INSUFFICIENT_BALANCE" }
183
+ ]
184
+ }
185
+ ```
186
+
187
+ ### Multi-Language Implementation
188
+
189
+ **TypeScript (Express):**
190
+ ```typescript
191
+ class AppError extends Error {
192
+ constructor(
193
+ public readonly title: string,
194
+ public readonly status: number,
195
+ public readonly detail: string,
196
+ public readonly code: string,
197
+ ) { super(detail); }
198
+ }
199
+
200
+ // Middleware
201
+ app.use((err, req, res, next) => {
202
+ if (err instanceof AppError) {
203
+ return res.status(err.status).json({
204
+ type: `https://api.example.com/errors/${err.code}`,
205
+ title: err.title, status: err.status,
206
+ detail: err.detail, request_id: req.id,
207
+ });
208
+ }
209
+ res.status(500).json({ title: 'Internal Error', status: 500, request_id: req.id });
210
+ });
211
+ ```
212
+
213
+ **Python (FastAPI):**
214
+ ```python
215
+ from fastapi import Request
216
+ from fastapi.responses import JSONResponse
217
+
218
+ class AppError(Exception):
219
+ def __init__(self, title: str, status: int, detail: str, code: str):
220
+ self.title, self.status, self.detail, self.code = title, status, detail, code
221
+
222
+ @app.exception_handler(AppError)
223
+ async def app_error_handler(request: Request, exc: AppError):
224
+ return JSONResponse(status_code=exc.status, content={
225
+ "type": f"https://api.example.com/errors/{exc.code}",
226
+ "title": exc.title, "status": exc.status,
227
+ "detail": exc.detail, "request_id": request.state.request_id,
228
+ })
229
+ ```
230
+
231
+ ### Iron Rules
232
+
233
+ ```
234
+ ✅ Return RFC 9457 error envelope for ALL errors
235
+ ✅ Include request_id in every error response
236
+ ✅ Return per-field validation errors in `errors` array
237
+
238
+ ❌ Never expose stack traces in production
239
+ ❌ Never return 200 for errors
240
+ ❌ Never swallow errors silently
241
+ ```
242
+
243
+ ---
244
+
245
+ ## 5. Authentication & Authorization (HIGH)
246
+
247
+ ```
248
+ ✅ Authorization: Bearer eyJhbGci... (header)
249
+ ❌ GET /users?token=eyJhbGci... (URL — appears in logs)
250
+
251
+ ✅ 401 → "Who are you?" (missing/invalid credentials)
252
+ ✅ 403 → "You can't do this" (authenticated, no permission)
253
+ ✅ 404 → Hide resource existence (use instead of 403 when needed)
254
+ ```
255
+
256
+ **Rate Limit Headers (always include):**
257
+ ```
258
+ X-RateLimit-Limit: 100
259
+ X-RateLimit-Remaining: 42
260
+ X-RateLimit-Reset: 1625097600
261
+ Retry-After: 30
262
+ ```
263
+
264
+ ---
265
+
266
+ ## 6. Pagination & Filtering (HIGH)
267
+
268
+ ### Cursor vs Offset
269
+
270
+ | Strategy | When | Pros | Cons |
271
+ |----------|------|------|------|
272
+ | **Cursor** (preferred) | Large/dynamic datasets | Consistent, no skips | Can't jump to page N |
273
+ | **Offset** | Small/stable datasets, admin UIs | Simple, page jumps | Drift on insert/delete |
274
+
275
+ **Cursor pagination response:**
276
+ ```json
277
+ {
278
+ "data": [...],
279
+ "pagination": { "next_cursor": "eyJpZCI6MTIwfQ", "has_more": true }
280
+ }
281
+ ```
282
+
283
+ **Offset pagination response:**
284
+ ```json
285
+ {
286
+ "data": [...],
287
+ "pagination": { "page": 3, "per_page": 20, "total": 256, "total_pages": 13 }
288
+ }
289
+ ```
290
+
291
+ **Always enforce:** Default 20 items, max 100 items.
292
+
293
+ ### Standard Filter Patterns
294
+
295
+ ```
296
+ GET /orders?status=shipped&created_after=2025-01-01&sort=-created_at&fields=id,status
297
+ ```
298
+
299
+ | Pattern | Convention |
300
+ |---------|-----------|
301
+ | Exact match | `?status=shipped` |
302
+ | Range | `?price_gte=10&price_lte=100` |
303
+ | Date range | `?created_after=2025-01-01&created_before=2025-12-31` |
304
+ | Sort | `?sort=field` (asc), `?sort=-field` (desc) |
305
+ | Sparse fields | `?fields=id,name,email` |
306
+ | Search | `?q=search+term` |
307
+
308
+ ---
309
+
310
+ ## 7. Versioning (MEDIUM-HIGH)
311
+
312
+ | Strategy | Format | Best For |
313
+ |----------|--------|----------|
314
+ | **URL path** (recommended) | `/v1/users` | Public APIs |
315
+ | **Header** | `Api-Version: 2` | Internal APIs |
316
+ | **Query param** | `?version=2` | Legacy (avoid) |
317
+
318
+ **Non-breaking changes (no version bump):** New optional response fields, new endpoints, new optional params.
319
+
320
+ **Breaking changes (new version required):** Removing/renaming fields, changing types, stricter validation, removing endpoints.
321
+
322
+ **Deprecation headers:**
323
+ ```
324
+ Sunset: Sat, 01 Mar 2026 00:00:00 GMT
325
+ Deprecation: true
326
+ Link: <https://api.example.com/v2/users>; rel="successor-version"
327
+ ```
328
+
329
+ ---
330
+
331
+ ## 8. Request / Response Design (MEDIUM)
332
+
333
+ ### Consistent Envelope
334
+
335
+ ```json
336
+ {
337
+ "data": { "id": "ord_123", "status": "pending", "total": 99.50 },
338
+ "meta": { "request_id": "req_abc123", "timestamp": "2025-06-15T10:30:00Z" }
339
+ }
340
+ ```
341
+
342
+ ### Key Rules
343
+
344
+ | Rule | Correct | Wrong |
345
+ |------|---------|-------|
346
+ | Timestamps | `"2025-06-15T10:30:00Z"` (ISO 8601) | `"06/15/2025"` or `1718447400` |
347
+ | Public IDs | UUID `"550e8400-..."` | Auto-increment `42` |
348
+ | Null vs absent (PATCH) | `{ "nickname": null }` = clear field | Absent field = don't change |
349
+ | HATEOAS (public APIs) | `"links": { "cancel": "/orders/123/cancel" }` | No discoverability |
350
+
351
+ ---
352
+
353
+ ## 9. Documentation — OpenAPI (MEDIUM)
354
+
355
+ **Design-first workflow:**
356
+
357
+ ```
358
+ 1. Write OpenAPI 3.1 spec
359
+ 2. Review spec with stakeholders
360
+ 3. Generate server stubs + client SDKs
361
+ 4. Implement handlers
362
+ 5. Validate responses against spec in CI
363
+ ```
364
+
365
+ Every endpoint documents: summary, all parameters, request body + examples, all response codes + schemas, auth requirements.
366
+
367
+ ---
368
+
369
+ ## 10. API Style Decision Tree
370
+
371
+ ```
372
+ What kind of API?
373
+
374
+ ├─ Browser + mobile clients, flexible queries
375
+ │ └─ GraphQL
376
+ │ Rules: DataLoader (no N+1), depth limit ≤7, Relay pagination
377
+
378
+ ├─ Standard CRUD, public consumers, caching important
379
+ │ └─ REST (this guide)
380
+ │ Rules: Resources, HTTP methods, status codes, OpenAPI
381
+
382
+ ├─ Service-to-service, high throughput, strong typing
383
+ │ └─ gRPC
384
+ │ Rules: Protobuf schemas, streaming for large data, deadlines
385
+
386
+ ├─ Full-stack TypeScript, same team owns client + server
387
+ │ └─ tRPC
388
+ │ Rules: Shared types, no code generation needed
389
+
390
+ └─ Real-time bidirectional
391
+ └─ WebSocket / SSE
392
+ Rules: Heartbeat, reconnection, message ordering
393
+ ```
394
+
395
+ ---
396
+
397
+ ## Anti-Patterns Checklist
398
+
399
+ | # | ❌ Don't | ✅ Do Instead |
400
+ |---|---------|--------------|
401
+ | 1 | Verbs in URLs (`/getUser`) | HTTP methods + noun resources |
402
+ | 2 | Return 200 for errors | Correct 4xx/5xx status codes |
403
+ | 3 | Mix naming styles | One convention per context |
404
+ | 4 | Expose database IDs | UUIDs for public identifiers |
405
+ | 5 | No pagination on lists | Always paginate (default 20) |
406
+ | 6 | Swallow errors silently | Structured RFC 9457 errors |
407
+ | 7 | Token in URL query | Authorization header |
408
+ | 8 | Deep nesting (3+ levels) | Flatten with query params |
409
+ | 9 | Break changes without version | Maintain compatibility or version |
410
+ | 10 | No rate limiting | Implement + communicate via headers |
411
+ | 11 | No request ID | `X-Request-Id` on every response |
412
+ | 12 | Stack traces in production | Safe error message + internal log |
413
+
414
+ ---
415
+
416
+ ## Common Issues
417
+
418
+ ### Issue 1: "Should this be a new resource or a sub-resource?"
419
+
420
+ **Symptom:** URL path keeps growing (`/users/{id}/orders/{id}/items/{id}/reviews`)
421
+
422
+ **Rule:** If the child entity makes sense on its own, promote it. If it only exists within the parent context, keep it nested (max 2 levels).
423
+
424
+ ```
425
+ /reviews?orderId=123 ✅ (reviews exist independently)
426
+ /orders/{id}/items ✅ (items belong to orders, 1 level)
427
+ ```
428
+
429
+ ### Issue 2: "PUT or PATCH?"
430
+
431
+ **Symptom:** Team can't agree on update semantics.
432
+
433
+ **Rule:**
434
+ - PUT = client sends **complete** resource (missing fields → set to default/null)
435
+ - PATCH = client sends **only changed fields** (missing fields → unchanged)
436
+ - When unsure → **PATCH** (safer, less surprising)
437
+
438
+ ### Issue 3: "400 or 422?"
439
+
440
+ **Symptom:** Inconsistent validation error codes.
441
+
442
+ **Rule:**
443
+ - 400 = can't parse request at all (malformed JSON, wrong content-type)
444
+ - 422 = parsed OK, but values fail validation (invalid email, negative quantity)
@@ -0,0 +1,165 @@
1
+ # Authentication Flow Patterns
2
+
3
+ Complete auth flow across frontend and backend. Covers JWT bearer flow, automatic token refresh, Next.js server-side auth, RBAC, and backend middleware order.
4
+
5
+ ---
6
+
7
+ ## JWT Bearer Flow (Most Common)
8
+
9
+ ```
10
+ 1. Login
11
+ Client → POST /api/auth/login { email, password }
12
+ Server → { accessToken (15min), refreshToken (7d, httpOnly cookie) }
13
+
14
+ 2. Authenticated Requests
15
+ Client → GET /api/orders Authorization: Bearer <accessToken>
16
+ Server → validates JWT → returns data
17
+
18
+ 3. Token Refresh (transparent)
19
+ Client → 401 received → POST /api/auth/refresh (cookie auto-sent)
20
+ Server → new accessToken
21
+ Client → retry original request with new token
22
+
23
+ 4. Logout
24
+ Client → POST /api/auth/logout
25
+ Server → invalidate refresh token → clear cookie
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Frontend: Automatic Token Refresh
31
+
32
+ ```typescript
33
+ // lib/api-client.ts — add to existing fetch wrapper
34
+ async function apiWithRefresh<T>(path: string, options: RequestInit = {}): Promise<T> {
35
+ try {
36
+ return await api<T>(path, options);
37
+ } catch (err) {
38
+ if (err instanceof ApiError && err.status === 401) {
39
+ // Try refresh
40
+ const refreshed = await api<{ accessToken: string }>('/api/auth/refresh', {
41
+ method: 'POST',
42
+ credentials: 'include', // send httpOnly cookie
43
+ });
44
+ setAuthToken(refreshed.accessToken);
45
+ // Retry original request
46
+ return api<T>(path, options);
47
+ }
48
+ throw err;
49
+ }
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Next.js: Server-Side Auth (App Router)
56
+
57
+ ```typescript
58
+ // middleware.ts — protect routes server-side
59
+ import { NextResponse } from 'next/server';
60
+ import type { NextRequest } from 'next/server';
61
+
62
+ export function middleware(request: NextRequest) {
63
+ const token = request.cookies.get('session')?.value;
64
+ if (!token && request.nextUrl.pathname.startsWith('/dashboard')) {
65
+ return NextResponse.redirect(new URL('/login', request.url));
66
+ }
67
+ return NextResponse.next();
68
+ }
69
+
70
+ // app/dashboard/page.tsx — server component with auth
71
+ import { cookies } from 'next/headers';
72
+
73
+ export default async function Dashboard() {
74
+ const token = (await cookies()).get('session')?.value;
75
+ const user = await fetch(`${process.env.API_URL}/api/me`, {
76
+ headers: { Authorization: `Bearer ${token}` },
77
+ }).then(r => r.json());
78
+
79
+ return <DashboardContent user={user} />;
80
+ }
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Backend: Standard Middleware Order
86
+
87
+ ```
88
+ Request → 1.RequestID → 2.Logging → 3.CORS → 4.RateLimit → 5.BodyParse
89
+ → 6.Auth → 7.Authz → 8.Validation → 9.Handler → 10.ErrorHandler → Response
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Backend: JWT Rules
95
+
96
+ ```
97
+ ✅ Short expiry access token (15min) + refresh token (server-stored)
98
+ ✅ Minimal claims: userId, roles (not entire user object)
99
+ ✅ Rotate signing keys periodically
100
+
101
+ ❌ Never store tokens in localStorage (XSS risk)
102
+ ❌ Never pass tokens in URL query params
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Backend: RBAC Pattern
108
+
109
+ ```typescript
110
+ function authorize(...roles: Role[]) {
111
+ return (req, res, next) => {
112
+ if (!req.user) throw new UnauthorizedError();
113
+ if (!roles.some(r => req.user.roles.includes(r))) throw new ForbiddenError();
114
+ next();
115
+ };
116
+ }
117
+ router.delete('/users/:id', authenticate, authorize('admin'), deleteUser);
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Auth Decision Table
123
+
124
+ | Method | When | Frontend |
125
+ |--------|------|----------|
126
+ | Session | Same-domain, SSR, Django templates | Django templates / htmx |
127
+ | JWT | Different domain, SPA, mobile | React, Vue, mobile apps |
128
+ | OAuth2 | Third-party login, API consumers | Any |
129
+
130
+ ---
131
+
132
+ ## Iron Rules
133
+
134
+ ```
135
+ ✅ Access token: short-lived (15min), in memory
136
+ ✅ Refresh token: httpOnly cookie (XSS-safe)
137
+ ✅ Automatic transparent refresh on 401
138
+ ✅ Redirect to login when refresh fails
139
+
140
+ ❌ Never store tokens in localStorage (XSS risk)
141
+ ❌ Never send tokens in URL query params (logged)
142
+ ❌ Never trust client-side auth checks alone (server must validate)
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Common Issues
148
+
149
+ ### Issue 1: "Auth works on page load but breaks on navigation"
150
+
151
+ **Cause:** Token stored in component state (lost on unmount).
152
+
153
+ **Fix:** Store access token in a persistent location:
154
+ - React Context (survives navigation, lost on refresh)
155
+ - Cookie (survives refresh)
156
+ - React Query cache with `staleTime: Infinity` for session
157
+
158
+ ### Issue 2: "CORS error with auth requests"
159
+
160
+ **Cause:** Missing `credentials: 'include'` on frontend or `credentials: true` on backend CORS config.
161
+
162
+ **Fix:**
163
+ 1. Frontend: `fetch(url, { credentials: 'include' })`
164
+ 2. Backend: `cors({ origin: 'https://your-frontend.com', credentials: true })`
165
+ 3. Backend: explicit origin (not `*`) when using credentials