Why I Reach for AWS Kiro CLI (and How I Get the Most Out of It)
Kiro brings spec-driven rigor to agentic coding — right in your terminal. Here's what Kiro CLI is, why it's a strong alternative to other AI coding agents, and my workflow, memory, and steering tips.
I've been using AWS Kiro for a while now, mostly through Kiro CLI, and it has quietly become part of my daily workflow. Plenty of AI coding tools can generate code; what keeps me coming back to Kiro is that it brings actual engineering discipline to the process. This is a practical look at what Kiro is, why it stands out among agentic coding tools, and the habits that get the most out of Kiro CLI.
What is Kiro (and Kiro CLI)?
Kiro is AWS's agentic development tool. It comes as a family: an agentic IDE, a web interface for autonomous agents, and the one I live in — Kiro CLI, which brings the same agents and intelligence straight into your terminal. Rather than only doing 'vibe coding,' Kiro's signature is spec-driven development: it turns a prompt into formal requirements, then a design, then a task breakdown, and only then writes the code.
Why it's a strong alternative to other AI agents
If you've used other agentic coding assistants, Kiro will feel familiar — but a few things make it stand out for the kind of work I do:
- Spec-driven rigor — it plans requirements and design before touching code, which keeps larger features from going off the rails.
- Steering files — persistent, version-controlled project context, so the agent actually knows your stack and conventions.
- Custom agents — a backend, frontend, or DevOps agent that each focuses its full context window on what matters for that job.
- Terminal-native — it lives where I already work, scripts cleanly, and fits into CI and automation.
- AWS-native — it slots naturally into an AWS-heavy stack, which matters a lot for my Splunk and cloud work.
To be clear about the landscape: Kiro is powered by frontier models under the hood, so this isn't really 'model A vs model B.' It's about the workflow built around the model — and that's where Kiro earns its place alongside the other agents in my toolkit.
The spec-driven workflow
For anything bigger than a quick edit, I let Kiro run its spec flow instead of jumping straight to code:
- Requirements — describe the feature; Kiro drafts clear requirements and acceptance criteria you can review and correct.
- Design — it proposes an approach and the pieces involved, so you catch architectural issues before any code exists.
- Tasks — the work is broken into a checklist of concrete, reviewable steps.
- Implement — only now does it write code, task by task, which makes the diffs small and easy to verify.
For small fixes I skip straight to chat. The skill is knowing which mode a task deserves — spec for features, chat for quick changes.
Steering & memory — the part that makes it stick
Steering files are how you give Kiro durable memory of your project. They're just markdown, discovered automatically, and they load on every interaction — no re-explaining your stack each session. Workspace steering lives in .kiro/steering/, and global steering (shared across all your projects) lives in ~/.kiro/steering/.
Three foundational files do most of the heavy lifting:
.kiro/
steering/
product.md # what you're building and why
tech.md # stack, libraries, constraints
structure.md # file layout, naming, conventions
api-standards.md # optional: REST/error/auth patterns
testing-standards.md # optional: how you write testsDrop an AGENTS.md in your workspace root (or global steering folder) for conventions you want respected everywhere — it's always included. Keep steering lean, though: everything you load competes for the context window, so write what the agent truly needs, not your whole wiki.
Managing context like a pro
Context quality is what separates a sharp session from a sloppy one. Kiro gives you a few levers, and a handful of commands I use constantly:
/context show # see what's filling the window
/context add docs/*.md # pull files into this session
/context remove file.py # drop something you no longer need
/compact # summarize old turns to reclaim spaceKnow the difference between the context types so you don't waste tokens: agent resources are always on (essential project files); session context is temporary (this session only); skills load on demand (great for big guides); and knowledge bases are searched on demand — they don't consume the window until queried, which makes them perfect for large codebases.
# Index a big codebase without paying for it on every request
/knowledge add ./ --include "**/*.py" --exclude "node_modules/**"
# Pin a custom agent as your default
kiro-cli settings chat.defaultAgent my-project-agentMy day-to-day Kiro CLI tips
- Invest in steering on day one — product.md, tech.md, and structure.md pay for themselves within a session.
- Watch the window with /context show; once you're past ~75%, quality drops, so /compact or trim.
- Use knowledge bases for anything large — reference docs, a legacy module — instead of stuffing files into context.
- Make a custom agent per domain so each keeps a tight, relevant context instead of one bloated generalist.
- Reach for agent hooks to automate the repetitive stuff (e.g. on save or on new file).
- Commit your .kiro/ steering to git — your whole team gets the same project memory for free.
- Match the mode to the task: spec flow for features, plain chat for quick edits.
The best AI coding sessions aren't about a bigger model — they're about better context. Kiro just makes that context easy to manage.
If you're evaluating agentic coding tools — or want help wiring one into a real engineering workflow, AWS-native or otherwise — that's squarely the kind of work I do. Give Kiro CLI an honest week with proper steering set up, and I think you'll see why it earned a spot in my toolkit.
Found this useful? Let's talk about your project.
Get in touch