MS

Hello, I’m Michael Sliwinski, founder of Nozbe - to-do app for business owners and their teams. I write essays, books, work on projects and I podcast for you using #iPadOnly in #NoOffice as I believe that work is not a place you go to, it’s a thing you do.

Vibe coding with iPhone using Claude Code and Nozbe MCP

✅Nozbe,⭐️Featured

I’m an iOS Shortcuts fan but recently I feel like Apple is making the shortcut-building experience worse and worse, especially when you’re building long ones. Because of that, last Friday I decided to convert one of my yet unpublished, but highly-useful Shortcuts, called “Keynoter”, to an iOS app. I knew exactly what I wanted so I turned into a director who’s managing Claude AI model Opus 5.5, who’s doing the actual programming. Suffice to say, the experiment was a success and very soon I’ll publish this app for everyone to use, but today I’ll focus on my setup. This is a behind-the-scenes post and here are the details:

Vibe coding with iPhone using Claude Code and Nozbe MCP

Step 1. Create a repository for a new project

First I go to GitHub and create a new repository for my new project. I give it a name, make it private (for now), tick to create a README file and accept.

Then on my Mac Mini I open the Github app and clone that same repository onto my Mac. Then I open the Claude app (I’m on a Max subscirption) and go to Claude Code and open a new chat from the same directory where my Github repository is. I make sure the model “Opus 5.5” is active. I explain to Claude that I’m building an iOS app as explained in README.

Step 2. Add a project in Nozbe and local MCP connection

I’m a founder of Nozbe - I think in our structure:

projects ➡️ tasks ➡️ comments

…and I like to have my ideas and things structured. I don’t like a continuous chat with AI, I feel more comfortable having its context limited to each particular task (it’s also good for AI productivity, I hear). So even if I’m going to work with AI in a chat interface, I want to be able to give feedback to my AI and have information associated with each task in its comments.

So I set up a new project with the name of this particular app.

We just launched a local MCP connection to Nozbe which means my Claude Code app has a quick and direct access to my desktop Nozbe app for the Mac. It can quickly update tasks and projects without going through the Internet. And when it does, Nozbe syncs all this information through the Internet with all my other Nozbe apps on the iPhone and iPad.

Vibe coding with iPhone using Claude Code and Nozbe MCP MCP Nozbe

I set up the local MCP connection and ask Claude if it’s connected to Nozbe. When it confirms I add my first task to the project and in the comment I paste the link to my Shortcut.

Step 3. Setting up rules about Nozbe in CLAUDE/Agents.MD

Now it’s the fun part. I tell Claude that it should set up instructions for itself with our common rules of engagement. I don’t want to rely on its own memory but on written rules that it checks before each prompt and updates when necessary.

I ask it to clear its memory and dump it to this file and suggest a structure for it.

It creates this file and I explain to it that whenever we agree on something, the new rule should go there. And I set up some basic rules about working in Nozbe - we work in one project only, we add comments to tasks (before coding and after it’s done) and it never completes tasks but moves them to a different section for me to review. And it keeps checking Nozbe to see if I added new tasks…

Here are direct quotes with the redacted project details from my very own CLAUDE.MD:

Working like this is awesome. As Claude is coding a current feature, I’m testing the app, adding new tasks, adding feedback in Nozbe and making sure I don’t forget about something else down the line.

Again, the local MCP connection works great between the Claude app and the Nozbe Mac app. It’s blazingly fast.

Step 4. Build the first version of the app and submit it to TestFlight

I started off locally working on my Mac so Claude built and installed new versions of the iOS apps on both my iPhone Air and my iPad Pro as they are connected to the same WiFi.

However, if I want to keep working with Claude and keep downloading new builds even if I’m not home, I need to set up TestFlight. Turns out you can do it quickly and set up “internal” testing first to make sure you get the latest builds fast.

I ask Claude to set up TestFlight and it creates a placeholder icon and some other stuff and builds the first build.

