<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Morton</title>
    <description>The latest articles on DEV Community by John Morton (@johnfmorton).</description>
    <link>https://dev.to/johnfmorton</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F231222%2Fb310cf4f-efc0-4b2f-a227-1799a1d72853.jpeg</url>
      <title>DEV Community: John Morton</title>
      <link>https://dev.to/johnfmorton</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnfmorton"/>
    <language>en</language>
    <item>
      <title>From Zero to Building in Under Two Minutes: Kiro-Powered Laravel Skeleton</title>
      <dc:creator>John Morton</dc:creator>
      <pubDate>Mon, 24 Nov 2025 20:40:53 +0000</pubDate>
      <link>https://dev.to/johnfmorton/from-zero-to-building-in-under-two-minutes-kiro-powered-laravel-skeleton-3d4o</link>
      <guid>https://dev.to/johnfmorton/from-zero-to-building-in-under-two-minutes-kiro-powered-laravel-skeleton-3d4o</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rnhqd34hskbe67hurxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rnhqd34hskbe67hurxw.png" alt="Kiro Laravel Skeleton start up screen" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a moment every developer knows: the spark of a new idea, the itch to start building, and the friction that follows. Setting up a clean Laravel environment, wiring in tools, installing dependencies, crafting a sane directory structure, writing boilerplate steering documents… the overhead adds up. It’s enough to take the shine off that early momentum.&lt;/p&gt;

&lt;p&gt;I’ve been building Laravel apps with Kiro for a while now, and something clicked along the way. Every time I tightened up my steering documents, the generated Laravel code looked cleaner and I built faster. Eventually it hit me that all this polish should live in a reusable template instead of in my one off projects. If the foundation was solid from the start, most of the usual setup time just vanished.&lt;/p&gt;

&lt;p&gt;That idea became the Kiro Laravel Skeleton, a preconfigured environment designed to turn Kiro’s structured output into professional-grade Laravel code with minimal friction.&lt;/p&gt;

&lt;p&gt;I could get a new app started in under two minutes.&lt;/p&gt;

&lt;p&gt;Not “two minutes” with a wink. Actual, measurable two minutes. &lt;/p&gt;

&lt;h2&gt;
  
  
  DDEV requirement
&lt;/h2&gt;

&lt;p&gt;My two-minute starting time assumes you’ve already got DDEV installed. If not, it’s worth adding to your setup. The whole skeleton is tuned around DDEV because it removes the usual “getting Laravel to behave locally” headaches—databases, services, ports, all handled automatically. Once it’s installed, everything in this template springs to life with almost no effort.&lt;/p&gt;

&lt;p&gt;The DDEV &lt;a href="https://ddev.com/get-started/" rel="noopener noreferrer"&gt;docs show you how to get it installed&lt;/a&gt;. It's quick one-time step.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Two-Minute Start Works
&lt;/h2&gt;

&lt;p&gt;Kiro already supercharges your development, but the skeleton adds the layer you actually need when you’re building a real Laravel app. It bundles the time-tested Laravel best practices, trims out the repetitive setup work, and makes sure you’re not starting off on the wrong foot. Instead of wrestling with boilerplate, you get to jump straight into building your app.&lt;/p&gt;

&lt;p&gt;The flow is intentionally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make setup&lt;/code&gt; in the Kiro terminal.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make dev&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Pro tip for GitHub users: An alternate way to start
&lt;/h2&gt;

&lt;p&gt;I've also saved the Kiro Laravel Skeleton as a template in GitHub. Instead of cloning the template, as mentioned in step 1, use the GitHub template option instead. Just click &lt;em&gt;Use this template&lt;/em&gt; and create a new repo in your GitHub account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnr1b30msb2lt2a64yaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnr1b30msb2lt2a64yaz.png" alt="Screenshot of the template in GitHub highlighting the template button" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Customizing your app
&lt;/h2&gt;

&lt;p&gt;Once those commands finish, you’re not dealing with config tweaks or environment wiring. You’re ready to start building your app.&lt;/p&gt;

&lt;p&gt;Everything behind the scenes—DDEV, Tailwind, the build system, the steering document folder structure, the example specs, and the conventions I refined from real production work—is already baked in.&lt;/p&gt;

