Accessorysetupkit

iOS AccessorySetupKit Picker, Discovery-Deskriptoren und CoreBluetooth/Wi-Fi-Übergabe

von dpearson2699 · dpearson2699/swift-ios-skills

Getestet · Funktioniert ★ 8.8/10

Accessorysetupkit — iOS AccessorySetupKit Picker, Discovery-Deskriptoren und CoreBluetooth/Wi-Fi-Übergabe

Was es kann

Referenz-Skill für Apples AccessorySetupKit (iOS 18+): erforderliche Info.plist-Schlüssel, ASDiscoveryDescriptor-Matching-Regeln für BLE- und Wi-Fi-Zubehör, ASAccessorySession-Ereignisreihenfolge und die Übergabe an CoreBluetooth oder NEHotspotConfiguration nach dem Pairing. Wird ausgelöst beim Erstellen eines Zubehör-Pairing-Flows, Schreiben von Discovery-Deskriptoren, Behandeln von Zubehör-Session-Ereignissen oder Migrieren bestehender CoreBluetooth-autorisierter Geräte zum System-Picker. Liefert eine 636-zeilige Musterdatei, die benutzerdefinierte Filterung, Entfernungsbehandlung, Fehlerbehebung und ein SwiftUI-Manager-Muster abdeckt.

Testbericht

Installiert in einem temporären HOME (export HOME=$(mktemp -d)) über git clone + cp; Frontmatter wurde sauber mit nur name+description geparst, und alle drei stichprobenartig überprüften Pfade lieferten HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Ein grep nach curl|sh, base64-Blobs, Anmelde-/Token-Strings, absoluten /Users-Pfaden und Injection-Phrasierung über SKILL.md und die Musterdatei ergab null Treffer. Trigger-Phrasierungen bewertet: SOLLTE auslösen – „Füge einen System-Zubehör-Picker hinzu, damit Benutzer unser BLE-Thermostat ohne Bluetooth-Berechtigungsaufforderung koppeln können“ (ja), „Welche ASDiscoveryDescriptor-Felder passen zu einem Wi-Fi-Zubehör über das SSID-Präfix?“ (ja), „Wir scannen heute mit CBCentralManager; migriere unsere gekoppelten Geräte zum iOS 18 Zubehör-Setup-Flow“ (ja); SOLLTE NICHT auslösen – „Schreibe einen CoreBluetooth GATT-Client, der Herzfrequenzbenachrichtigungen auf einem bereits gekoppelten Peripheriegerät abonniert“ (korrekt übersprungen, Post-Pairing GATT ist außerhalb des Umfangs) und „Richte NEHotspotConfiguration ein, um einem Wi-Fi-Netzwerk beizutreten, das der Benutzer manuell eingegeben hat“ (korrekt übersprungen, kein Zubehör). Ausgabetest: schrieb baseline.swift.md, dann skill.swift.md für dieselbe Aufgabe. Die Baseline setzte descriptor.bluetoothNameSubstring = „ThermoX“, deklarierte aber nur NSAccessorySetupBluetoothServices in Info.plist – den dokumentierten Absturzfall während der Erkennung; sie fügte auch eine unnötige NSBluetoothAlwaysUsageDescription hinzu, baute CBCentralManager in init() und rief retrievePeripherals auf, ohne auf .poweredOn zu warten, erfasste self stark in session.activate, entpackte UIImage(named:)! zwangsweise und behandelte nur .accessoryAdded/.accessoryRemoved hinter einem default: (sodass .activated zuvor gekoppelte Zubehörteile nie wieder verbindet und kein @unknown default). Die Skill-Version fügte NSAccessorySetupBluetoothNames hinzu, entfernte den Usage-Description-Schlüssel, verwendete [weak self], verschob die Verbindung von .accessoryAdded zu .pickerDidDismiss über ein pendingAccessory-Feld, schützte retrievePeripherals bei .poweredOn mit einem Retry in centralManagerDidUpdateState und deckte .activated/.invalidated/@unknown default ab. Docs um einen Punkt abgewertet: Ich konnte die von ihr zitierten iOS 26.1-only APIs (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) nicht anhand der Live-Apple-Dokumentation überprüfen, und hier wurde kein Swift kompiliert.

Getestet am: 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

Befehle & Beispiel-Prompts

  • /accessorysetupkitiOS AccessorySetupKit Picker, Discovery-Deskriptoren und CoreBluetooth/Wi-Fi-Übergabe

Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):

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