> ## Documentation Index
> Fetch the complete documentation index at: https://make.edicus.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# AGENTS

# Edicus Makers 문서 지침

이 디렉터리는 Mintlify로 만드는 Edicus Makers 문서 센터다. 레포 전체 지침은 루트 `AGENTS.md`를 먼저 읽는다.

## 이 프로젝트

* 페이지는 YAML frontmatter가 있는 MDX 파일이고, 사이트 설정은 `docs.json`이다.
* 로컬 미리보기: `pnpm --filter edicus-docs dev` (mint dev, 포트 13001)
* 배포: Mintlify GitHub App이 main 브랜치의 `apps/docs`를 서브디렉터리로 읽어 자동 배포한다. 공개 주소는 make.edicus.io/docs다. make.edicus.io는 `apps/make`의 Vercel 프로젝트(`edicus-help`)가 받고 `/docs`만 Mintlify(`motion1.mintlify.site`)로 프록시한다. Mintlify 대시보드의 사용자 지정 도메인에서 "Host at"을 켜고 기본 경로를 `docs`로 둔다.
* 내부 링크는 지금처럼 `/sdk/launch` 형태로 쓴다. Mintlify는 기본 경로에 맞춰 문서를 다시 빌드한다. 하위 경로 전환 직후 내부 링크가 `/docs` 아래로 이어지는지 한 번 확인한다. 고객센터처럼 문서 밖으로 가는 링크는 `https://make.edicus.io/help` 같은 절대 주소로 쓴다.
* 탭은 넷이다. **개발자**(가이드 MDX), **상품 설정**(`products/`, Edicus Manager 상품·리소스·Customize·렌더 옵션), **템플릿 제작**(`templates/`, InDesign 템플릿과 익스포터, 테스트 렌더), **Server API**(OpenAPI 자동 생성).
* 상품 설정과 템플릿 제작 문서의 출처는 edicus-man(화면 이름, 저장 키, 기본값), Edicus 편집기(`dev`, 실제 동작), edicus-cep(익스포터, `dev`), edicus-prepress(렌더, `dev`) 코드다. Notion Help Center와 고객 Q\&A는 참고만 하고 코드로 확인되는 것만 싣는다.
* 설정 항목마다 코드에서 끝까지 추적한 동작을 적는다. "모션원에 확인하세요" 같은 미확인 표기를 남기지 않는다. 편집기가 읽지 않는 키는 그렇다고 쓰고, 일부 파트너에게만 열리는 항목은 "파트너 권한에 따라 잠금으로 표시될 수 있습니다"로만 쓴다(파트너 코드 금지).
* Server API 레퍼런스의 단일 진실 원천은 `api-reference/openapi.json`이다. 엔드포인트가 바뀌면 MDX가 아니라 이 스펙을 고친다. `docs.json`의 Server API 탭은 `METHOD /path` 형태로 오퍼레이션을 참조한다.
  * 각 오퍼레이션에 `x-mint.href`로 ASCII 경로를 박아 둔다. 이게 없으면 한글 summary에서 슬러그가 유도돼 URL이 퍼센트 인코딩된다. 형식은 `/api-reference/<tag 소문자>/<operationId 케밥>`.
  * 리소스 API 오퍼레이션은 `servers`로 리소스 호스트를 개별 지정한다.
  * 여러 엔드포인트에 걸쳐 쓰이는 스키마는 `api-reference/models/<케밥>.mdx`에 데이터 모델 페이지로 둔다. frontmatter `openapi-schema: "/api-reference/openapi.json <스키마 이름>"`가 `components.schemas`를 그대로 그리므로 본문에는 필드를 다시 쓰지 않고, 어느 엔드포인트에서 나오는지만 적는다. 필드 설명은 스펙의 `description`에 쓴다. 엔드포인트 하나에만 붙는 `XxxResult`는 페이지를 만들지 않는다. 다른 체제로 옮길 때는 스키마를 표로 그리는 변환이 필요하다.
* 콘텐츠 출처는 `edicus-sdk` 레포의 `docs/`와 `llms.txt`, `edicus-api`와 `edicus-resource` 레포의 실제 라우트, 그리고 `references/`의 사내 스펙 PDF 두 편이다. **문서와 코드가 다르면 코드를 따르고, 그 차이를 `reference/known-inconsistencies.mdx`에 적는다.** 이 파일은 2026-10-07부터 `.mintignore`로 배포에서 빼 둔 내부 작업 목록이다. 항목마다 해당 저장소의 이슈를 단다. 공개 페이지에서 링크하지 않고, `docs.json`에도 다시 넣지 않는다.
* **공개하지 않는 기능 셋**이 있다. 아래는 파트너 연동 대상이 아니라 모션원 내부 도구용이므로 문서 본문, 예제, 표, 이벤트와 커맨드 목록, `openapi.json`, `docs.json` 어디에도 싣지 않는다. 2026-10-07에 전부 걷어 냈다.
  * **템플릿 편집**: `editTemplate`(v2 `edit_template`)와 템플릿 편집 화면에서만 오는 `publish-template-report`, `update-template-report`.
  * **스태프 토큰**: `POST /v2/auth/staff/token`, `StaffTokenResult`, `edicusIdToken` 보안 스킴, 이 엔드포인트에서만 나는 오류 코드(`invalid_credentials`, `no_partner_code`, `no_staff_account`, `token_expired`).
  * **패시브 모드**: `run_mode: 'passive'`, `sdk/passive-mode.mdx`, 패시브 모드 전용 이벤트(`state-history`, `var-added`, `var-deleted`, `var-changed`, `selection-changed`, `font-list`, `undo`, `redo`, `impose-opened`, `set-cell-src-infos-report`, `clear-cell-src-report`, `enter-overlay-mode`, `exit-overlay-mode`).
  * SDK나 서버에 실제로 있어도 싣지 않는다. 공개 여부가 바뀌면 사용자가 정한다. 비공개 내부 문서(`reference/known-inconsistencies.mdx`)에서는 언급해도 된다.