&lt;p&gt;It feels less like “setting up a project” and more like walking into a workshop where all the tools are laid out, sharpened, and ready.&lt;/p&gt;

&lt;p&gt;Your next step is to tell Kiro the type of app you want to build by creating your first spec in Kiro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjvna1kpyinh6us3trev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjvna1kpyinh6us3trev.png" alt="Screenshot of creating a spec in the Kiro IDE" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;When I showed a friend the steering documents behind my &lt;a href="https://github.com/johnfmorton/upload-drive-in" rel="noopener noreferrer"&gt;Upload Drive-In&lt;/a&gt; project, built with Kiro, he pointed out that my generated code was far clean and organized than his. Same tool, wildly different results. The difference wasn’t magical. It was structure.&lt;/p&gt;

&lt;p&gt;The Kiro Laravel Skeleton captures that structure with refined steering documents and a pre-built development environment.&lt;/p&gt;

&lt;p&gt;It makes consistency easy.&lt;/p&gt;

&lt;p&gt;It makes best practices unavoidable instead of optional.&lt;/p&gt;

&lt;p&gt;And it clears the path for what matters: &lt;strong&gt;building the actual app&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Goal is Getting to Work
&lt;/h2&gt;

&lt;p&gt;Speed isn’t the point. &lt;em&gt;Momentum is.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you can go from idea to working environment to building features without stumbling over setup chores, you’re more likely to stay in the creative flow that makes good software happen.&lt;/p&gt;

&lt;p&gt;If your next app idea is ready to hatch, the Kiro Laravel Skeleton gets you from blank screen to real work in less time than it takes to make a cup of coffee.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>tooling</category>
      <category>kiro</category>
    </item>
    <item>
      <title>If you're AI-skeptical, let me tell you about Kiro and change your mind.</title>
      <dc:creator>John Morton</dc:creator>
      <pubDate>Thu, 04 Sep 2025 19:29:40 +0000</pubDate>
      <link>https://dev.to/johnfmorton/if-youre-ai-skeptical-let-me-tell-you-about-kiro-and-change-your-mind-4bnk</link>
      <guid>https://dev.to/johnfmorton/if-youre-ai-skeptical-let-me-tell-you-about-kiro-and-change-your-mind-4bnk</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5bawxnk16qneppjjvmj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5bawxnk16qneppjjvmj.jpg" alt="Upload Drive-In plus Kiro poster showcasing development time productivity increase" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been working on an app using Kiro - &lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;https://kiro.dev/&lt;/a&gt; - and it has completely changed my view of AI coding. If you're a friend of mine, you'll already know this. &lt;em&gt;Please accept my apology for the constant Kiro talk!&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  An AI tool that doesn't replace you, but makes you better.
&lt;/h2&gt;

&lt;p&gt;I want to tell you about Kiro because it's changed my perspective on AI tools and how they can impact developers. I've been a developer for a long time, and I love building things. The arrival of AI does change the game for people like me. Could they replace me? That's the doom-and-gloom perspective that you read about quite a bit. &lt;/p&gt;

&lt;p&gt;Many demos I've seen of AI tools promote the idea that "anyone can build anything." This seems like a false promise to me because I know that software development is a complex process. Building a good user experience on top of the development process complicates it even more. &lt;/p&gt;

&lt;p&gt;Focused, beautiful software requires a clear vision and a steady person to lead that process. I've tried a lot of AI tools, and they all left me a little disappointed. Then I tried Kiro, and things changed for me. &lt;/p&gt;

&lt;p&gt;I want to tell you about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  An app based on a real-world experience
&lt;/h2&gt;

&lt;p&gt;I'm working on an app I call &lt;strong&gt;Upload Drive-In&lt;/strong&gt; using &lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;Kiro&lt;/a&gt;. (See the &lt;a href="https://www.youtube.com/watch?v=DiuXTuyd5gw" rel="noopener noreferrer"&gt;two-minute video overview of Upload Drive-In here&lt;/a&gt;.) I built an early prototype to address a one-off problem a while back. That was my proof of concept, but I then wanted to develop it into a more long-term solution. &lt;/p&gt;

