Accessorysetupkit

Selector de iOS AccessorySetupKit, descriptores de descubrimiento y traspaso a CoreBluetooth/Wi-Fi

Por dpearson2699 · dpearson2699/swift-ios-skills

Probado · Funciona ★ 8.8/10

Accessorysetupkit — Selector de iOS AccessorySetupKit, descriptores de descubrimiento y traspaso a CoreBluetooth/Wi-Fi

Qué hace

Habilidad de referencia para AccessorySetupKit de Apple (iOS 18+): claves Info.plist requeridas, reglas de coincidencia ASDiscoveryDescriptor para accesorios BLE y Wi-Fi, orden de eventos ASAccessorySession y el traspaso a CoreBluetooth o NEHotspotConfiguration después del emparejamiento. Se activa al construir un flujo de emparejamiento de accesorios, escribir descriptores de descubrimiento, manejar eventos de sesión de accesorios o migrar dispositivos existentes autorizados por CoreBluetooth al selector del sistema. Incluye un archivo de patrones de 636 líneas que cubre filtrado personalizado, manejo de eliminación, recuperación de errores y un patrón de administrador de SwiftUI.

Informe de la prueba

Instalado en un HOME temporal (export HOME=$(mktemp -d)) vía git clone + cp; el frontmatter se analizó limpiamente con solo name+description, y las tres rutas verificadas al azar devolvieron HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Un grep para curl|sh, blobs base64, cadenas de credenciales/tokens, rutas absolutas /Users y frases de inyección en SKILL.md y el archivo de patrones no devolvió ningún resultado. Frases de activación juzgadas: DEBERÍA activarse - "Añadir un selector de accesorios del sistema para que los usuarios puedan emparejar nuestro termostato BLE sin un aviso de permiso de Bluetooth" (sí), "¿Qué campos de ASDiscoveryDescriptor coinciden con un accesorio Wi-Fi por prefijo SSID?" (sí), "Hoy escaneamos con CBCentralManager; migrar nuestros dispositivos emparejados al flujo de configuración de accesorios de iOS 18" (sí); NO DEBERÍA activarse - "Escribir un cliente GATT de CoreBluetooth que se suscriba a notificaciones de frecuencia cardíaca en un periférico ya emparejado" (omitido correctamente, GATT post-emparejamiento está fuera de alcance) y "Configurar NEHotspotConfiguration para unirse a una red Wi-Fi que el usuario escribió manualmente" (omitido correctamente, sin accesorio). Prueba de salida: escribí baseline.swift.md y luego skill.swift.md para la misma tarea. La línea base estableció descriptor.bluetoothNameSubstring = "ThermoX" pero declaró solo NSAccessorySetupBluetoothServices en Info.plist - el caso documentado de fallo durante el descubrimiento; también añadió un innecesario NSBluetoothAlwaysUsageDescription, construyó CBCentralManager en init() y llamó a retrievePeripherals sin esperar a .poweredOn, capturó self fuertemente en session.activate, desempaquetó forzosamente UIImage(named:)!, y manejó solo .accessoryAdded/.accessoryRemoved detrás de un default: (por lo que .activated nunca reconecta accesorios previamente emparejados, y no hay @unknown default). La versión de la habilidad añadió NSAccessorySetupBluetoothNames, eliminó la clave de descripción de uso, usó [weak self], pospuso la conexión de .accessoryAdded a .pickerDidDismiss a través de un campo pendingAccessory, restringió retrievePeripherals en .poweredOn con un reintento en centralManagerDidUpdateState, y cubrió .activated/.invalidated/@unknown default. Documentación penalizada un punto: no pude verificar las APIs solo de iOS 26.1 que cita (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) contra la documentación de Apple en vivo, y ningún Swift aquí fue compilado.

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

Instalación

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

Comandos y prompts de ejemplo

  • /accessorysetupkitSelector de iOS AccessorySetupKit, descriptores de descubrimiento y traspaso a CoreBluetooth/Wi-Fi

Los skills se activan con peticiones en lenguaje natural, sin comandos que memorizar. Tras instalarlo, prompts como estos lo activan (en inglés):

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