* Edicus 내부 운영용 엔드포인트(`/api/order/query`, `/api/order/request_for_render`, `/api/orders/:id/status/as/:status`, `force_cancel`, `master_admin` 계열)는 싣지 않는다.
* **서버용 JS SDK는 없다.** `@edicus/sdk/server`, `createEdicusApi`, `EdicusApiError`, `EdicusNetworkError`, `createRequester`를 문서에 쓰지 않는다. 서버 연동은 HTTP 엔드포인트 직접 호출로만 설명한다. 예제는 TypeScript `fetch`로 쓰고, 반복되는 헤더와 오류 확인은 `server/client.mdx`의 `callEdicus` 래퍼를 참조한다. `@edicus/sdk`(브라우저)와 `@edicus/sdk/types`(타입 전용), `@edicus/sdk/legacy`(v2 호환) 세 진입점만 존재한다.
* 검증은 `pnpm --filter edicus-docs exec mint validate`와 `mint broken-links`로 한다. 둘 다 통과해야 한다.
* `_legacy-starlight/`는 Mintlify 전환 전의 Astro Starlight 앱 전체다. `.mintignore`로 빌드에서 제외한다. 되살리는 방법은 그 안의 README.md에 있다. 콘텐츠 이전이 끝나면 지운다.
* Mintlify 컴포넌트와 설정은 [https://mintlify.com/docs](https://mintlify.com/docs) 에서 확인한다. MCP를 쓸 수 있으면 `https://www.mintlify.com/docs/mcp`를 쓴다.

## 독자와 용어

* 독자는 셋이다: 외부 연동 개발자, 템플릿 제작자, Edicus Link 셀러. 개발자 문서는 경험이 적은 개발자를 기준으로 개념을 하나씩 설명한다.
* 용어: 파트너(고객사), 파트너 코드, API 키(서버 전용), 토큰(브라우저용 JWT), 프로젝트(사용자가 편집 중인 문서), 템플릿, ps\_code(사이즈코드@상품코드). 영어 식별자는 코드체로 쓴다.
* wire 이름(액션 이름, 파라미터 이름)은 오타를 포함해 실제 이름 그대로 쓴다. 바로잡지 않는다.

## 문체

* 한국어, 존댓말. em dash를 쓰지 않는다.
* 한 문장에 한 가지 생각. 제목은 명사형이나 짧은 문장.
* UI 요소는 굵게, 파일명과 명령과 코드 참조는 코드체.
* 개념 페이지 구조: 배우는 것, 왜 필요한가, 직접 해보기, 됐는지 확인, 다음 단계.

## 허용 컴포넌트

Mintlify 전용 컴포넌트는 import 없이 쓸 수 있지만 Mintlify 밖에서는 동작하지 않는다. 나중에 직접 만드는 체제(Starlight 등)로 옮길 때 변환 비용을 줄이기 위해 아래 표의 컴포넌트만 쓰고, 본문은 최대한 순수 마크다운으로 쓴다.

| 용도 | 허용 | 옮길 때 대응(Starlight 기준) |
| - | - | - |
| 콜아웃 | `<Note>`, `<Info>`, `<Tip>`, `<Warning>`, `<Danger>` | `<Aside type="note / tip / caution / danger">` |
| 완료 확인 | `<Check>` | `<Aside type="tip">` |
| 단계 | `<Steps>` 안의 `<Step title="...">` | `<Steps>` 안의 번호 목록 |
| 탭 | `<Tabs>` 안의 `<Tab title="...">` | `<Tabs>` 안의 `<TabItem label="...">` |
| 카드 | `<Columns cols={n}>` 안의 `<Card title icon href>` | `<CardGrid>` 안의 `<Card>` 또는 `<LinkCard>` |
| 코드 묶음 | `<CodeGroup>` (파일명 붙은 코드 블록 여러 개) | `<Tabs>`로 감싼 코드 블록 |
| 이미지 | `<Frame caption="...">` 안의 `<img>` | 일반 이미지와 캡션 문단 |
| API 파라미터 | `<ParamField>`, `<ResponseField>`, 중첩은 `<Expandable>` | `ParamTable` 컴포넌트의 행 |
| 접기 | `<Accordion title="...">` | `<details>`와 `<summary>` |
| 다이어그램 | ` ```mermaid ` 코드 펜스 | `rehype-mermaid` 또는 `starlight-mermaid` 플러그인 |

흐름과 상태 전이는 ASCII 아트 대신 mermaid로 그린다. 한글은 폭이 넓어 ASCII 정렬이 깨진다.

쓰지 않는 것: 위 표 밖의 Mintlify 컴포넌트, `<div className="...">` 같은 Tailwind 레이아웃, 인라인 HTML과 스타일, 커스텀 React 컴포넌트, `snippets/` 재사용 조각. 필요해지면 먼저 이 표에 대응 관계와 함께 추가한 뒤 쓴다.

## 다루지 않는 것

* 내부 호스트명, 서비스 계정, DB 접속 정보, API 키 값. 예제의 키는 항상 자리표시자다.
* MotionOne 내부 운영 절차.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.