콘텐츠 스키마는 잘못된 글을 거부하는 문지기이면서 작성 중인 생각을 너무 일찍 막지 않아야 한다. 초안과 발행 글에 같은 강도의 규칙을 적용하면 작성 경험이 불필요하게 경직된다.

초안에는 여백을 둔다

초안은 description이나 태그 없이도 저장할 수 있다. 제목, slug, 언어, 상태, 수정일처럼 파일을 식별하고 복구하는 데 필요한 값만 요구한다.

발행할 때 엄격해진다

statuspublished이면 검색 결과와 피드에 필요한 정보가 모두 있어야 한다.

if (frontmatter.status === "published") {
  requireDescription(50, 160);
  requirePublishedAt();
  requireTags(1, 5);
}

모르는 필드는 보존한다

Publishing Studio가 아직 이해하지 못하는 frontmatter field가 있어도 저장 과정에서 삭제하면 안 된다. 스키마는 알려진 필드를 검증하되 나머지를 통과시키고, 파일을 다시 쓸 때 그대로 보존한다.

검증의 목적은 파일을 스키마에 억지로 맞추는 것이 아니라 공개 결과의 신뢰성을 높이면서 원문을 안전하게 지키는 데 있다.