Now I have to go to App Store Connect. As I already have a Developer account thanks to Nozbe I just go to Apps and create a new app.

However, before doing that I also have to create an app ID, so I go to Identifiers and create a new one for my app. Later I go to Apps and create a new app and choose this identifier. Once it’s created I click on this new app and go to “TestFlight” section and add a new internal test group and add myself as a “tester” for this app.

Now I ask Claude again and this time it succeeds to create a TestFlight build. After a few minutes I get an email inviting me to TestFlight of this app and I can install it.

Making sure the builds are built…

Apple’s Xcode app is great and all, but it has bugs, too. Turns out that it for no reason can log you out of your developer account. Randomly. It happened to me, and I asked Claude about it and it turns out a better way is to create an API key to be able to send the builds to TestFlight even if the Xcode fails.

I had to log in to App Store Connect and in “Users and Access” and “Integrations” and “App Store Connect API” set up a new one with “Admin Role” as it needs the “iOS Distribution” certificate. The “App Manager” role wasn’t apparently enough.

Claude saved the certificate file (you can only download it once!) outside of the GitHub repo and added information about it along with its authentication key (36 characters with dashes) in the rules file.

Step 5. Set up remote control of Claude

Let’s recap:

Now all I need to do is to keep talking to Claude even if I’m out of the office - so I’m setting up Remote Control. I put the command: /remote-control and I’m done!

Bonus Step: Tailscale and Screens!

After I’ve written this post and I went away for my Nozbe reunion trip at some point my remote control session with the Claude on the Mac got turned off. I had to be able to turn it back on when I was away. I needed remote control to my Mac:

  1. On the Mac I turned on “Screen Sharing” in “General / Sharing”.
  2. I also installed Tailscale - free account is enough to be able to see my Mac as a “local” machine even when I’m away. After setting it up I turned it on right away.
  3. On my iPhone I downloaded Tailscale as well and logged in and made sure both of my machines “saw” each other within one network. Even when I switched the iPhone to cellular only.
  4. On the iPhone I downloaded Screens 5 app which lets me easily set up remote control from the iPhone. In Screens I also set up Tailscale connection and I could log in to my Mac and see its screen when necessary.
  5. Screens is a paid app - I got a free trial which was enough to be able to log in and change some settings.

What’s strange for me is that Apple doesn’t offer any first-party “Screen Viewer” app for iOS that would connect to the Mac. Maybe I should vibe-code one?

That’s it, now I can keep building app by just talking to Claude using my iPhone!

It works amazingly. I have Claude app open and chat with it over there. When it’s busy working, I’m adding or updating tasks in Nozbe to make sure I don’t forget anything and have a plan for future features.

Each time Claude finishes something, it moves the task “to be reviewed” and builds a TestFlight build and checks what’s next to do in Nozbe. Very often Claude suggests what to tackle next. I confirm and it keeps going. Meanwhile I’m testing the app and if it’s not up to snuff or I have some improvement ideas, I add them as a comment to the task.

What surprised me in this process?

First off, I can’t believe how good of a coder Claude Opus 5.5 with Medium effort is. It’s building features fast, creating tests (!) for each new thing and reports back with suggestions or improvement ideas.

Second thing - the MCP connection with Nozbe is invaluable. To a person like me who has their tasks in Nozbe anyway, working with it in tasks and comments feels just natural and gives me a sense of control to make sure Claude doesn’t just go off the rails.

Third. Let’s leave all the “programmers are irrelevant” or “Nozbe is not needed” discussions for later. I’ve just had one of most productive weeks of my life and I built my first iOS app which I always wanted and I can’t wait to share it with you.

I’m not releasing it yet as I’m heading to meet my team at our annual Nozbe reunion and won’t have the time to launch it properly. Stay tuned.

Update: listen to the behind-the-scenes story…

We just published NoOffice podcast 97 where I’m sharing the app’s name, its purpose and also the entire story behind the app and how fast I managed to build it. Subscribe to the NoOffice podcast to listen!

Thursday, October 15, 2026 /vibe/