Accessorysetupkit

iOS AccessorySetupKit picker, discovery descriptors, en CoreBluetooth/Wi-Fi handoff

Door dpearson2699 · dpearson2699/swift-ios-skills

Getest · Werkt ★ 8.8/10

Accessorysetupkit — iOS AccessorySetupKit picker, discovery descriptors, en CoreBluetooth/Wi-Fi handoff

Wat het doet

Referentie skill voor Apple's AccessorySetupKit (iOS 18+): vereiste Info.plist keys, ASDiscoveryDescriptor matching rules voor BLE en Wi-Fi accessoires, ASAccessorySession event ordering, en de handoff naar CoreBluetooth of NEHotspotConfiguration na het koppelen. Activeert bij het bouwen van een accessoire-koppelingsflow, het schrijven van discovery descriptors, het afhandelen van accessoire-sessie-events, of het migreren van bestaande CoreBluetooth-geautoriseerde apparaten naar de systeemkiezer. Levert een 636-regelig patterns bestand dat custom filtering, removal handling, error recovery, en een SwiftUI manager patroon behandelt.

Testrapport

Geïnstalleerd in een tijdelijke HOME (export HOME=$(mktemp -d)) via git clone + cp; frontmatter schoon geparset met alleen name+description, en alle drie willekeurig gecontroleerde paden retourneerden HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Een grep naar curl|sh, base64 blobs, credential/token strings, absolute /Users paden en injection phrasing over SKILL.md en het patterns bestand retourneerde nul hits. Triggerfraseringen beoordeeld: MOET activeren - "Voeg een systeem accessoire kiezer toe zodat gebruikers onze BLE thermostaat kunnen koppelen zonder een Bluetooth toestemmingsprompt" (ja), "Welke ASDiscoveryDescriptor velden matchen een Wi-Fi accessoire op SSID prefix?" (ja), "We scannen vandaag met CBCentralManager; migreer onze gekoppelde apparaten naar de iOS 18 accessoire setup flow" (ja); MOET NIET activeren - "Schrijf een CoreBluetooth GATT client die zich abonneert op hartslagmeldingen op een reeds gekoppeld randapparaat" (correct overgeslagen, post-pairing GATT valt buiten de scope) en "Stel NEHotspotConfiguration in om verbinding te maken met een Wi-Fi netwerk dat de gebruiker handmatig heeft ingevoerd" (correct overgeslagen, geen accessoire). Output test: schreef baseline.swift.md en daarna skill.swift.md voor dezelfde taak. De baseline stelde descriptor.bluetoothNameSubstring = "ThermoX" in, maar declareerde alleen NSAccessorySetupBluetoothServices in Info.plist - de gedocumenteerde crash-tijdens-discovery case; het voegde ook een onnodige NSBluetoothAlwaysUsageDescription toe, bouwde CBCentralManager in init() en riep retrievePeripherals aan zonder te wachten op .poweredOn, legde self sterk vast in session.activate, force-unwrapped UIImage(named:)!, en behandelde alleen .accessoryAdded/.accessoryRemoved achter een default: (dus .activated herverbindt nooit eerder gekoppelde accessoires, en geen @unknown default). De skill-versie voegde NSAccessorySetupBluetoothNames toe, liet de usage-description key vallen, gebruikte [weak self], stelde de connectie uit van .accessoryAdded naar .pickerDidDismiss via een pendingAccessory veld, bewaakte retrievePeripherals op .poweredOn met een retry in centralManagerDidUpdateState, en behandelde .activated/.invalidated/@unknown default. Docs afgewaardeerd met één punt: ik kon de iOS 26.1-only API's die het noemt (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) niet verifiëren tegen live Apple docs, en geen Swift hier werd gecompileerd.

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

Installatie

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

Commando's en voorbeeldprompts

  • /accessorysetupkitiOS AccessorySetupKit picker, discovery descriptors, en CoreBluetooth/Wi-Fi handoff

Skills reageren op gewone verzoeken — geen commando's om te onthouden. Na installatie activeren prompts zoals deze de skill (in het Engels):

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