Launch offer: use code LAUNCH20 for 20% off any single pack. See the packs

Kiro Steering Files: 7 Examples to Copy (Free, No Signup)

Published 2026-10-26 · 7 min read · by AgentKit Co

Kiro reads Markdown files in .kiro/steering/ and uses them as persistent project knowledge, so you stop repeating "use pnpm, run the tests, don't touch the generated folder" in every chat. Front matter at the top of each file decides when it loads: always, only for matching files, only when you ask, or when your request matches a description.

This page gives you seven steering files to copy, free and without a signup. Everything here was checked on 2026-10-26 against Kiro's steering documentation. Kiro changes often, so re-check anything you rely on.

Where Kiro looks

Scope Location Applies to
Workspace .kiro/steering/*.md in the project root That workspace only
Global ~/.kiro/steering/*.md in your home folder Every workspace (IDE and CLI)
AGENTS.md Workspace root, subfolders, or ~/.kiro/steering/ Always included; no inclusion modes

When global and workspace steering disagree, Kiro's docs say the workspace file wins. That lets you keep personal defaults globally and override them per project. On Kiro Web, the cloud sandbox can't read your local ~/.kiro/steering/; the docs say to upload it through Configuration Sync instead.

The four inclusion modes

The front matter must be the very first thing in the file: no blank line or heading before the opening ---.

Mode Front matter Loads when
Always (default) inclusion: always Every interaction
Conditional inclusion: fileMatch + fileMatchPattern You work on files matching the pattern
Manual inclusion: manual You type #file-name in chat (also listed under /)
Auto inclusion: auto + name + description Your request matches the description

Kiro CLI V3 supports all four. In CLI V1/V2 only always files load automatically; fileMatch and manual files are left out.

1. product.md (foundation file)

Kiro's docs describe three foundation files that are included in every interaction by default: product.md, tech.md and structure.md. In the IDE you can generate them from the Steering panel ("Generate Steering Docs"); treat the result as a draft. Save this as .kiro/steering/product.md:

---
inclusion: always
---

# Product

Invoicer is a web app for freelancers to send invoices and track payments.

- Users: solo freelancers, not accounting teams. Keep flows to as few screens as possible.
- Money is stored as integer cents with a currency code. Never use floats for amounts.
- Invoices are legal documents: once sent, an invoice is never edited, only voided and reissued.

The "why" lines matter: they let the agent make the right call in cases your rules don't cover.

2. tech.md (foundation file)

---
inclusion: always
---

# Tech stack

- Next.js 15 (App Router), TypeScript strict mode, pnpm. Never use npm or yarn.
- Database: Postgres via Drizzle ORM. Schema lives in `src/db/schema.ts`.
- Tests: Vitest for units, Playwright for end-to-end.

## Commands

- Install: `pnpm install`
- Test: `pnpm test`
- Lint and types: `pnpm lint && pnpm typecheck`

Run test, lint and typecheck after every change and fix failures before saying you are done.
Ask before adding a dependency.

3. structure.md (foundation file)

---
inclusion: always
---

# Project structure

- `src/app/` routes and pages. Server components by default; add "use client" only when needed.
- `src/lib/` pure functions, no imports from `src/app/`.
- `src/db/` schema and queries. All SQL goes through here.
- `src/generated/` is rebuilt by `pnpm codegen`. Never edit it by hand.
- Tests sit next to the code as `*.test.ts`.

4. Conditional steering for React components (fileMatch)

Loads only when Kiro works on matching files, so it costs nothing elsewhere. Save as .kiro/steering/components.md:

---
inclusion: fileMatch
fileMatchPattern: ["src/components/**/*.tsx", "src/app/**/*.tsx"]
---

# Component rules

- One component per file, named export, file name matches the component.
- Props get an explicit `type Props = {...}`; no `any`.
- Use the existing `Button`, `Input` and `Dialog` from `src/components/ui/` instead of new ones.
- Every interactive element needs an accessible name (label, aria-label or visible text).

fileMatchPattern takes one glob string or an array of globs. The docs' examples include "app/api/**/*", "**/*.test.*" and ["**/*.ts", "**/*.tsx"].

5. Testing rules that only load for tests

---
inclusion: fileMatch
fileMatchPattern: "**/*.test.*"
---

# Testing

- Test behaviour through the public function, not private helpers.
- No network in unit tests: mock `fetch` with the helpers in `src/test/mocks.ts`.
- When you fix a bug, first add a test that fails without the fix.
- Run only the affected file while iterating: `pnpm vitest run path/to/file.test.ts`.

6. A manual runbook you call by name

Long procedures you need once a month shouldn't sit in every prompt. Save as .kiro/steering/release-runbook.md, then type #release-runbook in chat (or pick it from the / menu) when you need it:

