Skip to content

Book 3: Ship

Water Tracker: Gemini CLI book cover

Before you start

Requires: Book 3 Offer

Estimated time: ~30 minutes with your LLM

You have a vault full of organised knowledge and a validated offer with paying early adopters. Now you need to build the thing. SpecKit is a specification-driven development workflow that turns product descriptions into working code through a repeatable four-stage cycle: Specify, Plan, Tasks, Implement.

Each stage produces a concrete artefact that feeds into the next, so nothing gets lost in translation between what you imagined and what gets built.

SpecKit is implemented as a set of skills installed in your LLM’s skills directory. Each skill auto-activates when you describe the relevant task.

  1. Specify. Describe what you want built in plain language. The speckit.specify skill generates a structured specification with an overview, user stories, requirements, and acceptance criteria.
  2. Plan. The speckit.plan skill reads your specification and produces a technical blueprint: which files need to change, the implementation order, and any risks.
  3. Tasks. The speckit.tasks skill breaks the plan into a flat, ordered list of discrete tasks.
  4. Implement. The speckit.implement skill works through the task list one task at a time, writing code, running tests, and moving on.

The four stages form a loop. After implementing a feature, you may discover that the spec needs updating, or that the plan should change for the next feature. This is expected. The spec is always the source of truth.

In the Offer page, you found 10 early adopters. They paid. They are waiting. The offer PDF you shared with them is your build constraint now.

You can only build what the offer promised. Not more. Not less. Without this constraint, you would spend three weeks adding features nobody asked for. With the constraint, you build what people paid for, and you ship it to them.


Gemini CLI is the AI coding tool you will use throughout this book. Like the tools in Books 1 and 2, it runs in your terminal and interacts directly with your project files.

Install Gemini CLI

macOS

Open Terminal and run: npm install -g @google/gemini-cli. Once the installation finishes, run gemini to verify it launches. You will need Node.js 18 or later installed first. If you do not have Node.js, download it from nodejs.org. For the latest installation instructions, visit geminicli.com.

Windows

Open PowerShell and run: npm install -g @google/gemini-cli. Once the installation finishes, run gemini to verify it launches. You will need Node.js 18 or later installed first. If you do not have Node.js, download it from nodejs.org. For the latest installation instructions, visit geminicli.com.

Gemini CLI requires a Google AI account with API access. Visit ai.google.dev, sign in, generate an API key, and store it somewhere safe. When you first run gemini, it will walk you through authentication.

For detailed setup instructions, see the Gemini CLI guide.

Step 2
Clone the Water Tracker repository from https://github.com/evalincius/odd-water-tracker-mob-app (branch: develop) into my project directory.

Step 3: Follow the README Setup Instructions

Section titled “Step 3: Follow the README Setup Instructions”

Open the README.md file in the repository and read through the setup instructions. If you get stuck on any step, ask your LLM for help.

Step 3
I have read the README for this project. Can you help me follow the setup instructions to get all dependencies installed and the development environment ready?
Step 4
Run the app in my Android emulator and walk me through what I should see on screen.

Before moving on, confirm these three things:

  1. The app launches without crash screens or error messages in your terminal.
  2. Navigation works by tapping each tab in the bottom bar (Home, Daily, Weekly, Monthly, Settings).
  3. The core interaction responds: tap a quick-add button and confirm the progress ring updates.

If any of these checks fail, copy the error message from your terminal and paste it into Gemini CLI.

Step 5: Build a New Feature: Edit Entry (Modify Time & Amount)

Section titled “Step 5: Build a New Feature: Edit Entry (Modify Time & Amount)”

Now you will use the SpecKit workflow to add a real feature. Users will be able to tap an entry on the Daily screen to edit both the amount and the timestamp via a bottom sheet modal.

Describe the feature to your LLM. The speckit.specify skill will auto-activate and generate a structured specification:

Step 5
Create a specification for the following feature: Add an Edit Entry feature to the Water Tracker app. When a user taps an entry on the Daily screen, a bottom sheet modal opens pre-filled with the current amount and timestamp. The user can modify the amount (validated between 1ml and 5000ml) and change the timestamp using a time picker. Saving the edit performs an UPDATE operation on the existing database entry and invalidates the relevant Riverpod providers so that totals, entries, and streak data all refresh. The modal should have Save and Cancel buttons, with Save disabled until the user changes at least one field.

Once the specification is created and you are happy with it, ask your LLM to generate the implementation plan (the speckit.plan skill will auto-activate), then to break it into ordered tasks (speckit.tasks), and finally to implement them (speckit.implement). Review the output at each stage.

The app is built. Now put it in the hands of the people who paid for it.

Your 10 early adopters from the Offer page are waiting. Share a development build (APK for Android, TestFlight for iOS). Send it to each early adopter with a short message: “Here is the water tracker you signed up for. I would love to hear what you think.”

Run lightweight UAT. Ask each person to do three things: log a glass of water, check the daily screen, and look at the weekly chart. If they can do all three without asking you a question, the core experience works.

Collect feedback simply. A shared note, a WhatsApp group, or a reply to your message. Close the loop: when you fix something based on their feedback, tell them.


You have taken a starter project, set up a development environment, and built a real feature using the SpecKit workflow with Gemini CLI. The Water Tracker is yours to keep building.

Head to the Scale page to learn how to grow beyond your first 10 early adopters with outreach, content, and the Core Four framework.