# Required markers (/docs/rules/required-markers)

Reports configured sequence markers that are missing.



{/* Generated by scripts/generate-docs.ts. Do not edit. */}

| Property         | Value                                                                                   |
| :--------------- | :-------------------------------------------------------------------------------------- |
| Id               | `required-markers`                                                                      |
| Category         | Project                                                                                 |
| Default severity | warning                                                                                 |
| Scope            | [`required-markers`](/docs/reference/computed-scopes#required-markers) (computed scope) |

## Options [#options]

| Option    | Type   | Default | Description                                                                                                                                             |
| :-------- | :----- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `markers` | `json` | `[]`    | Requirements: \{ "type"?, "name"?, "namePattern"?, "colorIndex"?, "minCount"? (1), "message"? }; criteria combine with AND. Empty: nothing is required. |

## Customize it [#customize-it]

Turn the rule on or off in the panel's Rules settings. To change its options, severity or wording, open it with its cogwheel in the rule editor and save: your copy replaces the built-in rule until you revert it. You can also copy the file below into your rules folder as `required-markers.rule.json` and edit it. See [Change a built-in rule](/docs/editor/saving#change-a-built-in-rule).

## Rule file [#rule-file]

```json title="required-markers.rule.json"
{
  "formatVersion": 1,
  "id": "required-markers",
  "name": {
    "en_US": "Required markers",
    "de_DE": "Erforderliche Marken",
    "es_ES": "Marcadores obligatorios",
    "fr_FR": "Marques requises",
    "it_IT": "Marcatori obbligatori",
    "ja_JP": "必須のマーカー",
    "ko_KR": "필수 마커",
    "pt_BR": "Marcadores obrigatórios",
    "ru_RU": "Обязательные маркеры",
    "zh_CN": "必需标记"
  },
  "description": {
    "en_US": "Reports configured sequence markers that are missing.",
    "de_DE": "Meldet fehlende konfigurierte Sequenzmarken.",
    "es_ES": "Detecta los marcadores de secuencia configurados que faltan.",
    "fr_FR": "Signale les marques de séquence configurées qui sont absentes.",
    "it_IT": "Segnala i marcatori di sequenza configurati che mancano.",
    "ja_JP": "設定されたシーケンスマーカーがない場合に報告します。",
    "ko_KR": "설정된 시퀀스 마커 중 없는 마커를 보고합니다.",
    "pt_BR": "Relata marcadores de sequência configurados que estão ausentes.",
    "ru_RU": "Сообщает об отсутствующих заданных маркерах эпизода.",
    "zh_CN": "报告缺失的已配置序列标记。"
  },
  "category": "project",
  "scope": "required-markers",
  "severity": "warning",
  "options": {
    "markers": {
      "type": "json",
      "default": [],
      "description": "Requirements: { \"type\"?, \"name\"?, \"namePattern\"?, \"colorIndex\"?, \"minCount\"? (1), \"message\"? }; criteria combine with AND. Empty: nothing is required."
    }
  },
  "checks": [
    {
      "condition": {
        "field": "requirement.found",
        "operator": "equals",
        "value": 0
      },
      "message": {
        "en_US": "Sequence has no {labels.word}{labels.named}{labels.matching}{labels.color} (at least {requirement.minCount} required).{requirement.explanation}",
        "de_DE": "Die Sequenz hat keine {labels.word}{labels.named}{labels.matching}{labels.color} (mindestens {requirement.minCount} erforderlich).{requirement.explanation}",
        "es_ES": "La secuencia no tiene {labels.word}{labels.named}{labels.matching}{labels.color} (mínimo obligatorio: {requirement.minCount}).{requirement.explanation}",
        "fr_FR": "La séquence ne comporte aucune {labels.word}{labels.named}{labels.matching}{labels.color} (minimum requis : {requirement.minCount}).{requirement.explanation}",
        "it_IT": "La sequenza non ha alcun {labels.word}{labels.named}{labels.matching}{labels.color} (almeno {requirement.minCount} richiesti).{requirement.explanation}",
        "ja_JP": "シーケンスに{labels.word}{labels.named}{labels.matching}{labels.color}がありません（{requirement.minCount}個以上必要）。{requirement.explanation}",
        "ko_KR": "시퀀스에 다음이 없습니다: {labels.word}{labels.named}{labels.matching}{labels.color}(최소 {requirement.minCount}개 필요).{requirement.explanation}",
        "pt_BR": "A sequência não tem nenhum {labels.word}{labels.named}{labels.matching}{labels.color} (mínimo exigido: {requirement.minCount}).{requirement.explanation}",
        "ru_RU": "В эпизоде отсутствует {labels.word}{labels.named}{labels.matching}{labels.color} (требуется не менее {requirement.minCount}).{requirement.explanation}",
        "zh_CN": "序列中没有{labels.word}{labels.named}{labels.matching}{labels.color}（至少需要 {requirement.minCount} 个）。{requirement.explanation}"
      }
    },
    {
      "condition": {
        "field": "requirement.found",
        "operator": "greaterThan",
        "value": 0
      },
      "message": {
        "en_US": "Sequence has {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (at least {requirement.minCount} required).{requirement.explanation}",
        "de_DE": "Die Sequenz hat {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (mindestens {requirement.minCount} erforderlich).{requirement.explanation}",
        "es_ES": "La secuencia tiene {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (mínimo obligatorio: {requirement.minCount}).{requirement.explanation}",
        "fr_FR": "La séquence comporte {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (minimum requis : {requirement.minCount}).{requirement.explanation}",
        "it_IT": "La sequenza ha {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (almeno {requirement.minCount} richiesti).{requirement.explanation}",
        "ja_JP": "シーケンスの{labels.word}{labels.named}{labels.matching}{labels.color}は{requirement.found}個です（{requirement.minCount}個以上必要）。{requirement.explanation}",
        "ko_KR": "시퀀스의 {labels.word}{labels.named}{labels.matching}{labels.color}: {requirement.found}개(최소 {requirement.minCount}개 필요).{requirement.explanation}",
        "pt_BR": "A sequência tem {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (mínimo exigido: {requirement.minCount}).{requirement.explanation}",
        "ru_RU": "В эпизоде только {requirement.found} {labels.word}{labels.named}{labels.matching}{labels.color} (требуется не менее {requirement.minCount}).{requirement.explanation}",
        "zh_CN": "序列中有 {requirement.found} 个{labels.word}{labels.named}{labels.matching}{labels.color}（至少需要 {requirement.minCount} 个）。{requirement.explanation}"
      }
    }
  ],
  "labels": {
    "word": {
      "field": "requirement.hasType",
      "values": {
        "true": {
          "en_US": {
            "count": "requirement.pluralCount",
            "one": "\"{requirement.type}\" marker",
            "other": "\"{requirement.type}\" markers"
          },
          "de_DE": {
            "count": "requirement.pluralCount",
            "one": "„{requirement.type}“-Marke",
            "other": "„{requirement.type}“-Marken"
          },
          "es_ES": {
            "count": "requirement.pluralCount",
            "one": "marcador de tipo \"{requirement.type}\"",
            "other": "marcadores de tipo \"{requirement.type}\""
          },
          "fr_FR": {
            "count": "requirement.pluralCount",
            "one": "marque de type « {requirement.type} »",
            "other": "marques de type « {requirement.type} »"
          },
          "it_IT": {
            "count": "requirement.pluralCount",
            "one": "marcatore \"{requirement.type}\"",
            "other": "marcatori \"{requirement.type}\""
          },
          "ja_JP": "「{requirement.type}」マーカー",
          "ko_KR": "\"{requirement.type}\" 마커",
          "pt_BR": {
            "count": "requirement.pluralCount",
            "one": "marcador \"{requirement.type}\"",
            "other": "marcadores \"{requirement.type}\""
          },
          "ru_RU": {
            "count": "requirement.pluralCount",
            "one": "маркер «{requirement.type}»",
            "few": "маркера «{requirement.type}»",
            "many": "маркеров «{requirement.type}»",
            "other": "маркера «{requirement.type}»"
          },
          "zh_CN": "“{requirement.type}”标记"
        },
        "false": {
          "en_US": {
            "count": "requirement.pluralCount",
            "one": "marker",
            "other": "markers"
          },
          "de_DE": {
            "count": "requirement.pluralCount",
            "one": "Marke",
            "other": "Marken"
          },
          "es_ES": {
            "count": "requirement.pluralCount",
            "one": "marcador",
            "other": "marcadores"
          },
          "fr_FR": {
            "count": "requirement.pluralCount",
            "one": "marque",
            "other": "marques"
          },
          "it_IT": {
            "count": "requirement.pluralCount",
            "one": "marcatore",
            "other": "marcatori"
          },
          "ja_JP": "マーカー",
          "ko_KR": "마커",
          "pt_BR": {
            "count": "requirement.pluralCount",
            "one": "marcador",
            "other": "marcadores"
          },
          "ru_RU": {
            "count": "requirement.pluralCount",
            "one": "маркер",
            "few": "маркера",
            "many": "маркеров",
            "other": "маркера"
          },
          "zh_CN": "标记"
        }
      }
    },
    "named": {
      "field": "requirement.hasName",
      "values": {
        "true": {
          "en_US": " named \"{requirement.name}\"",
          "de_DE": " namens „{requirement.name}“",
          "es_ES": " con el nombre \"{requirement.name}\"",
          "fr_FR": " avec le nom « {requirement.name} »",
          "it_IT": " con nome \"{requirement.name}\"",
          "ja_JP": " （名前「{requirement.name}」）",
          "ko_KR": " (이름: \"{requirement.name}\")",
          "pt_BR": " com o nome \"{requirement.name}\"",
          "ru_RU": " с именем «{requirement.name}»",
          "zh_CN": " 名为“{requirement.name}”的"
        },
        "false": ""
      }
    },
    "matching": {
      "field": "requirement.hasPattern",
      "values": {
        "true": {
          "en_US": " matching /{requirement.namePattern}/",
          "de_DE": " passend zu /{requirement.namePattern}/",
          "es_ES": " con el patrón /{requirement.namePattern}/",
          "fr_FR": " correspondant à /{requirement.namePattern}/",
          "it_IT": " con nome conforme a /{requirement.namePattern}/",
          "ja_JP": " （/{requirement.namePattern}/ に一致）",
          "ko_KR": " (/{requirement.namePattern}/ 일치)",
          "pt_BR": " com nome correspondente a /{requirement.namePattern}/",
          "ru_RU": " с именем по шаблону /{requirement.namePattern}/",
          "zh_CN": " 匹配 /{requirement.namePattern}/ 的"
        },
        "false": ""
      }
    },
    "color": {
      "field": "requirement.hasColor",
      "values": {
        "true": {
          "en_US": " with color index {requirement.colorIndex}",
          "de_DE": " mit Farbindex {requirement.colorIndex}",
          "es_ES": " con el índice de color {requirement.colorIndex}",
          "fr_FR": " avec l'indice de couleur {requirement.colorIndex}",
          "it_IT": " con indice colore {requirement.colorIndex}",
          "ja_JP": " （カラーインデックス {requirement.colorIndex}）",
          "ko_KR": " (색상 인덱스 {requirement.colorIndex})",
          "pt_BR": " com o índice de cor {requirement.colorIndex}",
          "ru_RU": " с индексом цвета {requirement.colorIndex}",
          "zh_CN": " 颜色索引为 {requirement.colorIndex} 的"
        },
        "false": ""
      }
    }
  },
  "data": {
    "requirement": "requirement.requirement",
    "found": "requirement.found",
    "minCount": "requirement.minCount"
  }
}
```
