@mmerterden/multi-agent-pipeline 20.8.0 → 20.8.1

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 (60) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/docs/facts.json +1 -1
  3. package/manifest.json +63 -62
  4. package/package.json +2 -2
  5. package/pipeline/lib/redact.mjs +3 -2
  6. package/pipeline/scripts/gen-skills-index.mjs +13 -1
  7. package/pipeline/scripts/pre-commit-check.sh +4 -0
  8. package/pipeline/skills/.skill-manifest.json +21 -21
  9. package/pipeline/skills/shared/README.md +64 -64
  10. package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -2
  11. package/pipeline/skills/shared/external/alarmkit/evals/evals.json +2 -2
  12. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +6 -0
  13. package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +3 -0
  14. package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +3 -0
  15. package/pipeline/skills/shared/external/app-store-review/SKILL.md +3 -4
  16. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +5 -3
  17. package/pipeline/skills/shared/external/authentication/SKILL.md +29 -17
  18. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +3 -1
  19. package/pipeline/skills/shared/external/background-processing/SKILL.md +10 -8
  20. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +7 -7
  21. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +4 -2
  22. package/pipeline/skills/shared/external/core-data/SKILL.md +12 -2
  23. package/pipeline/skills/shared/external/coreml/SKILL.md +1 -1
  24. package/pipeline/skills/shared/external/cryptokit/SKILL.md +1 -1
  25. package/pipeline/skills/shared/external/device-integrity/SKILL.md +11 -5
  26. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +3 -3
  27. package/pipeline/skills/shared/external/localization-reuse-map/example-mapping.json +1 -1
  28. package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +8 -7
  29. package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +2 -2
  30. package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +5 -2
  31. package/pipeline/skills/shared/external/localization-reuse-map/scripts/_shared.py +100 -0
  32. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +45 -26
  33. package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +14 -16
  34. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +12 -5
  35. package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +2 -1
  36. package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +6 -5
  37. package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +44 -18
  38. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +5 -2
  39. package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +10 -11
  40. package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +4 -33
  41. package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +12 -59
  42. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +4 -2
  43. package/pipeline/skills/shared/external/skill-creator/template.md +7 -1
  44. package/pipeline/skills/shared/external/storekit/references/core-patterns.md +6 -1
  45. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -2
  46. package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +1 -1
  47. package/pipeline/skills/shared/external/swift-security/SKILL.md +10 -8
  48. package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +8 -5
  49. package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +13 -9
  50. package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +7 -6
  51. package/pipeline/skills/shared/external/swift-testing/SKILL.md +8 -5
  52. package/pipeline/skills/shared/external/swift-testing/evals/evals.json +1 -1
  53. package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +3 -2
  54. package/pipeline/skills/shared/external/swiftdata/SKILL.md +5 -3
  55. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +17 -9
  56. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +4 -2
  57. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +13 -6
  58. package/pipeline/skills/shared/external/weatherkit/SKILL.md +8 -5
  59. package/pipeline/skills/shared/external/widgetkit/SKILL.md +15 -7
  60. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +8 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-09-26T19:14:09Z",
3
+ "generatedAt": "2026-09-26T20:19:12Z",
4
4
  "skillCount": 218,
