---
title: The rules of git8n check
description: Every rule of git8n check, with its level.
---

# The rules of `git8n check`

An error fails the check. A warning fails it only past `--max-warnings`. Each problem names its rule, and the CLI prints the address of its page.

| Rule | Level | What it finds |
| --- | --- | --- |
| [`invalid-json`](./invalid-json.md) | error | The file is not a JSON object. |
| [`invalid-manifest`](./invalid-manifest.md) | error | The manifest is not valid. |
| [`not-a-string`](./not-a-string.md) | error | A value is not a string or an object. |
| [`placeholders`](./placeholders.md) | error | The translation does not keep the placeholders of the source. |
| [`icu-plural-forms`](./icu-plural-forms.md) | warning | An ICU plural does not have the forms of its language. |
| [`unknown-link`](./unknown-link.md) | error | A linked message of vue-i18n names a key that does not exist. |
| [`plural-branches`](./plural-branches.md) | warning | A plural of vue-i18n does not have the branches of the source. |
| [`missing-key`](./missing-key.md) | warning | A key of the source has no translation. |
| [`empty-value`](./empty-value.md) | warning | A translation is empty, and the manifest does not mark it. |
| [`stale-empty`](./stale-empty.md) | warning | A key is empty on purpose, but its source changed since. |
| [`empty-source`](./empty-source.md) | warning | A text of the source is empty. |
| [`extra-key`](./extra-key.md) | warning | A key is not in the source. |
| [`extra-file`](./extra-file.md) | warning | A file has no version in the source. |
| [`skipped-file`](./skipped-file.md) | warning | The editor leaves out a file with this name. |

