> ## Documentation Index
> [HTML page](https://blode.md/docs/cli/validate)
> [Documentation index](https://blode.md/docs/llms.txt)
> Use the index to discover all available pages before exploring further.

# edda validate

Validate docs.json and your docs directory before deploy so the CLI catches schema errors, missing files, and common config mistakes early.

Check that your `docs.json` file is valid JSON and can be parsed by the CLI before deploying.

Run `edda validate` early in your workflow to catch schema errors, missing navigation pages, and malformed config before you spend time on preview or deploy. Unlike `edda push`, validate does not require authentication, which makes it a good fit for pre-commit hooks and CI jobs that only check configuration.

A practical sequence: scaffold with `edda new`, edit `docs.json` and add pages, run `edda validate`, then `edda dev` to preview and `edda push` when you are ready. If validate fails, fix the reported issue in `docs.json` or your page paths before trying again.

```bash
edda validate [dir]
```

## Directory resolution

If you omit the `dir` argument, the CLI searches for `docs.json` in these locations (in order):

1. The current working directory
2. `./docs`
3. `./apps/docs`

## Options

## Examples

```bash title="Validate from default location"
edda validate
```

```bash title="Validate a specific directory"
edda validate ./my-docs
```

### Successful output

```bash
$ edda validate
~ docs.json is valid.
i Done
```

### Warnings

Validate also reports warnings that do not block a deploy. The one most worth acting on: pages without a frontmatter `description`. Each page's line in `llms.txt` is `[title](url.md): description`, and that line is how coding agents choose which page to fetch, so a page without one lists as a bare title. See [Docs for agents](/features/agent-readable-docs).

```bash
$ edda validate
! 2 pages have no frontmatter description (guides/auth, quickstart). Agents choose pages from the description line in llms.txt, so add one sentence to each.
~ docs.json is valid.
i Done
```

> [!INFO]
> Running `edda push` also validates `docs.json` as its first step. A standalone
>   validate step is useful when you want to fail fast without needing
>   authentication.

## Related pages

- [edda push](/cli/push) -- deploy after validate passes
- [edda new](/cli/new) -- scaffold docs.json and index.mdx
- [docs.json reference](/configuration/docs-json) -- schema fields validate checks