Lessons from an Expert: How Mitchell Hashimoto Builds Production Apps with AI

Software Development

Learn how expert developer Mitchell Hashimoto uses AI to build production apps, focusing on planning, model choice, code understanding, and review in the Ghostty project.

There are countless articles about building with AI, but most focus on landing page demos, proof-of-concepts, or trivial tasks. It's rare to find expert developers sharing how they leverage AI to build production applications used by real people.

However, a valuable insight recently emerged. Mitchell Hashimoto, creator of Ghostty, published a post detailing his AI usage while implementing a complex feature in Ghostty. Building a terminal is no easy feat, making his approach incredibly intriguing.

I've shared the full transcript of every agentic coding session from implementing the unobtrusive Ghostty updates and provided commentary alongside about my thinking and process. Total cost: $15.98 over 16 sessions. "Vibing a Non-Trivial Ghostty Feature" https://mitchellh.com/ghostty/ai-usage — Mitchell Hashimoto (@mitchellh) October 11, 2025

As expected, the post was highly informative, offering several ideas to enhance my own AI usage. Here, I'll highlight the key takeaways that resonated most with me.

1. Planning with OpenAI's o3

Mitchell begins by prompting the AI to create a comprehensive plan rather than immediately jumping into coding. This planning phase is crucial for both the developer and the AI agent to gain a deeper understanding of the task at hand.

Even before the advent of AI, we knew that thorough planning prevents significant headaches, though we often skip it. With AI agents, planning becomes even more critical as it provides essential context for their operations.

I also observed that he specifically uses OpenAI's o3 model for planning, accessed through Amp's Oracle feature. According to Amp's documentation, o3 is "impressively good at reviewing, at debugging, at analyzing and at figuring out what to do next" (source).

This insight made me realize a common pitfall: using a single model for all tasks. For instance, I've become accustomed to using Sonnet and often use it for planning, coding, and documentation. Moving forward, I'll experiment with different models, aiming to select "the best one for the job."

2. Save the Plan

Once the planning phase is complete, the finalized plan is saved in a Markdown file. This file can then be easily referenced later, allowing for consistent context to be passed to the AI agent when requesting it to implement a specific task.

3. Shipping Policy: Understand Before You Ship

Mitchell's shipping policy is rigorous: he only ships code that he fully understands. If the AI generates a solution he can't fully grasp, he uses it as a learning opportunity, studying the code to deepen his knowledge. In cases where he still doesn't fully comprehend it, he discards the AI-generated code and attempts to implement it himself.

While this might seem like common sense, it's vital to reiterate. The temptation to simply "accept" seemingly innocuous AI-generated code and move on is strong. Personally, I've experienced the repercussions of this, learning the hard way that a seemingly small change can lead to significant issues.

4. Incomplete Code with TODOs

Another technique I observed is the "fill-in-the-blanks" approach. This involves providing incomplete code, such as function definitions with names, parameters, and TODO comments, and then asking the AI to complete the implementation.

According to Mitchell's post, this method works exceptionally well for him. I've heard others advocate for this technique too but haven't tried it myself. It's definitely time to give it a go.

5. Last AI Check

Beyond manually reviewing all generated code before shipping, Mitchell also leverages AI for a final check, asking it about potential omissions or issues, even when he has written all the code manually. This acts as an additional layer of scrutiny.

Conclusion

I thoroughly enjoyed Mitchell Hashimoto's post. It offers a rare and invaluable look into how an expert developer effectively integrates AI into their coding workflow. I've already gleaned several actionable ideas that I plan to implement in my own process.

I highly recommend reading his original post. It's incredibly insightful and includes transcripts from the AI tool he uses, providing transparent examples of his interaction methods.

If you've come across other similar posts or videos sharing expert AI development workflows, please share them in the comments below. I'm always eager to learn from the experiences of others.

Cut your code review time and bugs in half (Sponsored)

CodeRabbit is a smart AI code reviewer that provides codebase-aware reviews. You’ll get specific suggestions tailored to your codebase, not generic advice. It learns from your feedback, improving with every pull request.

Try CodeRabbit for Free


Share

Topic

  • Migrating to TanStack Start A while ago, I decided to move away from full-stack React frameworks… 13 Sep 2025
  • 50 Things I Learned in the Last 2 Years
    1. Be very specific when returning data from the database. Don’t… 21 Nov 2025