Accessorysetupkit
iOS AccessorySetupKit picker, deskryptory odkrywania i przekazanie CoreBluetooth/Wi-Fi
Testowano · Działa
Co robi ten skill
Umiejętność referencyjna dla Apple AccessorySetupKit (iOS 18+): wymagane klucze Info.plist, reguły dopasowania ASDiscoveryDescriptor dla akcesoriów BLE i Wi-Fi, kolejność zdarzeń ASAccessorySession oraz przekazanie do CoreBluetooth lub NEHotspotConfiguration po sparowaniu. Uruchamia się podczas budowania przepływu parowania akcesoriów, pisania deskryptorów odkrywania, obsługi zdarzeń sesji akcesoriów lub migracji istniejących urządzeń autoryzowanych przez CoreBluetooth do systemowego wybieraka. Dostarcza 636-liniowy plik wzorców obejmujący niestandardowe filtrowanie, obsługę usuwania, odzyskiwanie po błędach i wzorzec menedżera SwiftUI.
Raport z testu
Zainstalowano w tymczasowym HOME (export HOME=$(mktemp -d)) za pomocą git clone + cp; frontmatter sparsowany czysto tylko z name+description, a wszystkie trzy sprawdzane ścieżki zwróciły HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Grep dla curl|sh, base64 blobs, credential/token strings, absolute /Users paths i injection phrasing w SKILL.md i pliku wzorców zwrócił zero trafień. Frazy wyzwalające oceniono: POWINNO uruchomić - „Add a system accessory picker so users can pair our BLE thermostat without a Bluetooth permission prompt” (tak), „Which ASDiscoveryDescriptor fields match a Wi-Fi accessory by SSID prefix?” (tak), „We scan with CBCentralManager today; migrate our paired devices to the iOS 18 accessory setup flow” (tak); NIE POWINNO uruchomić - „Write a CoreBluetooth GATT client that subscribes to heart-rate notifications on an already-paired peripheral” (poprawnie pominięte, GATT po sparowaniu jest poza zakresem) i „Set up NEHotspotConfiguration to join a Wi-Fi network the user typed in manually” (poprawnie pominięte, brak akcesorium). Test wyjścia: napisałem baseline.swift.md, a następnie skill.swift.md dla tego samego zadania. Bazowy ustawiał descriptor.bluetoothNameSubstring = „ThermoX”, ale deklarował tylko NSAccessorySetupBluetoothServices w Info.plist — udokumentowany przypadek awarii podczas odkrywania; dodał również niepotrzebny NSBluetoothAlwaysUsageDescription, zbudował CBCentralManager w init() i wywołał retrievePeripherals bez czekania na .poweredOn, silnie przechwycił self w session.activate, force-unwrapped UIImage(named:)!, i obsługiwał tylko .accessoryAdded/.accessoryRemoved za domyślnym: (więc .activated nigdy nie ponownie łączył wcześniej sparowanych akcesoriów, i brak @unknown default). Wersja umiejętności dodała NSAccessorySetupBluetoothNames, usunęła klucz usage-description, użyła [weak self], odroczyła połączenie z .accessoryAdded do .pickerDidDismiss za pomocą pola pendingAccessory, zabezpieczyła retrievePeripherals na .poweredOn z ponowną próbą w centralManagerDidUpdateState, i objęła .activated/.invalidated/@unknown default. Dokumentacja obniżona o jeden punkt: nie mogłem zweryfikować API tylko dla iOS 26.1, które cytuje (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) względem żywej dokumentacji Apple, i żaden Swift tutaj nie został skompilowany.
Testowano: 2026-07-21 · Claude Code 2.x (agent harness)
Instalacja
git clone --depth 1 https://github.com/dpearson2699/swift-ios-skills.git /tmp/accessorysetupkit-src mkdir -p ~/.claude/skills cp -R /tmp/accessorysetupkit-src/skills/accessorysetupkit ~/.claude/skills/accessorysetupkit # No deps, no API keys, no scripts: SKILL.md (14 KB) + references/accessorysetupkit-patterns.md (19 KB) + evals/evals.json # Alternative (whole 86-skill repo, interactive picker): npx skills add dpearson2699/swift-ios-skills # Alternative (Claude Code plugin marketplace): /plugin marketplace add dpearson2699/swift-ios-skills # Usage: model-invoked. Just describe the accessory pairing task inside an iOS project. # License is PolyForm Perimeter 1.0.0 (not OSI open source) - read LICENSE before redistributing
Komendy i przykładowe prompty
/accessorysetupkitiOS AccessorySetupKit picker, deskryptory odkrywania i przekazanie CoreBluetooth/Wi-Fi
Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):
Add a BLE accessory picker using AccessorySetupKitMigrate from CoreBluetooth scanning to AccessorySetupKitDefine a discovery descriptor for my Wi-Fi device