This module assumes you have already launched the game locally, by following the setup instructions.
In previous modules we:
So far we've mostly done minor modifications and refactors, but what about more complex new features? Kiro is here to help with that too.
You may notice that on the login page of the game there is no "Forgot Password" link. The game is using Amazon Cognito for authentication, however the implementation is currently still fairly minimal.
In order to send password reset emails, Cognito requres the email to be verified, so we also need to implement email verification as well.
So we are looking at a tree of tasks that need to be completed:
Try the following prompt in Kiro:
I need a specification for email verification and password reset
Kiro will go to work collecting information about the project and designing a specification for this complex task.
Kiro will expand your initial ask into a detailed set of requirements based on user stories. In most cases these user stories, and the resulting requirements, will help expand vague asks and highlight edge cases that you might not have initially expected:
After you read through the requirements you can either provide detailed feedback on how to rewrite the requirements or you can just type something like "LGTM" in the prompt to move on.
Now Kiro will compare the existing code to the requirements and start imagining how to fit these requirements into the codebase:
In the upper right corner of the design doc you can click the "Preview" button to open a rendered copy of the design document. This will properly show the flow diagram.
The design document likely includes some example code snippets that are similar to what Kiro plans to write to solve this problem. Don't worry too much about the specifics of this code. Think of it more as pseudocode that is imagining the API. The actual implementation may end slightly different.
After you read through the design document you can either provide detailed feedback on how to rethink the design or you can just type something like "LGTM" in the prompt to move on.
Kiro will use the requirements and design document to plan a series of tasks to execute. Think of each of these tasks as a step along the journey towards the new feature.
The task list may not match up with your preferred order of operations when vibe coding. For example, the task list often has test development last, while you may prefer test driven development.
You can use steering files to modify Kiro behaviors.
For example, try creating a file .kiro/steering/specs.md
with
instructions to always write tests first before writing code.
You can either provide feedback in the prompt to modify the task list, or type something like "LGTM" to move on.
To start working on a task, click the "Start Task" link above the task. Kiro will go to work on that task.
You will likely still need to review, test, and iterate on generated code for each task, even though the task list marks the task as "Task completed".
You may have noticed that specifications are stored
under .kiro/specs
. By design, you should commit these
specification files to the repo, alongside the code.
Over time, you can accumulate a large collection of specification documents that describe the intent and design behind the code.
This will serve as a guide for future developers, as well as a reference for Kiro if it ever needs to revisit these features.
In this module you have learned two key concepts:
Let's move on to the next task:
Using specificiations for complex work