@mmerterden/multi-agent-pipeline 20.17.0 → 20.17.2

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 (83) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/docs/facts.json +6 -6
  3. package/docs/features.md +1 -1
  4. package/install/catalog-history.json +1 -1
  5. package/manifest.json +85 -47
  6. package/package.json +1 -1
  7. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  8. package/pipeline/commands/multi-agent/update/SKILL.md +2 -2
  9. package/pipeline/multi-agent-refs/features/usage-reporting.md +106 -67
  10. package/pipeline/schemas/prefs.schema.json +23 -2
  11. package/pipeline/scripts/usage-identity.mjs +312 -53
  12. package/pipeline/scripts/usage-register.mjs +204 -85
  13. package/pipeline/scripts/usage-report.mjs +7 -5
  14. package/pipeline/skills/.skill-manifest.json +35 -15
  15. package/pipeline/skills/.skills-index.json +66 -11
  16. package/pipeline/skills/shared/README.md +18 -13
  17. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +2 -2
  18. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -2
  19. package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +3 -1
  20. package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +2 -1
  21. package/pipeline/skills/shared/external/hig-app-icons/SKILL.md +159 -0
  22. package/pipeline/skills/shared/external/hig-app-icons/evals/evals.json +48 -0
  23. package/pipeline/skills/shared/external/hig-app-icons/evals/trigger-eval.json +22 -0
  24. package/pipeline/skills/shared/external/hig-app-icons/references/icon-workflow.md +115 -0
  25. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +32 -4
  26. package/pipeline/skills/shared/external/hig-components-layout/evals/evals.json +47 -0
  27. package/pipeline/skills/shared/external/hig-components-layout/evals/trigger-eval.json +22 -0
  28. package/pipeline/skills/shared/external/hig-components-layout/references/bars-and-tabs.md +231 -0
  29. package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +5 -30
  30. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
  31. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +23 -4
  32. package/pipeline/skills/shared/external/hig-foundations/evals/evals.json +47 -0
  33. package/pipeline/skills/shared/external/hig-foundations/evals/trigger-eval.json +21 -0
  34. package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +34 -26
  35. package/pipeline/skills/shared/external/hig-foundations/references/type-color-spacing.md +219 -0
  36. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +5 -4
  37. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +19 -3
  38. package/pipeline/skills/shared/external/hig-patterns/references/onboarding-and-states.md +188 -0
  39. package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +5 -11
  40. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +17 -5
  41. package/pipeline/skills/shared/external/hig-platforms/references/ipad-layout.md +218 -0
  42. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +4 -1
  43. package/pipeline/skills/shared/external/ios-accessibility/references/large-content-and-appearance.md +135 -0
  44. package/pipeline/skills/shared/external/ios-design-review/SKILL.md +146 -0
  45. package/pipeline/skills/shared/external/ios-design-review/evals/evals.json +48 -0
  46. package/pipeline/skills/shared/external/ios-design-review/evals/trigger-eval.json +22 -0
  47. package/pipeline/skills/shared/external/ios-design-review/references/appearance-matrix.md +135 -0
  48. package/pipeline/skills/shared/external/ios-design-review/references/checklist.md +193 -0
  49. package/pipeline/skills/shared/external/ios-haptics/SKILL.md +191 -0
  50. package/pipeline/skills/shared/external/ios-haptics/evals/evals.json +49 -0
  51. package/pipeline/skills/shared/external/ios-haptics/evals/trigger-eval.json +22 -0
  52. package/pipeline/skills/shared/external/ios-haptics/references/core-haptics.md +215 -0
  53. package/pipeline/skills/shared/external/ios-iphone-duo/NOTICE.md +53 -0
  54. package/pipeline/skills/shared/external/ios-iphone-duo/SKILL.md +170 -0
  55. package/pipeline/skills/shared/external/ios-iphone-duo/evals/evals.json +50 -0
  56. package/pipeline/skills/shared/external/ios-iphone-duo/evals/trigger-eval.json +22 -0
  57. package/pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md +212 -0
  58. package/pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md +145 -0
  59. package/pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md +122 -0
  60. package/pipeline/skills/shared/external/ios-sf-symbols/SKILL.md +177 -0
  61. package/pipeline/skills/shared/external/ios-sf-symbols/evals/evals.json +49 -0
  62. package/pipeline/skills/shared/external/ios-sf-symbols/evals/trigger-eval.json +22 -0
  63. package/pipeline/skills/shared/external/ios-sf-symbols/references/effects-and-custom-symbols.md +135 -0
  64. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +38 -50
  65. package/pipeline/skills/shared/external/swiftui-animation/evals/evals.json +47 -0
  66. package/pipeline/skills/shared/external/swiftui-animation/evals/trigger-eval.json +22 -0
  67. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +7 -73
  68. package/pipeline/skills/shared/external/swiftui-animation/references/scroll-effects.md +185 -0
  69. package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +6 -6
  70. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +3 -253
  71. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +4 -47
  72. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +3 -111
  73. package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +11 -381
  74. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +184 -224
  75. package/pipeline/skills/shared/external/swiftui-liquid-glass/evals/evals.json +47 -0
  76. package/pipeline/skills/shared/external/swiftui-liquid-glass/evals/trigger-eval.json +22 -0
  77. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +246 -33
  78. package/pipeline/skills/shared/external/swiftui-liquid-glass/references/uikit-glass.md +227 -0
  79. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +15 -18
  80. package/pipeline/skills/shared/external/swiftui-ui-patterns/references/components-index.md +1 -1
  81. package/pipeline/skills/shared/external/swiftui-ui-patterns/references/haptics.md +6 -68
  82. package/pipeline/skills/skills-index.md +16 -11
  83. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +0 -786
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "skillCount": 223,
3
+ "skillCount": 228,
4
4
  "entries": [
5
5
  {
6
6
  "name": "accessibility-compliance-accessibility-audit",
@@ -640,6 +640,17 @@
640
640
  "triggerPaths": [],
641
641
  "relativePath": "shared/external/healthkit/SKILL.md"
642
642
  },
643
+ {
644
+ "name": "hig-app-icons",
645
+ "description": "iOS app icons: Icon Composer layered icons, default, dark, clear and tinted appearances, asset catalogs, alternate icons and the archive checks icons fail. Use when designing, exporting, wiring up or reviewing an app icon, or diagnosing an icon upload error or rejection.",
646
+ "platform": null,
647
+ "group": "external",
648
+ "plugin": "ai-ios-toolkit",
649
+ "invokeAs": "ai-ios-toolkit:hig-app-icons",
650
+ "triggerKeywords": [],
651
+ "triggerPaths": [],
652
+ "relativePath": "shared/external/hig-app-icons/SKILL.md"
653
+ },
643
654
  {
644
655
  "name": "hig-components-content",
645
656
  "description": "Apple HIG for content views mapped to SwiftUI: lists, tables, grids, charts, images, text, web views, empty states. Use when choosing or reviewing how an Apple-platform app presents content.",
@@ -653,7 +664,7 @@
653
664
  },
654
665
  {
655
666
  "name": "hig-components-layout",
656
- "description": "Apple HIG for app structure mapped to SwiftUI: tab bars, split views, navigation stacks, toolbars, sheets, popovers, alerts, windows, iOS 26 Liquid Glass bars. Use when designing layout and navigation on an Apple platform.",
667
+ "description": "Apple HIG app structure mapped to SwiftUI: tab bars, sidebars, split views, toolbars, sheets and popovers, including the iOS 26 and 27 tab and toolbar APIs. Use when choosing navigation structure or laying out tab bars and toolbars.",
657
668
  "platform": null,
658
669
  "group": "external",
659
670
  "plugin": "ai-ios-toolkit",
@@ -686,7 +697,7 @@
686
697
  },
687
698
  {
688
699
  "name": "hig-foundations",
689
- "description": "Apple HIG foundations mapped to SwiftUI: Dynamic Type, semantic color, contrast, safe areas, SF Symbols, materials and Liquid Glass, motion, icons, writing. Use when a design decision turns on Apple's foundations.",
700
+ "description": "Apple HIG foundations mapped to SwiftUI: typography and Dynamic Type, semantic color, contrast, spacing, safe areas, touch targets, motion and UX writing. Use when a design decision turns on type, color, contrast or spacing.",
690
701
  "platform": null,
691
702
  "group": "external",
692
703
  "plugin": "ai-ios-toolkit",
@@ -697,7 +708,7 @@
697
708
  },
698
709
  {
699
710
  "name": "hig-inputs",
700
- "description": "Apple HIG for input mapped to SwiftUI: touch gestures, keyboards, pointer, Apple Pencil, focus and game controllers, Digital Crown, eyes and hands, haptics. Use when designing or reviewing input on an Apple platform.",
711
+ "description": "Apple HIG for input mapped to SwiftUI: gestures, keyboards, pointer, Apple Pencil, focus, game controllers and Digital Crown. Use when designing or reviewing input on an Apple platform.",
701
712
  "platform": null,
702
713
  "group": "external",
703
714
  "plugin": "ai-ios-toolkit",
@@ -708,7 +719,7 @@
708
719
  },
709
720
  {
710
721
  "name": "hig-patterns",
711
- "description": "Apple HIG interaction patterns mapped to SwiftUI: modality, loading, empty and error states, feedback, undo, search, data entry, settings, sharing, accounts. Use when designing a UX flow on an Apple platform.",
722
+ "description": "Apple HIG interaction patterns mapped to SwiftUI: onboarding, permission requests, loading, empty and error states, modality, search, settings. Use when designing a UX flow on an Apple platform.",
712
723
  "platform": null,
713
724
  "group": "external",
714
725
  "plugin": "ai-ios-toolkit",
@@ -719,7 +730,7 @@
719
730
  },
720
731
  {
721
732
  "name": "hig-platforms",
722
- "description": "Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro conventions, and adapting one SwiftUI codebase across them. Use when a design has to fit a specific Apple platform.",
733
+ "description": "Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro, iPad size classes and windowing. Use when a design has to fit a specific Apple platform or adapt across them.",
723
734
  "platform": null,
724
735
  "group": "external",
725
736
  "plugin": "ai-ios-toolkit",
@@ -774,7 +785,7 @@
774
785
  },
775
786
  {
776
787
  "name": "ios-accessibility",
777
- "description": "VoiceOver, Voice Control, Switch Control and Full Keyboard Access in SwiftUI, UIKit and AppKit on iOS, iPadOS and macOS: labels, hints, values, traits, accessibilityInputLabels, NSAccessibility, grouping and reading order, @AccessibilityFocusState focus restore, Dynamic Type and @ScaledMetric, rotor",
788
+ "description": "VoiceOver, Voice Control, Switch Control and Full Keyboard Access in SwiftUI, UIKit and AppKit: labels, traits, grouping, focus restore, Dynamic Type, Large Content Viewer, rotors, custom actions, accessibility checks and Nutrition Labels. Use when implementing, reviewing or auditing accessibility (",
778
789
  "platform": null,
779
790
  "group": "external",
780
791
  "plugin": "ai-ios-toolkit",
@@ -805,6 +816,39 @@
805
816
  "triggerPaths": [],
806
817
  "relativePath": "shared/external/ios-debugger-agent/SKILL.md"
807
818
  },
819
+ {
820
+ "name": "ios-design-review",
821
+ "description": "Design critique and screenshot-based visual QA of iOS screens against the HIG, checked across light and dark, Dynamic Type, RTL, contrast and transparency settings with simulator tools. Use when asking whether a screen looks right, wanting a design pass on screenshots or a build, or visual QA before",
822
+ "platform": null,
823
+ "group": "external",
824
+ "plugin": "ai-ios-toolkit",
825
+ "invokeAs": "ai-ios-toolkit:ios-design-review",
826
+ "triggerKeywords": [],
827
+ "triggerPaths": [],
828
+ "relativePath": "shared/external/ios-design-review/SKILL.md"
829
+ },
830
+ {
831
+ "name": "ios-haptics",
832
+ "description": "Haptic feedback on iPhone: when a haptic adds meaning, sensoryFeedback, the UIFeedbackGenerator family, Core Haptics and AHAP, settings and on-device testing. Use when adding, choosing, reviewing or debugging haptics.",
833
+ "platform": null,
834
+ "group": "external",
835
+ "plugin": "ai-ios-toolkit",
836
+ "invokeAs": "ai-ios-toolkit:ios-haptics",
837
+ "triggerKeywords": [],
838
+ "triggerPaths": [],
839
+ "relativePath": "shared/external/ios-haptics/SKILL.md"
840
+ },
841
+ {
842
+ "name": "ios-iphone-duo",
843
+ "description": "Readiness for iPhone Duo, the foldable two-display iPhone on iOS 27.1: fixed-assumption hunting, asymmetric safe areas, reserved regions, ArrangementView, hinge changes, vertical bars and dual-pane patterns. Use when preparing, auditing or designing an app for iPhone Duo, the fold or vertical toolba",
844
+ "platform": null,
845
+ "group": "external",
846
+ "plugin": "ai-ios-toolkit",
847
+ "invokeAs": "ai-ios-toolkit:ios-iphone-duo",
848
+ "triggerKeywords": [],
849
+ "triggerPaths": [],
850
+ "relativePath": "shared/external/ios-iphone-duo/SKILL.md"
851
+ },
808
852
  {
809
853
  "name": "ios-localization",
810
854
  "description": "i18n and l10n for iOS and macOS: String Catalogs (.xcstrings), generated localizable symbols with compile-time-checked keys, stable key naming, LocalizedStringKey, LocalizedStringResource, String(localized:), plurals, device variations, locale-aware FormatStyle for numbers, dates, currency and measu",
@@ -849,6 +893,17 @@
849
893
  "triggerPaths": [],
850
894
  "relativePath": "shared/external/ios-security/SKILL.md"
851
895
  },
896
+ {
897
+ "name": "ios-sf-symbols",
898
+ "description": "SF Symbols in SwiftUI and UIKit: rendering modes, variable values, symbol effects including Draw On and Off, matching weight and scale to text, custom symbols and accessibility labels. Use when picking, styling, animating or reviewing symbols, or building a custom symbol.",
899
+ "platform": null,
900
+ "group": "external",
901
+ "plugin": "ai-ios-toolkit",
902
+ "invokeAs": "ai-ios-toolkit:ios-sf-symbols",
903
+ "triggerKeywords": [],
904
+ "triggerPaths": [],
905
+ "relativePath": "shared/external/ios-sf-symbols/SKILL.md"
906
+ },
852
907
  {
853
908
  "name": "ios-simulator",
854
909
  "description": "xcrun simctl from the command line: create, boot, erase and delete devices, install and launch apps, simulated pushes without APNs, GPS locations and routes, granting or resetting privacy permissions, openurl deep links, status bar overrides, screenshots and video, os_log streaming, app containers, ",
@@ -2116,7 +2171,7 @@
2116
2171
  },
2117
2172
  {
2118
2173
  "name": "swiftui-animation",
2119
- "description": "SwiftUI motion: withAnimation, scoped implicit .animation(_:body:) and .animation(_:value:), timing curves and springs (.smooth, .snappy, .bouncy, Spring), PhaseAnimator, KeyframeAnimator, @Animatable, matchedGeometryEffect and matchedTransitionSource zoom transitions, insertion and content transiti",
2174
+ "description": "SwiftUI motion: withAnimation, springs, PhaseAnimator, KeyframeAnimator, matched geometry and zoom transitions, scrollTransition and visualEffect, custom transitions, Reduce Motion. Use when implementing, reviewing or improving SwiftUI animations, transitions or scroll-linked effects.",
2120
2175
  "platform": null,
2121
2176
  "group": "external",
2122
2177
  "plugin": "ai-ios-toolkit",
@@ -2127,7 +2182,7 @@
2127
2182
  },
2128
2183
  {
2129
2184
  "name": "swiftui-expert-skill",
2130
- "description": "Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, macOS-specific APIs, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns",
2185
+ "description": "Write, review, or improve SwiftUI code following best practices for state, view composition, performance, macOS APIs, and iOS 26+ Liquid Glass adoption. Use when building SwiftUI features, refactoring views, reviewing code, or adopting modern patterns; for a findings-only review use swiftui-pro; for",
2131
2186
  "platform": null,
2132
2187
  "group": "external",
2133
2188
  "plugin": "ai-ios-toolkit",
@@ -2160,7 +2215,7 @@
2160
2215
  },
2161
2216
  {
2162
2217
  "name": "swiftui-liquid-glass",
2163
- "description": "Liquid Glass in SwiftUI (iOS 26+): glassEffect, Glass tint/interactive variants, GlassEffectContainer, glassEffectID morphing, glassEffectUnion, GlassEffectTransition, glass and glassProminent button styles, glass toolbars and tab bars, ToolbarSpacer, scrollEdgeEffectStyle, backgroundExtensionEffect",
2218
+ "description": "Liquid Glass in SwiftUI and UIKit: navigation-layer use, regular versus clear, glassEffect, GlassEffectContainer, morphing, glass buttons, ConcentricRectangle, the compatibility opt-out and material fallbacks. Use when implementing, reviewing or adopting Liquid Glass, or choosing glass versus a mate",
2164
2219
  "platform": null,
2165
2220
  "group": "external",
2166
2221
  "plugin": "ai-ios-toolkit",
@@ -2182,7 +2237,7 @@
2182
2237
  },
2183
2238
  {
2184
2239
  "name": "swiftui-patterns",
2185
- "description": "SwiftUI Model-View structure: @Observable ownership, @State, @Bindable, @Environment, view decomposition, custom ViewModifiers, .task loading, iOS 26 APIs, Writing Tools. Use when structuring a SwiftUI app, managing state, composing or splitting views, or adopting iOS 26 APIs. Not for file-by-file r",
2240
+ "description": "SwiftUI architecture, state: @Observable, @State, @Bindable, @Environment, view splitting, ViewModifiers, .task, API migration, Writing Tools, Transferable, sharing. Use when structuring an app or owning state. Not for review (swiftui-pro) or visual design (hig-foundations).",
2186
2241
  "platform": null,
2187
2242
  "group": "external",
2188
2243
  "plugin": "ai-ios-toolkit",
@@ -2,12 +2,12 @@
2
2
 
3
3
  Single source of truth for skills delivered to both Claude Code (`~/.claude/skills/`) and Copilot CLI (`~/.copilot/skills/`) by the installer.
4
4
 
5
- **Total:** 223 skills (67 core + 156 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
5
+ **Total:** 228 skills (67 core + 161 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
6
6
 
7
7
  ## Directory layout
8
8
 
9
9
  - **`core/`** - 67 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
10
- - **`external/`** - 156 iOS / Android / generic skills that ship into the stack plugins. Each names its origin in `metadata.source`: `multi-agent-pipeline` when written here, or the upstream and license a `NOTICE-*.md` in this directory covers.
10
+ - **`external/`** - 161 iOS / Android / generic skills that ship into the stack plugins. Each names its origin in `metadata.source`: `multi-agent-pipeline` when written here, or the upstream and license a `NOTICE-*.md` in this directory covers.
11
11
  - Install destinations (ADR-0009): Claude Code gets NO local copy of `external/` - it loads those skills from the `multi-agent-plugins` marketplace, namespaced (`ai-<stack>-toolkit:<name>`); only the two compliance catalogs from `core/` land in `~/.claude/skills/`. Copilot CLI and Codex CLI receive a flat copy filtered to the enabled stacks. `external/` remains the single authoring source that `build-stack-plugins.mjs` publishes from.
12
12
 
13
13
  Source layout is logical grouping only - skill discovery at runtime is unchanged.
@@ -15,7 +15,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
15
15
  ## Categories
16
16
 
17
17
  - [Pipeline Orchestration](#pipeline-orchestration) - 67
18
- - [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 89
18
+ - [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 94
19
19
  - [Android / Kotlin](#android-kotlin) - 16
20
20
  - [Web](#web) - 10
21
21
  - [Backend / API](#backend-api) - 11
@@ -119,23 +119,28 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
119
119
  | [`eventkit-calendar`](./external/eventkit-calendar/) | `external` | EventKit and EventKitUI: adding events to the user's calendar, creating reminders, recurrence rules, calendar or reminders access, event edi |
120
120
  | [`firebase`](./external/firebase/) | `external` | You're a developer who has shipped dozens of Firebase projects. You've seen the easy path lead to security breaches, runaway costs, and impo |
121
121
  | [`healthkit`](./external/healthkit/) | `external` | HealthKit on iOS, iPadOS, watchOS and visionOS: HKHealthStore authorization, sample, statistics and chart-ready collection queries, saving H |
122
+ | [`hig-app-icons`](./external/hig-app-icons/) | `external` | iOS app icons: Icon Composer layered icons, default, dark, clear and tinted appearances, asset catalogs, alternate icons and the archive che |
122
123
  | [`hig-components-content`](./external/hig-components-content/) | `external` | Apple HIG for content views mapped to SwiftUI: lists, tables, grids, charts, images, text, web views, empty states. Use when choosing or rev |
123
- | [`hig-components-layout`](./external/hig-components-layout/) | `external` | Apple HIG for app structure mapped to SwiftUI: tab bars, split views, navigation stacks, toolbars, sheets, popovers, alerts, windows, iOS 26 |
124
+ | [`hig-components-layout`](./external/hig-components-layout/) | `external` | Apple HIG app structure mapped to SwiftUI: tab bars, sidebars, split views, toolbars, sheets and popovers, including the iOS 26 and 27 tab a |
124
125
  | [`hig-components-status`](./external/hig-components-status/) | `external` | Apple HIG for status UI mapped to SwiftUI: progress views, gauges, placeholders, status bar, activity rings, success and failure feedback. U |
125
126
  | [`hig-components-system`](./external/hig-components-system/) | `external` | Apple HIG for system surfaces: widgets, controls, Live Activities, Dynamic Island, notifications, complications, quick actions, App Shortcut |
126
- | [`hig-foundations`](./external/hig-foundations/) | `external` | Apple HIG foundations mapped to SwiftUI: Dynamic Type, semantic color, contrast, safe areas, SF Symbols, materials and Liquid Glass, motion, |
127
- | [`hig-inputs`](./external/hig-inputs/) | `external` | Apple HIG for input mapped to SwiftUI: touch gestures, keyboards, pointer, Apple Pencil, focus and game controllers, Digital Crown, eyes and |
128
- | [`hig-patterns`](./external/hig-patterns/) | `external` | Apple HIG interaction patterns mapped to SwiftUI: modality, loading, empty and error states, feedback, undo, search, data entry, settings, s |
129
- | [`hig-platforms`](./external/hig-platforms/) | `external` | Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro conventions, and adapting one SwiftUI codebase across them. Use when a d |
127
+ | [`hig-foundations`](./external/hig-foundations/) | `external` | Apple HIG foundations mapped to SwiftUI: typography and Dynamic Type, semantic color, contrast, spacing, safe areas, touch targets, motion a |
128
+ | [`hig-inputs`](./external/hig-inputs/) | `external` | Apple HIG for input mapped to SwiftUI: gestures, keyboards, pointer, Apple Pencil, focus, game controllers and Digital Crown. Use when desig |
129
+ | [`hig-patterns`](./external/hig-patterns/) | `external` | Apple HIG interaction patterns mapped to SwiftUI: onboarding, permission requests, loading, empty and error states, modality, search, settin |
130
+ | [`hig-platforms`](./external/hig-platforms/) | `external` | Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro, iPad size classes and windowing. Use when a design has to fit a specifi |
130
131
  | [`hig-technologies`](./external/hig-technologies/) | `external` | Apple HIG for system technologies: Sign in with Apple, passkeys, Apple Pay, Wallet, Siri and App Intents, HealthKit, HomeKit, iCloud, Maps, |
131
132
  | [`homekit-matter`](./external/homekit-matter/) | `external` | HomeKit and MatterSupport: managing homes, rooms, zones and accessories, reading characteristics, action sets and triggers, Matter commissio |
132
- | [`ios-accessibility`](./external/ios-accessibility/) | `external` | VoiceOver, Voice Control, Switch Control and Full Keyboard Access in SwiftUI, UIKit and AppKit on iOS, iPadOS and macOS: labels, hints, valu |
133
+ | [`ios-accessibility`](./external/ios-accessibility/) | `external` | VoiceOver, Voice Control, Switch Control and Full Keyboard Access in SwiftUI, UIKit and AppKit: labels, traits, grouping, focus restore, Dyn |
133
134
  | [`ios-coding-standard`](./external/ios-coding-standard/) | `external` | The iOS coding-standard rule registry: 99 stable-ID rules across readability, security, service layer, business rules, concurrency, testing, |
134
135
  | [`ios-debugger-agent`](./external/ios-debugger-agent/) | `external` | Debug the current iOS project on a booted simulator with XcodeBuildMCP. Use when an iOS bug has to be reproduced and diagnosed on a booted s |
136
+ | [`ios-design-review`](./external/ios-design-review/) | `external` | Design critique and screenshot-based visual QA of iOS screens against the HIG, checked across light and dark, Dynamic Type, RTL, contrast an |
137
+ | [`ios-haptics`](./external/ios-haptics/) | `external` | Haptic feedback on iPhone: when a haptic adds meaning, sensoryFeedback, the UIFeedbackGenerator family, Core Haptics and AHAP, settings and |
138
+ | [`ios-iphone-duo`](./external/ios-iphone-duo/) | `external` | Readiness for iPhone Duo, the foldable two-display iPhone on iOS 27.1: fixed-assumption hunting, asymmetric safe areas, reserved regions, Ar |
135
139
  | [`ios-localization`](./external/ios-localization/) | `external` | i18n and l10n for iOS and macOS: String Catalogs (.xcstrings), generated localizable symbols with compile-time-checked keys, stable key nami |
136
140
  | [`ios-module-structure`](./external/ios-module-structure/) | `external` | The ios-module-structure rule registry: stable-ID rules over where a declaration lives, what its file is called and what its folder must con |
137
141
  | [`ios-networking`](./external/ios-networking/) | `external` | URLSession with async/await and structured concurrency on iOS and macOS: HTTP requests, REST API clients, response validation, error handlin |
138
142
  | [`ios-security`](./external/ios-security/) | `external` | Secure iOS apps with Keychain Services, CryptoKit encryption, biometric authentication (Face ID, Touch ID), Secure Enclave key storage, LACo |
143
+ | [`ios-sf-symbols`](./external/ios-sf-symbols/) | `external` | SF Symbols in SwiftUI and UIKit: rendering modes, variable values, symbol effects including Draw On and Off, matching weight and scale to te |
139
144
  | [`ios-simulator`](./external/ios-simulator/) | `external` | xcrun simctl from the command line: create, boot, erase and delete devices, install and launch apps, simulated pushes without APNs, GPS loca |
140
145
  | [`live-activities`](./external/live-activities/) | `external` | ActivityKit Live Activities on the Lock Screen and Dynamic Island: ActivityAttributes and ContentState, request/update/end lifecycle, compac |
141
146
  | [`macos-menubar-tuist-app`](./external/macos-menubar-tuist-app/) | `external` | Build, refactor, or review SwiftUI macOS menubar apps that use Tuist. Use when building, refactoring or reviewing a SwiftUI macOS menubar ap |
@@ -168,13 +173,13 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
168
173
  | [`swiftdata`](./external/swiftdata/) | `external` | SwiftData persistence for Apple apps: @Model classes with @Attribute, @Relationship, @Transient, #Unique and #Index; @Query, #Predicate, Fet |
169
174
  | [`swiftdata-pro`](./external/swiftdata-pro/) | `external` | Writes, reviews, and improves SwiftData code using modern APIs and best practices. Use when reading, writing, or reviewing projects that use |
170
175
  | [`swiftlint`](./external/swiftlint/) | `external` | SwiftLint setup and enforcement: build tool and command plugins, Xcode run scripts, CI, .swiftlint.yml rule sets (default, opt-in, analyzer) |
171
- | [`swiftui-animation`](./external/swiftui-animation/) | `external` | SwiftUI motion: withAnimation, scoped implicit .animation(_:body:) and .animation(_:value:), timing curves and springs (.smooth, .snappy, .b |
172
- | [`swiftui-expert-skill`](./external/swiftui-expert-skill/) | `external` | Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, macOS-specific APIs, an |
176
+ | [`swiftui-animation`](./external/swiftui-animation/) | `external` | SwiftUI motion: withAnimation, springs, PhaseAnimator, KeyframeAnimator, matched geometry and zoom transitions, scrollTransition and visualE |
177
+ | [`swiftui-expert-skill`](./external/swiftui-expert-skill/) | `external` | Write, review, or improve SwiftUI code following best practices for state, view composition, performance, macOS APIs, and iOS 26+ Liquid Gla |
173
178
  | [`swiftui-gestures`](./external/swiftui-gestures/) | `external` | SwiftUI gestures: tap, spatial tap, long press, drag, magnify, rotate, composition (simultaneously, sequenced, exclusively), @GestureState, |
174
179
  | [`swiftui-layout-components`](./external/swiftui-layout-components/) | `external` | SwiftUI layouts: stacks, lazy stacks, LazyVGrid/LazyHGrid, List sections, swipe actions, ScrollView with ScrollPosition, validated Form, Tog |
175
- | [`swiftui-liquid-glass`](./external/swiftui-liquid-glass/) | `external` | Liquid Glass in SwiftUI (iOS 26+): glassEffect, Glass tint/interactive variants, GlassEffectContainer, glassEffectID morphing, glassEffectUn |
180
+ | [`swiftui-liquid-glass`](./external/swiftui-liquid-glass/) | `external` | Liquid Glass in SwiftUI and UIKit: navigation-layer use, regular versus clear, glassEffect, GlassEffectContainer, morphing, glass buttons, C |
176
181
  | [`swiftui-navigation`](./external/swiftui-navigation/) | `external` | SwiftUI navigation: NavigationStack typed paths, routers, NavigationSplitView, sheets, TabView and Tab API, universal links, URL schemes, Ha |
177
- | [`swiftui-patterns`](./external/swiftui-patterns/) | `external` | SwiftUI Model-View structure: @Observable ownership, @State, @Bindable, @Environment, view decomposition, custom ViewModifiers, .task loadin |
182
+ | [`swiftui-patterns`](./external/swiftui-patterns/) | `external` | SwiftUI architecture, state: @Observable, @State, @Bindable, @Environment, view splitting, ViewModifiers, .task, API migration, Writing Tool |
178
183
  | [`swiftui-performance`](./external/swiftui-performance/) | `external` | SwiftUI performance: slow rendering, janky scrolling, high CPU/memory, excess updates, layout thrash, costly body, identity churn, lazy load |
179
184
  | [`swiftui-performance-audit`](./external/swiftui-performance-audit/) | `external` | Audit SwiftUI performance issues from code review and profiling evidence. Use when a SwiftUI view is slow and the cause has to be found from |
180
185
  | [`swiftui-pro`](./external/swiftui-pro/) | `external` | Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or revi |
@@ -136,8 +136,8 @@ Then, **whether they pasted or skipped**, run:
136
136
  node "$HOME/.copilot/scripts/usage-register.mjs" --json
137
137
  ```
138
138
 
139
- If its JSON line says `"needsPersonalAccount":true`, offer to tie this machine to
140
- the person's own GitHub account once (the "Personal account" step in
139
+ If its JSON line says `"needsPersonalAccount":true`, offer once: `gh auth login`,
140
+ or an SSH key on the personal account (the "Personal account" step in
141
141
  `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`).
142
142
 
143
143
  It maps whatever token exists and switches reporting on, and requests a
@@ -44,8 +44,8 @@ Update the pipeline with a single command. Preferences are preserved; only skill
44
44
  already onboarded, and permanently blocked by `usageLog.optOut: true`. Offline
45
45
  or endpoint down leaves reporting off with one line, never an error. Contract:
46
46
  `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`.
47
- If its JSON line says `"needsPersonalAccount":true`, offer to tie this machine to
48
- the person's own GitHub account once (the "Personal account" step in
47
+ If its JSON line says `"needsPersonalAccount":true`, offer once: `gh auth login`,
48
+ or an SSH key on the personal account (the "Personal account" step in
49
49
  `$HOME/.claude/multi-agent-refs/features/usage-reporting.md`).
50
50
  6. Show the new version + changelog
51
51
  7. Smoke test (schema + cross-cli)
@@ -17,7 +17,9 @@
17
17
 
18
18
  - Punctuation normalized to ASCII per pipeline humanizer policy (em-dash, en-dash, ellipsis, curly quotes).
19
19
  - Frontmatter `metadata.source` is added.
20
- - Frontmatter `description`: the upstream text is kept and a boundary clause is appended naming the skill to use for a findings-only review (swiftui-pro). The body is unchanged.
20
+ - Frontmatter `description`: the upstream text is condensed and a boundary clause is appended naming the skills to use for a findings-only review (swiftui-pro) and for Liquid Glass APIs (swiftui-liquid-glass).
21
+ - `references/liquid-glass.md` and the animation references are trimmed to the parts the pipeline's own `swiftui-liquid-glass` and `swiftui-animation` skills do not cover, each with a pointer to that skill and a "Local trim" note at the top.
22
+ - `SKILL.md`: the Liquid Glass rule, the topic-table row and the reference-list entries for the trimmed files name `swiftui-liquid-glass` / `swiftui-animation`.
21
23
 
22
24
  ## License (MIT, redistributed)
23
25
 
@@ -30,9 +30,10 @@ Upstream `agents/` directories (Claude Code subagent definitions) are not vendor
30
30
 
31
31
  - Punctuation normalized to ASCII per pipeline humanizer policy (em-dash, en-dash, ellipsis, curly quotes).
32
32
  - Each SKILL.md carries a locally added `## When to Use` section and pipeline frontmatter under `metadata:` (`risk`, `source`, `date_added`).
33
- - `swiftui-ui-patterns/references/components-index.md`: four upstream lines pointing at files that do not exist upstream either (`webview.md`, `composer.md`, `text-input.md`, `design-system.md`) were removed.
33
+ - `swiftui-ui-patterns/references/components-index.md`: four upstream lines pointing at files that do not exist upstream either (`webview.md`, `composer.md`, `text-input.md`, `design-system.md`) were removed, and the haptics line points to the pipeline's `ios-haptics` skill.
34
34
  - `macos-spm-app-packaging/SKILL.md`: a trailing fetch transcript that is not part of the upstream file is removed.
35
35
  - `swift-concurrency-expert`, `swiftui-performance-audit`, `swiftui-ui-patterns`: the frontmatter `description` keeps the upstream text and appends a boundary clause naming the neighbouring skill to use instead, so a host choosing among overlapping skills can tell them apart. Bodies are unchanged by this.
36
+ - `swiftui-ui-patterns/references/haptics.md` is reduced to a pointer to the pipeline's `ios-haptics` skill, which owns haptics guidance; the file is kept so existing links resolve.
36
37
  - `macos-spm-app-packaging/SKILL.md`: one line added that says when to read `references/scaffold.md`, which the upstream SKILL.md does not link.
37
38
 
38
39
  ## License (MIT, redistributed)
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: hig-app-icons
3
+ description: "iOS app icons: Icon Composer layered icons, default, dark, clear and tinted appearances, asset catalogs, alternate icons and the archive checks icons fail. Use when designing, exporting, wiring up or reviewing an app icon, or diagnosing an icon upload error or rejection."
4
+ metadata:
5
+ source: multi-agent-pipeline
6
+ date_added: "2026-10-08"
7
+ ---
8
+
9
+ # App icons
10
+
11
+ An iOS icon is no longer a stack of PNGs at a dozen sizes. It is a layered
12
+ design that the system renders: it adds the rounded mask, the Liquid Glass
13
+ highlights and refraction, the dark, clear and tinted looks, and every size the
14
+ system needs. The designer's job moves from exporting sizes to giving the
15
+ system good layers.
16
+
17
+ ## What the system expects
18
+
19
+ | | iOS, iPadOS |
20
+ |---|---|
21
+ | Canvas | 1024x1024 px, square, unmasked (Apple Watch: 1088x1088 px) |
22
+ | Style | Layered: a background plus foreground layers |
23
+ | Appearances | Default, dark, clear light, clear dark, tinted light, tinted dark |
24
+ | Sizes | Generated by the system from the one design |
25
+ | Colour spaces | sRGB, Gray Gamma 2.2, Display P3 |
26
+
27
+ People choose the Home Screen look (default, dark, clear or tinted). Variants
28
+ you do not design are generated automatically. Provide your own when the
29
+ automatic result loses the idea of the icon, for example when a brand colour
30
+ carries the meaning.
31
+
32
+ ## Icon Composer is the default path
33
+
34
+ Icon Composer ships with Xcode (Xcode > Open Developer Tool > Icon Composer)
35
+ and as a download from developer.apple.com/icon-composer. One Icon Composer
36
+ file describes the icon for iPhone, iPad, Mac and Apple Watch, in every
37
+ appearance.
38
+
39
+ 1. Draw the layers in any vector tool on the Apple template from Apple Design
40
+ Resources. Separate anything you may want to restyle per appearance.
41
+ Convert text to outlines. Leave out blurs, shadows, highlights, background
42
+ fills and the corner mask; Icon Composer and the system add those.
43
+ 2. Export layers as SVG; use PNG only for art SVG cannot express (mesh
44
+ gradients, raster artwork).
45
+ 3. In Icon Composer, import the layers, organise them into at most four
46
+ groups (the groups become the depth layers), set the background as a solid
47
+ colour or gradient, and tune Liquid Glass per group: specular, blur,
48
+ translucency, shadow, refraction.
49
+ 4. Preview default, dark and mono (mono covers clear and tinted, light and
50
+ dark), on each platform, over real wallpapers. Fix variants under Color in
51
+ the Style inspector.
52
+ 5. Add the file to the Xcode project. The App Icon field in the target's
53
+ General tab must match the file name without extension. This file replaces
54
+ any `AppIcon` asset catalog for the build.
55
+
56
+ For deployment targets older than the Liquid Glass releases, Xcode generates
57
+ flat images from the Icon Composer file at build time. If the existing icon
58
+ must keep appearing unchanged on those older releases, keep the asset catalog
59
+ instead. Step-by-step detail and the asset catalog route are in
60
+ `references/icon-workflow.md`.
61
+
62
+ ## Design rules worth enforcing
63
+
64
+ Each of these comes from the HIG app icon page; the reason is given so a
65
+ review can argue the point instead of citing a rule.
66
+
67
+ - **Square, unmasked layers.** The system masks the corners; a pre-masked layer
68
+ breaks the specular edge and leaves jagged corners.
69
+ - **Primary content centred.** Masks and corner adjustments crop the edges.
70
+ - **Clean, hard edges on foreground shapes.** System highlights and shadows
71
+ read soft edges as mistakes.
72
+ - **No baked effects.** Your shadows and glows are static; the system's react
73
+ to light and motion, and the two fight.
74
+ - **Simple concept, few shapes.** Detail disappears at small sizes and under
75
+ glass.
76
+ - **Text only when it is essential.** It cannot be localized or read by
77
+ VoiceOver and is usually too small.
78
+ - **Same features in every appearance.** Swapping elements per look makes the
79
+ app hard to find when people change their Home Screen style.
80
+ - **No Apple hardware, no SF Symbols.** Apple product replicas are not allowed
81
+ in icons, and the SF Symbols terms prohibit symbols (or look-alikes) in app
82
+ icons and logos. See `ios-sf-symbols`.
83
+ - **No photos or UI screenshots.** They do not survive layering, small sizes
84
+ or the dark and tinted looks.
85
+
86
+ ## Alternate icons
87
+
88
+ People can pick another icon from inside the app (a team colour, a seasonal
89
+ look). Each alternate is its own Icon Composer file with its own dark, clear
90
+ and tinted variants, and each goes through App Review.
91
+
92
+ - List them in the **Alternate App Icon Sets** build setting
93
+ (`ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES`); the primary is the
94
+ **Primary App Icon Set Name**. Xcode writes `CFBundleIcons`,
95
+ `CFBundlePrimaryIcon` and `CFBundleAlternateIcons` into Info.plist from
96
+ those settings, so do not edit those keys by hand.
97
+ - Switch with `UIApplication.setAlternateIconName(_:completionHandler:)`, or
98
+ its `async throws` form. Pass `nil` to return to the primary icon. Check
99
+ `supportsAlternateIcons` first and read the current one from
100
+ `alternateIconName`.
101
+ - The system shows an alert telling the person the icon changed. Trigger the
102
+ change from an explicit choice in the UI, not on launch or on a timer.
103
+
104
+ ```swift
105
+ import OSLog
106
+ import UIKit
107
+
108
+ private let logger = Logger(subsystem: "app.icons", category: "alternate")
109
+
110
+ @MainActor
111
+ func applyIcon(named name: String?) async {
112
+ let app = UIApplication.shared
113
+ guard app.supportsAlternateIcons, app.alternateIconName != name else { return }
114
+ do {
115
+ try await app.setAlternateIconName(name)
116
+ } catch {
117
+ logger.error("Icon change failed: \(error.localizedDescription)")
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## Before upload
123
+
124
+ Run the archive through `apple-archive-compliance` (the `ios_app_store_audit`
125
+ tool). Its `asset-validation` rule fails an archive with no icon configuration
126
+ or asset catalog. Upload validation (`ios_testflight_validate`) maps the icon
127
+ errors Apple returns:
128
+
129
+ | Code | Meaning | Usual fix |
130
+ |---|---|---|
131
+ | ITMS-90022 | A required iPhone icon size is missing | Use the Icon Composer file or a Single Size 1024 asset |
132
+ | ITMS-90023 | A required iPad icon size is missing | Add iPad to the Icon Composer file's platforms, or use a Single Size 1024 asset that covers iPad |
133
+ | ITMS-90717 | App Store icon has an alpha channel | Supply an opaque image where a flattened icon is used |
134
+
135
+ App Review issues that involve icons:
136
+
137
+ - **2.3.8**: icons, including alternates and in-app purchase icons, must suit
138
+ a 4+ audience even if the app is rated higher.
139
+ - **4.1**: an icon that copies or impersonates another app.
140
+ - **5.2.5**: an icon confusingly similar to an Apple product or app.
141
+
142
+ ## Reviewing an icon
143
+
144
+ On a device or in Device Hub, set the Home Screen to dark, clear and tinted
145
+ and look at the icon among system apps and widgets. Ask: is it still
146
+ recognisable in every look, is anything important near the edges, does it
147
+ look crisp at the Settings and notification sizes, and does the dark variant
148
+ keep enough contrast? Coloured backgrounds usually give dark icons the most
149
+ contrast.
150
+
151
+ ## References
152
+
153
+ - `references/icon-workflow.md`: Icon Composer steps, asset catalog route, alternate icon setup, review checklist.
154
+ - HIG app icons: https://developer.apple.com/design/human-interface-guidelines/app-icons
155
+ - Creating your app icon using Icon Composer: https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer
156
+ - Configuring your app icon using an asset catalog: https://developer.apple.com/documentation/xcode/configuring-your-app-icon
157
+ - Alternate app icons sample: https://developer.apple.com/documentation/xcode/configuring-your-app-to-use-alternate-app-icons
158
+ - setAlternateIconName: https://developer.apple.com/documentation/uikit/uiapplication/setalternateiconname(_:completionhandler:)
159
+ - Icon Composer: https://developer.apple.com/icon-composer/
@@ -0,0 +1,48 @@
1
+ {
2
+ "skill_name": "hig-app-icons",
3
+ "evals": [
4
+ {
5
+ "id": 0,
6
+ "name": "migrate-legacy-icon-set",
7
+ "prompt": "Our app still ships an AppIcon asset catalog with 18 hand-exported PNG sizes and a separate dark PNG. Design wants the new Liquid Glass look. What exactly do we hand over from the design tool, what happens in Icon Composer, and how do we wire it into Xcode without breaking users on older iOS?",
8
+ "expected_output": "Explains that iOS now uses one layered 1024x1024 design that the system renders at every size and appearance. Design exports square, unmasked layers as SVG (PNG only where needed) with text outlined and no baked blurs, shadows, highlights, background fills or mask. Icon Composer: import, organise into at most four groups, set background, tune Liquid Glass, preview default, dark and mono (clear and tinted). Xcode: add the file and make the App Icon field match its name; it replaces the asset catalog, and Xcode generates flat images for older deployment targets, or keep the asset catalog if the old icon must stay unchanged on older releases.",
9
+ "files": [],
10
+ "expectations": [
11
+ "States sizes are generated from one 1024x1024 design rather than hand-exported",
12
+ "Asks for unmasked square layers exported as SVG without baked effects",
13
+ "Mentions grouping into at most four groups in Icon Composer",
14
+ "Covers default, dark, clear and tinted appearances",
15
+ "Says the App Icon name in the target must match the Icon Composer file",
16
+ "Explains older-release behaviour (generated images, or keeping the asset catalog)"
17
+ ]
18
+ },
19
+ {
20
+ "id": 1,
21
+ "name": "alternate-icons-setup",
22
+ "prompt": "Product wants users to pick between three team-colour icons from our settings screen. How do we set that up in Xcode and Swift, and will App Review care?",
23
+ "expected_output": "One Icon Composer file per alternate, each with its own dark, clear and tinted variants. Lists them in the Alternate App Icon Sets build setting (ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES) and leaves CFBundleIcons keys to Xcode. Calls setAlternateIconName from the person's choice after checking supportsAlternateIcons, passes nil for the primary, reads alternateIconName, handles the error, and notes the system alert. Notes each alternate goes through App Review, must suit 4+ (2.3.8) and must not resemble another app or Apple product.",
24
+ "files": [],
25
+ "expectations": [
26
+ "Uses one Icon Composer file per alternate with its own appearance variants",
27
+ "Names the Alternate App Icon Sets setting or ASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES",
28
+ "Warns against editing CFBundleIcons by hand",
29
+ "Uses setAlternateIconName with supportsAlternateIcons and nil for the primary",
30
+ "Mentions that alternate icons are reviewed by App Review"
31
+ ]
32
+ },
33
+ {
34
+ "id": 2,
35
+ "name": "upload-error-and-design-critique",
36
+ "prompt": "Upload failed with ITMS-90717 on our App Store icon, and while we are at it, the designer put a gear SF Symbol and the word 'Pro' on the icon with a drop shadow. What is wrong?",
37
+ "expected_output": "Explains ITMS-90717 as an alpha channel in the App Store icon and that a flattened icon must be opaque, and suggests running the archive through apple-archive-compliance or ios_app_store_audit and validation. Critiques the design: SF Symbols terms prohibit symbols in app icons, text should be avoided unless essential, and baked shadows conflict with system effects.",
38
+ "files": [],
39
+ "expectations": [
40
+ "Identifies ITMS-90717 as an alpha channel problem",
41
+ "Points to apple-archive-compliance or ios_app_store_audit for archive checks",
42
+ "Says SF Symbols may not be used in app icons",
43
+ "Advises against nonessential text in the icon",
44
+ "Says to remove the baked drop shadow and let the system apply effects"
45
+ ]
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,22 @@
1
+ [
2
+ { "query": "How do I make our app icon with Icon Composer for iOS 26?", "should_trigger": true },
3
+ { "query": "Do I still need to export all the app icon sizes by hand?", "should_trigger": true },
4
+ { "query": "Add dark and tinted variants to our app icon", "should_trigger": true },
5
+ { "query": "Let users choose an alternate app icon from settings", "should_trigger": true },
6
+ { "query": "setAlternateIconName returns an error, what's wrong with our setup?", "should_trigger": true },
7
+ { "query": "App Store upload failed with ITMS-90022 missing icon size", "should_trigger": true },
8
+ { "query": "Review our new app icon design against Apple guidelines", "should_trigger": true },
9
+ { "query": "What does the clear app icon appearance look like and do we need to design it?", "should_trigger": true },
10
+ { "query": "Our icon looks jagged at the corners after the Liquid Glass update", "should_trigger": true },
11
+ { "query": "Where do I set the alternate app icon names in build settings?", "should_trigger": true },
12
+ { "query": "Which SF Symbol should I use for the settings tab?", "should_trigger": false },
13
+ { "query": "Make our toolbar buttons use Liquid Glass", "should_trigger": false },
14
+ { "query": "Generate App Store screenshots in five languages", "should_trigger": false },
15
+ { "query": "Our archive fails privacy manifest checks before submission", "should_trigger": false },
16
+ { "query": "Create a custom SF Symbol and annotate its layers", "should_trigger": false },
17
+ { "query": "Design a launch screen storyboard", "should_trigger": false },
18
+ { "query": "Improve our App Store listing keywords and subtitle", "should_trigger": false },
19
+ { "query": "Add images with dark mode variants to the asset catalog", "should_trigger": false },
20
+ { "query": "Design review of the home screen layout in dark mode", "should_trigger": false },
21
+ { "query": "Show a badge count on the app icon for unread messages", "should_trigger": false }
22
+ ]