@mmerterden/multi-agent-pipeline 20.7.0 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +266 -267
- package/package.json +2 -2
- package/pipeline/scripts/_notices.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +68 -68
- package/pipeline/skills/shared/README.md +70 -70
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
|
@@ -4,46 +4,44 @@
|
|
|
4
4
|
{
|
|
5
5
|
"id": 0,
|
|
6
6
|
"name": "api-review-naming-labels",
|
|
7
|
-
"prompt": "
|
|
8
|
-
"expected_output": "
|
|
7
|
+
"prompt": "Please review the naming on this type before we make it public:\n\nstruct ThemePalette {\n mutating func add(color: Color)\n mutating func remove(index: Int)\n func colorWithName(_ string: String) -> Color?\n func containsColor(_ color: Color) -> Bool\n static func createDefaultPalette() -> ThemePalette\n}",
|
|
8
|
+
"expected_output": "Concrete renames grounded in the guidelines: add(_:), remove(at:), a role-named lookup such as color(named name:) or color(forName name:), contains(_:), makeDefault() or similar, each justified by how the call site reads.",
|
|
9
9
|
"files": [],
|
|
10
10
|
"expectations": [
|
|
11
|
-
"Recommends
|
|
12
|
-
"Recommends
|
|
13
|
-
"Replaces
|
|
14
|
-
"Removes
|
|
15
|
-
"
|
|
16
|
-
"
|
|
11
|
+
"Recommends add(_:) because the argument continues the phrase started by the base name",
|
|
12
|
+
"Recommends remove(at:) so the index is not mistaken for the element",
|
|
13
|
+
"Replaces the type-named parameter string with a role name, for example color(named name:) or color(forName name:)",
|
|
14
|
+
"Removes the repeated type word from containsColor, giving contains(_:)",
|
|
15
|
+
"Replaces the create prefix with a make factory name",
|
|
16
|
+
"Justifies each change by call-site clarity and the guidelines rather than personal taste"
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"id": 1,
|
|
21
21
|
"name": "mutating-pairs-doc-comments",
|
|
22
|
-
"prompt": "
|
|
23
|
-
"expected_output": "
|
|
22
|
+
"prompt": "Fix the names and docs on this editor buffer:\n\nstruct TextBuffer {\n mutating func formSortLines()\n func sortLines() -> TextBuffer\n func strippedNewlines() -> TextBuffer\n func unionTags(_ other: Set<String>) -> Set<String>\n mutating func formUnionTags(_ other: Set<String>) -> Set<String>\n var totalCharacterCount: Int { lines.map(\\.count).reduce(0, +) }\n}",
|
|
23
|
+
"expected_output": "Verb pair sortLines()/sortedLines(), strippingNewlines(), noun pair unionTags/formUnionTags with the mutating one returning nothing, kind-appropriate doc summaries and an O(n) complexity note on totalCharacterCount.",
|
|
24
24
|
"files": [],
|
|
25
25
|
"expectations": [
|
|
26
|
-
"
|
|
27
|
-
"Uses
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
26
|
+
"Names the pair sortLines() for the mutating form and sortedLines() for the non-mutating form",
|
|
27
|
+
"Uses strippingNewlines() rather than strippedNewlines()",
|
|
28
|
+
"Pairs the noun operation as unionTags(_:) returning a value and formUnionTags(_:) mutating in place",
|
|
29
|
+
"Writes doc summaries that match the declaration kind",
|
|
30
|
+
"Adds a complexity note to totalCharacterCount because it is not O(1)",
|
|
31
|
+
"Never presents formSortLines() or a value-returning formUnionTags() as correct"
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"id": 2,
|
|
36
36
|
"name": "sibling-boundary-language-features",
|
|
37
|
-
"prompt": "
|
|
38
|
-
"expected_output": "A
|
|
37
|
+
"prompt": "Three quick ones: is fetchDataWithId(_:) a good method name, should our repository return some Collection or any Collection, and how should we configure SwiftLint's identifier_name rule?",
|
|
38
|
+
"expected_output": "A short naming answer with a corrected example such as fetchData(id:), then routing some versus any to swift-language and the SwiftLint configuration to swiftlint without covering either in depth.",
|
|
39
39
|
"files": [],
|
|
40
40
|
"expectations": [
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"Routes
|
|
44
|
-
"
|
|
45
|
-
"Does not provide a full SwiftLint configuration or a full opaque/existential type tutorial.",
|
|
46
|
-
"Preserves sibling-skill boundaries while giving enough API-design guidance to be useful."
|
|
41
|
+
"Answers the naming question with a minimal corrected example such as fetchData(id:)",
|
|
42
|
+
"Routes the some versus any question to swift-language",
|
|
43
|
+
"Routes the SwiftLint configuration to swiftlint",
|
|
44
|
+
"Does not give a full SwiftLint configuration or an opaque versus existential type tutorial"
|
|
47
45
|
]
|
|
48
46
|
}
|
|
49
47
|
]
|
|
@@ -1,164 +1,163 @@
|
|
|
1
1
|
# Argument Labels and Parameters
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Harder cases for the label rules in the main skill, plus how to name
|
|
4
|
+
parameters and order defaulted ones.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Prepositional labels
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- [Value-Preserving vs Narrowing Conversions](#value-preserving-vs-narrowing-conversions)
|
|
10
|
-
- [Parameter Naming for Documentation](#parameter-naming-for-documentation)
|
|
11
|
-
- [Default Arguments Over Method Families](#default-arguments-over-method-families)
|
|
12
|
-
|
|
13
|
-
## Prepositional Phrase Rule Edge Cases
|
|
14
|
-
|
|
15
|
-
The base rule: when the first argument completes a prepositional phrase with the base name, use the preposition as the argument label.
|
|
8
|
+
The base rule: when the first argument finishes a prepositional phrase that
|
|
9
|
+
the base name starts, the preposition is its label.
|
|
16
10
|
|
|
17
11
|
```swift
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
path.relativePath(from: root)
|
|
12
|
+
removeBoxes(havingLength: 12)
|
|
13
|
+
fade(from: red)
|
|
14
|
+
relativePath(from: root)
|
|
22
15
|
```
|
|
23
16
|
|
|
24
|
-
###
|
|
17
|
+
### When two arguments form one idea
|
|
25
18
|
|
|
26
|
-
|
|
19
|
+
If the first two arguments are coordinates of a single thing, a label like
|
|
20
|
+
`atRow:` would glue the preposition to only one of them. Keep the preposition in
|
|
21
|
+
the base name and label each part:
|
|
27
22
|
|
|
28
23
|
```swift
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// BAD - forces x and y into a single prepositional phrase
|
|
33
|
-
a.move(toX: b, y: c)
|
|
24
|
+
grid.cellAt(row: r, column: c) // row and column together locate one cell
|
|
25
|
+
grid.cell(atRow: r, column: c) // avoid: "at" seems to belong to row only
|
|
34
26
|
```
|
|
35
27
|
|
|
36
|
-
|
|
37
|
-
// GOOD - row and column are parts of a single abstraction (a cell position)
|
|
38
|
-
table.cellAt(row: r, column: c)
|
|
39
|
-
|
|
40
|
-
// BAD
|
|
41
|
-
table.cell(atRow: r, column: c)
|
|
42
|
-
```
|
|
28
|
+
The same reasoning gives `moveTo(x:y:)` rather than `move(toX:y:)`.
|
|
43
29
|
|
|
44
|
-
###
|
|
30
|
+
### Several prepositions
|
|
45
31
|
|
|
46
|
-
When
|
|
32
|
+
When each argument has its own relationship to the operation, each gets its
|
|
33
|
+
own prepositional label:
|
|
47
34
|
|
|
48
35
|
```swift
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// GOOD
|
|
53
|
-
view.transition(from: oldState, to: newState, duration: 0.3)
|
|
36
|
+
shelf.move(book, from: source, to: destination)
|
|
37
|
+
theme.transition(from: light, to: dark, duration: 0.3)
|
|
54
38
|
```
|
|
55
39
|
|
|
56
|
-
## Grammatical
|
|
40
|
+
## Grammatical phrases
|
|
57
41
|
|
|
58
|
-
|
|
42
|
+
If the first argument simply continues the sentence the base name began, it
|
|
43
|
+
needs no label:
|
|
59
44
|
|
|
60
45
|
```swift
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// GOOD - "contains element"
|
|
65
|
-
array.contains(element)
|
|
46
|
+
stack.addSubview(child)
|
|
47
|
+
tags.contains(element)
|
|
66
48
|
```
|
|
67
49
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
If the label would start with words that belong in the base name, move them.
|
|
50
|
+
Words that would lead the label belong in the base name instead:
|
|
71
51
|
|
|
72
52
|
```swift
|
|
73
|
-
//
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// BAD - should be part of the base name
|
|
77
|
-
remove(boxesHavingLength: 12)
|
|
53
|
+
warehouse.removeBoxes(havingLength: 12) // good
|
|
54
|
+
warehouse.remove(boxesHavingLength: 12) // avoid
|
|
78
55
|
```
|
|
79
56
|
|
|
80
|
-
##
|
|
57
|
+
## Conversions
|
|
81
58
|
|
|
82
|
-
|
|
59
|
+
### Value-preserving: no label
|
|
83
60
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
String(someCharacter) // Character is always a valid String
|
|
87
|
-
Double(someFloat) // Float always fits in Double
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**Narrowing or lossy** - the conversion may lose information or change representation. Use a descriptive label.
|
|
61
|
+
The new value represents the old one exactly, so the call reads as a type
|
|
62
|
+
conversion and nothing needs explaining.
|
|
91
63
|
|
|
92
64
|
```swift
|
|
93
|
-
Int64(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
Int(exactly: someDouble) // may return nil
|
|
65
|
+
Int64(someUInt32)
|
|
66
|
+
String(someCharacter)
|
|
67
|
+
Double(someFloat)
|
|
97
68
|
```
|
|
98
69
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```swift
|
|
102
|
-
String(utf8String: cString) // interprets as UTF-8
|
|
103
|
-
Data(contentsOf: url) // reads from file
|
|
104
|
-
URL(string: urlString) // parses string as URL
|
|
105
|
-
```
|
|
70
|
+
### Narrowing or lossy: a label that says how
|
|
106
71
|
|
|
107
|
-
|
|
72
|
+
| Initializer | What the label warns about |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `Int64(truncating:)` | bits or precision are dropped |
|
|
75
|
+
| `UInt32(clamping:)` | out-of-range values are pinned to the limits |
|
|
76
|
+
| `String(describing:)` | a debug-style text description, not a value conversion |
|
|
77
|
+
| `Int(exactly:)` | returns `nil` unless the value converts without loss |
|
|
108
78
|
|
|
109
|
-
|
|
79
|
+
### A different representation: the label names the interpretation
|
|
110
80
|
|
|
111
81
|
```swift
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/// - Returns: The index of `element`, or `nil` if not found.
|
|
116
|
-
func index(of element: Element) -> Int?
|
|
82
|
+
String(utf8String: cString)
|
|
83
|
+
try Data(contentsOf: fileURL)
|
|
84
|
+
URL(string: "https://example.com")
|
|
117
85
|
```
|
|
118
86
|
|
|
119
|
-
|
|
87
|
+
## Parameter names are documentation
|
|
88
|
+
|
|
89
|
+
A parameter name may never appear at the call site, but it appears in the
|
|
90
|
+
generated documentation and in the doc comment. Pick names that read well
|
|
91
|
+
there.
|
|
120
92
|
|
|
121
93
|
```swift
|
|
122
|
-
|
|
123
|
-
///
|
|
124
|
-
///
|
|
125
|
-
|
|
94
|
+
extension Roster {
|
|
95
|
+
/// Returns the position of `member` in the roster, if present.
|
|
96
|
+
///
|
|
97
|
+
/// - Parameter member: The person to look for.
|
|
98
|
+
/// - Returns: The index of `member`, or `nil` if they are not listed.
|
|
99
|
+
func index(of member: Person) -> Int? {
|
|
100
|
+
people.firstIndex(of: member)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
126
103
|
```
|
|
127
104
|
|
|
128
|
-
|
|
105
|
+
Compare `func index(of p: Person)`: the doc comment would have to talk about
|
|
106
|
+
"`p`", which tells the reader nothing. Use whole English words for parameter
|
|
107
|
+
names; single letters and abbreviations make the documentation worse.
|
|
129
108
|
|
|
130
|
-
## Default
|
|
109
|
+
## Default arguments instead of method families
|
|
131
110
|
|
|
132
|
-
|
|
111
|
+
One method with defaults is easier to learn than several near-identical
|
|
112
|
+
overloads:
|
|
133
113
|
|
|
134
114
|
```swift
|
|
135
|
-
|
|
136
|
-
func
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
) ->
|
|
115
|
+
extension Transcoder {
|
|
116
|
+
func transcode(
|
|
117
|
+
_ video: Video,
|
|
118
|
+
preset: Preset = .standard,
|
|
119
|
+
preservesMetadata: Bool = true
|
|
120
|
+
) async throws -> Video {
|
|
121
|
+
try await engine.run(video, preset: preset, metadata: preservesMetadata)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Instead of transcode(_:), transcode(_:preset:) and
|
|
126
|
+
// transcode(_:preset:preservesMetadata:)
|
|
141
127
|
```
|
|
142
128
|
|
|
129
|
+
### Ordering
|
|
130
|
+
|
|
131
|
+
Required parameters come first and defaulted ones last. The required
|
|
132
|
+
parameters usually carry the meaning and form the grammatical core of the
|
|
133
|
+
call, so they should read first:
|
|
134
|
+
|
|
143
135
|
```swift
|
|
144
|
-
|
|
145
|
-
func
|
|
146
|
-
|
|
147
|
-
|
|
136
|
+
struct Glossary {
|
|
137
|
+
func lookup(
|
|
138
|
+
_ term: String,
|
|
139
|
+
in scope: Scope = .everything,
|
|
140
|
+
limit: Int = 25,
|
|
141
|
+
startingAt offset: Int = 0
|
|
142
|
+
) -> [Entry] {
|
|
143
|
+
index.matches(for: term, in: scope).dropFirst(offset).prefix(limit).map { $0 }
|
|
144
|
+
}
|
|
145
|
+
}
|
|
148
146
|
```
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
Place parameters with defaults at the end. Parameters without defaults typically carry more meaning and form the grammatical base of the call site.
|
|
148
|
+
Exception: a trailing closure that callers most often supply can follow the
|
|
149
|
+
defaulted parameters, so it can still be written as a trailing closure.
|
|
153
150
|
|
|
154
151
|
```swift
|
|
155
|
-
|
|
156
|
-
func
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
152
|
+
final class SettingsStore {
|
|
153
|
+
func observe(
|
|
154
|
+
_ key: SettingKey,
|
|
155
|
+
initial: Bool = true,
|
|
156
|
+
onChange handler: @escaping (SettingValue) -> Void
|
|
157
|
+
) -> Observation {
|
|
158
|
+
registry.add(key, emitsCurrentValue: initial, handler: handler)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// store.observe(.theme) { newValue in apply(newValue) }
|
|
162
163
|
```
|
|
163
|
-
|
|
164
|
-
Exception: when a trailing closure is the most common override, it may come after defaulted parameters.
|