&lt;p&gt;A client needed to send me multiple files, some of which were large and contained sensitive information. "How can I get you these files?" It seems like a simple question. I didn't have a quick answer for him. &lt;/p&gt;

&lt;p&gt;Email wasn't the right solution. Was the email sending process secure? Where were the files stored? No, email wasn't the right solution.&lt;/p&gt;

&lt;p&gt;I already pay for a Google Workspace with loads of available Drive space. Maybe that would work? &lt;/p&gt;

&lt;p&gt;I tried to invite him to a shared Google Drive folder, which led me to ask for more information from my client than I really wanted to. Did my client have a Google account I could use to connect him to my shared folder? Yes, but it was his personal Google account, not a "work" Google account. Would he need to create a new Google account to send me files? Was that a security issue for his company? &lt;/p&gt;

&lt;p&gt;The whole process was far too complicated. &lt;/p&gt;

&lt;h2&gt;
  
  
  I'm a nerd. I can solve problems like this.
&lt;/h2&gt;

&lt;p&gt;I wrote a basic script that I hosted on my website's server, specifically for him to upload those large files securely to me. It worked. I sent a direct message to my client with a link. It was on my domain. It was a secure link. I controlled the whole process. The page was customized for him, allowing him to drag and drop sensitive files into it, which were ultimately stored in a Google Drive directory that I had selected. &lt;/p&gt;

&lt;p&gt;After that experience, I wanted this type of link for all my clients. &lt;/p&gt;

&lt;h2&gt;
  
  
  AI, can you help me?
&lt;/h2&gt;

&lt;p&gt;I experimented with various AI tools to help develop this into the app I envisioned. If you've gone through this process, you're familiar with how frustrating it can be. &lt;/p&gt;

&lt;p&gt;It's common for the AI IDEs to end up in loops of repeating the same mistakes over and over, and losing sight of the ultimate goal. &lt;/p&gt;

&lt;p&gt;And "hard" tasks, especially as a code base grows, just get mired in the AI churn. I saw the promise of AI development, but I felt that the current tools needed improvement. &lt;/p&gt;

&lt;p&gt;I was fortunate to stumble upon Kiro the day it was launched, and that immediately changed my outlook on AI coding. I opened up my fledgling app in Kiro, and the fog cleared. Kiro has a process for understanding how app development works. Kiro keeps the vision for my app and my preferred development process in sight at all times. &lt;/p&gt;

&lt;p&gt;Interested? &lt;/p&gt;

&lt;h2&gt;
  
  
  Steering app development in Kiro
&lt;/h2&gt;

&lt;p&gt;One of the first things I did was open my barely working project in Kiro and create &lt;em&gt;steering&lt;/em&gt; documents. I did this conversationally with the app. For example, I use DDEV as my local environment, and I have a steering markdown file to ensure the Kiro IDE doesn't overlook these basic workflow needs. (Other unnamed AI-powered IDEs forget these sorts of details constantly.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgukq0qtx26aid1dqfsxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgukq0qtx26aid1dqfsxj.png" alt="Kiro steering documents" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also have steering documents that outline that I want to work with specific frontend tools, such as Alpine JS and Tailwind CSS. Keeping these pieces within my "compfort zone" means I can easily tweak parts of the app without relying on AI. In other words, I don't need to use AI tokens to fix layout problems. I want to be judicious with how I use the AI.&lt;/p&gt;

&lt;p&gt;When you try Kiro (and I think you will want to try Kiro), don't overlook the "steering" setup process. This lays the foundation of everything you will build going forward. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What do you want to build?&lt;/li&gt;
&lt;li&gt;Do you have specific workflows that you want to follow?&lt;/li&gt;
&lt;li&gt;Are there specific things you do not want to do?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, remember that you can adjust the steering as you go along. For example, late in development, I realized that Kiro was making a particular syntax error several times by omitting a second argument in the string replacement command. &lt;/p&gt;

&lt;p&gt;I resolved this issue by creating a steering document, with Kiro's help, that addressed the exact problem. &lt;/p&gt;

&lt;h2&gt;
  
  
  Specs are how you get things done in Kiro
