@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.
- package/CHANGELOG.md +23 -0
- package/docs/facts.json +6 -6
- package/docs/features.md +1 -1
- package/install/catalog-history.json +1 -1
- package/manifest.json +85 -47
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/update/SKILL.md +2 -2
- package/pipeline/multi-agent-refs/features/usage-reporting.md +106 -67
- package/pipeline/schemas/prefs.schema.json +23 -2
- package/pipeline/scripts/usage-identity.mjs +312 -53
- package/pipeline/scripts/usage-register.mjs +204 -85
- package/pipeline/scripts/usage-report.mjs +7 -5
- package/pipeline/skills/.skill-manifest.json +35 -15
- package/pipeline/skills/.skills-index.json +66 -11
- package/pipeline/skills/shared/README.md +18 -13
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -2
- package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +3 -1
- package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +2 -1
- package/pipeline/skills/shared/external/hig-app-icons/SKILL.md +159 -0
- package/pipeline/skills/shared/external/hig-app-icons/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/hig-app-icons/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/hig-app-icons/references/icon-workflow.md +115 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +32 -4
- package/pipeline/skills/shared/external/hig-components-layout/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/hig-components-layout/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/hig-components-layout/references/bars-and-tabs.md +231 -0
- package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +5 -30
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +23 -4
- package/pipeline/skills/shared/external/hig-foundations/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/hig-foundations/evals/trigger-eval.json +21 -0
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +34 -26
- package/pipeline/skills/shared/external/hig-foundations/references/type-color-spacing.md +219 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +5 -4
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +19 -3
- package/pipeline/skills/shared/external/hig-patterns/references/onboarding-and-states.md +188 -0
- package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +5 -11
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +17 -5
- package/pipeline/skills/shared/external/hig-platforms/references/ipad-layout.md +218 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +4 -1
- package/pipeline/skills/shared/external/ios-accessibility/references/large-content-and-appearance.md +135 -0
- package/pipeline/skills/shared/external/ios-design-review/SKILL.md +146 -0
- package/pipeline/skills/shared/external/ios-design-review/evals/evals.json +48 -0
- package/pipeline/skills/shared/external/ios-design-review/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/ios-design-review/references/appearance-matrix.md +135 -0
- package/pipeline/skills/shared/external/ios-design-review/references/checklist.md +193 -0
- package/pipeline/skills/shared/external/ios-haptics/SKILL.md +191 -0
- package/pipeline/skills/shared/external/ios-haptics/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-haptics/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/ios-haptics/references/core-haptics.md +215 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/NOTICE.md +53 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/SKILL.md +170 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/evals/evals.json +50 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md +212 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md +145 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md +122 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/SKILL.md +177 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/evals/evals.json +49 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/references/effects-and-custom-symbols.md +135 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +38 -50
- package/pipeline/skills/shared/external/swiftui-animation/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftui-animation/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +7 -73
- package/pipeline/skills/shared/external/swiftui-animation/references/scroll-effects.md +185 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +6 -6
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +3 -253
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +4 -47
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +3 -111
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +11 -381
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +184 -224
- package/pipeline/skills/shared/external/swiftui-liquid-glass/evals/evals.json +47 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/evals/trigger-eval.json +22 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +246 -33
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/uikit-glass.md +227 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +15 -18
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/components-index.md +1 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/haptics.md +6 -68
- package/pipeline/skills/skills-index.md +16 -11
- 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":
|
|
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
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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:**
|
|
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/`** -
|
|
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) -
|
|
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
|
|
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,
|
|
127
|
-
| [`hig-inputs`](./external/hig-inputs/) | `external` | Apple HIG for input mapped to SwiftUI:
|
|
128
|
-
| [`hig-patterns`](./external/hig-patterns/) | `external` | Apple HIG interaction patterns mapped to SwiftUI:
|
|
129
|
-
| [`hig-platforms`](./external/hig-platforms/) | `external` | Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro
|
|
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
|
|
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,
|
|
172
|
-
| [`swiftui-expert-skill`](./external/swiftui-expert-skill/) | `external` | Write, review, or improve SwiftUI code following best practices for state
|
|
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
|
|
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
|
|
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
|
|
140
|
-
|
|
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
|
|
48
|
-
|
|
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
|
|
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
|
+
]
|