@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,757 @@
1
+ # Swift Coding Standards
2
+
3
+ Best practices for writing clean, safe, and idiomatic Swift code following Apple's guidelines and modern Swift conventions.
4
+
5
+ ---
6
+
7
+ ## 1. Optionals and Safety
8
+
9
+ **Impact:** CRITICAL
10
+
11
+ Swift's optional system eliminates null pointer exceptions through compile-time safety.
12
+
13
+ ### 1.1 Safe Unwrapping with if let
14
+
15
+ ```swift
16
+ if let name = optionalName {
17
+ print("Hello, \(name)")
18
+ }
19
+
20
+ // Multiple bindings
21
+ if let name = userName, let age = userAge, age >= 18 {
22
+ print("\(name) is an adult")
23
+ }
24
+ ```
25
+
26
+ ### 1.2 Guard for Early Exit
27
+
28
+ Use `guard` to exit early when preconditions aren't met:
29
+
30
+ ```swift
31
+ func processUser(_ user: User?) {
32
+ guard let user = user else { return }
33
+ guard !user.name.isEmpty else { return }
34
+ print(user.name)
35
+ }
36
+ ```
37
+
38
+ ### 1.3 Nil Coalescing for Defaults
39
+
40
+ ```swift
41
+ let displayName = name ?? "Anonymous"
42
+ let count = items?.count ?? 0
43
+ ```
44
+
45
+ ### 1.4 Optional Chaining
46
+
47
+ ```swift
48
+ let count = user?.profile?.posts?.count
49
+ let uppercased = optionalString?.uppercased()
50
+ ```
51
+
52
+ ### 1.5 Optional map/flatMap
53
+
54
+ ```swift
55
+ let uppercasedName = userName.map { $0.uppercased() }
56
+ let userID = userIDString.flatMap { Int($0) }
57
+ ```
58
+
59
+ ### 1.6 Never Force Unwrap
60
+
61
+ Avoid `!` force unwrapping. Use safe alternatives:
62
+
63
+ | Instead of | Use |
64
+ |------------|-----|
65
+ | `value!` | `if let value = value { }` |
66
+ | `array[0]` (unsafe) | `array.first` |
67
+ | `dictionary["key"]!` | `dictionary["key", default: defaultValue]` |
68
+
69
+ ---
70
+
71
+ ## 2. Naming Conventions
72
+
73
+ **Impact:** HIGH
74
+
75
+ ### 2.1 Types: PascalCase
76
+
77
+ ```swift
78
+ class UserProfileViewController { }
79
+ struct NetworkRequest { }
80
+ protocol DataSource { }
81
+ enum LoadingState { }
82
+ ```
83
+
84
+ ### 2.2 Variables and Functions: camelCase
85
+
86
+ ```swift
87
+ var userName: String
88
+ let maximumRetryCount = 3
89
+ func fetchUserProfile() { }
90
+ ```
91
+
92
+ ### 2.3 Boolean Naming
93
+
94
+ Use `is`, `has`, `should`, `can` prefixes:
95
+
96
+ ```swift
97
+ var isLoading: Bool
98
+ var hasCompletedOnboarding: Bool
99
+ var shouldShowAlert: Bool
100
+ var canEditProfile: Bool
101
+ ```
102
+
103
+ ### 2.4 Function Naming
104
+
105
+ Use verb phrases, read like natural English:
106
+
107
+ ```swift
108
+ // Good - clear actions
109
+ func fetchUsers() async throws -> [User]
110
+ func remove(_ item: Item, at index: Int)
111
+ func makeIterator() -> Iterator
112
+
113
+ // Avoid - unclear or redundant
114
+ func getUsersData() // "get" is redundant
115
+ func doRemove() // vague
116
+ ```
117
+
118
+ ### 2.5 Parameter Labels
119
+
120
+ First parameter label can be omitted when obvious:
121
+
122
+ ```swift
123
+ func insert(_ element: Element, at index: Int)
124
+ func move(from source: Int, to destination: Int)
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 3. Protocol-Oriented Design
130
+
131
+ **Impact:** HIGH
132
+
133
+ Swift favors composition over inheritance through protocols.
134
+
135
+ ### 3.1 Define Capabilities Through Protocols
136
+
137
+ ```swift
138
+ protocol DataStore {
139
+ func save<T: Codable>(_ item: T, key: String) throws
140
+ func load<T: Codable>(key: String) throws -> T?
141
+ }
142
+
143
+ protocol Drawable {
144
+ var color: Color { get set }
145
+ func draw()
146
+ }
147
+ ```
148
+
149
+ ### 3.2 Protocol Extensions for Default Behavior
150
+
151
+ ```swift
152
+ extension Drawable {
153
+ func draw() {
154
+ print("Drawing with \(color)")
155
+ }
156
+ }
157
+
158
+ extension Collection {
159
+ func chunked(into size: Int) -> [[Element]] {
160
+ guard size > 0 else { return [] }
161
+
162
+ var result: [[Element]] = []
163
+ var i = startIndex
164
+
165
+ while i != endIndex {
166
+ let j = index(i, offsetBy: size, limitedBy: endIndex) ?? endIndex
167
+ result.append(Array(self[i..<j]))
168
+ i = j
169
+ }
170
+
171
+ return result
172
+ }
173
+ }
174
+ ```
175
+
176
+ ### 3.3 Associated Types for Flexibility
177
+
178
+ ```swift
179
+ protocol Repository {
180
+ associatedtype Item
181
+ func fetchAll() async throws -> [Item]
182
+ func save(_ item: Item) async throws
183
+ }
184
+
185
+ class UserRepository: Repository {
186
+ typealias Item = User
187
+
188
+ func fetchAll() async throws -> [User] { /* ... */ }
189
+ func save(_ item: User) async throws { /* ... */ }
190
+ }
191
+ ```
192
+
193
+ ### 3.4 Protocol Composition
194
+
195
+ ```swift
196
+ protocol Named { var name: String { get } }
197
+ protocol Aged { var age: Int { get } }
198
+
199
+ func greet(_ person: Named & Aged) {
200
+ print("Hello, \(person.name), age \(person.age)")
201
+ }
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 4. Value Types vs Reference Types
207
+
208
+ **Impact:** HIGH
209
+
210
+ ### 4.1 Prefer Structs (Value Types)
211
+
212
+ Use structs for simple data models, independent copies:
213
+
214
+ ```swift
215
+ struct User {
216
+ var name: String
217
+ var email: String
218
+ }
219
+
220
+ struct Point {
221
+ var x: Double
222
+ var y: Double
223
+ }
224
+ ```
225
+
226
+ ### 4.2 Use Classes When Needed
227
+
228
+ Use classes when identity, shared ownership, or reference semantics matter.
229
+ Prefer actors for mutable state shared across concurrent tasks:
230
+
231
+ ```swift
232
+ class NetworkManager {
233
+ static let shared = NetworkManager()
234
+ private init() { }
235
+ }
236
+
237
+ class FileHandle {
238
+ // Wrapping system resource
239
+ }
240
+ ```
241
+
242
+ ### 4.3 Enums for Finite States
243
+
244
+ ```swift
245
+ enum LoadingState {
246
+ case idle
247
+ case loading
248
+ case success(Data)
249
+ case failure(Error)
250
+ }
251
+
252
+ enum Result<Success, Failure: Error> {
253
+ case success(Success)
254
+ case failure(Failure)
255
+ }
256
+ ```
257
+
258
+ | Type | Use When |
259
+ |------|----------|
260
+ | `struct` | Data models, coordinates, independent values |
261
+ | `class` | Shared state, identity matters, inheritance needed |
262
+ | `enum` | Finite set of options, state machines |
263
+
264
+ ---
265
+
266
+ ## 5. Memory Management with ARC
267
+
268
+ **Impact:** CRITICAL
269
+
270
+ ### 5.1 Breaking Retain Cycles with weak
271
+
272
+ ```swift
273
+ class Apartment {
274
+ weak var tenant: Person?
275
+ }
276
+
277
+ class Person {
278
+ var apartment: Apartment?
279
+ }
280
+ ```
281
+
282
+ ### 5.2 Closure Capture Lists
283
+
284
+ Use capture lists intentionally to avoid retain cycles.
285
+ Choose `weak` or `unowned` based on lifetime guarantees:
286
+
287
+ ```swift
288
+ // Weak capture for optional self
289
+ onComplete = { [weak self] in
290
+ self?.processResult()
291
+ }
292
+
293
+ // Capture specific values
294
+ let id = user.id
295
+ fetchData { [id] result in
296
+ print("Fetched for \(id)")
297
+ }
298
+ ```
299
+
300
+ ### 5.3 unowned for Guaranteed Lifetime
301
+
302
+ Use when reference should never be nil during object lifetime:
303
+
304
+ ```swift
305
+ class CreditCard {
306
+ unowned let customer: Customer
307
+
308
+ init(customer: Customer) {
309
+ self.customer = customer
310
+ }
311
+ }
312
+ ```
313
+
314
+ | Keyword | Use When |
315
+ |---------|----------|
316
+ | `weak` | Reference may become nil |
317
+ | `unowned` | Reference guaranteed to outlive |
318
+ | None | Strong ownership needed |
319
+
320
+ ---
321
+
322
+ ## 6. Error Handling
323
+
324
+ **Impact:** HIGH
325
+
326
+ ### 6.1 Define Typed Errors
327
+
328
+ ```swift
329
+ enum NetworkError: Error {
330
+ case invalidURL
331
+ case noConnection
332
+ case serverError(statusCode: Int)
333
+ case decodingFailed(underlying: Error)
334
+ }
335
+
336
+ enum ValidationError: LocalizedError {
337
+ case emptyField(name: String)
338
+ case invalidFormat(field: String, expected: String)
339
+
340
+ var errorDescription: String? {
341
+ switch self {
342
+ case .emptyField(let name):
343
+ return "\(name) cannot be empty"
344
+ case .invalidFormat(let field, let expected):
345
+ return "\(field) must be \(expected)"
346
+ }
347
+ }
348
+ }
349
+ ```
350
+
351
+ ### 6.2 Throwing Functions
352
+
353
+ ```swift
354
+ func fetchUser(id: Int) throws -> User {
355
+ guard let url = URL(string: "https://api.example.com/users/\(id)") else {
356
+ throw NetworkError.invalidURL
357
+ }
358
+ // ... implementation
359
+ }
360
+ ```
361
+
362
+ ### 6.3 Do-Catch Handling
363
+
364
+ ```swift
365
+ do {
366
+ let user = try fetchUser(id: 123)
367
+ print(user.name)
368
+ } catch NetworkError.serverError(let code) {
369
+ print("Server error: \(code)")
370
+ } catch NetworkError.noConnection {
371
+ print("Check your internet connection")
372
+ } catch {
373
+ print("Unknown error: \(error)")
374
+ }
375
+ ```
376
+
377
+ ### 6.4 try? and try!
378
+
379
+ ```swift
380
+ // try? returns optional (nil on error)
381
+ let user = try? fetchUser(id: 123)
382
+
383
+ // try! crashes on error - use only when failure is programmer error
384
+ let config = try! loadBundledConfig()
385
+ ```
386
+
387
+ ### 6.5 Rethrows
388
+
389
+ ```swift
390
+ func perform<T>(_ operation: () throws -> T) rethrows -> T {
391
+ return try operation()
392
+ }
393
+ ```
394
+
395
+ ---
396
+
397
+ ## 7. Modern Concurrency (async/await)
398
+
399
+ **Impact:** CRITICAL
400
+
401
+ Use actor isolation and `Sendable` to prevent data races across concurrency domains.
402
+
403
+ ### 7.1 Async Functions
404
+
405
+ ```swift
406
+ func fetchUser(id: Int) async throws -> User {
407
+ guard let url = URL(string: "https://api.example.com/users/\(id)") else {
408
+ throw NetworkError.invalidURL
409
+ }
410
+ let (data, _) = try await URLSession.shared.data(from: url)
411
+ return try JSONDecoder().decode(User.self, from: data)
412
+ }
413
+
414
+ // Calling async functions
415
+ Task {
416
+ do {
417
+ let user = try await fetchUser(id: 123)
418
+ print(user.name)
419
+ } catch {
420
+ print("Failed: \(error)")
421
+ }
422
+ }
423
+ ```
424
+
425
+ ### 7.2 Parallel Execution with TaskGroup
426
+
427
+ ```swift
428
+ func fetchAllUsers(ids: [Int]) async throws -> [User] {
429
+ try await withThrowingTaskGroup(of: User.self) { group in
430
+ for id in ids {
431
+ group.addTask {
432
+ try await fetchUser(id: id)
433
+ }
434
+ }
435
+ return try await group.reduce(into: []) { $0.append($1) }
436
+ }
437
+ }
438
+ ```
439
+
440
+ ### 7.3 async let for Concurrent Bindings
441
+
442
+ ```swift
443
+ async let user = fetchUser(id: 1)
444
+ async let posts = fetchPosts(userId: 1)
445
+ async let followers = fetchFollowers(userId: 1)
446
+
447
+ let profile = try await ProfileData(
448
+ user: user,
449
+ posts: posts,
450
+ followers: followers
451
+ )
452
+ ```
453
+
454
+ ### 7.4 Actors for Thread-Safe State
455
+
456
+ ```swift
457
+ actor BankAccount {
458
+ private var balance: Double = 0
459
+
460
+ func deposit(_ amount: Double) {
461
+ balance += amount
462
+ }
463
+
464
+ func withdraw(_ amount: Double) throws {
465
+ guard balance >= amount else {
466
+ throw BankError.insufficientFunds
467
+ }
468
+ balance -= amount
469
+ }
470
+
471
+ func getBalance() -> Double {
472
+ balance
473
+ }
474
+ }
475
+
476
+ // Usage
477
+ let account = BankAccount()
478
+ await account.deposit(100)
479
+ let balance = await account.getBalance()
480
+ ```
481
+
482
+ ### 7.5 MainActor for UI Updates
483
+
484
+ ```swift
485
+ @MainActor
486
+ class ViewModel: ObservableObject {
487
+ @Published var isLoading = false
488
+ @Published var users: [User] = []
489
+
490
+ func loadUsers() async {
491
+ isLoading = true
492
+ defer { isLoading = false }
493
+
494
+ do {
495
+ users = try await fetchUsers()
496
+ } catch {
497
+ // Handle error
498
+ }
499
+ }
500
+ }
501
+ ```
502
+
503
+ ### 7.6 Task Cancellation
504
+
505
+ ```swift
506
+ func fetchWithTimeout() async throws -> Data {
507
+ try await withThrowingTaskGroup(of: Data.self) { group in
508
+ group.addTask {
509
+ try await fetchData()
510
+ }
511
+ group.addTask {
512
+ try await Task.sleep(for: .seconds(10))
513
+ throw TimeoutError()
514
+ }
515
+
516
+ let result = try await group.next()!
517
+ group.cancelAll()
518
+ return result
519
+ }
520
+ }
521
+
522
+ // Check for cancellation
523
+ func longOperation() async throws {
524
+ for item in items {
525
+ try Task.checkCancellation()
526
+ await process(item)
527
+ }
528
+ }
529
+ ```
530
+
531
+ ---
532
+
533
+ ## 8. Access Control
534
+
535
+ **Impact:** MEDIUM
536
+
537
+ ### 8.1 Access Levels
538
+
539
+ | Level | Scope |
540
+ |-------|-------|
541
+ | `private` | Enclosing declaration only |
542
+ | `fileprivate` | Entire source file |
543
+ | `internal` | Module (default) |
544
+ | `public` | Other modules can access |
545
+ | `open` | Other modules can subclass/override |
546
+
547
+ ### 8.2 Best Practices
548
+
549
+ ```swift
550
+ public class UserService {
551
+ // Public API
552
+ public func fetchUser(id: Int) async throws -> User { }
553
+
554
+ // Internal helper
555
+ func buildRequest(for id: Int) -> URLRequest { }
556
+
557
+ // Private implementation detail
558
+ private let session: URLSession
559
+ private var cache: [Int: User] = [:]
560
+ }
561
+ ```
562
+
563
+ ### 8.3 Private Setters
564
+
565
+ ```swift
566
+ public struct Counter {
567
+ public private(set) var count = 0
568
+
569
+ public mutating func increment() {
570
+ count += 1
571
+ }
572
+ }
573
+ ```
574
+
575
+ ---
576
+
577
+ ## 9. Generics and Type Constraints
578
+
579
+ **Impact:** MEDIUM
580
+
581
+ ### 9.1 Generic Functions
582
+
583
+ ```swift
584
+ func swapValues<T>(_ a: inout T, _ b: inout T) {
585
+ let temp = a
586
+ a = b
587
+ b = temp
588
+ }
589
+ ```
590
+
591
+ ### 9.2 Type Constraints
592
+
593
+ ```swift
594
+ func findIndex<T: Equatable>(of value: T, in array: [T]) -> Int? {
595
+ array.firstIndex(of: value)
596
+ }
597
+
598
+ func decode<T: Decodable>(_ type: T.Type, from data: Data) throws -> T {
599
+ try JSONDecoder().decode(type, from: data)
600
+ }
601
+ ```
602
+
603
+ ### 9.3 Where Clauses
604
+
605
+ ```swift
606
+ func allMatch<C: Collection>(_ collection: C, predicate: (C.Element) -> Bool) -> Bool
607
+ where C.Element: Equatable {
608
+ collection.allSatisfy(predicate)
609
+ }
610
+
611
+ extension Array where Element: Numeric {
612
+ func sum() -> Element {
613
+ reduce(0, +)
614
+ }
615
+ }
616
+ ```
617
+
618
+ ### 9.4 Opaque Types (some)
619
+
620
+ ```swift
621
+ func makeCollection() -> some Collection {
622
+ [1, 2, 3]
623
+ }
624
+
625
+ var body: some View {
626
+ Text("Hello")
627
+ }
628
+ ```
629
+
630
+ ---
631
+
632
+ ## 10. Property Wrappers
633
+
634
+ **Impact:** MEDIUM
635
+
636
+ ### 10.1 Common SwiftUI Property Wrappers
637
+
638
+ | Wrapper | Use Case |
639
+ |---------|----------|
640
+ | `@State` | View-local mutable state |
641
+ | `@Binding` | Two-way connection to parent state |
642
+ | `@StateObject` | View-owned observable object |
643
+ | `@ObservedObject` | Passed-in observable object |
644
+ | `@EnvironmentObject` | Shared object from ancestor |
645
+ | `@Environment` | System environment values |
646
+ | `@Published` | Observable property in class |
647
+
648
+ ### 10.2 Custom Property Wrappers
649
+
650
+ ```swift
651
+ @propertyWrapper
652
+ struct Clamped<Value: Comparable> {
653
+ private var value: Value
654
+ let range: ClosedRange<Value>
655
+
656
+ var wrappedValue: Value {
657
+ get { value }
658
+ set { value = min(max(newValue, range.lowerBound), range.upperBound) }
659
+ }
660
+
661
+ init(wrappedValue: Value, _ range: ClosedRange<Value>) {
662
+ self.range = range
663
+ self.value = min(max(wrappedValue, range.lowerBound), range.upperBound)
664
+ }
665
+ }
666
+
667
+ struct Settings {
668
+ @Clamped(0...100) var volume: Int = 50
669
+ }
670
+ ```
671
+
672
+ ---
673
+
674
+ ## Quick Reference
675
+
676
+ ### Optionals
677
+
678
+ ```swift
679
+ if let x = optional { } // Safe unwrap
680
+ guard let x = optional else { return } // Early exit
681
+ let x = optional ?? default // Default value
682
+ optional?.method() // Optional chaining
683
+ optional.map { transform($0) } // Transform if present
684
+ ```
685
+
686
+ ### Common Patterns
687
+
688
+ ```swift
689
+ // Defer for cleanup
690
+ func process() {
691
+ let file = openFile()
692
+ defer { closeFile(file) }
693
+ // ... work with file
694
+ }
695
+
696
+ // Lazy initialization
697
+ lazy var expensive: ExpensiveObject = {
698
+ ExpensiveObject()
699
+ }()
700
+
701
+ // Type inference
702
+ let numbers = [1, 2, 3] // [Int]
703
+ let doubled = numbers.map { $0 * 2 } // [Int]
704
+ ```
705
+
706
+ ### Closure Syntax
707
+
708
+ ```swift
709
+ // Full syntax
710
+ let sorted = names.sorted(by: { (s1: String, s2: String) -> Bool in
711
+ return s1 < s2
712
+ })
713
+
714
+ // Shortened
715
+ let sorted = names.sorted { $0 < $1 }
716
+
717
+ // Trailing closure
718
+ UIView.animate(withDuration: 0.3) {
719
+ view.alpha = 0
720
+ }
721
+ ```
722
+
723
+ ---
724
+
725
+ ## Checklist
726
+
727
+ ### Safety
728
+ - [ ] No force unwrapping (`!`) except for IB outlets and known-safe cases
729
+ - [ ] All optionals handled with `if let`, `guard let`, or `??`
730
+ - [ ] No implicitly unwrapped optionals (`!`) in data models
731
+
732
+ ### Memory
733
+ - [ ] Escaping closures capture `self` intentionally; use `[weak self]` or `[unowned self]` to avoid retain cycles when needed
734
+ - [ ] Delegate properties are `weak`
735
+ - [ ] No retain cycles between objects
736
+
737
+ ### Concurrency
738
+ - [ ] Async functions used instead of completion handlers
739
+ - [ ] Mutable state shared across concurrency domains is isolated, often with actors
740
+ - [ ] Types crossing concurrency domains use `Sendable` when appropriate
741
+ - [ ] UI updates on `@MainActor`
742
+ - [ ] Task cancellation checked in long operations
743
+
744
+ ### Access Control
745
+ - [ ] `private` used for implementation details
746
+ - [ ] `public` API is minimal and intentional
747
+ - [ ] No unnecessary `internal` exposure
748
+
749
+ ### Naming
750
+ - [ ] Types use PascalCase
751
+ - [ ] Functions and variables use camelCase
752
+ - [ ] Booleans have `is`/`has`/`should` prefix
753
+ - [ ] Functions read like natural English
754
+
755
+ ---
756
+
757
+ *Swift and Apple are trademarks of Apple Inc.*