Accessorysetupkit

iOS AccessorySetupKit-väljare, upptäcktsbeskrivningar och CoreBluetooth/Wi-Fi-överlämning

av dpearson2699 · dpearson2699/swift-ios-skills

Testad · Fungerar ★ 8.8/10

Accessorysetupkit — iOS AccessorySetupKit-väljare, upptäcktsbeskrivningar och CoreBluetooth/Wi-Fi-överlämning

Vad den gör

Referensfärdighet för Apples AccessorySetupKit (iOS 18+): obligatoriska Info.plist-nycklar, ASDiscoveryDescriptor-matchningsregler för BLE- och Wi-Fi-tillbehör, ASAccessorySession-händelseordning, och överlämningen till CoreBluetooth eller NEHotspotConfiguration efter parning. Utlöses vid byggande av ett tillbehörsparingsflöde, skrivande av upptäcktsbeskrivningar, hantering av tillbehörssessionshändelser, eller migrering av befintliga CoreBluetooth-auktoriserade enheter till systemväljaren. Levereras med en 636-radig mönsterfil som täcker anpassad filtrering, borttagningshantering, felåterställning och ett SwiftUI-manager-mönster.

Testrapport

Installeras i en temporär HOME (export HOME=$(mktemp -d)) via git clone + cp; frontmatter parsades rent med endast name+description, och alla tre stickprovskontrollerade sökvägar returnerade HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). En grep efter curl|sh, base64-blobbar, credential/token-strängar, absoluta /Users-sökvägar och injektionstext över SKILL.md och mönsterfilen returnerade noll träffar. Utlösningsfraser bedömda: SKULLE utlösas - "Lägg till en systemtillbehörsväljare så att användare kan para ihop vår BLE-termostat utan en Bluetooth-behörighetsfråga" (ja), "Vilka ASDiscoveryDescriptor-fält matchar ett Wi-Fi-tillbehör med SSID-prefix?" (ja), "Vi skannar med CBCentralManager idag; migrera våra parade enheter till iOS 18-tillbehörsinställningsflödet" (ja); SKULLE INTE utlösas - "Skriv en CoreBluetooth GATT-klient som prenumererar på hjärtfrekvensnotifikationer på en redan parad perifer enhet" (korrekt hoppades över, post-parning GATT är utanför omfånget) och "Sätt upp NEHotspotConfiguration för att ansluta till ett Wi-Fi-nätverk som användaren skrev in manuellt" (korrekt hoppades över, inget tillbehör). Utdata-test: skrev baseline.swift.md sedan skill.swift.md för samma uppgift. Baslinjen satte descriptor.bluetoothNameSubstring = "ThermoX" men deklarerade endast NSAccessorySetupBluetoothServices i Info.plist - det dokumenterade krasch-under-upptäcktsfallet; den lade också till en onödig NSBluetoothAlwaysUsageDescription, byggde CBCentralManager i init() och anropade retrievePeripherals utan att vänta på .poweredOn, fångade self starkt i session.activate, force-unwrapped UIImage(named:)!, och hanterade endast .accessoryAdded/.accessoryRemoved bakom en default: (så .activated återansluter aldrig tidigare parade tillbehör, och ingen @unknown default). Färdighetsversionen lade till NSAccessorySetupBluetoothNames, tog bort usage-description-nyckeln, använde [weak self], sköt upp anslutningen från .accessoryAdded till .pickerDidDismiss via ett pendingAccessory-fält, begränsade retrievePeripherals på .poweredOn med ett återförsök i centralManagerDidUpdateState, och täckte .activated/.invalidated/@unknown default. Dokumentation avdragen en poäng: Jag kunde inte verifiera de iOS 26.1-endast API:er den citerar (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) mot live Apple-dokumentation, och ingen Swift här kompilerades.

Testad: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

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

Kommandon och exempelprompter

  • /accessorysetupkitiOS AccessorySetupKit-väljare, upptäcktsbeskrivningar och CoreBluetooth/Wi-Fi-överlämning

Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):

  • Add a BLE accessory picker using AccessorySetupKit
  • Migrate from CoreBluetooth scanning to AccessorySetupKit
  • Define a discovery descriptor for my Wi-Fi device