CommunityCodierung & Entwicklunggithub.com

zhutao100/swift-gui-verifiable-loop-skill

Erstellt und führt eine deterministische, agentenfreundliche geschlossene Schleife für SwiftUI-GUI-Änderungen auf macOS (AppKit) und iOS (UIKit) durch, unter Verwendung von xcodebuild + .xcresult-Nachweisen + xcresulttool-Extraktion, ergänzt um Snapshot-Tests, Barrierefreiheitsprüfungen und kleine XCUITest-Rauchdurchläufe.

Was ist swift-gui-verifiable-loop-skill?

Diese Fähigkeit ermöglicht es einem KI-Agenten (z. B. Claude Code, Cursor, Codex), eine automatisierte Closed-Loop-Prüfung von SwiftUI-Änderungen auf macOS (AppKit) und iOS (UIKit) durchzuführen. Sie verwendet `xcodebuild` zur Kompilierung, erfasst `.xcresult`-Ergebnisse als Beweis, extrahiert diese mit `xcresulttool` und erzeugt berichtsfähige Artefakte wie Snapshot-Vergleiche, Accessibility-Inspektionen und minimale XCUITest-Smoke-Tests. Dies ist nützlich, um sicherzustellen, dass GUI-Änderungen deterministisch sind, keine visuellen Regressionen einführen und die Bedienbarkeit bewahren. Der Agent erhält eine vollständige Rückmeldungsschleife: Er kann eine SwiftUI-Reproduktion schreiben, ausführen, die Ergebnisse analysieren und gegebenenfalls Korrekturen iterieren – alles ohne menschliches Eingreifen. Die Fähigkeit eignet sich besonders für CI/CD-Pipelines und agentengetriebene Entwicklungsworkflows, bei denen visuelle Korrektheit und Barrierefreiheit automatisch überprüft werden müssen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add zhutao100/swift-gui-verifiable-loop-skill

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht swift-gui-verifiable-loop-skill?

Fähigkeit zum Erstellen und Ausführen einer deterministischen, agentenfreundlichen geschlossenen Schleife für SwiftUI-GUI-Änderungen auf macOS (AppKit) und iOS (UIKit) unter Verwendung von xcodebuild + .xcresult-Nachweisen + xcresulttool-Extraktion, ergänzt um Snapshot-Tests, Barrierefreiheitsprüfungen und kleine XCUITest-Rauchdurchläufe.

Überblick

Dieses Skill ermöglicht es KI-Agenten, eine automatisierte Closed-Loop-Prüfung von SwiftUI-Änderungen durchzuführen. Der Workflow umfasst:

  1. Kommunikation: Der Agent bietet an, eine Änderung zu validieren.
  2. Kompilieren und Testen: Führt xcodebuild test aus, um die Änderung zu kompilieren und XCUITest-Smoke-Tests sowie Snapshot-Tests auszuführen.
  3. Nachweis extrahieren: Extrahiert .xcresult-Ergebnisse mit xcresulttool, um Testergebnisse, Fehler und Metadaten zu erhalten.
  4. Bericht erstellen: Generiert einen prägnanten Bericht mit bestandenen/fehlgeschlagenen Tests, Snapshot-Unterschieden und Accessibility-Ergebnissen.
  5. Iteration: Bei Fehlern kann der Agent den Code reparieren, erneut testen und den Kreis schließen.

Unterstützte Plattformen

  • macOS (AppKit)
  • iOS (UIKit)

Voraussetzungen

  • Xcode (mit installierten Kommandozeilenwerkzeugen)
  • Ein gültiges SwiftUI/Xcode-Projekt mit Testschemata
  • xcresulttool ist in Xcode enthalten; keine separate Installation erforderlich

Verwendung

Schritt 1: Erstelle eine Teständerung

Der Agent schreibt oder aktualisiert eine SwiftUI-Ansicht und die zugehörigen Tests.

Schritt 2: Führe die Closed Loop aus

xcodebuild test \
  -project MyApp.xcodeproj \
  -scheme MyScheme \
  -destination 'platform=iOS Simulator,name=iPhone 14' \
  -resultBundlePath TestResults.xcresult

Schritt 3: Extrahiere Ergebnisse

xcresulttool get --path TestResults.xcresult --output-path report.json

Schritt 4: Analysiere und iteriere

Der Agent parst report.json, extrahiert bestandene/fehlgeschlagene Tests, Snapshot-Differenzen (falls vorhanden) und Accessibiliy-Verstöße, und iteriert dann basierend auf der Ausgabe.

Beispiel-Snapshot-Test

import XCTest

final class MySnapshotTests: XCTestCase {
    func testMyViewSnapshot() throws {
        let view = MyView()
        let controller = UIHostingController(rootView: view)
        controller.view.frame = CGRect(x: 0, y: 0, width: 375, height: 667)
        let renderer = UIGraphicsImageRenderer(size: controller.view.bounds.size)
        let image = renderer.image { ctx in
            controller.view.drawHierarchy(in: controller.view.bounds, afterScreenUpdates: true)
        }
        // Snapshot-Vergleich (benutzerdefiniertes oder Bibliotheksunterstützung)
        // XCTAssertEqual(image.pngData(), expectedSnapshot.pngData())
    }
}

Accessibility-Audit (Beispiel)

import XCTest

final class AccessibilityTests: XCTestCase {
    func testAccessibility() throws {
        let app = XCUIApplication()
        app.launch()
        // Führe eine Accessibility-Inspektion durch
        // (Erweiterung mit XCUIElement-Audit ist möglich)
    }
}

Fehlerbehebung

  • Stelle sicher, dass der Simulator oder das Gerät korrekt angegeben sind.
  • Falls xcodebuild fehlschlägt, überprüfe das Build-Log auf Syntax- oder Abhängigkeitsfehler.
  • Der Pfad zu .xcresult muss eindeutig sein; alte Ergebnisse sollten gelöscht werden.
  • Bei Snapshot-Fehlern: Überprüfe, ob die Ansichtsgröße und die Rendereinstellungen korrekt sind.

Lizenz

Dieses Skill ist Teil des zhutao100-Repos. Siehe die Lizenzdatei im Repository.

Beiträge

Beiträge sind willkommen! Reiche Issues oder Pull-Requests ein, um dieses Skill zu verbessern.

Verwandte Skills