5
5
  "entries": [
6
6
  {
@@ -269,7 +269,7 @@
269
269
  },
270
270
  {
271
271
  "path": "shared/external/alarmkit/SKILL.md",
272
- "sha256": "dad252df33be787eb9dc9cf0a1d4657b19f69b44c6b4d14010b0cf50117cf4b5"
272
+ "sha256": "ce285a6e95d03e3bc2f5c3150822e6ee2d07a4b629b81e8c0df81e6840161cb9"
273
273
  },
274
274
  {
275
275
  "path": "shared/external/android-architecture/SKILL.md",
@@ -325,15 +325,15 @@
325
325
  },
326
326
  {
327
327
  "path": "shared/external/app-store-optimization/SKILL.md",
328
- "sha256": "3a933c14158a77a8124f74b7f4c145ec202d7ccb74c9b65af436dc236159648d"
328
+ "sha256": "6015dd7b4c8661e23b677c53c391a3e39116fee2ad6b2b031b3d310eef4a3e2b"
329
329
  },
330
330
  {
331
331
  "path": "shared/external/app-store-review/SKILL.md",
332
- "sha256": "a2cd777753347aa66ea7d3094df4209a4a377a1214387283db7ba7247007e4a1"
332
+ "sha256": "0b77f648fd2d54e991f1c25540629f0a7d4fd2a1b30de7f8aaf07331b93963ea"
333
333
  },
334
334
  {
335
335
  "path": "shared/external/apple-on-device-ai/SKILL.md",
336
- "sha256": "7c89227595db96798f9a4225d75ab314c4eab3115ab54a4648501c820e0f2f87"
336
+ "sha256": "a86a4032c158cdf5523009e332618c0e460a70fe695be99fed8c8767a69afff8"
337
337
  },
338
338
  {
339
339
  "path": "shared/external/architecture/SKILL.md",
@@ -341,7 +341,7 @@
341
341
  },
342
342
  {
343
343
  "path": "shared/external/authentication/SKILL.md",
344
- "sha256": "5b8fe68bd207b8ac88874ea514dce7683f7e91de60748b4444df643540bf45c1"
344
+ "sha256": "4d3da49257432d30196b9970721f801524a7cdce4e6ddcaefc4fe31832a49157"
345
345
  },
346
346
  {
347
347
  "path": "shared/external/avkit/SKILL.md",
@@ -349,7 +349,7 @@
349
349
  },
350
350
  {
351
351
  "path": "shared/external/background-processing/SKILL.md",
352
- "sha256": "a356a35289da428d977c85f6984fe204b50298955489752891f98332b891f971"
352
+ "sha256": "876516478a6019297b886f754e2ec59e96bc73419cfff753dc7bdc7a4336b6e9"
353
353
  },
354
354
  {
355
355
  "path": "shared/external/backlog/SKILL.md",
@@ -393,11 +393,11 @@
393
393
  },
394
394
  {
395
395
  "path": "shared/external/core-bluetooth/SKILL.md",
396
- "sha256": "4911322b33fc791564b3ee6498a6df66626f1749e479f3a869ff7528a2597208"
396
+ "sha256": "3b7b41c7287cb86ee3c5bc477952c659fddbf050ceefbad95ab8a95ff15750be"
397
397
  },
398
398
  {
399
399
  "path": "shared/external/core-data/SKILL.md",
400
- "sha256": "c0204397e9dabadad75d4ccbb0c06b4f55c47c97f61c65072a33e4480832ecf0"
400
+ "sha256": "c232488bc3de3542b25a8b40ba7da648a1c16b8fd467ade21dbde28620ab2c26"
401
401
  },
402
402
  {
403
403
  "path": "shared/external/core-motion/SKILL.md",
@@ -409,7 +409,7 @@
409
409
  },
410
410
  {
411
411
  "path": "shared/external/coreml/SKILL.md",
412
- "sha256": "b16e3b2f288a9f98dabce1d70e759ca2af9e9773830719a64bee57c8b18f5eec"
412
+ "sha256": "b5f3fdf161a2bd2ab839a52093f0cb99c2c3026211e48a7d13dbab712e11b255"
413
413
  },
414
414
  {
415
415
  "path": "shared/external/council/SKILL.md",
@@ -417,7 +417,7 @@
417
417
  },
418
418
  {
419
419
  "path": "shared/external/cryptokit/SKILL.md",
420
- "sha256": "6c1999c0199c7937c063997383f64b353ac692715f579f585adc8d2075f414b2"
420
+ "sha256": "419f46a3058145f48e1f38e56741dc8074441132a1834812a6d9ad020e1c2c7e"
421
421
  },
422
422
  {
423
423
  "path": "shared/external/css-modern/SKILL.md",
@@ -437,7 +437,7 @@
437
437
  },
438
438
  {
439
439
  "path": "shared/external/device-integrity/SKILL.md",
440
- "sha256": "9ac0956d2afb1afa48cc26514aa3ade9aa6ec57d5eb765d42ada61147360dfe2"
440
+ "sha256": "9d8c39c65f7b5918c25c7ef3dd438fe62901e61ecc6fa2d7ecbd7c9a0fcfa4c0"
441
441
  },
442
442
  {
443
443
  "path": "shared/external/docker-expert/SKILL.md",
@@ -569,7 +569,7 @@
569
569
  },
570
570
  {
571
571
  "path": "shared/external/localization-reuse-map/SKILL.md",
572
- "sha256": "565fa80ffa729f49cb4a54fb8f1da98397de5aaf7fb308753d261b5dc9f51f46"
572
+ "sha256": "ee6d437ed7ea18111074797532376d7bc09419eb3cfef6d8dde5679592457903"
573
573
  },
574
574
  {
575
575
  "path": "shared/external/macos-menubar-tuist-app/SKILL.md",
@@ -581,7 +581,7 @@
581
581
  },
582
582
  {
583
583
  "path": "shared/external/mapkit-location/SKILL.md",
584
- "sha256": "fa78d74db0a13cdcf215a5f62c6b0ed33c5e1a6757b795a9968d131f0a9030ee"
584
+ "sha256": "d6be293b79f2e0e3312db441c7c315779b7f345cea3c264508bfbf76f49e79ef"
585
585
  },
586
586
  {
587
587
  "path": "shared/external/metrickit-diagnostics/SKILL.md",
@@ -721,7 +721,7 @@
721
721
  },
722
722
  {
723
723
  "path": "shared/external/swift-concurrency/SKILL.md",
724
- "sha256": "b231d006488648ec679cac3fb9f6676c32594db3425e32b1e217a7caff73aec0"
724
+ "sha256": "428a7e31167e98ef300d0c000afda438bfdd7853793571ab4d1d05623e6d4383"
725
725
  },
726
726
  {
727
727
  "path": "shared/external/swift-formatstyle/SKILL.md",
@@ -733,7 +733,7 @@
733
733
  },
734
734
  {
735
735
  "path": "shared/external/swift-security/SKILL.md",
736
- "sha256": "2dbc80cc138e70c0477f5340d372102e588a85970710add24d06dae19b5e58ff"
736
+ "sha256": "0358e6b23ec268c51bf34d9341a80150746d2cbe7f9e4159de5133442a1b0d2e"
737
737
  },
738
738
  {
739
739
  "path": "shared/external/swift-testing-pro/SKILL.md",
@@ -741,7 +741,7 @@
741
741
  },
742
742
  {
743
743
  "path": "shared/external/swift-testing/SKILL.md",
744
- "sha256": "71bcab71b1d26f04220561c347ded36920784cdaec85fb3e303405359c99e2de"
744
+ "sha256": "bed2911b41450d88b77cc913648ea421d99d7c167fb49f4c8bcf54b580952c29"
745
745
  },
746
746
  {
747
747
  "path": "shared/external/swiftdata-pro/SKILL.md",
@@ -749,7 +749,7 @@
749
749
  },
750
750
  {
751
751
  "path": "shared/external/swiftdata/SKILL.md",
752
- "sha256": "65518d8167b0ec9ed61608731aa9e7877124e21433cb64f230b9a8da792ceff8"
752
+ "sha256": "5fa27f7d9c0997acc5959ad811aa4b49ccbd34d62b5237556e1ffaa650447163"
753
753
  },
754
754
  {
755
755
  "path": "shared/external/swiftlint/SKILL.md",
@@ -777,7 +777,7 @@
777
777
  },
778
778
  {
779
779
  "path": "shared/external/swiftui-navigation/SKILL.md",
780
- "sha256": "a40a53957bd01be79ff2f692f639fbf618c29da9b98d5f1150618bafd458825d"
780
+ "sha256": "422a6c0b680d422af731474a9b03d141ef04e1f16359ce25a3ba22780f2bf1c2"
781
781
  },
782
782
  {
783
783
  "path": "shared/external/swiftui-patterns/SKILL.md",
@@ -837,7 +837,7 @@
837
837
  },
838
838
  {
839
839
  "path": "shared/external/weatherkit/SKILL.md",
840
- "sha256": "cafc8e7c7ec3ee6107be992086d5ba3280ef524b5177e5069b8525914b272811"
840
+ "sha256": "db8a11fc9c572c6d9754c031ad97a868c5d0e6748855d90b72a2aeb44e2d4255"
841
841
  },
842
842
  {
843
843
  "path": "shared/external/web-accessibility/SKILL.md",
@@ -853,7 +853,7 @@
853
853
  },
854
854
  {
855
855
  "path": "shared/external/widgetkit/SKILL.md",
856
- "sha256": "e00e47ad977c7775e6c83bcaee68546325cb1b7eb38d208d6fe01ca88090eb77"
856
+ "sha256": "d4bce1c362e57616b252304414cfd01354586c7ed0be6c22f61efcc0980e26b0"
857
857
  },
858
858
  {
859
859
  "path": "shared/external/xcode-build-benchmark/SKILL.md",
@@ -95,27 +95,27 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
95
95
  | Skill | Group | Description |
96
96
  |-------|-------|-------------|
97
97
  | [`accessibility-compliance-accessibility-audit`](./external/accessibility-compliance-accessibility-audit/) | `external` | WCAG 2.2 AA audit process for web, iOS and Android: scope, automated scans, screen-reader and keyboard checks, severity, report, retest. Use |
98
- | [`alarmkit`](./external/alarmkit/) | `external` | AlarmKit alarms and countdown timers on iOS and iPadOS 26: AlarmManager scheduling and authorization, AlarmAttributes, AlarmPresentation and |
99
- | [`app-clips`](./external/app-clips/) | `external` | Build and review iOS App Clips: target setup and entitlements, invocation URLs from NFC tags, App Clip Codes, QR codes, Messages, Maps and S |
100
- | [`app-intents`](./external/app-intents/) | `external` | Exposing iOS app actions and data to Siri, the Shortcuts app, Spotlight search, widgets, Control Center controls and Apple Intelligence with |
98
+ | [`alarmkit`](./external/alarmkit/) | `external` | AlarmKit alarms and countdown timers on iOS and iPadOS 26: AlarmManager scheduling and authorization, AlarmAttributes, AlarmPresentation, Al |
99
+ | [`app-clips`](./external/app-clips/) | `external` | iOS App Clips: target setup, invocation from NFC, App Clip Codes, QR, Messages, Maps and Safari banners, App Store Connect experiences, size |
100
+ | [`app-intents`](./external/app-intents/) | `external` | App Intents for Siri, Shortcuts, Spotlight, widgets, Control Center and Apple Intelligence: AppIntent actions, AppEntity and EntityQuery, Ap |
101
101
  | [`app-store-changelog`](./external/app-store-changelog/) | `external` | Generate user-facing App Store release notes from git history since the last tag. Use when release notes have to be written from the commits |
102
- | [`app-store-optimization`](./external/app-store-optimization/) | `external` | App Store Optimization (ASO) for ranking and conversion: keyword research; what to put in the app name, subtitle and 100-byte keyword field; |
102
+ | [`app-store-optimization`](./external/app-store-optimization/) | `external` | App Store Optimization (ASO) for ranking and conversion: keyword research; app name, subtitle and 100-byte keyword field; description and pr |
103
103
  | [`app-store-review`](./external/app-store-review/) | `external` | App Store submission readiness and rejection prevention: Review Guidelines 2.1, 2.3, 2.5.1, 3.1.1, 4.2 and 5.1.2, PrivacyInfo.xcprivacy mani |
104
- | [`apple-on-device-ai`](./external/apple-on-device-ai/) | `external` | Local AI on Apple hardware: the Foundation Models framework (SystemLanguageModel, LanguageModelSession, @Generable and @Guide typed output, |
105
- | [`authentication`](./external/authentication/) | `external` | Build iOS sign-in with AuthenticationServices and LocalAuthentication: Sign in with Apple; passkeys (WebAuthn) for registering and logging i |
106
- | [`background-processing`](./external/background-processing/) | `external` | Scheduling and running iOS background work with BGTaskScheduler: BGAppRefreshTask for short fetches, BGProcessingTask for long maintenance, |
107
- | [`callkit-voip`](./external/callkit-voip/) | `external` | CallKit and PushKit VoIP calling on iOS: CXProvider and CXProviderConfiguration, CXCallController transactions, incoming and outgoing call f |
108
- | [`cloudkit-sync`](./external/cloudkit-sync/) | `external` | Implement, review or improve CloudKit and iCloud sync on iOS and macOS: CKContainer and its public, private and shared databases, CKRecord, |
109
- | [`contacts-framework`](./external/contacts-framework/) | `external` | Reading, creating, updating, deleting and picking contacts with the Contacts and ContactsUI frameworks: CNContactStore authorization includi |
110
- | [`core-bluetooth`](./external/core-bluetooth/) | `external` | Direct Bluetooth Low Energy work with Core Bluetooth: central and peripheral GATT communication, scanning and connecting with CBCentralManag |
111
- | [`core-motion`](./external/core-motion/) | `external` | Read motion hardware with Core Motion on iOS and watchOS: accelerometer, gyroscope and magnetometer streams, fused device motion and attitud |
112
- | [`core-nfc`](./external/core-nfc/) | `external` | Core NFC on iPhone: reading and writing NFC tags, scanning NDEF tags, native access to ISO7816, ISO15693, FeliCa and MIFARE tags, writing ND |
113
- | [`coreml`](./external/coreml/) | `external` | Swift-side Core ML integration for on-device inference: loading .mlmodel, .mlpackage and .mlmodelc models, predictions through Xcode-generat |
114
- | [`device-integrity`](./external/device-integrity/) | `external` | Prove that server traffic comes from a real Apple device running your untampered app, using DeviceCheck (DCDevice tokens and the two bits Ap |
115
- | [`energykit`](./external/energykit/) | `external` | Use EnergyKit on iOS and iPadOS 26 to read grid electricity forecasts, submit load events and help people use home electricity when the grid |
116
- | [`eventkit-calendar`](./external/eventkit-calendar/) | `external` | EventKit and EventKitUI for the user's calendars and reminders: putting events on a calendar, making reminders, repeat rules, asking for cal |
104
+ | [`apple-on-device-ai`](./external/apple-on-device-ai/) | `external` | On-device AI on Apple hardware: Foundation Models (SystemLanguageModel, LanguageModelSession, @Generable and @Guide structured output, tool |
105
+ | [`authentication`](./external/authentication/) | `external` | iOS sign-in with AuthenticationServices and LocalAuthentication: Sign in with Apple, passkey (WebAuthn) sign-up and login via ASAuthorizatio |
106
+ | [`background-processing`](./external/background-processing/) | `external` | iOS background work with BGTaskScheduler: BGAppRefreshTask short fetches, BGProcessingTask long maintenance, BGContinuedProcessingTask (iOS |
107
+ | [`callkit-voip`](./external/callkit-voip/) | `external` | CallKit and PushKit VoIP calling: CXProvider and CXCallController, incoming and outgoing call flows, call actions, VoIP push registration an |
108
+ | [`cloudkit-sync`](./external/cloudkit-sync/) | `external` | CloudKit and iCloud sync on iOS and macOS: CKContainer public, private and shared databases, CKRecord, CKQuery, CKSubscription, CKSyncEngine |
109
+ | [`contacts-framework`](./external/contacts-framework/) | `external` | Contacts and ContactsUI: CNContactStore authorization and limited access, fetch and save requests, creating, updating and deleting contacts, |
110
+ | [`core-bluetooth`](./external/core-bluetooth/) | `external` | Direct BLE with Core Bluetooth: central and peripheral GATT communication, CBCentralManager scanning and connecting, service and characteris |
111
+ | [`core-motion`](./external/core-motion/) | `external` | Core Motion on iOS and watchOS: accelerometer, gyroscope, magnetometer, fused device motion and reference frames, CMPedometer steps, distanc |
112
+ | [`core-nfc`](./external/core-nfc/) | `external` | Core NFC on iPhone: reading and writing NDEF tags, ISO7816, ISO15693, FeliCa and MIFARE access, reader session lifecycle, NFC entitlement an |
113
+ | [`coreml`](./external/coreml/) | `external` | Swift-side Core ML: loading .mlmodel, .mlpackage and .mlmodelc, predictions via generated classes and MLFeatureProvider, compute units, asyn |
114
+ | [`device-integrity`](./external/device-integrity/) | `external` | DeviceCheck and App Attest: DCDevice tokens and per-device bits, DCAppAttestService key generation, attestation and assertions. Use when add |
115
+ | [`energykit`](./external/energykit/) | `external` | EnergyKit on iOS 26: grid electricity forecasts via ElectricityGuidance, EnergyVenue, EV and HVAC load events, ElectricityInsightService his |
116
+ | [`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 |
117
117
  | [`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 |
118
- | [`healthkit`](./external/healthkit/) | `external` | Apple Health data through HealthKit on iOS, iPadOS, watchOS and visionOS: HKHealthStore permission requests, sample, statistics and chart-re |
118
+ | [`healthkit`](./external/healthkit/) | `external` | HealthKit on iOS, iPadOS, watchOS and visionOS: HKHealthStore authorization, sample, statistics and chart-ready collection queries, saving H |
119
119
  | [`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 |
120
120
  | [`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 |
121
121
  | [`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,64 +125,64 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
125
125
  | [`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 |
126
126
  | [`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
127
  | [`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, |
128
- | [`homekit-matter`](./external/homekit-matter/) | `external` | Smart-home development with HomeKit and MatterSupport: managing homes, rooms, zones and accessories, reading, writing and observing accessor |
129
- | [`ios-accessibility`](./external/ios-accessibility/) | `external` | Accessibility for iOS, iPadOS and macOS apps in SwiftUI, UIKit and AppKit: support for VoiceOver, Switch Control, Full Keyboard Access and V |
128
+ | [`homekit-matter`](./external/homekit-matter/) | `external` | HomeKit and MatterSupport: managing homes, rooms, zones and accessories, reading characteristics, action sets and triggers, Matter commissio |
129
+ | [`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 |
130
130
  | [`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, |
131
131
  | [`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 |
132
- | [`ios-localization`](./external/ios-localization/) | `external` | Internationalization and localization for iOS and macOS apps: String Catalogs (.xcstrings), generated localizable symbols with compile-time- |
132
+ | [`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 |
133
133
  | [`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 |
134
- | [`ios-networking`](./external/ios-networking/) | `external` | Networking on iOS and macOS built on URLSession, async/await and structured concurrency: HTTP requests, REST API clients, response validatio |
134
+ | [`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 |
135
135
  | [`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 |
136
- | [`ios-simulator`](./external/ios-simulator/) | `external` | Drive the iOS Simulator from the command line with xcrun simctl: create, boot, erase and delete devices, install and launch apps, simulate p |
137
- | [`live-activities`](./external/live-activities/) | `external` | ActivityKit Live Activities for Lock Screen and Dynamic Island: ActivityAttributes and ContentState, request/update/end lifecycle, compact/m |
136
+ | [`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 |
137
+ | [`live-activities`](./external/live-activities/) | `external` | ActivityKit Live Activities on the Lock Screen and Dynamic Island: ActivityAttributes and ContentState, request/update/end lifecycle, compac |
138
138
  | [`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 |
139
139
  | [`macos-spm-app-packaging`](./external/macos-spm-app-packaging/) | `external` | Scaffold, build, sign, and package SwiftPM macOS apps without Xcode projects. Use when a SwiftPM macOS app has to be built, signed or packag |
140
- | [`mapkit-location`](./external/mapkit-location/) | `external` | Maps and location in Swift apps for iOS and macOS with MapKit and CoreLocation: SwiftUI Map views, markers, annotations, polylines and other |
141
- | [`metrickit-diagnostics`](./external/metrickit-diagnostics/) | `external` | Field performance data and crash diagnostics from shipping apps via MetricKit: registering an MXMetricManager subscriber, handling MXMetricP |
142
- | [`musickit-audio`](./external/musickit-audio/) | `external` | Apple Music and system audio integration on iOS with MusicKit and MediaPlayer: MusicAuthorization, catalog search, MusicSubscription checks |
143
- | [`natural-language`](./external/natural-language/) | `external` | On-device text analysis with the NaturalLanguage framework and in-app translation with the Translation framework: tokenizing, language ident |
144
- | [`passkit-wallet`](./external/passkit-wallet/) | `external` | PassKit for Apple Pay checkout and Wallet passes: Apple Pay buttons, building payment requests, the payment authorization flow, merchant cap |
145
- | [`pencilkit-drawing`](./external/pencilkit-drawing/) | `external` | Apple Pencil and finger drawing with PencilKit: PKCanvasView canvases and drawing policies, PKToolPicker palettes including custom items, PK |
146
- | [`permissionkit`](./external/permissionkit/) | `external` | PermissionKit parent and guardian approval for minors: CommunicationLimits known-handle checks, CommunicationHandle kinds, PermissionQuestio |
147
- | [`photos-camera-media`](./external/photos-camera-media/) | `external` | Choosing photos, capturing with the camera, and handling media on iOS with PhotoKit and AVFoundation: PhotosPicker and PHPickerViewControlle |
148
- | [`push-notifications`](./external/push-notifications/) | `external` | Notifications on iOS and macOS, both device-scheduled and server-sent, using UserNotifications and APNs: permission (standard, provisional, |
149
- | [`realitykit-ar`](./external/realitykit-ar/) | `external` | RealityKit and ARKit on iOS: RealityView with RealityViewCameraContent, AR camera availability and permission, entities and components, USDZ |
150
- | [`shareplay-activities`](./external/shareplay-activities/) | `external` | GroupActivities and SharePlay on iOS, macOS, tvOS and visionOS: Group Activities capability, eligibility checks, GroupActivity and metadata, |
151
- | [`speech-recognition`](./external/speech-recognition/) | `external` | Speech-to-text with Apple's Speech framework: live microphone transcription through AVAudioEngine, transcribing recorded audio files, permis |
152
- | [`storekit`](./external/storekit/) | `external` | In-app purchases and subscriptions with StoreKit 2 in Swift: paywalls built with SubscriptionStoreView, StoreView or ProductView, purchase f |
153
- | [`swift-api-design-guidelines`](./external/swift-api-design-guidelines/) | `external` | Swift API Design Guidelines applied to real declarations: clarity at the call site over brevity, argument labels and prepositions, method ve |
154
- | [`swift-architecture`](./external/swift-architecture/) | `external` | App architecture on Apple platforms with Swift 6.3, SwiftUI and UIKit: choosing between MV with @Observable, MVVM, MVI, TCA, Clean Architect |
155
- | [`swift-charts`](./external/swift-charts/) | `external` | Building and reviewing data visualisations with Swift Charts: bar, line, area, point, pie and donut charts; 3D charts on iOS 26; axes, scale |
156
- | [`swift-codable`](./external/swift-codable/) | `external` | Codable models for JSON and property-list encoding and decoding in Swift: JSONDecoder, JSONEncoder, CodingKeys, custom init(from:) and encod |
157
- | [`swift-concurrency`](./external/swift-concurrency/) | `external` | Swift concurrency reference for Swift 6.2 and later: actor isolation, Sendable and sending, approachable concurrency (SE-0466 default MainAc |
140
+ | [`mapkit-location`](./external/mapkit-location/) | `external` | MapKit and CoreLocation on iOS and macOS: SwiftUI Map, markers, annotations, polylines and overlays, camera control, user location tracking, |
141
+ | [`metrickit-diagnostics`](./external/metrickit-diagnostics/) | `external` | MetricKit field telemetry from shipping apps: MXMetricManager subscribers, MXMetricPayload and MXDiagnosticPayload, crash, hang and disk-wri |
142
+ | [`musickit-audio`](./external/musickit-audio/) | `external` | MusicKit and MediaPlayer on iOS: Apple Music authorization, catalog search, subscription checks and offers, ApplicationMusicPlayer playback |
143
+ | [`natural-language`](./external/natural-language/) | `external` | NaturalLanguage and Translation frameworks: tokenizing, language identification, part-of-speech tagging, named entities, sentiment, word and |
144
+ | [`passkit-wallet`](./external/passkit-wallet/) | `external` | Apple Pay and Wallet passes with PassKit: Apple Pay buttons, payment requests, authorization flow, merchant capabilities, shipping and conta |
145
+ | [`pencilkit-drawing`](./external/pencilkit-drawing/) | `external` | PencilKit drawing with Apple Pencil or finger: PKCanvasView, PKToolPicker and custom items, PKDrawing persistence and export, stroke inspect |
146
+ | [`permissionkit`](./external/permissionkit/) | `external` | PermissionKit parental approval for minors: CommunicationLimits handle checks, PermissionQuestion, AskCenter requests and responses, Permiss |
147
+ | [`photos-camera-media`](./external/photos-camera-media/) | `external` | PhotoKit and AVFoundation media on iOS: PhotosPicker and PHPickerViewController, Transferable loading of images, movies and Live Photos, pho |
148
+ | [`push-notifications`](./external/push-notifications/) | `external` | UserNotifications and APNs on iOS and macOS, local and remote: permission (standard, provisional, critical), device-token registration, trig |
149
+ | [`realitykit-ar`](./external/realitykit-ar/) | `external` | RealityKit and ARKit on iOS: RealityView camera content, AR camera availability and permission, entities and components, USDZ loading, plane |
150
+ | [`shareplay-activities`](./external/shareplay-activities/) | `external` | GroupActivities and SharePlay on iOS, macOS, tvOS and visionOS: GroupActivity, GroupSession lifecycle, messengers, playback sync, file trans |
151
+ | [`speech-recognition`](./external/speech-recognition/) | `external` | Speech framework speech-to-text: live microphone transcription with AVAudioEngine, recorded audio files, speech and microphone permission, o |
152
+ | [`storekit`](./external/storekit/) | `external` | StoreKit 2 in-app purchases and subscriptions: SubscriptionStoreView, StoreView and ProductView paywalls, consumable, non-consumable and aut |
153
+ | [`swift-api-design-guidelines`](./external/swift-api-design-guidelines/) | `external` | Swift API Design Guidelines: call-site clarity over brevity, argument labels and prepositions, method versus property, side-effect naming, m |
154
+ | [`swift-architecture`](./external/swift-architecture/) | `external` | App architecture on Apple platforms (Swift 6.3, SwiftUI, UIKit): MV with @Observable, MVVM, MVI, TCA, Clean Architecture, VIPER, Coordinator |
155
+ | [`swift-charts`](./external/swift-charts/) | `external` | Swift Charts: bar, line, area, point, pie, donut, iOS 26 3D charts (Chart3D, SurfacePlot), axes, scales, legends, annotations, scrolling, se |
156
+ | [`swift-codable`](./external/swift-codable/) | `external` | Codable JSON and property-list models: JSONDecoder, JSONEncoder, CodingKeys, custom init(from:)/encode(to:), nested containers, date, data a |
157
+ | [`swift-concurrency`](./external/swift-concurrency/) | `external` | Swift 6.2+ concurrency: actor isolation, Sendable, sending, approachable concurrency (SE-0466 default MainActor, @concurrent, nonisolated(no |
158
158
  | [`swift-concurrency-expert`](./external/swift-concurrency-expert/) | `external` | Review and fix Swift concurrency issues such as actor isolation and Sendable violations. Use when a Swift concurrency problem needs diagnosi |
159
159
  | [`swift-concurrency-pro`](./external/swift-concurrency-pro/) | `external` | Reviews Swift code for concurrency correctness, modern API usage, and common async/await pitfalls. Use when reading, writing, or reviewing S |
160
- | [`swift-formatstyle`](./external/swift-formatstyle/) | `external` | Display formatting through FormatStyle and the styles Foundation ships: integers, floating point and decimals, currency amounts, percentages |
161
- | [`swift-language`](./external/swift-language/) | `external` | Core Swift 6.3 language work outside concurrency and SwiftUI: if and switch expressions, typed throws, result builders, property wrappers, s |
162
- | [`swift-security`](./external/swift-security/) | `external` | Apple-platform client security: Keychain Services (SecItem queries, kSecClass choice, OSStatus errors on iOS and macOS), Face ID and Touch I |
163
- | [`swift-testing`](./external/swift-testing/) | `external` | Writing, migrating and reviewing tests with the Swift Testing framework: @Test, @Suite, #expect, #require, confirmation, traits, withKnownIs |
160
+ | [`swift-formatstyle`](./external/swift-formatstyle/) | `external` | Display formatting with FormatStyle (iOS 15+): integers, floating point, decimals, currency, percentages, dates, date ranges, relative and a |
161
+ | [`swift-language`](./external/swift-language/) | `external` | Core Swift 6.3 outside concurrency and SwiftUI: if and switch expressions, typed throws, result builders, property wrappers, some vs any, gu |
162
+ | [`swift-security`](./external/swift-security/) | `external` | Apple client security: Keychain (SecItem, kSecClass, OSStatus, iOS, macOS), Face ID/Touch ID keychain items, CryptoKit (AES-GCM, ChaChaPoly, |
163
+ | [`swift-testing`](./external/swift-testing/) | `external` | Writing, migrating and reviewing Swift Testing tests: @Test, @Suite, #expect, #require, confirmation, traits, withKnownIssue, Attachment.rec |
164
164
  | [`swift-testing-pro`](./external/swift-testing-pro/) | `external` | Writes, reviews, and improves Swift Testing code using modern APIs and best practices. Use when reading, writing, or reviewing projects that |
165
165
  | [`swiftdata`](./external/swiftdata/) | `external` | SwiftData persistence for Apple apps: @Model classes with @Attribute, @Relationship, @Transient, #Unique and #Index; @Query, #Predicate, Fet |
166
166
  | [`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 |
167
- | [`swiftlint`](./external/swiftlint/) | `external` | Setting up and enforcing SwiftLint in Swift projects: SwiftLintBuildToolPlugin and the command plugin, Xcode run script phases, CI jobs, .sw |
168
- | [`swiftui-animation`](./external/swiftui-animation/) | `external` | SwiftUI motion: explicit withAnimation, scoped implicit .animation(_:body:) and .animation(_:value:), timing curves and springs (.smooth, .s |
167
+ | [`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) |
168
+ | [`swiftui-animation`](./external/swiftui-animation/) | `external` | SwiftUI motion: withAnimation, scoped implicit .animation(_:body:) and .animation(_:value:), timing curves and springs (.smooth, .snappy, .b |
169
169
  | [`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 |
170
- | [`swiftui-gestures`](./external/swiftui-gestures/) | `external` | SwiftUI gesture handling: tap, spatial tap, long press, drag, magnify and rotate gestures, composition with simultaneously, sequenced and ex |
171
- | [`swiftui-layout-components`](./external/swiftui-layout-components/) | `external` | SwiftUI layout and component patterns: VStack, HStack, ZStack and lazy stacks, LazyVGrid and LazyHGrid, List sections plus row swipe actions |
172
- | [`swiftui-liquid-glass`](./external/swiftui-liquid-glass/) | `external` | Liquid Glass in SwiftUI for iOS 26 and later: the glassEffect modifier, Glass variants with tint and interactive, GlassEffectContainer, glas |
173
- | [`swiftui-navigation`](./external/swiftui-navigation/) | `external` | SwiftUI navigation: NavigationStack with typed paths and navigationDestination, router objects for programmatic routing, NavigationSplitView |
174
- | [`swiftui-patterns`](./external/swiftui-patterns/) | `external` | Structure SwiftUI apps with the Model-View approach: who owns an @Observable object, when to use @State, @Bindable, let or @Environment, how |
175
- | [`swiftui-performance`](./external/swiftui-performance/) | `external` | Finding and fixing SwiftUI runtime performance problems: slow rendering, janky scrolling, high CPU or memory, views that update too often, l |
170
+ | [`swiftui-gestures`](./external/swiftui-gestures/) | `external` | SwiftUI gestures: tap, spatial tap, long press, drag, magnify, rotate, composition (simultaneously, sequenced, exclusively), @GestureState, |
171
+ | [`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 |
172
+ | [`swiftui-liquid-glass`](./external/swiftui-liquid-glass/) | `external` | Liquid Glass in SwiftUI (iOS 26+): glassEffect, Glass tint/interactive variants, GlassEffectContainer, glassEffectID morphing, glassEffectUn |
173
+ | [`swiftui-navigation`](./external/swiftui-navigation/) | `external` | SwiftUI navigation: NavigationStack typed paths, routers, NavigationSplitView, sheets, TabView and Tab API, universal links, URL schemes, Ha |
174
+ | [`swiftui-patterns`](./external/swiftui-patterns/) | `external` | SwiftUI Model-View structure: @Observable ownership, @State, @Bindable, @Environment, view decomposition, custom ViewModifiers, .task loadin |
175
+ | [`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 |
176
176
  | [`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 |
177
177
  | [`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 |
178
178
  | [`swiftui-ui-patterns`](./external/swiftui-ui-patterns/) | `external` | Apply proven SwiftUI UI patterns for navigation, sheets, async state, and reusable screens. Use when a SwiftUI screen needs a proven pattern |
179
- | [`swiftui-uikit-interop`](./external/swiftui-uikit-interop/) | `external` | Connects UIKit and SwiftUI: UIViewRepresentable for a UIView, UIViewControllerRepresentable for a UIViewController, UIHostingController and |
179
+ | [`swiftui-uikit-interop`](./external/swiftui-uikit-interop/) | `external` | UIKit and SwiftUI interop: UIViewRepresentable, UIViewControllerRepresentable, UIHostingController, UIHostingConfiguration, Coordinator dele |
180
180
  | [`swiftui-view-refactor`](./external/swiftui-view-refactor/) | `external` | Refactor SwiftUI views into smaller components with stable, explicit data flow. Use when a SwiftUI view has grown too large and needs splitt |
181
- | [`swiftui-webkit`](./external/swiftui-webkit/) | `external` | Embedding and controlling web content in SwiftUI with the native WebKit for SwiftUI API: WebView and WebPage, observable title, URL and prog |
182
- | [`tipkit`](./external/tipkit/) | `external` | TipKit in-app tips for iOS 17+: Tips.configure, datastore location and CloudKit sync, the Tip protocol, TipView and popoverTip, TipViewStyle |
183
- | [`vision-framework`](./external/vision-framework/) | `external` | On-device computer vision with Apple's Vision and VisionKit frameworks: OCR text recognition, face detection and landmarks, barcode and QR s |
184
- | [`weatherkit`](./external/weatherkit/) | `external` | WeatherKit on iOS: WeatherService queries for current conditions, hourly, daily and minute forecasts, weather alerts, dataset availability a |
185
- | [`widgetkit`](./external/widgetkit/) | `external` | WidgetKit and ActivityKit surfaces on iOS 26+: timeline-driven widgets for the Home Screen, the Lock Screen and StandBy, interactive widgets |
181
+ | [`swiftui-webkit`](./external/swiftui-webkit/) | `external` | Web content in SwiftUI with WebKit for SwiftUI: WebView, WebPage, observable page state, navigation policies, link interception, JavaScript |
182
+ | [`tipkit`](./external/tipkit/) | `external` | TipKit in-app tips (iOS 17+): Tip protocol, TipView, popoverTip, rules, events, TipGroup, styles, CloudKit sync. Use when building or review |
183
+ | [`vision-framework`](./external/vision-framework/) | `external` | On-device computer vision with Vision and VisionKit: OCR, face detection and landmarks, barcode and QR scanning, person and instance segment |
184
+ | [`weatherkit`](./external/weatherkit/) | `external` | WeatherKit on iOS: current, hourly, daily and minute forecasts, alerts, historical statistics, dataset selection, caching. Use when integrat |
185
+ | [`widgetkit`](./external/widgetkit/) | `external` | WidgetKit surfaces on iOS 26+: timeline-driven widgets for the Home Screen, the Lock Screen and StandBy, interactive widgets using Button or |
186
186
 
187
187
  ## Android / Kotlin
188
188
 
@@ -242,22 +242,22 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
242
242
  |-------|-------|-------------|
243
243
  | [`agent-introspection-debugging`](./external/agent-introspection-debugging/) | `external` | \| |
244
244
  | [`architecture`](./external/architecture/) | `external` | Stack-neutral architecture decisions: quality drivers, options with a trade-off matrix, reversibility, ADRs, fitness checks. Use when making |
245
- | [`avkit`](./external/avkit/) | `external` | AVKit media playback on iOS: AVPlayerViewController and SwiftUI VideoPlayer, Picture-in-Picture for standard and custom players, AirPlay rou |
245
+ | [`avkit`](./external/avkit/) | `external` | AVKit playback UI: AVPlayerViewController, SwiftUI VideoPlayer, Picture-in-Picture, AirPlay routing, transport controls, subtitles and close |
246
246
  | [`backlog`](./external/backlog/) | `external` | Registry and routine for approved but postponed engineering work: each item keeps its full spec, origin and unblock condition, and moves thr |
247
247
  | [`ci-cd-pipelines`](./external/ci-cd-pipelines/) | `external` | CI/CD pipelines: GitHub Actions workflows, Docker multi-stage builds, environment management, secret management, deployment strategies. Use |
248
248
  | [`clean-code`](./external/clean-code/) | `external` | Readability checks for code in any language: names, function focus, control flow, side effects, errors, comments, duplication. Use when writ |
249
249
  | [`context-compression`](./external/context-compression/) | `external` | Keeping long LLM agent sessions on track: what a summary must preserve, incremental structured summaries, state in files, compact versus res |
250
250
  | [`core-data`](./external/core-data/) | `external` | Create, audit or refine Core Data persistence for apps still on Core Data rather than SwiftData: stack setup, NSManagedObject subclasses, NS |
251
251
  | [`council`](./external/council/) | `external` | \| |
252
- | [`cryptokit`](./external/cryptokit/) | `external` | Apple CryptoKit primitives in Swift: SHA-2 and SHA-3 hashing, HMAC, AES-GCM and ChaChaPoly authenticated encryption, signatures with P256, P |
253
- | [`debugging-instruments`](./external/debugging-instruments/) | `external` | Debugging and profiling Apple-platform apps with Xcode tools: LLDB inspection, breakpoints, expressions and watchpoints; the Memory Graph De |
252
+ | [`cryptokit`](./external/cryptokit/) | `external` | CryptoKit in Swift: SHA-2, SHA-3, HMAC, AES-GCM, ChaChaPoly, P256, P384, P521, Curve25519 and ML-DSA signatures, ECDH with HKDF, HPKE, ML-KE |
253
+ | [`debugging-instruments`](./external/debugging-instruments/) | `external` | Xcode debugging and profiling: LLDB, Memory Graph Debugger, Instruments, crashes, leaks and retain cycles, main-thread hangs, slow rendering |
254
254
  | [`debugging-strategies`](./external/debugging-strategies/) | `external` | Language-neutral debugging method: reproduce, minimise, falsifiable hypotheses, git bisect, instrumentation, production traces, concurrency |
255
255
  | [`evidence-github`](./external/evidence-github/) | `external` | Search GitHub for facts an analysis can cite - a known issue in a dependency, the PR that fixed it, what a release actually changed, prior a |
256
256
  | [`evidence-registry`](./external/evidence-registry/) | `external` | Check a package's real version, deprecation status and release notes on npm, PyPI, Maven Central or Swift Package Index. Use when a spec or |
257
257
  | [`github-actions-templates`](./external/github-actions-templates/) | `external` | Authoring GitHub Actions workflows: triggers, matrices, caching, concurrency, least-privilege permissions, SHA pinning, OIDC, reusable workf |
258
258
  | [`humanizer`](./external/humanizer/) | `external` | \| |
259
259
  | [`localization-reuse-map`](./external/localization-reuse-map/) | `external` | Localization reuse map for one redesigned screen on iOS, Android and web: new keys set against each platform's legacy key, legacy values and |
260
- | [`pdfkit`](./external/pdfkit/) | `external` | PDFKit on iOS: showing PDFs in PDFView, creating and editing PDFDocument and PDFPage, annotations such as highlights, notes and signature or |
260
+ | [`pdfkit`](./external/pdfkit/) | `external` | PDFKit on iOS: PDFView display and SwiftUI wrapping, creating and editing PDFDocument and PDFPage, highlight, note, signature and form annot |
261
261
  | [`search-first`](./external/search-first/) | `external` | \| |
262
262
  | [`security-review`](./external/security-review/) | `external` | Run a defensive, static security review of a diff or a repo: build a run-scoped threat model, find vulnerabilities joined to OWASP + CWE wit |
263
263
  | [`signal-community`](./external/signal-community/) | `external` | Check whether other people hit the same problem, via Stack Overflow and Hacker News (keyless) plus opt-in Reddit and X. Use when a bug repor |
@@ -389,7 +389,7 @@ Hand-offs:
389
389
  `WidgetCenter` reloads: `widgetkit`.
390
390
  - Non-alarm Live Activities (`Activity.request`, `update`, `end`),
391
391
  push-to-start and per-activity update tokens, and remote `content-state`
392
- payloads: `activitykit`.
392
+ payloads: `live-activities`.
393
393
  - APNs, `UNUserNotificationCenter`, notification categories and actions,
394
394
  custom notification UI: `push-notifications`, unless the code ends up
395
395
  calling `AlarmManager`.
@@ -477,7 +477,7 @@ struct CoachWidgets: WidgetBundle {
477
477
  - [ ] AlarmKit is credited only with authorization, `AlarmManager` scheduling and state, attributes, presentation, presentation state, sound and system alarm actions
478
478
  - [ ] The ringing screen is described as drawn by the system
479
479
  - [ ] Custom countdown and paused UI lives in the widget extension with the same attributes and `AlarmPresentationState`
480
- - [ ] Hand-offs to `widgetkit`, `activitykit` and `push-notifications` are explicit
480
+ - [ ] Hand-offs to `widgetkit`, `live-activities` and `push-notifications` are explicit
481
481
  - [ ] Setup cites only documented requirements; no `com.apple.developer.alarmkit` unless Apple documents it
482
482
  - [ ] `tintColor` is set on `AlarmAttributes` so the alarm is recognisable
483
483
  - [ ] `AlarmManager.AlarmError.maximumLimitReached` is handled
@@ -31,14 +31,14 @@
31
31
  {
32
32
  "id": 2,
33
33
  "prompt": "Product wants AlarmKit to also drive our Smart Stack widget, our delivery-tracking Live Activity and our marketing push notifications, with a fully custom design for the ringing screen. Which parts belong to AlarmKit?",
34
- "expected_output": "Limits AlarmKit to system alarms and countdowns and their types, explains that the alerting UI is system-managed while countdown and paused UI can be customised in a widget extension, lists Lock Screen, Dynamic Island, StandBy and paired Apple Watch without Smart Stack, and routes widgets to widgetkit, other Live Activities to activitykit and notifications to push-notifications.",
34
+ "expected_output": "Limits AlarmKit to system alarms and countdowns and their types, explains that the alerting UI is system-managed while countdown and paused UI can be customised in a widget extension, lists Lock Screen, Dynamic Island, StandBy and paired Apple Watch without Smart Stack, and routes widgets to widgetkit, other Live Activities to live-activities and notifications to push-notifications.",
35
35
  "files": [],
36
36
  "expectations": [
37
37
  "Keeps AlarmKit scope to system alarms and countdown timers and their AlarmKit types",
38
38
  "States that the alerting UI is drawn by the system and only countdown and paused UI is customisable",
39
39
  "Lists Lock Screen, Dynamic Island, StandBy and paired Apple Watch and does not claim Smart Stack",
40
40
  "Routes Smart Stack and Home Screen widgets to widgetkit",
41
- "Routes the non-alarm Live Activity to activitykit",
41
+ "Routes the non-alarm Live Activity to live-activities",
42
42
  "Routes push notifications to push-notifications"
43
43
  ]
44
44
  }
@@ -73,6 +73,12 @@ Always state explicitly: popular but irrelevant keywords are rejected; the
73
73
  custom page allowance is 70 per app; a test has up to three treatments; In-App
74
74
  Events and ratings are ASO work.
75
75
 
76
+ Every App Store Connect number in this skill (field lengths, the 70-page
77
+ allowance, three treatments, the 90-day test limit, event media sizes, the
78
+ review-prompt cap) is as Apple's documentation stated it at the time of
79
+ writing. Apple changes these limits, so check App Store Connect Help before
80
+ quoting one as current.
81
+
76
82
  ## Name and subtitle
77
83
 
78
84
  Search indexes both the name (30 characters) and the subtitle (30 characters),
@@ -7,6 +7,9 @@ subtitle, keyword field and primary category, and user behavior such as
7
7
  downloads, ratings and reviews. The table below is a planning aid, not a list
8
8
  of ranking weights.
9
9
 
10
+ Limits below are App Store Connect values as Apple's documentation stated them
11
+ at the time of writing; confirm them in App Store Connect Help before quoting.
12
+
10
13
  | Field | Role in search | Limit | Changing it | Guidance |
11
14
  |---|---|---|---|---|
12
15
  | App name | Indexed | 30 characters | With a new version, when status allows | Distinctive, and hints at what the app does |
@@ -1,5 +1,8 @@
1
1
  # Product Page Variants
2
2
 
3
+ Limits below are App Store Connect values as Apple's documentation stated them
4
+ at the time of writing; confirm them in App Store Connect Help before quoting.
5
+
3
6
  ## Custom Product Pages
4
7
 
5
8
  ### Setting one up
@@ -12,10 +12,9 @@ privacy declaration that disagrees with what the binary actually sends, a
12
12
  purchase path that skips StoreKit, or metadata that promises something the app
13
13
  does not do. This skill finds those before App Review does.
14
14
 
15
- Apple's fraud-prevention report of May 2026 said App Review looked at more than
16
- 9.1 million submissions during 2025 and turned down over 2 million of them.
17
- Numbers like these change every year, so confirm them against Apple's own
18
- publication before quoting them.
15
+ Apple publishes a yearly App Store fraud-prevention report with the number of
16
+ submissions App Review looked at and turned down. Quote those figures only from
17
+ the current report, never from memory.
19
18
 
20
19
  ## Scope and boundaries
21
20
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: apple-on-device-ai
3
- description: "On-device AI on Apple hardware: Foundation Models (SystemLanguageModel, LanguageModelSession, @Generable and @Guide structured output, tool calling), coremltools conversion, quantization, palettization, pruning, Neural Engine and MLTensor, MLX Swift transformer inference on unified memory, llama.cpp GGUF models. Use when building tool-calling AI features, designing guided generation schemas, converting a model or running inference on device. Not for Swift-side Core ML integration (coreml), OCR, sentiment, NER or classifier training."
3
+ description: "On-device AI on Apple hardware: Foundation Models (SystemLanguageModel, LanguageModelSession, @Generable and @Guide structured output, tool calling), coremltools conversion, quantization, palettization, pruning, Neural Engine, MLX Swift transformer inference on unified memory, llama.cpp GGUF models. Use when building tool-calling AI features, designing guided generation schemas, converting a model or running inference on device. Not for Swift-side Core ML integration (coreml), OCR, sentiment, NER or classifier training."
4
4
  metadata:
5
5
  source: multi-agent-pipeline
6
6
  ---
@@ -320,8 +320,10 @@ Compression at a glance:
320
320
 
321
321
  Boundary: this skill decides which framework to use and owns the Python side
322
322
  (conversion, compression, profiling). The `coreml` skill owns the Swift side:
323
- loading models in the app, runtime settings, calling predictions, and hooking
324
- models into Vision requests.
323
+ loading models in the app, runtime settings, calling predictions, `MLTensor`
324
+ pre- and post-processing, and hooking models into Vision requests. The
325
+ [optimization guide](references/coreml-optimization.md#mltensor) keeps a short
326
+ `MLTensor` example.
325
327
 
326
328
  Conversion: [the conversion guide](references/coreml-conversion.md).
327
329
  Compression and profiling: [the optimization guide](references/coreml-optimization.md).