buildanything 1.8.0 → 2.0.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 (458) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +9 -3
  3. package/CHANGELOG.md +57 -0
  4. package/README.md +2 -2
  5. package/agents/a11y-architect.md +166 -0
  6. package/agents/business-model.md +80 -29
  7. package/agents/code-architect.md +75 -0
  8. package/agents/code-reviewer.md +255 -0
  9. package/agents/code-simplifier.md +64 -0
  10. package/agents/design-brand-guardian.md +293 -53
  11. package/agents/design-critic.md +139 -0
  12. package/agents/design-inclusive-visuals-specialist.md +6 -19
  13. package/agents/design-ui-designer.md +335 -56
  14. package/agents/design-ux-architect.md +403 -55
  15. package/agents/design-ux-researcher.md +264 -49
  16. package/agents/engineering-ai-engineer.md +26 -36
  17. package/agents/engineering-backend-architect.md +185 -36
  18. package/agents/engineering-data-engineer.md +225 -43
  19. package/agents/engineering-devops-automator.md +227 -74
  20. package/agents/engineering-frontend-developer.md +210 -34
  21. package/agents/engineering-mobile-app-builder.md +6 -1
  22. package/agents/engineering-rapid-prototyper.md +30 -9
  23. package/agents/engineering-security-engineer.md +263 -61
  24. package/agents/engineering-senior-developer.md +128 -19
  25. package/agents/engineering-sre.md +84 -0
  26. package/agents/engineering-technical-writer.md +285 -41
  27. package/agents/feature-intel.md +110 -0
  28. package/agents/ios-app-review-guardian.md +19 -2
  29. package/agents/ios-foundation-models-specialist.md +20 -2
  30. package/agents/ios-storekit-specialist.md +9 -2
  31. package/agents/ios-swift-architect.md +28 -1
  32. package/agents/ios-swift-search.md +8 -1
  33. package/agents/ios-swift-ui-design.md +33 -1
  34. package/agents/marketing-app-store-optimizer.md +246 -64
  35. package/agents/planner.md +216 -0
  36. package/agents/pr-test-analyzer.md +63 -0
  37. package/agents/product-feedback-synthesizer.md +8 -2
  38. package/agents/refactor-cleaner.md +102 -0
  39. package/agents/security-reviewer.md +128 -0
  40. package/agents/silent-failure-hunter.md +54 -0
  41. package/agents/swift-build-resolver.md +119 -0
  42. package/agents/swift-reviewer.md +112 -0
  43. package/agents/tech-feasibility.md +21 -1
  44. package/agents/testing-api-tester.md +236 -59
  45. package/agents/testing-evidence-collector.md +26 -1
  46. package/agents/testing-performance-benchmarker.md +21 -1
  47. package/agents/testing-reality-checker.md +6 -1
  48. package/agents/visual-research.md +116 -0
  49. package/bin/adapters/cycle-counter-tool.ts +155 -0
  50. package/bin/adapters/scribe-tool.ts +71 -0
  51. package/bin/adapters/state-save-tool.ts +130 -0
  52. package/bin/adapters/write-lease-tool.ts +127 -0
  53. package/bin/buildanything-runtime.js +15 -0
  54. package/bin/buildanything-runtime.ts +328 -0
  55. package/bin/setup.js +83 -8
  56. package/commands/add-feature.md +2 -0
  57. package/commands/build.md +782 -266
  58. package/commands/fix.md +1 -1
  59. package/commands/self-check.md +121 -0
  60. package/commands/setup.md +50 -9
  61. package/commands/ux-review.md +2 -2
  62. package/commands/verify.md +6 -9
  63. package/docs/migration/agents.yaml +729 -0
  64. package/docs/migration/phase-graph.yaml +1088 -0
  65. package/docs/migration/sdk-host-compat.md +18 -0
  66. package/hooks/compile-writer-owner-cache.ts +171 -0
  67. package/hooks/hooks.json +36 -0
  68. package/hooks/pre-tool-use +19 -0
  69. package/hooks/pre-tool-use.ts +776 -0
  70. package/hooks/record-mode-transitions.ts +178 -0
  71. package/hooks/session-start +71 -1
  72. package/hooks/subagent-start +17 -0
  73. package/hooks/subagent-start.ts +471 -0
  74. package/hooks/subagent-stop +17 -0
  75. package/hooks/subagent-stop.ts +153 -0
  76. package/package.json +24 -4
  77. package/protocols/architecture-schema.md +171 -0
  78. package/protocols/decision-log.md +131 -0
  79. package/protocols/ios-context.md +10 -11
  80. package/protocols/ios-phase-branches.md +208 -33
  81. package/protocols/launch-readiness.md +258 -0
  82. package/protocols/metric-loop.md +62 -2
  83. package/protocols/smoke-test.md +9 -1
  84. package/protocols/state-schema.json +388 -0
  85. package/protocols/state-schema.md +172 -0
  86. package/protocols/verify.md +62 -2
  87. package/protocols/visual-dna.md +185 -0
  88. package/protocols/web-phase-branches.md +222 -72
  89. package/skills/ios/_VENDORED.md +2 -0
  90. package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
  91. package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
  92. package/skills/ios/hig-components-content/SKILL.md +86 -0
  93. package/skills/ios/hig-components-content/references/activity-views.md +79 -0
  94. package/skills/ios/hig-components-content/references/charts.md +180 -0
  95. package/skills/ios/hig-components-content/references/collections.md +48 -0
  96. package/skills/ios/hig-components-content/references/color-wells.md +42 -0
  97. package/skills/ios/hig-components-content/references/image-views.md +82 -0
  98. package/skills/ios/hig-components-content/references/image-wells.md +34 -0
  99. package/skills/ios/hig-components-content/references/lockups.md +78 -0
  100. package/skills/ios/hig-components-content/references/web-views.md +36 -0
  101. package/skills/ios/hig-components-controls/SKILL.md +88 -0
  102. package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
  103. package/skills/ios/hig-components-controls/references/controls.md +112 -0
  104. package/skills/ios/hig-components-controls/references/gauges.md +74 -0
  105. package/skills/ios/hig-components-controls/references/labels.md +92 -0
  106. package/skills/ios/hig-components-controls/references/pickers.md +128 -0
  107. package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
  108. package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
  109. package/skills/ios/hig-components-controls/references/sliders.md +92 -0
  110. package/skills/ios/hig-components-controls/references/steppers.md +40 -0
  111. package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
  112. package/skills/ios/hig-components-controls/references/text-views.md +56 -0
  113. package/skills/ios/hig-components-controls/references/toggles.md +127 -0
  114. package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
  115. package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
  116. package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
  117. package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
  118. package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
  119. package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
  120. package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
  121. package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
  122. package/skills/ios/hig-components-layout/SKILL.md +99 -0
  123. package/skills/ios/hig-components-layout/references/boxes.md +48 -0
  124. package/skills/ios/hig-components-layout/references/column-views.md +44 -0
  125. package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
  126. package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
  127. package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
  128. package/skills/ios/hig-components-layout/references/panels.md +75 -0
  129. package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
  130. package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
  131. package/skills/ios/hig-components-layout/references/split-views.md +110 -0
  132. package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
  133. package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
  134. package/skills/ios/hig-components-layout/references/windows.md +188 -0
  135. package/skills/ios/hig-components-menus/SKILL.md +81 -0
  136. package/skills/ios/hig-components-menus/references/action-button.md +61 -0
  137. package/skills/ios/hig-components-menus/references/buttons.md +261 -0
  138. package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
  139. package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
  140. package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
  141. package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
  142. package/skills/ios/hig-components-menus/references/menus.md +171 -0
  143. package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
  144. package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
  145. package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
  146. package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
  147. package/skills/ios/hig-components-search/SKILL.md +68 -0
  148. package/skills/ios/hig-components-search/references/page-controls.md +120 -0
  149. package/skills/ios/hig-components-search/references/path-controls.md +40 -0
  150. package/skills/ios/hig-components-search/references/search-fields.md +189 -0
  151. package/skills/ios/hig-components-status/SKILL.md +80 -0
  152. package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
  153. package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
  154. package/skills/ios/hig-components-status/references/status-bars.md +38 -0
  155. package/skills/ios/hig-components-system/SKILL.md +88 -0
  156. package/skills/ios/hig-components-system/references/app-clips.md +387 -0
  157. package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
  158. package/skills/ios/hig-components-system/references/complications.md +425 -0
  159. package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
  160. package/skills/ios/hig-components-system/references/live-activities.md +442 -0
  161. package/skills/ios/hig-components-system/references/notifications.md +153 -0
  162. package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
  163. package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
  164. package/skills/ios/hig-components-system/references/widgets.md +517 -0
  165. package/skills/ios/hig-foundations/SKILL.md +98 -0
  166. package/skills/ios/hig-foundations/references/accessibility.md +291 -0
  167. package/skills/ios/hig-foundations/references/app-icons.md +210 -0
  168. package/skills/ios/hig-foundations/references/branding.md +44 -0
  169. package/skills/ios/hig-foundations/references/color.md +274 -0
  170. package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
  171. package/skills/ios/hig-foundations/references/icons.md +263 -0
  172. package/skills/ios/hig-foundations/references/images.md +176 -0
  173. package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
  174. package/skills/ios/hig-foundations/references/inclusion.md +189 -0
  175. package/skills/ios/hig-foundations/references/layout.md +425 -0
  176. package/skills/ios/hig-foundations/references/materials.md +238 -0
  177. package/skills/ios/hig-foundations/references/motion.md +103 -0
  178. package/skills/ios/hig-foundations/references/privacy.md +231 -0
  179. package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
  180. package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
  181. package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
  182. package/skills/ios/hig-foundations/references/typography.md +1146 -0
  183. package/skills/ios/hig-foundations/references/writing.md +91 -0
  184. package/skills/ios/hig-inputs/SKILL.md +94 -0
  185. package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
  186. package/skills/ios/hig-inputs/references/camera-control.md +107 -0
  187. package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
  188. package/skills/ios/hig-inputs/references/eyes.md +120 -0
  189. package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
  190. package/skills/ios/hig-inputs/references/game-controls.md +156 -0
  191. package/skills/ios/hig-inputs/references/gestures.md +208 -0
  192. package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
  193. package/skills/ios/hig-inputs/references/keyboards.md +234 -0
  194. package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
  195. package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
  196. package/skills/ios/hig-inputs/references/remotes.md +67 -0
  197. package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
  198. package/skills/ios/hig-patterns/SKILL.md +104 -0
  199. package/skills/ios/hig-patterns/references/charting-data.md +81 -0
  200. package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
  201. package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
  202. package/skills/ios/hig-patterns/references/entering-data.md +69 -0
  203. package/skills/ios/hig-patterns/references/feedback.md +67 -0
  204. package/skills/ios/hig-patterns/references/file-management.md +135 -0
  205. package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
  206. package/skills/ios/hig-patterns/references/launching.md +81 -0
  207. package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
  208. package/skills/ios/hig-patterns/references/loading.md +59 -0
  209. package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
  210. package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
  211. package/skills/ios/hig-patterns/references/modality.md +82 -0
  212. package/skills/ios/hig-patterns/references/multitasking.md +131 -0
  213. package/skills/ios/hig-patterns/references/offering-help.md +117 -0
  214. package/skills/ios/hig-patterns/references/onboarding.md +69 -0
  215. package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
  216. package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
  217. package/skills/ios/hig-patterns/references/playing-video.md +180 -0
  218. package/skills/ios/hig-patterns/references/printing.md +50 -0
  219. package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
  220. package/skills/ios/hig-patterns/references/searching.md +70 -0
  221. package/skills/ios/hig-patterns/references/settings.md +84 -0
  222. package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
  223. package/skills/ios/hig-patterns/references/workouts.md +76 -0
  224. package/skills/ios/hig-platforms/SKILL.md +84 -0
  225. package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
  226. package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
  227. package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
  228. package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
  229. package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
  230. package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
  231. package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
  232. package/skills/ios/hig-project-context/SKILL.md +133 -0
  233. package/skills/ios/hig-technologies/SKILL.md +107 -0
  234. package/skills/ios/hig-technologies/references/airplay.md +125 -0
  235. package/skills/ios/hig-technologies/references/always-on.md +62 -0
  236. package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
  237. package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
  238. package/skills/ios/hig-technologies/references/carekit.md +224 -0
  239. package/skills/ios/hig-technologies/references/carplay.md +119 -0
  240. package/skills/ios/hig-technologies/references/game-center.md +343 -0
  241. package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
  242. package/skills/ios/hig-technologies/references/healthkit.md +120 -0
  243. package/skills/ios/hig-technologies/references/homekit.md +343 -0
  244. package/skills/ios/hig-technologies/references/icloud.md +52 -0
  245. package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
  246. package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
  247. package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
  248. package/skills/ios/hig-technologies/references/live-photos.md +54 -0
  249. package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
  250. package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
  251. package/skills/ios/hig-technologies/references/maps.md +221 -0
  252. package/skills/ios/hig-technologies/references/nfc.md +51 -0
  253. package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
  254. package/skills/ios/hig-technologies/references/researchkit.md +134 -0
  255. package/skills/ios/hig-technologies/references/shareplay.md +142 -0
  256. package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
  257. package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
  258. package/skills/ios/hig-technologies/references/siri.md +523 -0
  259. package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
  260. package/skills/ios/hig-technologies/references/voiceover.md +90 -0
  261. package/skills/ios/hig-technologies/references/wallet.md +420 -0
  262. package/skills/ios/ios-bootstrap/SKILL.md +16 -7
  263. package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
  264. package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
  265. package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
  266. package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
  267. package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
  268. package/skills/web/accessibility/SKILL.md +146 -0
  269. package/skills/web/aceternity-ui/SKILL.md +719 -0
  270. package/skills/web/aceternity-ui/metadata.json +10 -0
  271. package/skills/web/api-design/SKILL.md +523 -0
  272. package/skills/web/chart-accessibility/SKILL.md +332 -0
  273. package/skills/web/composition-patterns/AGENTS.md +946 -0
  274. package/skills/web/composition-patterns/README.md +60 -0
  275. package/skills/web/composition-patterns/SKILL.md +89 -0
  276. package/skills/web/composition-patterns/metadata.json +11 -0
  277. package/skills/web/composition-patterns/rules/_sections.md +29 -0
  278. package/skills/web/composition-patterns/rules/_template.md +24 -0
  279. package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  280. package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
  281. package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  282. package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  283. package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
  284. package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
  285. package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
  286. package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
  287. package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
  288. package/skills/web/database-migrations/SKILL.md +429 -0
  289. package/skills/web/deployment-patterns/SKILL.md +427 -0
  290. package/skills/web/docker-patterns/SKILL.md +364 -0
  291. package/skills/web/e2e-testing/SKILL.md +326 -0
  292. package/skills/web/lighthouse-ci/SKILL.md +361 -0
  293. package/skills/web/mcp-server-patterns/SKILL.md +69 -0
  294. package/skills/web/next-best-practices/SKILL.md +153 -0
  295. package/skills/web/next-best-practices/async-patterns.md +87 -0
  296. package/skills/web/next-best-practices/bundling.md +180 -0
  297. package/skills/web/next-best-practices/data-patterns.md +297 -0
  298. package/skills/web/next-best-practices/debug-tricks.md +105 -0
  299. package/skills/web/next-best-practices/directives.md +73 -0
  300. package/skills/web/next-best-practices/error-handling.md +227 -0
  301. package/skills/web/next-best-practices/file-conventions.md +140 -0
  302. package/skills/web/next-best-practices/font.md +245 -0
  303. package/skills/web/next-best-practices/functions.md +108 -0
  304. package/skills/web/next-best-practices/hydration-error.md +91 -0
  305. package/skills/web/next-best-practices/image.md +173 -0
  306. package/skills/web/next-best-practices/metadata.md +301 -0
  307. package/skills/web/next-best-practices/parallel-routes.md +287 -0
  308. package/skills/web/next-best-practices/route-handlers.md +146 -0
  309. package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
  310. package/skills/web/next-best-practices/runtime-selection.md +39 -0
  311. package/skills/web/next-best-practices/scripts.md +141 -0
  312. package/skills/web/next-best-practices/self-hosting.md +371 -0
  313. package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
  314. package/skills/web/next-cache-components/SKILL.md +411 -0
  315. package/skills/web/postgres-best-practices/SKILL.md +14 -0
  316. package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
  317. package/skills/web/react-best-practices/AGENTS.md +3810 -0
  318. package/skills/web/react-best-practices/README.md +123 -0
  319. package/skills/web/react-best-practices/SKILL.md +149 -0
  320. package/skills/web/react-best-practices/metadata.json +15 -0
  321. package/skills/web/react-best-practices/rules/_sections.md +46 -0
  322. package/skills/web/react-best-practices/rules/_template.md +28 -0
  323. package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  324. package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  325. package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
  326. package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
  327. package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
  328. package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  329. package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
  330. package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
  331. package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
  332. package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  333. package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  334. package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
  335. package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
  336. package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  337. package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  338. package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
  339. package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
  340. package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
  341. package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  342. package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
  343. package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
  344. package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
  345. package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
  346. package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
  347. package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
  348. package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
  349. package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
  350. package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
  351. package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
  352. package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
  353. package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
  354. package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
  355. package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
  356. package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  357. package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
  358. package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  359. package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
  360. package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
  361. package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  362. package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  363. package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  364. package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
  365. package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  366. package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
  367. package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  368. package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
  369. package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
  370. package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  371. package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
  372. package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  373. package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  374. package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  375. package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
  376. package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  377. package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  378. package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  379. package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  380. package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
  381. package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  382. package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  383. package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
  384. package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
  385. package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
  386. package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
  387. package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
  388. package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
  389. package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
  390. package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
  391. package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  392. package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
  393. package/skills/web/seo/SKILL.md +154 -0
  394. package/skills/web/web-design-guidelines/SKILL.md +39 -0
  395. package/skills/web/zap-scan-config/SKILL.md +444 -0
  396. package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
  397. package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
  398. package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
  399. package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
  400. package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
  401. package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
  402. package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
  403. package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
  404. package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
  405. package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
  406. package/src/lrr/aggregator.ts +80 -0
  407. package/src/orchestrator/hooks/context-header.ts +95 -0
  408. package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
  409. package/src/orchestrator/hooks/token-accounting.ts +101 -0
  410. package/src/orchestrator/mcp/cycle-counter.ts +129 -0
  411. package/src/orchestrator/mcp/scribe.ts +283 -0
  412. package/src/orchestrator/mcp/state-save.ts +149 -0
  413. package/src/orchestrator/mcp/write-lease.ts +167 -0
  414. package/src/orchestrator/phase4-shared-context.ts +41 -0
  415. package/src/orchestrator/schemas/backward-edge.ts +46 -0
  416. package/agents/agentic-identity-trust.md +0 -121
  417. package/agents/data-consolidation-agent.md +0 -39
  418. package/agents/design-image-prompt-engineer.md +0 -105
  419. package/agents/design-visual-storyteller.md +0 -147
  420. package/agents/design-whimsy-injector.md +0 -89
  421. package/agents/engineering-autonomous-optimization-architect.md +0 -105
  422. package/agents/market-intel.md +0 -35
  423. package/agents/marketing-instagram-curator.md +0 -111
  424. package/agents/marketing-reddit-community-builder.md +0 -121
  425. package/agents/marketing-social-media-strategist.md +0 -74
  426. package/agents/marketing-tiktok-strategist.md +0 -123
  427. package/agents/marketing-twitter-engager.md +0 -124
  428. package/agents/marketing-wechat-official-account.md +0 -143
  429. package/agents/marketing-xiaohongshu-specialist.md +0 -136
  430. package/agents/marketing-zhihu-strategist.md +0 -160
  431. package/agents/product-behavioral-nudge-engine.md +0 -78
  432. package/agents/project-management-experiment-tracker.md +0 -102
  433. package/agents/report-distribution-agent.md +0 -43
  434. package/agents/risk-analysis.md +0 -45
  435. package/agents/sales-data-extraction-agent.md +0 -46
  436. package/agents/specialized-cultural-intelligence-strategist.md +0 -65
  437. package/agents/specialized-developer-advocate.md +0 -146
  438. package/agents/support-analytics-reporter.md +0 -133
  439. package/agents/support-executive-summary-generator.md +0 -64
  440. package/agents/support-finance-tracker.md +0 -145
  441. package/agents/support-legal-compliance-checker.md +0 -129
  442. package/agents/support-support-responder.md +0 -91
  443. package/agents/testing-accessibility-auditor.md +0 -110
  444. package/agents/testing-test-results-analyzer.md +0 -97
  445. package/agents/testing-tool-evaluator.md +0 -76
  446. package/agents/testing-workflow-optimizer.md +0 -99
  447. package/agents/user-research.md +0 -40
  448. package/protocols/brainstorm.md +0 -99
  449. package/protocols/design.md +0 -269
  450. package/protocols/planning.md +0 -87
  451. package/skills/ios/ios-hig/SKILL.md +0 -41
  452. package/skills/ios/ios-hig/references/accessibility.md +0 -81
  453. package/skills/ios/ios-hig/references/content.md +0 -142
  454. package/skills/ios/ios-hig/references/feedback.md +0 -123
  455. package/skills/ios/ios-hig/references/interaction.md +0 -199
  456. package/skills/ios/ios-hig/references/performance-platform.md +0 -129
  457. package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
  458. package/skills/ios/ios-hig/references/visual-design.md +0 -84
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: asc-metadata-sync
3
+ description: Sync and validate App Store metadata and localizations with asc, including legacy metadata format migration. Use when updating metadata or translations.
4
+ ---
5
+
6
+ # asc metadata sync
7
+
8
+ Use this skill to keep local metadata in sync with App Store Connect.
9
+
10
+ ## Two Types of Localizations
11
+
12
+ ### 1. Version Localizations (per-release)
13
+ Fields: `description`, `keywords`, `whatsNew`, `supportUrl`, `marketingUrl`, `promotionalText`
14
+
15
+ ```bash
16
+ # List version localizations
17
+ asc localizations list --version "VERSION_ID"
18
+
19
+ # Download
20
+ asc localizations download --version "VERSION_ID" --path "./localizations"
21
+
22
+ # Upload from .strings files
23
+ asc localizations upload --version "VERSION_ID" --path "./localizations"
24
+ ```
25
+
26
+ ### 2. App Info Localizations (app-level)
27
+ Fields: `name`, `subtitle`, `privacyPolicyUrl`, `privacyChoicesUrl`, `privacyPolicyText`
28
+
29
+ ```bash
30
+ # First, find the app info ID
31
+ asc apps info list --app "APP_ID"
32
+
33
+ # List app info localizations
34
+ asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID"
35
+
36
+ # Upload app info localizations
37
+ asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
38
+ ```
39
+
40
+ **Note:** If you get "multiple app infos found", you must specify `--app-info` with the correct ID.
41
+
42
+ ## Legacy Fastlane Metadata Workflow
43
+
44
+ ### Export current state
45
+ ```bash
46
+ asc migrate export --app "APP_ID" --version-id "VERSION_ID" --output-dir "./fastlane"
47
+ ```
48
+
49
+ ### Validate local files
50
+ ```bash
51
+ asc migrate validate --fastlane-dir "./fastlane"
52
+ ```
53
+ This checks character limits and required fields.
54
+
55
+ ### Import updates
56
+ ```bash
57
+ asc migrate import --app "APP_ID" --version-id "VERSION_ID" --fastlane-dir "./fastlane" --dry-run
58
+ asc migrate import --app "APP_ID" --version-id "VERSION_ID" --fastlane-dir "./fastlane"
59
+ ```
60
+
61
+ ## Quick Field Updates
62
+
63
+ ### Version-specific fields
64
+ ```bash
65
+ # What's New
66
+ asc apps info edit --app "APP_ID" --locale "en-US" --whats-new "Bug fixes and improvements"
67
+
68
+ # Description
69
+ asc apps info edit --app "APP_ID" --locale "en-US" --description "Your app description here"
70
+
71
+ # Keywords
72
+ asc apps info edit --app "APP_ID" --locale "en-US" --keywords "keyword1,keyword2,keyword3"
73
+
74
+ # Support URL
75
+ asc apps info edit --app "APP_ID" --locale "en-US" --support-url "https://support.example.com"
76
+ ```
77
+
78
+ ### Version metadata
79
+ ```bash
80
+ # Copyright
81
+ asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company"
82
+
83
+ # Release type
84
+ asc versions update --version-id "VERSION_ID" --release-type AFTER_APPROVAL
85
+ ```
86
+
87
+ ### TestFlight notes
88
+ ```bash
89
+ asc build-localizations create --build "BUILD_ID" --locale "en-US" --whats-new "TestFlight notes here"
90
+ ```
91
+
92
+ ## .strings File Format
93
+
94
+ For bulk updates, use .strings files:
95
+
96
+ ```
97
+ // en-US.strings
98
+ "description" = "Your app description";
99
+ "keywords" = "keyword1,keyword2,keyword3";
100
+ "whatsNew" = "What's new in this version";
101
+ "supportUrl" = "https://support.example.com";
102
+ ```
103
+
104
+ For app-info type:
105
+ ```
106
+ // en-US.strings (app-info type)
107
+ "privacyPolicyUrl" = "https://example.com/privacy";
108
+ "name" = "Your App Name";
109
+ "subtitle" = "Your subtitle";
110
+ ```
111
+
112
+ ## Multi-Language Workflow
113
+
114
+ 1. Export all localizations:
115
+ ```bash
116
+ asc localizations download --version "VERSION_ID" --path "./localizations"
117
+ ```
118
+
119
+ 2. Translate the .strings files (or use translation service)
120
+
121
+ 3. Upload all at once:
122
+ ```bash
123
+ asc localizations upload --version "VERSION_ID" --path "./localizations"
124
+ ```
125
+
126
+ 4. Verify:
127
+ ```bash
128
+ asc localizations list --version "VERSION_ID" --output table
129
+ ```
130
+
131
+ ## Character Limits
132
+
133
+ | Field | Limit |
134
+ |-------|-------|
135
+ | Name | 30 |
136
+ | Subtitle | 30 |
137
+ | Keywords | 100 (comma-separated) |
138
+ | Description | 4000 |
139
+ | What's New | 4000 |
140
+ | Promotional Text | 170 |
141
+
142
+ Use `asc metadata validate --dir "./metadata"` for canonical metadata trees.
143
+ Use `asc migrate validate --fastlane-dir "./fastlane"` for legacy fastlane-format metadata.
144
+
145
+ ## Notes
146
+ - Version localizations and app info localizations are different; use the right command and `--type` flag.
147
+ - Use `asc localizations list` to confirm available locales and IDs.
148
+ - Privacy Policy URL is in app info localizations, not version localizations.
@@ -0,0 +1,350 @@
1
+ ---
2
+ name: asc-privacy-manifest
3
+ description: Generate and validate PrivacyInfo.xcprivacy files for iOS apps — required reason APIs, collected data types, tracking declarations, and SDK aggregation.
4
+ license: MIT
5
+ metadata:
6
+ author: oneshot
7
+ version: "1.0.0"
8
+ ---
9
+
10
+ # iOS Privacy Manifest (PrivacyInfo.xcprivacy)
11
+
12
+ Since iOS 17 / Xcode 15, every app and third-party SDK must ship a `PrivacyInfo.xcprivacy` file declaring what data it collects, which privacy-sensitive APIs it calls, and whether it tracks users. App Store Connect rejects submissions that omit required entries (ITMS-91053, ITMS-91055).
13
+
14
+ ## File structure
15
+
16
+ `PrivacyInfo.xcprivacy` is a property list (XML plist) with four top-level keys:
17
+
18
+ | Key | Type | Purpose |
19
+ |-----|------|---------|
20
+ | `NSPrivacyTracking` | Boolean | `true` if the app tracks users per ATT definition |
21
+ | `NSPrivacyTrackingDomains` | Array of String | Domains contacted for tracking (only when tracking is true) |
22
+ | `NSPrivacyCollectedDataTypes` | Array of Dict | Each data category collected, with purpose and linkage |
23
+ | `NSPrivacyAccessedAPITypes` | Array of Dict | Each required-reason API category used, with reason codes |
24
+
25
+ ## 1. Required reason APIs (NSPrivacyAccessedAPITypes)
26
+
27
+ Five API categories require declared reasons. Each entry is a dict with `NSPrivacyAccessedAPIType` (category string) and `NSPrivacyAccessedAPITypeReasons` (array of reason codes).
28
+
29
+ ### File timestamp APIs — `NSPrivacyAccessedAPICategoryFileTimestamp`
30
+
31
+ Triggered by: `FileManager` attribute reads (`modificationDate`, `creationDate`), `stat()`, `fstat()`, `getattrlist()`, `NSFileModificationDate`, `NSURLContentModificationDateKey`, `NSURLCreationDateKey`.
32
+
33
+ | Code | Meaning |
34
+ |------|---------|
35
+ | `DDA9.1` | Display file timestamps to the user on-device only (no off-device transmission) |
36
+ | `C617.1` | Access file metadata inside app container, app group container, or CloudKit container |
37
+ | `3B52.1` | Access metadata for files the user explicitly selected (document picker, drag-and-drop) |
38
+ | `0A2A.1` | Third-party SDK wrapper — only when the host app invokes the wrapper API |
39
+
40
+ ### System boot time APIs — `NSPrivacyAccessedAPICategorySystemBootTime`
41
+
42
+ Triggered by: `ProcessInfo.processInfo.systemUptime`, `mach_absolute_time()`, `clock_gettime(CLOCK_MONOTONIC)`.
43
+
44
+ | Code | Meaning |
45
+ |------|---------|
46
+ | `35F9.1` | Measure elapsed time between events within the app |
47
+ | `8FFB.1` | Calculate absolute timestamps for events (e.g. UIKit or AVFAudio timestamps) |
48
+ | `3D61.1` | Include boot time in an optional, user-initiated bug report |
49
+
50
+ ### Disk space APIs — `NSPrivacyAccessedAPICategoryDiskSpace`
51
+
52
+ Triggered by: `FileManager` `attributesOfFileSystem(forPath:)`, `volumeAvailableCapacityKey`, `volumeTotalCapacityKey`, `statfs()`, `statvfs()`.
53
+
54
+ | Code | Meaning |
55
+ |------|---------|
56
+ | `85F4.1` | Display disk space information to the user on-device |
57
+ | `E174.1` | Check available space before writing files or delete files on low disk |
58
+ | `7D9E.1` | Include disk space in an optional, user-initiated bug report |
59
+ | `B728.1` | Health research apps detecting low disk for data integrity |
60
+
61
+ ### Active keyboards APIs — `NSPrivacyAccessedAPICategoryActiveKeyboards`
62
+
63
+ Triggered by: `UITextInputMode.activeInputModes`.
64
+
65
+ | Code | Meaning |
66
+ |------|---------|
67
+ | `3EC4.1` | Custom keyboard app checking which keyboards are active |
68
+ | `54BD.1` | Customize UI or input behavior based on active keyboards |
69
+
70
+ ### User defaults APIs — `NSPrivacyAccessedAPICategoryUserDefaults`
71
+
72
+ Triggered by: `UserDefaults` standard or suite access. Almost every app hits this.
73
+
74
+ | Code | Meaning |
75
+ |------|---------|
76
+ | `CA92.1` | Read/write data accessible only to the app itself |
77
+ | `1C8F.1` | Read/write data shared via App Group (app + widgets/extensions) |
78
+ | `C56D.1` | Third-party SDK wrapper providing access to user defaults |
79
+ | `AC6B.1` | Read managed app configuration or write feedback for MDM |
80
+
81
+ ## 2. Collected data types (NSPrivacyCollectedDataTypes)
82
+
83
+ Each dict in the array declares one data category with four keys:
84
+
85
+ | Key | Type | Description |
86
+ |-----|------|-------------|
87
+ | `NSPrivacyCollectedDataType` | String | Identifier from Apple's predefined list |
88
+ | `NSPrivacyCollectedDataTypeLinked` | Boolean | `true` if this data is linked to the user's identity |
89
+ | `NSPrivacyCollectedDataTypeTracking` | Boolean | `true` if this data is used for tracking |
90
+ | `NSPrivacyCollectedDataTypePurposes` | Array of String | Why this data is collected |
91
+
92
+ ### Common data type identifiers
93
+
94
+ | Identifier | Category |
95
+ |------------|----------|
96
+ | `NSPrivacyCollectedDataTypeName` | Contact info — name |
97
+ | `NSPrivacyCollectedDataTypeEmailAddress` | Contact info — email |
98
+ | `NSPrivacyCollectedDataTypePhoneNumber` | Contact info — phone |
99
+ | `NSPrivacyCollectedDataTypeUserID` | Identifiers — user ID |
100
+ | `NSPrivacyCollectedDataTypeDeviceID` | Identifiers — device ID (IDFA, IDFV) |
101
+ | `NSPrivacyCollectedDataTypePreciseLocation` | Location — precise |
102
+ | `NSPrivacyCollectedDataTypeCoarseLocation` | Location — coarse |
103
+ | `NSPrivacyCollectedDataTypeProductInteraction` | Usage data — product interaction |
104
+ | `NSPrivacyCollectedDataTypeOtherUsageData` | Usage data — other |
105
+ | `NSPrivacyCollectedDataTypeCrashData` | Diagnostics — crash data |
106
+ | `NSPrivacyCollectedDataTypePerformanceData` | Diagnostics — performance |
107
+ | `NSPrivacyCollectedDataTypeOtherDiagnosticData` | Diagnostics — other |
108
+ | `NSPrivacyCollectedDataTypePaymentInfo` | Financial — payment info |
109
+ | `NSPrivacyCollectedDataTypePhotosorVideos` | User content — photos/videos |
110
+ | `NSPrivacyCollectedDataTypeContacts` | User content — contacts |
111
+ | `NSPrivacyCollectedDataTypeHealth` | Health & fitness |
112
+ | `NSPrivacyCollectedDataTypeFitness` | Health & fitness |
113
+ | `NSPrivacyCollectedDataTypeOtherDataTypes` | Catch-all |
114
+
115
+ ### Purpose identifiers
116
+
117
+ | Identifier | Meaning |
118
+ |------------|---------|
119
+ | `NSPrivacyCollectedDataTypePurposeAppFunctionality` | Core app features |
120
+ | `NSPrivacyCollectedDataTypePurposeAnalytics` | Analytics |
121
+ | `NSPrivacyCollectedDataTypePurposeProductPersonalization` | Personalization |
122
+ | `NSPrivacyCollectedDataTypePurposeDeveloperAdvertising` | Developer's own ads/marketing |
123
+ | `NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising` | Third-party ad networks |
124
+ | `NSPrivacyCollectedDataTypePurposeOther` | Other purposes |
125
+
126
+ ## 3. Tracking and ATT (NSPrivacyTracking)
127
+
128
+ Set `NSPrivacyTracking` to `true` only if the app links collected data with third-party data for advertising or ad measurement. This aligns with Apple's App Tracking Transparency (ATT) definition.
129
+
130
+ When `NSPrivacyTracking` is `true`:
131
+ - The app **must** call `ATTrackingManager.requestTrackingAuthorization()` before tracking.
132
+ - `NSPrivacyTrackingDomains` must list every domain contacted for tracking purposes.
133
+ - iOS blocks network requests to listed domains when the user denies tracking permission.
134
+ - `Info.plist` must include `NSUserTrackingUsageDescription` with a user-facing explanation.
135
+
136
+ When `NSPrivacyTracking` is `false`, leave `NSPrivacyTrackingDomains` as an empty array.
137
+
138
+ ## 4. Third-party SDK manifests and aggregation
139
+
140
+ Each SDK must bundle its own `PrivacyInfo.xcprivacy` inside its framework or Swift package bundle. During archival, Xcode aggregates all manifests into a unified **Privacy Report** (accessible via Product > Generate Privacy Report in Xcode).
141
+
142
+ Rules:
143
+ - The app's manifest covers the app target only — not its dependencies.
144
+ - Each framework/xcframework/Swift package provides its own manifest.
145
+ - Xcode merges all manifests at archive time; duplicates are union-merged.
146
+ - If an SDK lacks a manifest, App Store Connect flags the submission (ITMS-91061).
147
+ - Update third-party SDKs regularly — most major SDKs (Alamofire, Firebase, Sentry, etc.) ship manifests since mid-2024.
148
+
149
+ For Swift packages: place `PrivacyInfo.xcprivacy` in the package's resource bundle and declare it in `Package.swift` via `.process("PrivacyInfo.xcprivacy")` in the target's `resources` array.
150
+
151
+ ## 5. Xcode integration
152
+
153
+ ### Where to place the file
154
+ - **App target**: project root, alongside `Info.plist`. Xcode copies it into the app bundle at build time.
155
+ - **Framework target**: inside the framework's bundle resources.
156
+ - **Swift Package**: in `Sources/<Target>/` and declared in `Package.swift` resources.
157
+
158
+ ### How to create it in Xcode
159
+ 1. File > New > File (or Cmd-N).
160
+ 2. Search for "App Privacy" and select the template.
161
+ 3. Choose the correct target in the file inspector.
162
+ 4. Xcode creates `PrivacyInfo.xcprivacy` with a visual editor for the four top-level keys.
163
+
164
+ The file **must** be named exactly `PrivacyInfo.xcprivacy` — Apple's tooling scans for this specific filename.
165
+
166
+ ### Generate a privacy report
167
+ 1. Archive the app (Product > Archive).
168
+ 2. Right-click the archive in the Organizer > Generate Privacy Report.
169
+ 3. Review the aggregated report for missing entries before submission.
170
+
171
+ ## 6. Common App Store rejection reasons
172
+
173
+ | Error code | Cause | Fix |
174
+ |------------|-------|-----|
175
+ | ITMS-91053 | App uses a required-reason API without declaring it in the manifest | Add the missing `NSPrivacyAccessedAPIType` entry with valid reason codes |
176
+ | ITMS-91055 | Invalid reason code for a declared API category | Replace with a valid reason code from Apple's predefined list |
177
+ | ITMS-91056 | Malformed or invalid privacy manifest file | Validate plist XML structure; re-create via Xcode template |
178
+ | ITMS-91061 | A third-party SDK is missing its privacy manifest | Update the SDK or add a manifest to its bundle |
179
+
180
+ **TestFlight catches these errors** — always run a TestFlight build before production submission.
181
+
182
+ Other common pitfalls:
183
+ - Declaring `NSPrivacyTracking = true` but omitting `NSUserTrackingUsageDescription` in `Info.plist`.
184
+ - Using reason code `CA92.1` (app-only) when the app actually shares `UserDefaults` via App Group — use `1C8F.1` instead.
185
+ - Forgetting to declare `NSPrivacyAccessedAPICategoryFileTimestamp` when using `SDWebImage`, `Kingfisher`, or other caching libraries that call `stat()`.
186
+ - Declaring collected data types without matching entries in the App Store Connect privacy questionnaire.
187
+
188
+ ## 7. Complete example
189
+
190
+ A typical app using `UserDefaults`, file timestamps (caching), and analytics with crash reporting:
191
+
192
+ ```xml
193
+ <?xml version="1.0" encoding="UTF-8"?>
194
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
195
+ "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
196
+ <plist version="1.0">
197
+ <dict>
198
+
199
+ <!-- Tracking -->
200
+ <key>NSPrivacyTracking</key>
201
+ <false/>
202
+ <key>NSPrivacyTrackingDomains</key>
203
+ <array/>
204
+
205
+ <!-- Collected data types -->
206
+ <key>NSPrivacyCollectedDataTypes</key>
207
+ <array>
208
+ <!-- Crash data for stability monitoring -->
209
+ <dict>
210
+ <key>NSPrivacyCollectedDataType</key>
211
+ <string>NSPrivacyCollectedDataTypeCrashData</string>
212
+ <key>NSPrivacyCollectedDataTypeLinked</key>
213
+ <false/>
214
+ <key>NSPrivacyCollectedDataTypeTracking</key>
215
+ <false/>
216
+ <key>NSPrivacyCollectedDataTypePurposes</key>
217
+ <array>
218
+ <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
219
+ </array>
220
+ </dict>
221
+ <!-- Performance metrics -->
222
+ <dict>
223
+ <key>NSPrivacyCollectedDataType</key>
224
+ <string>NSPrivacyCollectedDataTypePerformanceData</string>
225
+ <key>NSPrivacyCollectedDataTypeLinked</key>
226
+ <false/>
227
+ <key>NSPrivacyCollectedDataTypeTracking</key>
228
+ <false/>
229
+ <key>NSPrivacyCollectedDataTypePurposes</key>
230
+ <array>
231
+ <string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
232
+ </array>
233
+ </dict>
234
+ <!-- User ID for account features -->
235
+ <dict>
236
+ <key>NSPrivacyCollectedDataType</key>
237
+ <string>NSPrivacyCollectedDataTypeUserID</string>
238
+ <key>NSPrivacyCollectedDataTypeLinked</key>
239
+ <true/>
240
+ <key>NSPrivacyCollectedDataTypeTracking</key>
241
+ <false/>
242
+ <key>NSPrivacyCollectedDataTypePurposes</key>
243
+ <array>
244
+ <string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
245
+ </array>
246
+ </dict>
247
+ </array>
248
+
249
+ <!-- Required reason APIs -->
250
+ <key>NSPrivacyAccessedAPITypes</key>
251
+ <array>
252
+ <!-- UserDefaults: app-only storage -->
253
+ <dict>
254
+ <key>NSPrivacyAccessedAPIType</key>
255
+ <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
256
+ <key>NSPrivacyAccessedAPITypeReasons</key>
257
+ <array>
258
+ <string>CA92.1</string>
259
+ </array>
260
+ </dict>
261
+ <!-- File timestamps: cache management -->
262
+ <dict>
263
+ <key>NSPrivacyAccessedAPIType</key>
264
+ <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
265
+ <key>NSPrivacyAccessedAPITypeReasons</key>
266
+ <array>
267
+ <string>C617.1</string>
268
+ </array>
269
+ </dict>
270
+ <!-- System boot time: elapsed time measurement -->
271
+ <dict>
272
+ <key>NSPrivacyAccessedAPIType</key>
273
+ <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
274
+ <key>NSPrivacyAccessedAPITypeReasons</key>
275
+ <array>
276
+ <string>35F9.1</string>
277
+ </array>
278
+ </dict>
279
+ </array>
280
+
281
+ </dict>
282
+ </plist>
283
+ ```
284
+
285
+ ### Variant: app with App Group sharing and tracking
286
+
287
+ If the app shares data with a widget via App Group and uses an ad SDK:
288
+
289
+ ```xml
290
+ <?xml version="1.0" encoding="UTF-8"?>
291
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
292
+ "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
293
+ <plist version="1.0">
294
+ <dict>
295
+
296
+ <key>NSPrivacyTracking</key>
297
+ <true/>
298
+ <key>NSPrivacyTrackingDomains</key>
299
+ <array>
300
+ <string>analytics.example.com</string>
301
+ <string>ads.example.com</string>
302
+ </array>
303
+
304
+ <key>NSPrivacyCollectedDataTypes</key>
305
+ <array>
306
+ <dict>
307
+ <key>NSPrivacyCollectedDataType</key>
308
+ <string>NSPrivacyCollectedDataTypeDeviceID</string>
309
+ <key>NSPrivacyCollectedDataTypeLinked</key>
310
+ <false/>
311
+ <key>NSPrivacyCollectedDataTypeTracking</key>
312
+ <true/>
313
+ <key>NSPrivacyCollectedDataTypePurposes</key>
314
+ <array>
315
+ <string>NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising</string>
316
+ </array>
317
+ </dict>
318
+ </array>
319
+
320
+ <key>NSPrivacyAccessedAPITypes</key>
321
+ <array>
322
+ <dict>
323
+ <key>NSPrivacyAccessedAPIType</key>
324
+ <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
325
+ <key>NSPrivacyAccessedAPITypeReasons</key>
326
+ <array>
327
+ <string>CA92.1</string>
328
+ <string>1C8F.1</string>
329
+ </array>
330
+ </dict>
331
+ </array>
332
+
333
+ </dict>
334
+ </plist>
335
+ ```
336
+
337
+ Note: when `NSPrivacyTracking` is `true`, the app must also declare `NSUserTrackingUsageDescription` in `Info.plist` and call `ATTrackingManager.requestTrackingAuthorization()` before any tracking occurs.
338
+
339
+ ## Decision checklist
340
+
341
+ Before generating the manifest, answer these:
342
+
343
+ 1. Does the app use `UserDefaults`? (almost always yes) --> `CA92.1` or `1C8F.1`
344
+ 2. Does the app or any dependency read file timestamps? (caching libraries do) --> `C617.1`
345
+ 3. Does the app measure elapsed time or call `mach_absolute_time()`? --> `35F9.1`
346
+ 4. Does the app check disk space before writes? --> `E174.1`
347
+ 5. Does the app inspect active keyboards? (rare) --> `54BD.1`
348
+ 6. Does the app collect crash/performance data? --> add collected data type entries
349
+ 7. Does the app link data to user identity? --> set `Linked` to `true` on those types
350
+ 8. Does the app track users for advertising? --> `NSPrivacyTracking = true` + ATT + tracking domains
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: hig-components-content
3
+ version: 1.0.0
4
+ description: >-
5
+ Apple Human Interface Guidelines for content display components. Use this skill when the user asks about
6
+ "charts component", "collection view", "image view", "web view", "color well", "image well",
7
+ "activity view", "lockup", "data visualization", "content display", displaying images, rendering
8
+ web content, color pickers, or presenting collections of items in Apple apps.
9
+ Also use when the user says "how should I display charts", "what's the best way to show images",
10
+ "should I use a web view", "how do I build a grid of items", "what component shows media",
11
+ or "how do I present a share sheet".
12
+ Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data
13
+ visualization patterns, hig-components-layout for structural containers, hig-platforms for
14
+ platform-specific component behavior.
15
+ ---
16
+
17
+ # Apple HIG: Content Components
18
+
19
+ Check for `.claude/apple-design-context.md` before asking questions. Use existing context and only ask for information not already covered.
20
+
21
+ ## Key Principles
22
+
23
+ 1. **Adapt to different sizes and contexts.** Content components must work across screen sizes, orientations, and multitasking configurations. Use Auto Layout and size classes.
24
+
25
+ 2. **Make content accessible.** Charts need audio graph support. Images need alt text. Collections need proper VoiceOver navigation order. All content components need labels and descriptions.
26
+
27
+ 3. **Maintain visual hierarchy.** Use spacing, sizing, and grouping to establish clear information hierarchy. Primary content should be visually prominent.
28
+
29
+ 4. **Use system components first.** Evaluate UICollectionView, SwiftUI Charts, WKWebView before building custom. System components come with built-in accessibility and platform adaptation.
30
+
31
+ 5. **Respect platform conventions.** A collection on tvOS uses large lockups with parallax. The same collection on iOS uses compact cells with touch targets. On visionOS, content gains depth and hover effects.
32
+
33
+ 6. **Handle empty states.** Show a meaningful empty state with guidance on how to populate it, not a blank screen.
34
+
35
+ 7. **Optimize for performance.** Use lazy loading, cell reuse, pagination, and prefetching for large datasets.
36
+
37
+ ## Reference Index
38
+
39
+ | Reference | Topic | Key content |
40
+ |---|---|---|
41
+ | [charts.md](references/charts.md) | Charts | Swift Charts, bar/line/area/point marks, chart accessibility, audio graphs |
42
+ | [collections.md](references/collections.md) | Collections | Grid/list layouts, compositional layout, selection, reordering, diffable data sources |
43
+ | [image-views.md](references/image-views.md) | Image Views | Aspect ratio handling, content modes, SF Symbol images, accessibility |
44
+ | [image-wells.md](references/image-wells.md) | Image Wells | Drag-and-drop image selection, macOS-specific, placeholder content |
45
+ | [color-wells.md](references/color-wells.md) | Color Wells | Color selection UI, system color picker, custom color spaces |
46
+ | [web-views.md](references/web-views.md) | Web Views | WKWebView, SFSafariViewController, navigation controls, content restrictions |
47
+ | [activity-views.md](references/activity-views.md) | Activity Views | Share sheets, activity items, custom activities, action extensions |
48
+ | [lockups.md](references/lockups.md) | Lockups | Image+text elements, tvOS card layouts, focus effects, shelf layouts |
49
+
50
+ ## Component Selection Guide
51
+
52
+ | Content Need | Recommended Component | Platform Notes |
53
+ |---|---|---|
54
+ | Visualizing quantitative data | Charts (Swift Charts) | iOS 16+, macOS 13+, watchOS 9+ |
55
+ | Browsing a grid or list of items | Collection View | Compositional layout for complex arrangements |
56
+ | Displaying a single image | Image View | Support aspect ratio fitting; provide accessibility description |
57
+ | Selecting an image via drag or browse | Image Well | macOS primarily; use image pickers on iOS |
58
+ | Selecting a color | Color Well | Triggers system color picker; macOS, iOS 14+ |
59
+ | Showing web content inline | Web View (WKWebView) | Use SFSafariViewController for external browsing |
60
+ | Sharing content to other apps | Activity View | System share sheet with configurable activity types |
61
+ | Content card (image + text) | Lockup | Primarily tvOS; adaptable to other platforms |
62
+
63
+ ## Output Format
64
+
65
+ 1. **Component recommendation with rationale**, referencing the relevant HIG reference file.
66
+ 2. **Configuration guidance** -- key properties and setup.
67
+ 3. **Accessibility requirements** for the recommended component.
68
+ 4. **Platform-specific notes** for targeted platforms.
69
+
70
+ ## Questions to Ask
71
+
72
+ 1. What type of content? (Quantitative data, images, web content, browsable collection, share action?)
73
+ 2. Which platforms?
74
+ 3. Static or dynamic content?
75
+ 4. How much content? (Few items vs hundreds/thousands affects component choice and optimization.)
76
+
77
+ ## Related Skills
78
+
79
+ - **hig-foundations** -- Color, typography, accessibility, and image guidelines
80
+ - **hig-patterns** -- Data visualization, sharing, and loading patterns
81
+ - **hig-components-layout** -- Structural containers (scroll views, lists, split views) hosting content
82
+ - **hig-platforms** -- Platform-specific component behavior (lockups on tvOS, web views on macOS)
83
+
84
+ ---
85
+
86
+ *Built by [Raintree Technology](https://raintree.technology) · [More developer tools](https://raintree.technology)*
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "Activity views | Apple Developer Documentation"
3
+ source: https://developer.apple.com/design/human-interface-guidelines/activity-views
4
+
5
+ # Activity views
6
+
7
+ An activity view — often called a _share sheet_ — presents a range of tasks that people can perform in the current context.
8
+
9
+ ![A stylized representation of an activity view or share sheet. The image is tinted red to subtly reflect the red in the original six-color Apple logo.](https://docs-assets.developer.apple.com/published/74899abd7c2a017fc05523d112743616/components-activity-view-intro%402x.png)
10
+
11
+ Activity views present sharing activities like messaging and actions like Copy and Print, in addition to quick access to frequently used apps. People typically reveal a share sheet by choosing an Action button while viewing a page or document, or after they’ve selected an item. An activity view can appear as a sheet or a popover, depending on the device and orientation.
12
+
13
+ You can provide app-specific activities that can appear in a share sheet when people open it within your app or game. For example, Photos provides app-specific actions like Copy Photo, Add to Album, and Adjust Location. By default, the system lists app-specific actions before actions — such as Add to Files or AirPlay — that are available in multiple apps or throughout the system. People can edit the list of actions to ensure that it displays the ones they use most and to add new ones.
14
+
15
+ You can also create app extensions to provide custom share and action activities that people can use in other apps. (An _app extension_ is code you provide that people can install and use outside of your app.) For example, you might create a custom share activity that people can install to help them share a webpage with a specific social media service. Even though macOS doesn’t provide an activity view, you can create share and action app extensions that people can use on a Mac. For guidance, see [Share and action extensions](https://developer.apple.com/design/human-interface-guidelines/activity-views#Share-and-action-extensions).
16
+
17
+ ## [Best practices](https://developer.apple.com/design/human-interface-guidelines/activity-views#Best-practices)
18
+
19
+ **Avoid creating duplicate versions of common actions that are already available in the activity view.** For example, providing a duplicate Print action is unnecessary and confusing because people wouldn’t know how to distinguish your action from the system-provided one. If you need to provide app-specific functionality that’s similar to an existing action, give it a custom title. For example, if you let people use custom formatting to print a bank transaction, use a title that helps people understand what your print activity does, like “Print Transaction.”
20
+
21
+ **Consider using a symbol to represent your custom activity.** [SF Symbols](https://developer.apple.com/design/human-interface-guidelines/sf-symbols) provides a comprehensive set of configurable symbols you can use to communicate items and concepts in an activity view. If you need to create a custom interface icon, center it in an area measuring about 70x70 pixels. For guidance, see [Icons](https://developer.apple.com/design/human-interface-guidelines/icons).
22
+
23
+ **Write a succinct, descriptive title for each custom action you provide.** If a title is too long, the system wraps it and may truncate it. Prefer a single verb or a brief verb phrase that clearly communicates what the action does. Avoid including your company or product name in an action title. In contrast, the share sheet displays the title of a share activity — typically a company name — below the icon that represents it.
24
+
25
+ **Make sure activities are appropriate for the current context.** Although you can’t reorder system-provided tasks in an activity view, you can exclude tasks that aren’t applicable to your app. For example, if it doesn’t make sense to print from within your app, you can exclude the Print activity. You can also identify which custom tasks to show at any given time.
26
+
27
+ **Use the Share button to display an activity view.** People are accustomed to accessing system-provided activities when they choose the Share button. Avoid confusing people by providing an alternative way to do the same thing.
28
+
29
+ ![A screenshot of the Notes app on iPhone, with an open Notes document titled Nature Walks. The top toolbar includes a Share button grouped with a More button on its trailing edge.](https://docs-assets.developer.apple.com/published/5cdc980290422f59da0f79ab5f5efd13/activity-views-share-button%402x.png)
30
+
31
+ ![A screenshot of the Notes app on iPhone, with an open Notes document titled Nature Walks. An activity view is open from the Share button, including controls for sharing the document with contacts or other apps, and copying, exporting, or adding markup to the document.](https://docs-assets.developer.apple.com/published/68a789fa9a70048fcef600615af180fd/activity-views-share-sheet%402x.png)
32
+
33
+ ## [Share and action extensions](https://developer.apple.com/design/human-interface-guidelines/activity-views#Share-and-action-extensions)
34
+
35
+ Share extensions give people a convenient way to share information from the current context with apps, social media accounts, and other services. Action extensions let people initiate content-specific tasks — like adding a bookmark, copying a link, editing an inline image, or displaying selected text in another language — without leaving the current context.
36
+
37
+ The system presents share and action extensions differently depending on the platform:
38
+
39
+ * In iOS and iPadOS, share and action extensions are displayed in the share sheet that appears when people choose an Action button.
40
+
41
+ * In macOS, people access share extensions by clicking a Share button in the toolbar or choosing Share in a context menu. People can access an action extension by holding the pointer over certain types of embedded content — like an image they add to a Mail compose window — clicking a toolbar button, or choosing a quick action in a Finder window.
42
+
43
+
44
+
45
+
46
+ **If necessary, create a custom interface that feels familiar to people.** For a share extension, prefer the system-provided composition view because it provides a consistent sharing experience that people already know. For an action extension, include your app name. If you need to present an interface, include elements of your app’s interface to help people understand that your extension and your app are related.
47
+
48
+ **Streamline and limit interaction.** People appreciate extensions that let them perform a task in just a few steps. For example, a share extension might immediately post an image to a social media account with a single tap or click.
49
+
50
+ **Avoid placing a modal view above your extension.** By default, the system displays an extension within a modal view. While it might be necessary to display an alert above an extension, avoid displaying additional modal views.
51
+
52
+ **If necessary, provide an image that communicates the purpose of your extension.** A share extension automatically uses your app icon, helping give people confidence that your app provided the extension. For an action extension, prefer using a [symbol](https://developer.apple.com/design/human-interface-guidelines/sf-symbols) or creating an interface [icon](https://developer.apple.com/design/human-interface-guidelines/icons) that clearly identifies the task.
53
+
54
+ **Use your main app to denote the progress of a lengthy operation.** An activity view dismisses immediately after people complete the task in your share or action extension. If a task is time-consuming, continue it in the background, and give people a way to check the status in your main app. Although you can use a notification to tell people about a problem, don’t notify them simply because the task completes.
55
+
56
+ ## [Platform considerations](https://developer.apple.com/design/human-interface-guidelines/activity-views#Platform-considerations)
57
+
58
+ _No additional considerations for iOS, iPadOS, or visionOS. Not supported in macOS, tvOS, or watchOS._
59
+
60
+ ## [Resources](https://developer.apple.com/design/human-interface-guidelines/activity-views#Resources)
61
+
62
+ #### [Related](https://developer.apple.com/design/human-interface-guidelines/activity-views#Related)
63
+
64
+ [Sheets](https://developer.apple.com/design/human-interface-guidelines/sheets)
65
+
66
+ [Popovers](https://developer.apple.com/design/human-interface-guidelines/popovers)
67
+
68
+ #### [Developer documentation](https://developer.apple.com/design/human-interface-guidelines/activity-views#Developer-documentation)
69
+
70
+ [`UIActivityViewController`](https://developer.apple.com/documentation/UIKit/UIActivityViewController) — UIKit
71
+
72
+ [`UIActivity`](https://developer.apple.com/documentation/UIKit/UIActivity) — UIKit
73
+
74
+ [App Extension Support](https://developer.apple.com/documentation/Foundation/app-extension-support) — Foundation
75
+
76
+ #### [Videos](https://developer.apple.com/design/human-interface-guidelines/activity-views#Videos)
77
+
78
+ [![](https://devimages-cdn.apple.com/wwdc-services/images/124/74342B30-92E9-48F3-B0F2-6E42C8FD9391/6506_wide_250x141_1x.jpg) Design for Collaboration with Messages ](https://developer.apple.com/videos/play/wwdc2022/10015)
79
+