# Teaching kli Your Project


By default kli knows your code only by reading it. Anything not in the code — the test
command, the project's name, a convention the team keeps — kli has to ask about or
infer. An `AGENTS.md` at the repository root fixes that: kli reads it into the system
prompt at startup, before your first message reaches the model.

## Write an AGENTS.md

Put plain, true facts in `AGENTS.md` at the repo root — the things you would tell a new
contributor on day one:

```md
# Acme Parser

A command-line tool that parses Acme log files into JSON.

## Commands

- Run the test suite with `make test`.
- Build the binary with `make build`.

## Conventions

- Source lives under `src/`. Tests mirror it under `tests/`.
- We use tabs, not spaces.
```

kli reads this verbatim, so a wrong fact becomes a wrong assumption later. The filename
is exact: `AGENTS.md`.

## Pick it up

A running session has already built its system prompt, so it will not see a file you
just wrote. Start a fresh session from the same directory and the new one reads
`AGENTS.md` as it boots. Ask something only the file knows:

```
How do I run the tests in this project?
```

The answer comes back as `make test`, drawn from the file rather than from searching
the tree — kli already had it before you typed.

## Where context comes from

`AGENTS.md` is the cheapest lever, but it is one input among several the system prompt
is assembled from. [The agent loop](/kli/concepts/the-agent-loop) and [Context and the
system prompt](/kli/concepts/context-and-the-system-prompt) show the rest, and [Inspect
and edit context](/kli/guides/inspect-and-edit-context) shows how to see and change what
the model is actually working from.