---
inclusion: manual
---

# Release runbook

1. Confirm `main` is green in CI. Stop and tell me if it isn't.
2. Bump the version in `package.json` following semver; explain why it's a patch, minor or major.
3. Update `CHANGELOG.md` from the merged PR titles since the last tag.
4. Do not push tags or publish. Print the exact commands for me to run.

7. Auto inclusion by description

Auto files load when your request matches the description, similar to how skills are picked. Both name and description are required:

---
inclusion: auto
name: api-design
description: REST API conventions for this project. Use when creating or changing endpoints in app/api/.
---

# API conventions

- Routes are plural nouns: `/api/invoices`, `/api/invoices/{id}`.
- Errors return `{ "error": { "code": "...", "message": "..." } }` with a matching HTTP status.
- Validate every request body with the Zod schemas in `src/lib/validation.ts`.
- Never return internal IDs of other users' records.

Write the description the way a request would be phrased ("Use when creating or changing endpoints"). A vague description ("API stuff") gives Kiro nothing to match.

Link to live files instead of copying them

Steering files can pull in a real file so they never go stale. The docs show this syntax:

Follow the API contract in #[[file:api/openapi.yaml]].

Kiro IDE and CLI V3 also accept a line range (#[[file:docs/api-guidelines.md:12-28]]) and a one-level folder listing (#[[folder:config]]). If a reference can't be resolved, Kiro leaves a visible unresolved-reference marker rather than silently dropping it, so check for those after you move files.

Reusing AGENTS.md

Kiro reads AGENTS.md in the workspace root and in subfolders (for example services/api/AGENTS.md), and in ~/.kiro/steering/. AGENTS.md files are always included and don't support inclusion modes. If you already keep an AGENTS.md for Codex, Cursor or Copilot, Kiro will use it; put only Kiro-specific or scoped rules in .kiro/steering/ so the same rule isn't sent twice. Our AGENTS.md examples and AGENTS.md vs CLAUDE.md vs Cursor rules guides cover the shared format.

Why Kiro ignores a steering file

  • Something comes before the front matter. A blank line or a title above the first --- breaks it. The front matter must be the first content.
  • You're using a custom agent. The docs say steering files are not included automatically for custom agents. Add them to the agent's resources, for example "resources": ["file://.kiro/steering/**/*.md"].
  • Older CLI engine. In Kiro CLI V1/V2, fileMatch and manual files don't load automatically. Use always there, or upgrade to V3.
  • The pattern doesn't match. "*.tsx" and "src/components/**/*.tsx" are different scopes. Test the glob against a real path.
  • A global file contradicts it. Workspace steering wins over global, but a contradiction between two workspace files is still sent as both. Delete one of them.
  • Vague rules. "Write clean code" changes nothing. "Run pnpm test before finishing" does.
  • Secrets. Not a loading issue, but the docs are explicit: never put API keys or passwords in steering files; they are part of your codebase.

FAQ

How many steering files should I have? Kiro's best-practice advice is one domain per file (API, testing, deployment) with clear names like api-rest-conventions.md. Keep always files short and move detail into fileMatch, manual or auto files.

Can a team share steering? Commit .kiro/steering/ to the repo. For rules across every repo, the docs suggest placing shared files in ~/.kiro/steering/ (for example pushed by MDM or downloaded from a central repo).

Get matching files for every tool

The free AGENTS.md generator builds a Kiro steering file (.kiro/steering/project.md) plus matching AGENTS.md, CLAUDE.md, GEMINI.md, Cursor and Copilot files in your browser from your package.json or pyproject.toml. The AI Coding Agent Config Kit adds 12 stack templates and 12 prompts that audit and test them.

AI Coding Agent Config Kit

Instruction-file templates for 12 stacks and 12 prompts that write and audit them. 34-page PDF, $14.

Not ready to buy? Start with the free PDF.

Get 10 of our most-used prompts as a free PDF from Gumroad. You will be asked for your email so Gumroad can deliver it.

Keep reading

Agent Skills (SKILL.md) Explained: Formats, Folders and SafetyWhat an Agent Skill is, how SKILL.md works, which folders Claude Code, Codex, Cursor and Copilot read, and how to write and vet one. Checked on 2026-10-17.4 min readAGENTS.md Examples: 7 Copy-Paste Files for Real Projects (2026)Seven AGENTS.md examples to copy: Next.js, Python API, Go, a monorepo with nested files, a global ~/.codex file, an override and review rules.6 min readWhat Is an AI Agent? Plain-English Guide for BeginnersWhat an AI agent is, how it differs from a chatbot or automation, and the four building blocks every agent has. No jargon.4 min read