@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,722 @@
1
+ ---
2
+ name: android-native-dev
3
+ description: Android native Kotlin/Compose app development, Material 3 UI, accessibility, and Gradle builds.
4
+ ---
5
+
6
+ ## 1. Project Scenario Assessment
7
+
8
+ ## Routing Boundary
9
+
10
+ Use this skill for native Android apps, Kotlin, Jetpack Compose, Android Views, Gradle/Android Studio, Material 3, Android permissions, and Google Play quality. Use `ios-application-dev` for native iOS, `flutter-dev` for Flutter/Dart, `react-native-dev` for React Native/Expo, and `frontend-ui-engineering` or `frontend-dev` for browser React/web UI.
11
+
12
+ Before starting development, assess the current project state:
13
+
14
+ | Scenario | Characteristics | Approach |
15
+ |----------|-----------------|----------|
16
+ | **Empty Directory** | No files present | Full initialization required, including Gradle Wrapper |
17
+ | **Has Gradle Wrapper** | `gradlew` and `gradle/wrapper/` exist | Use `./gradlew` directly for builds |
18
+ | **Android Studio Project** | Complete project structure, may lack wrapper | Check wrapper, run `gradle wrapper` if needed |
19
+ | **Incomplete Project** | Partial files present | Check missing files, complete configuration |
20
+
21
+ **Key Principles**:
22
+ - Before writing business logic, ensure `./gradlew assembleDebug` succeeds
23
+ - If `gradle.properties` is missing, create it first and configure AndroidX
24
+
25
+ 🔴 **CHECKPOINT — Visual and platform decisions before UI code:** confirm app category, target devices/API, Compose vs Views, Material 3 style, dark theme, accessibility target, and required permissions. If the user has not specified these and the choice affects navigation, data model, permissions, or visual identity, stop and ask instead of guessing.
26
+
27
+ ### 1.1 Required Files Checklist
28
+
29
+ ```
30
+ MyApp/
31
+ ├── gradle.properties # Configure AndroidX and other settings
32
+ ├── settings.gradle.kts
33
+ ├── build.gradle.kts # Root level
34
+ ├── gradle/wrapper/
35
+ │ └── gradle-wrapper.properties
36
+ ├── app/
37
+ │ ├── build.gradle.kts # Module level
38
+ │ └── src/main/
39
+ │ ├── AndroidManifest.xml
40
+ │ ├── java/com/example/myapp/
41
+ │ │ └── MainActivity.kt
42
+ │ └── res/
43
+ │ ├── values/
44
+ │ │ ├── strings.xml
45
+ │ │ ├── colors.xml
46
+ │ │ └── themes.xml
47
+ │ └── mipmap-*/ # App icons
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 2. Project Configuration
53
+
54
+ ### 2.1 gradle.properties
55
+
56
+ ```properties
57
+ # Required configuration
58
+ android.useAndroidX=true
59
+ android.enableJetifier=true
60
+
61
+ # Build optimization
62
+ org.gradle.parallel=true
63
+ kotlin.code.style=official
64
+
65
+ # JVM memory settings (adjust based on project size)
66
+ # Small projects: 2048m, Medium: 4096m, Large: 8192m+
67
+ # org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
68
+ ```
69
+
70
+ > **Note**: If you encounter `OutOfMemoryError` during build, increase `-Xmx` value. Large projects with many dependencies may require 8GB or more.
71
+
72
+ ### 2.2 Dependency Declaration Standards
73
+
74
+ ```kotlin
75
+ dependencies {
76
+ // Use BOM to manage Compose versions
77
+ implementation(platform("androidx.compose:compose-bom:2024.02.00"))
78
+ implementation("androidx.compose.ui:ui")
79
+ implementation("androidx.compose.material3:material3")
80
+
81
+ // Activity & ViewModel
82
+ implementation("androidx.activity:activity-compose:1.8.2")
83
+ implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0")
84
+ }
85
+ ```
86
+
87
+ ### 2.3 Build Variants & Product Flavors
88
+
89
+ Use product flavors for distinct app variants such as dev/staging/prod or free/paid. Keep variant-specific application IDs, app names, API URLs, logging flags, and resources in `app/build.gradle.kts` / source sets instead of runtime conditionals.
90
+
91
+ - Variant name format: `{flavor}{BuildType}` such as `devDebug` or `prodRelease`.
92
+ - Useful commands: `./gradlew tasks --group="build"`, `./gradlew assembleDevDebug`, `./gradlew assembleRelease`, `./gradlew installDevDebug`.
93
+ - For multiple dimensions, declare each dimension explicitly and assign every flavor to one dimension.
94
+
95
+ **Access BuildConfig in Code**:
96
+
97
+ > **Note**: Starting from AGP 8.0, `BuildConfig` is no longer generated by default. You must explicitly enable it in your `build.gradle.kts`:
98
+ > ```kotlin
99
+ > android {
100
+ > buildFeatures {
101
+ > buildConfig = true
102
+ > }
103
+ > }
104
+ > ```
105
+
106
+ ```kotlin
107
+ // Use build config values in your code
108
+ val apiUrl = BuildConfig.API_BASE_URL
109
+ val isLoggingEnabled = BuildConfig.ENABLE_LOGGING
110
+
111
+ if (BuildConfig.DEBUG) {
112
+ // Debug-only code
113
+ }
114
+ ```
115
+
116
+ **Flavor-Specific Source Sets**:
117
+
118
+ ```
119
+ app/src/
120
+ ├── main/ # Shared code for all flavors
121
+ ├── dev/ # Dev-only code and resources
122
+ │ ├── java/
123
+ │ └── res/
124
+ ├── staging/ # Staging-only code and resources
125
+ ├── prod/ # Prod-only code and resources
126
+ ├── debug/ # Debug build type code
127
+ └── release/ # Release build type code
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 3. Kotlin Development Standards
133
+
134
+ ### 3.1 Naming Conventions
135
+
136
+ | Type | Convention | Example |
137
+ |------|------------|---------|
138
+ | Class/Interface | PascalCase | `UserRepository`, `MainActivity` |
139
+ | Function/Variable | camelCase | `getUserName()`, `isLoading` |
140
+ | Constant | SCREAMING_SNAKE | `MAX_RETRY_COUNT` |
141
+ | Package | lowercase | `com.example.myapp` |
142
+ | Composable | PascalCase | `@Composable fun UserCard()` |
143
+
144
+ ### 3.2 Code Standards (Important)
145
+
146
+ **Null Safety**:
147
+ ```kotlin
148
+ // ❌ Avoid: Non-null assertion !! (may crash)
149
+ val name = user!!.name
150
+
151
+ // ✅ Recommended: Safe call + default value
152
+ val name = user?.name ?: "Unknown"
153
+
154
+ // ✅ Recommended: let handling
155
+ user?.let { processUser(it) }
156
+ ```
157
+
158
+ **Exception Handling**:
159
+ ```kotlin
160
+ // ❌ Avoid: Random try-catch in business layer swallowing exceptions
161
+ fun loadData() {
162
+ try {
163
+ val data = api.fetch()
164
+ } catch (e: Exception) {
165
+ // Swallowing exception, hard to debug
166
+ }
167
+ }
168
+
169
+ // ✅ Recommended: Let exceptions propagate, handle at appropriate layer
170
+ suspend fun loadData(): Result<Data> {
171
+ return try {
172
+ Result.success(api.fetch())
173
+ } catch (e: Exception) {
174
+ Result.failure(e) // Wrap and return, let caller decide handling
175
+ }
176
+ }
177
+
178
+ // ✅ Recommended: Unified handling in ViewModel
179
+ viewModelScope.launch {
180
+ runCatching { repository.loadData() }
181
+ .onSuccess { _uiState.value = UiState.Success(it) }
182
+ .onFailure { _uiState.value = UiState.Error(it.message) }
183
+ }
184
+ ```
185
+
186
+ ### 3.3 Threading & Coroutines (Critical)
187
+
188
+ **Thread Selection Principles**:
189
+
190
+ | Operation Type | Thread | Description |
191
+ |----------------|--------|-------------|
192
+ | UI Updates | `Dispatchers.Main` | Update View, State, LiveData |
193
+ | Network Requests | `Dispatchers.IO` | HTTP calls, API requests |
194
+ | File I/O | `Dispatchers.IO` | Local storage, database operations |
195
+ | Compute Intensive | `Dispatchers.Default` | JSON parsing, sorting, encryption |
196
+
197
+ **Correct Usage**:
198
+ ```kotlin
199
+ // In ViewModel
200
+ viewModelScope.launch {
201
+ // Default Main thread, can update UI State
202
+ _uiState.value = UiState.Loading
203
+
204
+ // Switch to IO thread for network request
205
+ val result = withContext(Dispatchers.IO) {
206
+ repository.fetchData()
207
+ }
208
+
209
+ // Automatically returns to Main thread, update UI
210
+ _uiState.value = UiState.Success(result)
211
+ }
212
+
213
+ // In Repository (suspend functions should be main-safe)
214
+ suspend fun fetchData(): Data = withContext(Dispatchers.IO) {
215
+ api.getData()
216
+ }
217
+ ```
218
+
219
+ **Common Mistakes**:
220
+ ```kotlin
221
+ // ❌ Wrong: Updating UI on IO thread
222
+ viewModelScope.launch(Dispatchers.IO) {
223
+ val data = api.fetch()
224
+ _uiState.value = data // Crash or warning!
225
+ }
226
+
227
+ // ❌ Wrong: Executing time-consuming operation on Main thread
228
+ viewModelScope.launch {
229
+ val data = api.fetch() // Blocking main thread! ANR
230
+ }
231
+
232
+ // ✅ Correct: Fetch on IO, update on Main
233
+ viewModelScope.launch {
234
+ val data = withContext(Dispatchers.IO) { api.fetch() }
235
+ _uiState.value = data
236
+ }
237
+ ```
238
+
239
+ ### 3.4 Visibility Rules
240
+
241
+ ```kotlin
242
+ // Default is public, declare explicitly when needed
243
+ class UserRepository { // public
244
+ private val cache = mutableMapOf<String, User>() // Visible only within class
245
+ internal fun clearCache() {} // Visible only within module
246
+ }
247
+
248
+ // data class properties are public by default, be careful when used across modules
249
+ data class User(
250
+ val id: String, // public
251
+ val name: String
252
+ )
253
+ ```
254
+
255
+ ### 3.5 Common Syntax Pitfalls
256
+
257
+ - Avoid `lateinit` for data that may not be initialized before use; prefer nullable state or explicit defaults.
258
+ - Use labeled returns such as `return@forEach` inside lambdas when you do not intend to return from the outer function.
259
+ - Keep public data class fields deliberate; mark implementation details `private` or `internal`.
260
+
261
+ ### 3.6 Server Response Data Class Fields Must Be Nullable
262
+
263
+ ```kotlin
264
+ // ❌ Wrong: Fields declared as non-null (server may not return them)
265
+ data class UserResponse(
266
+ val id: String = "",
267
+ val name: String = "",
268
+ val avatar: String = ""
269
+ )
270
+
271
+ // ✅ Correct: All fields declared as nullable
272
+ data class UserResponse(
273
+ @SerializedName("id")
274
+ val id: String? = null,
275
+ @SerializedName("name")
276
+ val name: String? = null,
277
+ @SerializedName("avatar")
278
+ val avatar: String? = null
279
+ )
280
+ ```
281
+
282
+ ### 3.7 Lifecycle Resource Management
283
+
284
+ ```kotlin
285
+ // ❌ Wrong: Only adding Observer, not removing
286
+ class MyView : View {
287
+ override fun onAttachedToWindow() {
288
+ super.onAttachedToWindow()
289
+ activity?.lifecycle?.addObserver(this)
290
+ }
291
+ // Memory leak!
292
+ }
293
+
294
+ // ✅ Correct: Paired add and remove
295
+ class MyView : View {
296
+ override fun onAttachedToWindow() {
297
+ super.onAttachedToWindow()
298
+ activity?.lifecycle?.addObserver(this)
299
+ }
300
+
301
+ override fun onDetachedFromWindow() {
302
+ activity?.lifecycle?.removeObserver(this)
303
+ super.onDetachedFromWindow()
304
+ }
305
+ }
306
+ ```
307
+
308
+ ### 3.8 Logging Level Usage
309
+
310
+ ```kotlin
311
+ import android.util.Log
312
+
313
+ // Info: Key checkpoints in normal flow
314
+ Log.i(TAG, "loadData: started, userId = $userId")
315
+
316
+ // Warning: Abnormal but recoverable situations
317
+ Log.w(TAG, "loadData: cache miss, fallback to network")
318
+
319
+ // Error: Failure/error situations
320
+ Log.e(TAG, "loadData failed: ${error.message}")
321
+ ```
322
+
323
+ | Level | Use Case |
324
+ |-------|----------|
325
+ | `i` (Info) | Normal flow, method entry, key parameters |
326
+ | `w` (Warning) | Recoverable exceptions, fallback handling, null returns |
327
+ | `e` (Error) | Request failures, caught exceptions, unrecoverable errors |
328
+
329
+ ---
330
+
331
+ ## 4. Jetpack Compose Standards
332
+
333
+ ### 4.1 @Composable Context Rules
334
+
335
+ ```kotlin
336
+ // ❌ Wrong: Calling Composable from non-Composable function
337
+ fun showError(message: String) {
338
+ Text(message) // Compile error!
339
+ }
340
+
341
+ // ✅ Correct: Mark as @Composable
342
+ @Composable
343
+ fun ErrorMessage(message: String) {
344
+ Text(message)
345
+ }
346
+
347
+ // ❌ Wrong: Using suspend outside LaunchedEffect
348
+ @Composable
349
+ fun MyScreen() {
350
+ val data = fetchData() // Error!
351
+ }
352
+
353
+ // ✅ Correct: Use LaunchedEffect
354
+ @Composable
355
+ fun MyScreen() {
356
+ var data by remember { mutableStateOf<Data?>(null) }
357
+ LaunchedEffect(Unit) {
358
+ data = fetchData()
359
+ }
360
+ }
361
+ ```
362
+
363
+ ### 4.2 State Management
364
+
365
+ ```kotlin
366
+ // Basic State
367
+ var count by remember { mutableStateOf(0) }
368
+
369
+ // Derived State (avoid redundant computation)
370
+ val isEven by remember { derivedStateOf { count % 2 == 0 } }
371
+
372
+ // Persist across recomposition (e.g., scroll position)
373
+ val scrollState = rememberScrollState()
374
+
375
+ // State in ViewModel
376
+ class MyViewModel : ViewModel() {
377
+ private val _uiState = MutableStateFlow(UiState())
378
+ val uiState: StateFlow<UiState> = _uiState.asStateFlow()
379
+ }
380
+ ```
381
+
382
+ ### 4.3 Common Compose Mistakes
383
+
384
+ ```kotlin
385
+ // ❌ Wrong: Creating objects in Composable (created on every recomposition)
386
+ @Composable
387
+ fun MyScreen() {
388
+ val viewModel = MyViewModel() // Wrong!
389
+ }
390
+
391
+ // ✅ Correct: Use viewModel() or remember
392
+ @Composable
393
+ fun MyScreen(viewModel: MyViewModel = viewModel()) {
394
+ // ...
395
+ }
396
+ ```
397
+
398
+ ---
399
+
400
+ ## 5. Resources & Icons
401
+
402
+ ### 5.1 App Icon Requirements
403
+
404
+ Must provide multi-resolution icons:
405
+
406
+ | Directory | Size | Purpose |
407
+ |-----------|------|---------|
408
+ | mipmap-mdpi | 48x48 | Baseline |
409
+ | mipmap-hdpi | 72x72 | 1.5x |
410
+ | mipmap-xhdpi | 96x96 | 2x |
411
+ | mipmap-xxhdpi | 144x144 | 3x |
412
+ | mipmap-xxxhdpi | 192x192 | 4x |
413
+
414
+ Recommended: Use Adaptive Icon (Android 8+):
415
+
416
+ ```xml
417
+ <!-- res/mipmap-anydpi-v26/ic_launcher.xml -->
418
+ <adaptive-icon>
419
+ <background android:drawable="@color/ic_launcher_background"/>
420
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
421
+ </adaptive-icon>
422
+ ```
423
+
424
+ ### 5.2 Resource Naming Conventions
425
+
426
+ | Type | Prefix | Example |
427
+ |------|--------|---------|
428
+ | Layout | layout_ | `layout_main.xml` |
429
+ | Image | ic_, img_, bg_ | `ic_user.png` |
430
+ | Color | color_ | `color_primary` |
431
+ | String | - | `app_name`, `btn_submit` |
432
+
433
+ ### 5.3 Avoid Android Reserved Names (Important)
434
+
435
+ Variable names, resource IDs, colors, icons, and XML elements **must not** use Android reserved words or system resource names. Using reserved names causes build errors or resource conflicts.
436
+
437
+ **Common Reserved Names to Avoid**:
438
+
439
+ | Category | Reserved Names (Do NOT Use) |
440
+ |----------|----------------------------|
441
+ | Colors | `background`, `foreground`, `transparent`, `white`, `black` |
442
+ | Icons/Drawables | `icon`, `logo`, `image`, `drawable` |
443
+ | Views | `view`, `text`, `button`, `layout`, `container` |
444
+ | Attributes | `id`, `name`, `type`, `style`, `theme`, `color` |
445
+ | System | `app`, `android`, `content`, `data`, `action` |
446
+
447
+ Use descriptive prefixes, e.g. `app_background`, `icon_primary`, `screenBackground`, and `ic_home`, rather than generic system-like names such as `background`, `icon`, or `view`.
448
+
449
+ ---
450
+
451
+ ## 6. Build Error Diagnosis & Fixes
452
+
453
+ ### 6.1 Common Error Quick Reference
454
+
455
+ | Error Keyword | Cause | Fix |
456
+ |---------------|-------|-----|
457
+ | `Unresolved reference` | Missing import or undefined | Check imports, verify dependencies |
458
+ | `Type mismatch` | Type incompatibility | Check parameter types, add conversion |
459
+ | `Cannot access` | Visibility issue | Check public/private/internal |
460
+ | `@Composable invocations` | Composable context error | Ensure caller is also @Composable |
461
+ | `Duplicate class` | Dependency conflict | Use `./gradlew dependencies` to investigate |
462
+ | `AAPT: error` | Resource file error | Check XML syntax and resource references |
463
+
464
+ ### 6.2 Fix Best Practices
465
+
466
+ 1. **Read the complete error message first**: Locate file and line number
467
+ 2. **Check recent changes**: Problems usually in latest modifications
468
+ 3. **Clean Build**: `./gradlew clean assembleDebug`
469
+ 4. **Check dependency versions**: Version conflicts are common causes
470
+ 5. **Refresh dependencies if needed**: Clear cache and rebuild
471
+
472
+ ### 6.2.1 Safe Build-Error Recovery
473
+
474
+ | Trigger | First action | If still failing |
475
+ |---|---|---|
476
+ | Gradle/AGP/Kotlin version conflict | Inspect wrapper, root Gradle, module Gradle, and version catalog before edits | Ask before changing plugin or dependency versions; do not broad-upgrade blindly |
477
+ | Compose compiler/BOM mismatch | Align with existing project version source | If no source exists, ask before pinning versions |
478
+ | AAPT/resource error | Fix the named XML/resource only | Do not rename resources broadly; verify references first |
479
+ | Cache/dependency corruption suspected | Run `./gradlew assembleDebug --stacktrace` before cache refresh | Use `--refresh-dependencies` only after evidence points to cache/dependency state |
480
+
481
+ 🛑 **STOP:** never delete Gradle caches, change SDK/AGP/Kotlin major versions, or rewrite build files as a generic fix without user approval and a specific error trace.
482
+
483
+ ### 6.3 Debugging Commands
484
+
485
+ ```bash
486
+ # Clean and build
487
+ ./gradlew clean assembleDebug
488
+
489
+ # View dependency tree (investigate conflicts)
490
+ ./gradlew :app:dependencies
491
+
492
+ # View detailed errors
493
+ ./gradlew assembleDebug --stacktrace
494
+
495
+ # Refresh dependencies
496
+ ./gradlew --refresh-dependencies
497
+ ```
498
+
499
+ ---
500
+
501
+ ## 7. Material Design 3 Guidelines
502
+
503
+ Review Android UI files for compliance with Material Design 3 Guidelines and Android best practices.
504
+
505
+ ### Design Philosophy
506
+
507
+ #### M3 Core Principles
508
+
509
+ | Principle | Description |
510
+ |-----------|-------------|
511
+ | **Personal** | Dynamic color based on user preferences and wallpaper |
512
+ | **Adaptive** | Responsive across all screen sizes and form factors |
513
+ | **Expressive** | Bold colors and typography with personality |
514
+ | **Accessible** | Inclusive design for all users |
515
+
516
+ #### M3 Expressive (Latest)
517
+
518
+ The latest evolution adds emotion-driven UX through:
519
+ - Vibrant, dynamic colors
520
+ - Intuitive motion physics
521
+ - Adaptive components
522
+ - Flexible typography
523
+ - Contrasting shapes (35 new shape options)
524
+
525
+ ### App Style Selection
526
+
527
+ **Critical Decision**: Match visual style to app category and target audience.
528
+
529
+ | App Category | Visual Style | Key Characteristics |
530
+ |--------------|--------------|---------------------|
531
+ | Utility/Tool | Minimalist | Clean, efficient, neutral colors |
532
+ | Finance/Banking | Professional Trust | Conservative colors, security-focused |
533
+ | Health/Wellness | Calm & Natural | Soft colors, organic shapes |
534
+ | Kids (3-5) | Playful Simple | Bright colors, large targets (56dp+) |
535
+ | Kids (6-12) | Fun & Engaging | Vibrant, gamified feedback |
536
+ | Social/Entertainment | Expressive | Brand-driven, gesture-rich |
537
+ | Productivity | Clean & Focused | Minimal, high contrast |
538
+ | E-commerce | Conversion-focused | Clear CTAs, scannable |
539
+
540
+ See [Design Style Guide](references/design-style-guide.md) for detailed style profiles.
541
+
542
+ ### Quick Reference: Key Specifications
543
+
544
+ #### Color Contrast Requirements
545
+
546
+ | Element | Minimum Ratio |
547
+ |---------|---------------|
548
+ | Body text | **4.5:1** |
549
+ | Large text (18sp+) | **3:1** |
550
+ | UI components | **3:1** |
551
+
552
+ #### Touch Targets
553
+
554
+ | Type | Size |
555
+ |------|------|
556
+ | Minimum | 48 × 48dp |
557
+ | Recommended (primary actions) | 56 × 56dp |
558
+ | Kids apps | 56dp+ |
559
+ | Spacing between targets | 8dp minimum |
560
+
561
+ #### 8dp Grid System
562
+
563
+ | Token | Value | Usage |
564
+ |-------|-------|-------|
565
+ | xs | 4dp | Icon padding |
566
+ | sm | 8dp | Tight spacing |
567
+ | md | 16dp | Default padding |
568
+ | lg | 24dp | Section spacing |
569
+ | xl | 32dp | Large gaps |
570
+ | xxl | 48dp | Screen margins |
571
+
572
+ #### Typography Scale (Summary)
573
+
574
+ | Category | Sizes |
575
+ |----------|-------|
576
+ | Display | 57sp, 45sp, 36sp |
577
+ | Headline | 32sp, 28sp, 24sp |
578
+ | Title | 22sp, 16sp, 14sp |
579
+ | Body | 16sp, 14sp, 12sp |
580
+ | Label | 14sp, 12sp, 11sp |
581
+
582
+ #### Animation Duration
583
+
584
+ | Type | Duration |
585
+ |------|----------|
586
+ | Micro (ripples) | 50-100ms |
587
+ | Short (simple) | 100-200ms |
588
+ | Medium (expand/collapse) | 200-300ms |
589
+ | Long (complex) | 300-500ms |
590
+
591
+ #### Component Dimensions
592
+
593
+ | Component | Height | Min Width |
594
+ |-----------|--------|-----------|
595
+ | Button | 40dp | 64dp |
596
+ | FAB | 56dp | 56dp |
597
+ | Text Field | 56dp | 280dp |
598
+ | App Bar | 64dp | - |
599
+ | Bottom Nav | 80dp | - |
600
+
601
+ ### Anti-Patterns (Must Avoid)
602
+
603
+ #### UI Anti-Patterns
604
+ - More than 5 bottom navigation items
605
+ - Multiple FABs on same screen
606
+ - Touch targets smaller than 48dp
607
+ - Inconsistent spacing (non-8dp multiples)
608
+ - Missing dark theme support
609
+ - Text on colored backgrounds without contrast check
610
+
611
+ #### Performance Anti-Patterns
612
+ - Startup time > 2 seconds without progress indicator
613
+ - Frame rate < 60 FPS (> 16ms per frame)
614
+ - Crash rate > 1.09% (Google Play threshold)
615
+ - ANR rate > 0.47% (Google Play threshold)
616
+
617
+ #### Accessibility Anti-Patterns
618
+ - Missing contentDescription on interactive elements
619
+ - Element type in labels (e.g., "Save button" instead of "Save")
620
+ - Complex gestures in kids apps
621
+ - Text-only buttons for non-readers
622
+
623
+ ### Review Checklist
624
+
625
+ - [ ] 8dp spacing grid compliance
626
+ - [ ] 48dp minimum touch targets
627
+ - [ ] Proper typography scale usage
628
+ - [ ] Color contrast compliance (4.5:1+ for text)
629
+ - [ ] Dark theme support
630
+ - [ ] contentDescription on all interactive elements
631
+ - [ ] Startup < 2 seconds or shows progress
632
+ - [ ] Visual style matches app category
633
+
634
+ 🔴 **CHECKPOINT — Visual validation before delivery:** run or inspect the changed screen in light/dark mode and at least one compact and one expanded size when UI changed. If no emulator/device/browser-preview equivalent is available, report the missing visual evidence and do not claim full UI verification.
635
+
636
+ ### Design References
637
+
638
+ | Topic | Reference |
639
+ |-------|-----------|
640
+ | Colors, Typography, Spacing, Shapes | [Visual Design](references/visual-design.md) |
641
+ | Animation & Transitions | [Motion System](references/motion-system.md) |
642
+ | Accessibility Guidelines | [Accessibility](references/accessibility.md) |
643
+ | Large Screens & Foldables | [Adaptive Screens](references/adaptive-screens.md) |
644
+ | Android Vitals & Performance | [Performance & Stability](references/performance-stability.md) |
645
+ | Privacy & Security | [Privacy & Security](references/privacy-security.md) |
646
+ | Audio, Video, Notifications | [Functional Requirements](references/functional-requirements.md) |
647
+ | App Style by Category | [Design Style Guide](references/design-style-guide.md) |
648
+
649
+ ---
650
+
651
+ ## 8. Testing
652
+
653
+ > **Note**: Only add test dependencies when the user explicitly asks for testing.
654
+
655
+ A well-tested Android app uses layered testing: fast local unit tests for logic, instrumentation tests for UI and integration, and Gradle Managed Devices to run emulators reproducibly on any machine — including CI.
656
+
657
+ ### 8.1 Test Dependencies
658
+
659
+ Before adding test dependencies, inspect the project's existing versions to avoid conflicts:
660
+
661
+ 1. Check `gradle/libs.versions.toml` — if present, add test deps using the project's version catalog style
662
+ 2. Check existing `build.gradle.kts` for already-pinned dependency versions
663
+ 3. Match version families using the table below
664
+
665
+ **Version Alignment Rules**:
666
+
667
+ | Test Dependency | Must Align With | How to Check |
668
+ |----------------------------------------------|--------------------------------------------------|-----------------------------------------------------------------------|
669
+ | `kotlinx-coroutines-test` | Project's `kotlinx-coroutines-core` version | Search for `kotlinx-coroutines` in build files or version catalog |
670
+ | `compose-ui-test-junit4` | Project's Compose BOM or `compose-compiler` | Search for `compose-bom` or `compose.compiler` in build files |
671
+ | `espresso-*` | All Espresso artifacts must use the same version | Search for `espresso` in build files |
672
+ | `androidx.test:runner`, `rules`, `ext:junit` | Should use compatible AndroidX Test versions | Search for `androidx.test` in build files |
673
+ | `mockk` | Must support the project's Kotlin version | Check `kotlin` version in root `build.gradle.kts` or version catalog |
674
+
675
+ **Dependencies Reference** — add only the groups you need: JUnit/Robolectric/MockK/coroutines-test for local unit tests, AndroidX Test/Espresso/UI Automator for instrumentation, and `compose-ui-test-junit4` plus `ui-test-manifest` for Compose UI tests.
676
+
677
+ > **Note**: If the project uses a Compose BOM, `ui-test-junit4` and `ui-test-manifest` don't need explicit versions — the BOM manages them.
678
+
679
+ Enable Robolectric resource support in the `android` block:
680
+
681
+ ```kotlin
682
+ android {
683
+ testOptions {
684
+ unitTests.isIncludeAndroidResources = true // required for Robolectric
685
+ }
686
+ }
687
+ ```
688
+
689
+ ### 8.2 Testing by Layer
690
+
691
+ | Layer | Location | Runs On | Speed | Use For |
692
+ |--------------------|--------------------|-------------------------|----------------------|--------------------------------------------------|
693
+ | Unit (JUnit) | `src/test/` | JVM | ~ms | ViewModels, repos, mappers, validators |
694
+ | Unit + Robolectric | `src/test/` | JVM + simulated Android | ~100ms | Code needing Context, resources, SharedPrefs |
695
+ | Compose UI (local) | `src/test/` | JVM + Robolectric | ~100ms | Composable rendering & interaction |
696
+ | Espresso | `src/androidTest/` | Device/Emulator | ~seconds | View-based UI flows, Intents, DB integration |
697
+ | Compose UI (device)| `src/androidTest/` | Device/Emulator | ~seconds | Full Compose UI flows with real rendering |
698
+ | UI Automator | `src/androidTest/` | Device/Emulator | ~seconds | System dialogs, notifications, multi-app |
699
+ | Managed Device | `src/androidTest/` | Gradle-managed AVD | ~minutes (first run) | CI, matrix testing across API levels |
700
+
701
+ See [Testing](references/testing.md) for detailed examples, code patterns, and Gradle Managed Device configuration.
702
+
703
+ ### 8.3 Testing Commands
704
+
705
+ ```bash
706
+ # Local unit tests (fast, no emulator)
707
+ ./gradlew test # all modules
708
+ ./gradlew :app:testDebugUnitTest # app module, debug variant
709
+
710
+ # Single test class
711
+ ./gradlew :app:testDebugUnitTest --tests "com.example.myapp.CounterViewModelTest"
712
+
713
+ # Instrumentation tests (requires device or managed device)
714
+ ./gradlew connectedDebugAndroidTest # on connected device
715
+ ./gradlew pixel6Api34DebugAndroidTest # on managed device
716
+
717
+ # Both together
718
+ ./gradlew test connectedDebugAndroidTest
719
+
720
+ # Test with coverage report (JaCoCo)
721
+ ./gradlew testDebugUnitTest jacocoTestReport
722
+ ```