An Android and iOS app from 7 Claude Code commands, every prompt and timing A developer built a full Android and iOS app called Loupe, an art gallery for the Art Institute of Chicago's public-domain collection, using only seven Claude Code commands and the KMPilot template. The walkthrough documents every prompt and timing, showing how the MIT-licensed template turns Claude Code into a design-first Kotlin Multiplatform pipeline. The app features three tabs backed by the Art Institute of Chicago API, with Gallery and Artists tabs fully functional and a Favorites tab left as an exercise. The full KMPilot walkthrough: an Android + iOS app from seven Claude Code commands, every prompt and timing included Two features, two platforms, one Kotlin Multiplatform codebase. You need Claude Code and a template that keeps the architecture from drifting. This post is the whole build with nothing cut from the record: Loupe https://github.com/ThisIsSadeghi/Loupe , an art gallery for the Art Institute of Chicago’s public-domain collection. Every prompt I typed is in this post, and every timing counts active work only. The commands come from KMPilot https://github.com/ThisIsSadeghi/KMPilot , an MIT-licensed template that turns Claude Code into a design-first Kotlin Multiplatform pipeline. The first article /design-a-screen-get-a-clean-architecture-feature-and-keep-ai-generated-kmp-code-from-drifting-c134ffc9bfc2 covered WHY it exists AI-generated code drifts unless something holds its structure in place between prompts . This one is the HOW, and you can reproduce it end to end. Your job is to describe each feature, steer at the checkpoints, and approve. The same pipeline built , a much larger World Cup companion app; Loupe is deliberately small enough to follow in one sitting. https://github.com/ThisIsSadeghi/Kickoff26 Kickoff26 The full session, sped up and chaptered by command. Watch the whole thing here, or read on and jump to any phase from its section link below. What we’re building Three tabs, all backed by the Art Institute of Chicago’s API https://api.artic.edu/docs/ . Gallery browses and searches the museum’s artworks and opens a full-bleed detail screen. Artists browses artists and their works. Favorites stays an empty placeholder for the whole walkthrough and becomes your exercise at the end. Setup: one command, one MCP server Prerequisites: Claude Code https://claude.com/claude-code , JDK 21+, python3 on PATH the design step uses it for token extraction . Then install the template: curl -fsSL https://github.com/ThisIsSadeghi/KMPilot/releases/download/v0.1.3/install.sh | bash The installer prompts you for two values: the app name and the package prefix. I answered and Loupe they're just my values, use your own and every command below behaves the same. com.yourname.loupe, Then open the project in Claude Code: cd Loupe && claude You get a complete Kotlin Multiplatform skeleton: Gradle wiring, shared UI via Compose Multiplatform, a design-system module, the seven commands, the hooks, the agent definitions. It’s a clone and a rename, so it finishes in seconds. This walkthrough is pinned to v0.1.3 so that what you read is what you run; the wiki https://github.com/ThisIsSadeghi/KMPilot/wiki is the living version. KMPilot writes the code; to build and run what it writes you use the usual Kotlin Multiplatform tooling, Android Studio for the Android target and a Mac with Xcode for iOS. One piece of one-time setup: drives /design-ui Google Stitch https://stitch.withgoogle.com/ , Google's AI design tool, through its MCP server. Get an API key from stitch.withgoogle.com/settings https://stitch.withgoogle.com/settings sign in, find the API keys section, click Create API key , then register the server at user scope so every project sees it: claude mcp add stitch --transport http https://stitch.googleapis.com/mcp \ --header "X-Goog-Api-Key: YOUR API KEY" -s user claude mcp list → stitch: … ✔ Connected Two field notes. The key must come from Stitch’s own settings page: keys created at aistudio.google.com look identical but the Stitch API rejects them. And the Stitch server has rough days; if claude mcp list shows connection or schema errors, it’s almost certainly their side rather than your config. Retry later before debugging your setup. The pipeline: seven commands, no step eight Each command gets a section below, shown on the real feature it built, with its real timing. There is no step eight where you fix everything by hand; a hook blocks direct edits to feature code, so changes only ever land through the pipeline. The pipeline runs twice, and in a different order each time. On gallery , the design comes first: /design-ui , then /create-feature builds against that design. On artists , the code comes first and the design is bolted on afterwards. Two orders, same rails, and the second run shows what the rails actually save. One thing between every command: /clear Every command tells you to run /clear before the next one. KMPilot is resume-aware: its memory lives on disk, not in the context window, so you clear the whole conversation between steps and lose nothing. Round 1: gallery, design first /design-ui gallery 33:02 You run /design-ui