Luege is a native tvOS and iOS media player that streams from SMB network shares. Built with SwiftUI, VLCKit, and AMSMB2. But the interesting part is how it was built: entirely with agentic AI tools, under one self-imposed rule — never look at the code. No reading diffs, no manual edits, no peeking under the hood. Every change went through the agent, and the only feedback was the running app.
What worked
Screenshot tests as a feedback loop. The agent proposes a UI change, takes a simulator snapshot, compares it against a baseline. When you’ve sworn off reading the code, visual feedback is the only signal that matters — and for UI-heavy work it’s enough.
Pre-commit hooks as guardrails. Unit tests before every commit kept things stable even during rapid multi-file changes. Cheaper than debugging a broken build later.
What didn’t
tvOS was rough. iOS output was consistently better. The agent struggled with focus-based navigation and tvOS-specific idioms. Less training data, worse results.
Autonomous runs drifted. Without frequent check-ins, the agent produced functional code that didn’t fit the project’s patterns. Short loops worked best: focused task, check the app, course-correct, repeat — all without opening a single file.
Boilerplate was easy, judgment was not. Wiring up standard patterns? Great. Deciding where to draw module boundaries or how to handle edge cases? Still needs a human.
The takeaway
Treat it as a fast pair programmer, not an autonomous developer. The more structure you provide (clear interfaces, automated tests, visual verification), the better the output.