@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
|
@@ -1,297 +1,230 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Adopting and Configuring SwiftLint
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Back to [SKILL.md](../SKILL.md).
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Ways to install
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- [Rollout Strategy for Existing Codebases](#rollout-strategy-for-existing-codebases)
|
|
7
|
+
| Method | Command or source | Good fit |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| SwiftLintPlugins package | SwiftPM dependency on `SimplyDanny/SwiftLintPlugins` | The default whenever a `Package.swift` exists; the version is pinned by resolution |
|
|
10
|
+
| Homebrew | `brew install swiftlint` | a CLI on build agents, in git hooks, or on its own |
|
|
11
|
+
| Mint | `mint install realm/SwiftLint` | projects whose tool versions Mint already manages |
|
|
12
|
+
| CocoaPods | `pod 'SwiftLint'` | Older CocoaPods projects; the binary lands at `${PODS_ROOT}/SwiftLint/swiftlint` |
|
|
13
|
+
| Release binary | the project's GitHub releases page (github.com/realm/SwiftLint/releases) | Locked-down CI images |
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
For day-to-day local linting the build tool plugin beats every other option on
|
|
16
|
+
the list. Setup steps are in
|
|
17
|
+
[integrations guide](plugins-run-scripts-and-integrations.md).
|
|
17
18
|
|
|
18
|
-
##
|
|
19
|
+
## How SwiftLint finds its config
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
- The top-level `.swiftlint.yml` is the main configuration. For each file,
|
|
22
|
+
SwiftLint searches upward from the file's folder, and the nearest
|
|
23
|
+
`.swiftlint.yml` it meets may be merged on top.
|
|
24
|
+
- No file anywhere means the built-in defaults apply.
|
|
25
|
+
- The root file governs the whole tree unless a nested file refines a subtree.
|
|
26
|
+
- A given file gets at most one nested config merged in.
|
|
27
|
+
- Passing `--config` switches discovery off, nested lookup included.
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
Where each runner starts looking:
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
| Runner | Working directory |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Build tool plugin | the highest `.swiftlint.yml` inside the package or project folder, or the package/project root when there is none |
|
|
34
|
+
| Run script phase | `${SRCROOT}`, or whatever build setting the script uses |
|
|
35
|
+
| Plain CLI | the shell's current directory |
|
|
31
36
|
|
|
32
|
-
|
|
37
|
+
## Key-by-key
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
- A project root config applies to all files unless a nested config refines it for a subtree.
|
|
36
|
-
- At most one nested `.swiftlint.yml` is merged for any given file.
|
|
37
|
-
- Passing `--config` overrides automatic discovery entirely and disables nested-config lookup.
|
|
38
|
-
|
|
39
|
-
Working directory behavior:
|
|
40
|
-
- The build tool plugin uses the topmost `.swiftlint.yml` within the package/project directory as its working directory, and falls back to the package/project root if no config file is found there.
|
|
41
|
-
- Run scripts use `${SRCROOT}` or the Xcode build setting for the working directory.
|
|
42
|
-
- CLI invocations use the shell's current directory.
|
|
43
|
-
|
|
44
|
-
## Configuration Deep Dive
|
|
45
|
-
|
|
46
|
-
### Rule control keys
|
|
39
|
+
### Rule selection
|
|
47
40
|
|
|
48
41
|
```yaml
|
|
49
|
-
# Enable defaults minus these:
|
|
50
|
-
disabled_rules:
|
|
51
|
-
- trailing_whitespace
|
|
52
|
-
- todo
|
|
53
|
-
|
|
54
|
-
# Add these on top of defaults:
|
|
55
42
|
opt_in_rules:
|
|
56
|
-
- empty_count
|
|
57
43
|
- closure_spacing
|
|
58
|
-
- sorted_imports
|
|
59
|
-
- vertical_whitespace_opening_braces
|
|
60
44
|
- contains_over_filter_count
|
|
45
|
+
- empty_count
|
|
61
46
|
- first_where
|
|
62
47
|
- last_where
|
|
63
48
|
- modifier_order
|
|
49
|
+
- sorted_imports
|
|
50
|
+
- vertical_whitespace_opening_braces
|
|
64
51
|
```
|
|
65
52
|
|
|
66
|
-
`only_rules`
|
|
53
|
+
`only_rules` starts from nothing and runs exactly what you list:
|
|
67
54
|
|
|
68
55
|
```yaml
|
|
69
56
|
only_rules:
|
|
70
|
-
- line_length
|
|
71
57
|
- force_cast
|
|
72
58
|
- force_try
|
|
59
|
+
- line_length
|
|
73
60
|
```
|
|
74
61
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Analyzer rules require passing compiler logs to SwiftLint. They are not included in default or opt-in sets:
|
|
62
|
+
Analyzer rules sit outside both the default and opt-in sets and have their own
|
|
63
|
+
key:
|
|
78
64
|
|
|
79
65
|
```yaml
|
|
80
66
|
analyzer_rules:
|
|
81
|
-
- unused_import
|
|
82
67
|
- unused_declaration
|
|
68
|
+
- unused_import
|
|
83
69
|
```
|
|
84
70
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### Path control
|
|
71
|
+
### Paths
|
|
88
72
|
|
|
89
73
|
```yaml
|
|
90
|
-
included:
|
|
91
|
-
- Sources
|
|
92
|
-
- Tests
|
|
93
|
-
|
|
94
74
|
excluded:
|
|
95
|
-
- .build
|
|
96
|
-
- DerivedData
|
|
97
|
-
- Carthage
|
|
98
|
-
- Pods
|
|
99
|
-
- "**/Generated"
|
|
100
75
|
- "**/Snapshots"
|
|
76
|
+
- "**/Generated"
|
|
77
|
+
- Pods
|
|
78
|
+
- Carthage
|
|
79
|
+
- DerivedData
|
|
80
|
+
- .build
|
|
101
81
|
```
|
|
102
82
|
|
|
103
|
-
`included` and `excluded`
|
|
83
|
+
`included` and `excluded` take globs. Paths resolve relative to the folder that
|
|
84
|
+
holds the config file.
|
|
104
85
|
|
|
105
|
-
###
|
|
86
|
+
### Output and exit behaviour
|
|
106
87
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
# reporter: json
|
|
110
|
-
# reporter: sarif
|
|
111
|
-
# reporter: checkstyle
|
|
112
|
-
# reporter: csv
|
|
113
|
-
# reporter: emoji
|
|
114
|
-
# reporter: github-actions-logging
|
|
115
|
-
```
|
|
88
|
+
Reporters: `xcode` (the default), `json`, `sarif`, `checkstyle`, `csv`,
|
|
89
|
+
`emoji`, `github-actions-logging`.
|
|
116
90
|
|
|
117
|
-
|
|
91
|
+
- `sarif` for code scanning uploads.
|
|
92
|
+
- `json` when your own scripts consume the output.
|
|
93
|
+
- `github-actions-logging` for inline pull request annotations with no SARIF
|
|
94
|
+
upload step.
|
|
118
95
|
|
|
119
|
-
|
|
96
|
+
Flags:
|
|
120
97
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
allow_zero_lintable_files: true
|
|
125
|
-
|
|
98
|
+
- `strict: true` makes warnings count as errors.
|
|
99
|
+
- `lenient: true` makes errors count as warnings, which helps during the first
|
|
100
|
+
days of adoption.
|
|
101
|
+
- `allow_zero_lintable_files: true` keeps CI green on jobs that happen to see
|
|
102
|
+
no Swift files.
|
|
126
103
|
|
|
127
|
-
##
|
|
104
|
+
## Tuning thresholds
|
|
128
105
|
|
|
129
|
-
Most rules accept `warning` and `error`
|
|
106
|
+
Most measuring rules accept a `warning` and an `error` level.
|
|
130
107
|
|
|
131
108
|
```yaml
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
error:
|
|
135
|
-
|
|
136
|
-
ignores_urls: true
|
|
137
|
-
ignores_interpolated_strings: true
|
|
109
|
+
identifier_name:
|
|
110
|
+
excluded: [i, id, j, to, x, y]
|
|
111
|
+
min_length: {error: 1, warning: 2}
|
|
112
|
+
max_length: {error: 60, warning: 50}
|
|
138
113
|
|
|
139
|
-
|
|
140
|
-
warning: 300
|
|
141
|
-
error: 500
|
|
114
|
+
nesting: {function_level: 3, type_level: 2}
|
|
142
115
|
|
|
143
|
-
|
|
144
|
-
warning: 500
|
|
145
|
-
error: 1000
|
|
146
|
-
ignore_comment_only_lines: true
|
|
116
|
+
cyclomatic_complexity: {ignores_case_statements: true, error: 20, warning: 10}
|
|
147
117
|
|
|
148
|
-
function_body_length:
|
|
149
|
-
warning: 50
|
|
150
|
-
error: 100
|
|
118
|
+
function_body_length: {error: 100, warning: 50}
|
|
151
119
|
|
|
152
|
-
|
|
153
|
-
warning: 10
|
|
154
|
-
error: 20
|
|
155
|
-
ignores_case_statements: true
|
|
120
|
+
type_body_length: {error: 500, warning: 300}
|
|
156
121
|
|
|
157
|
-
|
|
158
|
-
type_level: 2
|
|
159
|
-
function_level: 3
|
|
122
|
+
file_length: {ignore_comment_only_lines: true, error: 1000, warning: 500}
|
|
160
123
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
error: 60
|
|
168
|
-
excluded:
|
|
169
|
-
- id
|
|
170
|
-
- x
|
|
171
|
-
- y
|
|
172
|
-
- i
|
|
173
|
-
- j
|
|
174
|
-
- to
|
|
124
|
+
line_length:
|
|
125
|
+
ignores_urls: true
|
|
126
|
+
ignores_comments: true
|
|
127
|
+
ignores_interpolated_strings: true
|
|
128
|
+
error: 200
|
|
129
|
+
warning: 140
|
|
175
130
|
```
|
|
176
131
|
|
|
177
|
-
|
|
132
|
+
To see which keys a rule accepts, run `swiftlint rules <rule_name>` or open
|
|
133
|
+
its page in the rule directory.
|
|
178
134
|
|
|
179
|
-
## Environment
|
|
135
|
+
## Environment variables in config values
|
|
180
136
|
|
|
181
|
-
|
|
137
|
+
Values can interpolate environment variables:
|
|
182
138
|
|
|
183
139
|
```yaml
|
|
184
|
-
included:
|
|
185
|
-
- ${PROJECT_DIR}/Sources
|
|
186
|
-
|
|
187
140
|
excluded:
|
|
188
|
-
- ${PROJECT_DIR}/Generated
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
This is useful when SwiftLint is invoked from different working directories (e.g., run scripts vs CLI).
|
|
192
|
-
|
|
193
|
-
## Nested and Child Configurations
|
|
194
|
-
|
|
195
|
-
SwiftLint supports both explicit parent/child config chaining and automatic nested configs.
|
|
196
|
-
|
|
197
|
-
### Explicit local parent/child configs
|
|
198
|
-
|
|
199
|
-
Use `child_config` and `parent_config` to layer configs deliberately:
|
|
200
|
-
|
|
201
|
-
```yaml
|
|
202
|
-
# .swiftlint.yml
|
|
203
|
-
child_config: .swiftlint-strict.yml
|
|
204
|
-
parent_config: Base/.swiftlint-base.yml
|
|
141
|
+
- ${PROJECT_DIR}/Generated # code generator output
|
|
142
|
+
included:
|
|
143
|
+
- ${PROJECT_DIR}/Sources # app code
|
|
205
144
|
```
|
|
206
145
|
|
|
207
|
-
|
|
146
|
+
This keeps paths stable when the same config is used from a run script and
|
|
147
|
+
from a terminal that starts in a different folder.
|
|
208
148
|
|
|
209
|
-
|
|
149
|
+
## Parent, child and nested configs
|
|
210
150
|
|
|
211
|
-
|
|
151
|
+
Two mechanisms exist: explicit chaining and automatic nesting.
|
|
212
152
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
│ └── .swiftlint.yml # stricter config for production code (optional)
|
|
218
|
-
└── Tests/
|
|
219
|
-
└── .swiftlint.yml # relaxed config for test code
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Example child config for tests:
|
|
153
|
+
- `child_config: <path>` layers another file on top, with higher priority.
|
|
154
|
+
- `parent_config: <path>` pulls in a file underneath, with lower priority.
|
|
155
|
+
- Automatic nesting: a `.swiftlint.yml` inside a subfolder (a stricter one in
|
|
156
|
+
`Sources/`, a looser one in `Tests/`) acts as a child for that subtree.
|
|
223
157
|
|
|
224
158
|
```yaml
|
|
225
159
|
# Tests/.swiftlint.yml
|
|
226
160
|
disabled_rules:
|
|
227
|
-
- force_unwrapping
|
|
228
|
-
- force_try
|
|
229
161
|
- force_cast
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
function_body_length:
|
|
236
|
-
warning: 100
|
|
237
|
-
error: 200
|
|
162
|
+
- force_try
|
|
163
|
+
- force_unwrapping
|
|
164
|
+
function_body_length: {error: 200, warning: 100}
|
|
165
|
+
file_length: {error: 1500, warning: 800}
|
|
238
166
|
```
|
|
239
167
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
For `included` and `excluded`, SwiftLint applies special merge behavior: paths are resolved relative to each config file, child `excluded` entries can remove parent `included` entries, and child `included` entries can re-include paths excluded by the parent.
|
|
168
|
+
How merging behaves:
|
|
243
169
|
|
|
244
|
-
|
|
170
|
+
- Rule on/off state is merged. A child changes a rule only when it says the
|
|
171
|
+
opposite about that same rule: a rule the parent disabled stays off unless
|
|
172
|
+
the child opts it in, and a parent opt-in stays on unless the child disables
|
|
173
|
+
it.
|
|
174
|
+
- `included` and `excluded` are special. Each is resolved relative to its own
|
|
175
|
+
config file, a child's `excluded` can carve paths out of the parent's
|
|
176
|
+
`included`, and a child's `included` can bring back paths the parent
|
|
177
|
+
excluded.
|
|
178
|
+
- Nested files only take part in automatic discovery. `--config` turns them
|
|
179
|
+
off.
|
|
180
|
+
- With several `--config` flags, each later file overrides the earlier ones.
|
|
245
181
|
|
|
246
|
-
|
|
182
|
+
## Remote parent configs
|
|
247
183
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
```sh
|
|
251
|
-
swiftlint --config .swiftlint.yml --config .swiftlint-strict.yml
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
## Remote Configuration
|
|
255
|
-
|
|
256
|
-
Pull a shared team configuration using `parent_config` with an HTTPS URL:
|
|
184
|
+
A shared team config can live behind HTTPS:
|
|
257
185
|
|
|
258
186
|
```yaml
|
|
259
|
-
parent_config: https://example.
|
|
260
|
-
remote_timeout: 2
|
|
261
|
-
remote_timeout_if_cached: 1
|
|
187
|
+
parent_config: https://config.example.org/lint/swiftlint-base.yml
|
|
188
|
+
remote_timeout: 2
|
|
189
|
+
remote_timeout_if_cached: 1
|
|
262
190
|
```
|
|
263
191
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
192
|
+
- `remote_timeout` defaults to 2 seconds.
|
|
193
|
+
- `remote_timeout_if_cached` is the shorter wait used when a cached copy is on
|
|
194
|
+
disk.
|
|
195
|
+
- SwiftLint caches the download. If a fetch fails or times out it falls back
|
|
196
|
+
to the cache; with no cache and no network it stops with an error.
|
|
197
|
+
- This makes lint depend on the network. Check that CI can reach the URL or
|
|
198
|
+
keep a local copy to fall back on.
|
|
269
199
|
|
|
270
|
-
|
|
200
|
+
## Rolling out on an existing codebase
|
|
271
201
|
|
|
272
|
-
### Phase 1:
|
|
202
|
+
### Phase 1: take a snapshot
|
|
273
203
|
|
|
274
|
-
1. Install
|
|
275
|
-
2.
|
|
276
|
-
|
|
277
|
-
|
|
204
|
+
1. Install with the defaults or the starter config from SKILL.md.
|
|
205
|
+
2. Look at what you are dealing with:
|
|
206
|
+
`swiftlint lint --reporter json | python3 -m json.tool | less`
|
|
207
|
+
3. Record it: `swiftlint --write-baseline .swiftlint.baseline`.
|
|
208
|
+
4. Put both files, the new baseline and `.swiftlint.yml`, in one commit.
|
|
209
|
+
5. CI now runs with `--baseline` and passes.
|
|
278
210
|
|
|
279
|
-
### Phase 2:
|
|
211
|
+
### Phase 2: no new violations
|
|
280
212
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
213
|
+
- CI runs `swiftlint --strict --baseline .swiftlint.baseline`.
|
|
214
|
+
- Developers see warnings in Xcode through the plugin.
|
|
215
|
+
- `--fix` stays out of CI and out of build phases.
|
|
284
216
|
|
|
285
|
-
### Phase 3:
|
|
217
|
+
### Phase 3: pay it down
|
|
286
218
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
219
|
+
- Pick the rule with the most hits and fix it in a pull request of its own.
|
|
220
|
+
- Regenerate the baseline after each such PR.
|
|
221
|
+
- Turn on further opt-in rules one per change.
|
|
222
|
+
- The goal is to delete the baseline file.
|
|
291
223
|
|
|
292
|
-
### Phase 4:
|
|
224
|
+
### Phase 4: steady state
|
|
293
225
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
226
|
+
- The baseline is empty or gone.
|
|
227
|
+
- CI runs `--strict`; the plugin covers local builds.
|
|
228
|
+
- Proposals for extra opt-in rules are reviewed by the team first.
|
|
229
|
+
- Consider analyzer rules such as `unused_import`
|
|
230
|
+
(see [custom rules and analyze](custom-rules-and-analyze.md)).
|