&lt;/h2&gt;

&lt;p&gt;Now let's talk about getting things done in Kiro. This is where "specs" come in. Based on my experience, I also think it's the aspect of using Kiro that makes me like it so much. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro's spec process enables you to leverage your specific developer knowledge and augment it with AI. AI isn't replacing you. It upgrades the skill you bring to the process. That is Kiro's superpower: &lt;em&gt;It boosts your experience and your knowledge.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Making a spec in Kiro
&lt;/h3&gt;

&lt;p&gt;Anything you want to accomplish in your app can be turned into a spec. Describing the problem to Kiro is how you start creating a spec.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87mfemv0oj3qvp6jgxzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87mfemv0oj3qvp6jgxzh.png" alt="Kiro screenshot showing Spec creation process" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want to know the secret about writing a spec? &lt;/p&gt;

&lt;p&gt;For me, the process begins by talking through the problem you want to solve aloud to myself at my desk. If you can articulate the problem you want to solve and share it with Kiro, you can create a great specification. (The talking through a problem is sometimes called &lt;a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging" rel="noopener noreferrer"&gt;rubberducking&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;I'll share a specific spec creation process to help illustrate what I mean.&lt;/p&gt;

&lt;p&gt;In my app, I have a button that checks the status of a background process. This helps a person during the installation process of the app. After testing this button on my staging server, I realized that there were circumstances where the process missed some possible errors. &lt;/p&gt;

&lt;p&gt;I went into Kiro and started a new spec session. I went through the situation in detail. I told Kiro that I was testing on my staging server and that I could imagine 4 or 5 scenarios where the current process presented inadequate data. I told Kiro about those scenarios in my own way, just talking out loud into a mic. I was detailed in my descriptions. I also told Kiro my rough idea on how to improve the workflow in the app. &lt;/p&gt;

&lt;p&gt;Then I submitted that brain dump to Kiro and it went to work.&lt;/p&gt;

&lt;p&gt;Based on what I said, Kiro first created a &lt;em&gt;requirements&lt;/em&gt; document. I reviewed it and replied with additional thoughts on how to refine it. &lt;/p&gt;

&lt;p&gt;Next, Kiro created a &lt;em&gt;design&lt;/em&gt; document based on my refined &lt;em&gt;requirements&lt;/em&gt; document. I was able to tweak that to my liking as well.&lt;/p&gt;

&lt;p&gt;Finally, Kiro created a &lt;em&gt;tasks&lt;/em&gt; document that outlined the plan, step by step, to solve the problem I initially presented.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5m72j2e2wnmgzluawbt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5m72j2e2wnmgzluawbt.png" alt=" " width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I went through each task and had the AI work on it. At the end of a task, I can ask for any necessary tweaks before moving on to the next task. If you're familiar with working in an AI coding environment, you'd call the tweaking process "vibe" coding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Task lists are game-changing
&lt;/h3&gt;

&lt;p&gt;Have you heard the old proverb about big tasks? “How do you eat an elephant? One bite at a time.” &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One. Bite. At. A. Time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The spec process, which results in a detailed task list, will change your AI development process.&lt;/p&gt;

&lt;p&gt;Kiro currently uses Claude as its AI engine. Will that change over time? I don't know. But I think how Kiro utilizes the AI is amazing. It's designed to work and operate in the way a software developer works. With your help, Kiro first tries to understand the problem. It then works to form a design document that explains what a solution to that problem would look like. Finally, it creates steps that you follow, one bite at a time, until the task list is done.&lt;/p&gt;

&lt;p&gt;Rinse and repeat. &lt;/p&gt;

&lt;p&gt;That's how a developer works. &lt;/p&gt;

&lt;p&gt;And it's how Kiro works. &lt;/p&gt;

&lt;p&gt;Your direction is what makes it work. Its superpower is staying focused on the complex task that you and Kiro built together.&lt;/p&gt;

&lt;p&gt;Go try Kiro. I think you'll be impressed.&lt;/p&gt;

&lt;p&gt;@kirodotdev #hookedonkiro&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>webdev</category>
      <category>hookedonkiro</category>
    </item>
  </channel>
</rss>
