마스터 계약 생성기은(는) 무엇을 하나요?
하나의 마스터 템플릿, 상대방당 하나의 작은 사양, 하나의 초안 빌드 단계. 생성기는 항상 출력물에 **초안(DRAFT)**이라고 표시하며, 템플릿이 완료되어 생성된 문서도 포함됩니다. 성공적인 변환은 법적 완전성, 계약 체결 권한, 발송 또는 서명 준비 상태가 아니라 아티팩트 생성이 성공했음을 증명합니다. 실행된 계약은 특정 기회를 통지에 의해 추가할 수 있도록 허용할 수 있습니다. 해당 권한은 Schedule A 워크플로우를 사용하기 전에 확인되어야 합니다.
사용 시기
- 동일한 조건과 몇 가지 당사자별 필드를 가진 프레임워크 계약(NDA, 소개 또는 소싱 수수료, 비우회, 마스터 서비스)을 여러 상대방에게 발행하는 경우.
- 거래가 시간이 지남에 따라 추가되고 각각을 다시 작성하는 것이 병목인 경우.
- 문서가 추적 가능한 소스에서 재현 가능하고, 차이 비교가 가능하며, 수동 편집이 없어야 하는 경우.
- 서명 필드가 자동으로 배치되고 안정적인 페이지 레이아웃이 필요한 경우.
작동 방식
템플릿
{{PLACEHOLDER}} 필드가 포함된 단일 마크다운 템플릿입니다. 모든 당사자별 값은 플레이스홀더이고, 나머지는 고정 텍스트입니다. 기본 뼈대는 references/master-template.example.md에 있습니다. 일반 문장을 법무팀 승인 조항으로 교체하세요.
참조 스크립트가 채우는 플레이스홀더:
| 플레이스홀더 | 출처 |
|---|---|
{{DATE}} | spec.date, 기본값 오늘 |
{{CP_SHORT}} | spec.short |
{{CP_LEGAL}}, {{CP_JURIS}}, {{CP_ADDR}} | 사양 필드, 또는 상대방이 서명 시 작성하면 빈 줄 |
{{ROLE_CLAUSE}}, {{FEE_TITLE}}, {{FEE_CLAUSE}} | 역할 테이블에서 spec.role로 선택 |
{{SCHEDULE_ROWS}} | spec.schedule, 또는 서명 시 "항목 없음" 행 하나 |
{{SUPPLEMENT_CLAUSE}} | spec.supplement, 뒤에 구분자 포함 또는 비어 있음 |
{{CP_SIGBLOCK}}, {{CP_SIGNER}}, {{CP_TITLE}}, {{CP_EMAIL}} | 서명 블록 필드, 알 수 없으면 빈칸 |
사양
상대방당 하나의 JSON 파일:
{
"file": "AcmeSupplier",
"short": "Acme",
"role": "supplier",
"legal": "Acme Compute Ltd",
"juris": "England and Wales company",
"addr": "1 Example Street, London",
"signer": "A. Person",
"title": "Director",
"email": "[email protected]",
"schedule": [["1", "2026-09-01", "Lot A (16 nodes)", "introducer", "12 months", "standard"]],
"supplement": "the Data Processing Addendum dated 2026-09-01"
}
초안에는 file, short, role만 필요합니다. 누락된 서명 필드는 검토 및 완성을 위해 빈 줄로 렌더링됩니다. references/spec.example.json 참조.
file은 AcmeSupplier 또는 Acme Supplier와 같이 비어 있지 않은 이식 가능한 파일 이름이어야 하며, 디렉토리 구성 요소를 포함하지 않아야 합니다. 빌더는 경로 구분자, 드라이브/UNC 구문, 제어 문자, Windows 예약 구두점 또는 장치 이름, 후행 점 또는 공백을 거부합니다. 잘못된 이름은 정리하거나 이름을 바꾸지 않고 거부하며, 출력을 생성하거나 pandoc을 호출하기 전에 처리합니다.
schedule을 생략하거나 []를 사용하면 "서명 시 항목 없음" 플레이스홀더가 적용됩니다. 제공된 스케줄은 그렇지 않으면 6개 셀 배열의 밀집 배열이어야 하며, 순서는 다음과 같습니다: 번호, 날짜, 보호된 상대방 또는 로트, 역할, 조건, 수수료. 각 셀은 유효한 유니코드 문자열 또는 유한 숫자여야 합니다. 의도적인 공백에는 빈 문자열이 허용됩니다. Null, 부울, 객체, 중첩 셀 배열, 누락된 셀 및 무한 숫자는 아티팩트 쓰기 또는 pandoc 활동 전에 행/셀 인덱스와 함께 거부됩니다. 짝이 맞지 않는 UTF-16 서로게이트도 UTF-8 출력 중 대체되지 않고 거부됩니다. 이모지와 같은 유효한 보충 문자는 계속 지원됩니다.
셀은 Markdown 또는 HTML이 아닌 일반 텍스트입니다. 빌더는 구문 문자를 인코딩하여 리터럴 파이프, 백슬래시, 백틱 및 마크업이 원래 필드에 유지되도록 합니다. 각 CRLF, bare CR 또는 LF는 공백이 됩니다. 줄 바꿈 주변의 텍스트는 유지됩니다. 기타 공백 및 리터럴 구두점은 렌더링된 셀에 보존됩니다. 소스 사양은 수정되지 않습니다. 일반적인 유효한 스케줄은 6개의 열을 유지합니다. 잘못된 입력이 빈 스케줄로 자동 대체되지는 않습니다.
역할 테이블
spec.role은 세 가지 문자열을 선택합니다: 상설 약정 조항, 수수료 섹션 제목, 수수료 조항 시작문.
| 역할 | 누가 지불하는가 | 조항의 형태 |
|---|---|---|
| buyer | 상대방이 소개된 당사자와의 거래에 대해 지불 | 상대방이 우리를 비독점적으로 소개하고 소개하도록 임명 |
| supplier | 상대방이 소개된 당사자와의 거래에 대해 지불; 우리가 원칙으로 구매하는 경우 스케줄 조건에 따라 계약 | 상대방이 우리와 우리가 소개하는 구매자에게 용량을 제공 |
| mutual | 상대방의 소개로 거래를 체결한 쪽이 지불 | 각 당사자가 소개할 수 있음; 체결하는 쪽이 지불 |
알 수 없는 역할은 빌드 시 거부됩니다.
빌드
운영자가 검토한 템플릿과 사양만 사용하세요. Schedule A 외부의 일반 템플릿 대체는 신뢰할 수 없는 문서에 대한 살균기가 아닌 마크업이 가능합니다. Pandoc은 참조된 로컬 또는 원격 리소스를 읽을 수 있습니다. 이 생성기는 변환기의 파일 시스템 또는 네트워크 액세스를 샌드박스 처리하지 않습니다. 해당 참조를 검토하고 적절히 제한된 환경에서 변환을 실행하세요. 집중 테스트는 합성 변환기를 사용하며 실제 DOCX 레이아웃 또는 격리를 인증하지 않습니다.
node skills/master-agreement-generator/scripts/build-agreement.js \
skills/master-agreement-generator/references/master-template.example.md \
specs/AcmeSupplier.json \
out/
스크립트는 플레이스홀더를 채우고, 스케줄 테이블을 렌더링하며, 필수 DRAFT 알림과 함께 out/<file> MASTER.md를 작성합니다. 기본적으로 (--require-docx 사용 시) 설치된 pandoc이 필요하며, 비어 있지 않은 일반 .docx 아티팩트를 생성합니다. Pandoc이 없거나, 변환 실패 또는 출력이 없거나 비어 있으면 종료 코드 1을 반환합니다. 각 pandoc 프로브 또는 변환은 10초로 제한됩니다. 알 수 없거나, 중복되거나, 충돌하는 플래그는 종료 코드 2를 반환합니다.
성공적인 Markdown 전용 초안을 위해 --markdown-only를 명시적으로 사용하세요. 이 모드는 pandoc을 프로브하거나 호출하지 않으며, 라이브러리에서 docxSkipped: true를 반환하고 전자 서명 워크플로우에 DOCX를 제공하지 않습니다. 라이브러리 호출자는 { markdownOnly: true }를 전달해야 합니다. { pandoc: false }만으로는 이제 DOCX 요구 사항을 실패합니다. 결과는 항상 documentStatus: 'draft'를 보고합니다. 기존 생성된 DOCX는 해당 Markdown을 재구축할 때 제거되며, 실패한 변환은 부분적인 DOCX를 남기지 않으므로 이전 아티팩트가 현재 출력으로 가장할 수 없습니다. 두 생성 파일을 버전 관리에서 제외하세요. 템플릿과 사양이 소스입니다.
실행 복사 모드는 없습니다. 예제에는 의도적으로 해결되지 않은 대괄호 안의 초안 작성 지시문이 포함되어 있습니다. {{PLACEHOLDER}} 토큰을 채우는 것이 해당 법적 조항을 완성하지는 않습니다. 실행 문서를 준비하기 전에 완성된 조항, 당사자 세부 정보, 승인된 서명자, 상업 조건 및 정확한 문서 버전에 대한 별도의 검토를 받으세요. 초안과 검토된 실행 사본을 별도의 기록으로 보존하세요. 성공적인 DOCX 변환이 업로드, 발송 또는 서명을 승인하지는 않습니다. esign-field-placement 승인 워크플로우를 참조하세요.
두 출력 대상은 해결된 출력 디렉토리의 직접 하위 항목이어야 합니다. 대상 중 하나에 기존 심볼릭 링크(끊어진 링크 포함)가 있는 경우 DOCX 변환이 비활성화된 경우에도 아티팩트가 기록되기 전에 거부됩니다. 일반 일반 파일은 재구축될 수 있습니다. 사용자가 제어하는 출력 디렉토리를 사용하세요. 이러한 검사는 동시에 적대적인 파일 시스템 변경에 대한 격리를 제공하지 않습니다. 반환된 아티팩트 경로는 절대 경로입니다.
서명 페이지 지오메트리
템플릿은 본문을 OpenXML 페이지 나누기로 끝내어 호환되는 DOCX 렌더러에서 서명 블록이 새 페이지를 요청하도록 합니다:
```{=openxml}
<w:p><w:r><w:br w:type="page"/></w:r></w:p>
```
서명 페이지 구조(우리 블록, 이어서 상대방 블록, 각각 By, Name, Title, Email, Date)는 일관되지만, 페이지 매김은 텍스트, 글꼴, 렌더러 또는 형식에 따라 변경될 수 있습니다. 필드를 배치하기 전에 실제 검토된 문서와 페이지 지오메트리를 검사하세요. esign-field-placement 스킬을 참조하세요.
Schedule A 추가 워크플로우
실행된 계약의 실제 권한 및 통지 요구사항을 사용하세요:
- 내부 협상/승인 채널에서 기회 경제성 및 협상 전략을 검토하세요. 계약 내용을 보내기 전에 약정 승인을 받으세요. 공유 상대방 채널은 내부 채널이 아닙니다.
- 제안된 항목, 역할, 조건, 수수료 및 발효일이 계약서의 명시된 Schedule A 통지 권한 내에 있는지 확인하세요. 상설 약관의 변경 또는 해당 권한을 벗어나는 변경은 해당 수정 절차를 따라야 합니다. 통지는 자체 예외를 만들 수 없습니다.
- 실행된 계약에서 승인된 수신자 및 통지 채널에 대해 승인된 상대방별 날짜가 기재된 통지를 작성하세요. 유용한 비즈니스 콘텐츠(보호된 상대방 또는 로트, 승인된 역할, 상업 조건 및 적용 가능한 수수료)를 포함하세요. 내부 마진, 협상 전략, 다른 당사자의 경제 상황, 시스템 추적, 원시 오류 및 내부 제출 통지는 제외하세요.
- 발송 전에 운영자 승인을 위해 정확한 통지를 제출하세요. operator-approval-loop를 참조하세요. 승인 또는 참여 권한이 없는 동안 상대방 채널에서 침묵을 유지하세요. 승인은 승인된 발신자가 실제로 통지를 전달했다는 증거와는 별개입니다.
- 실행된 계약의 실제 요구사항에 따라 승인된 전달 증거, 발효일 및 이의 제기를 기록하세요. 예시 기간은 기본값이 아닙니다. 실행된 문서를 변경 불가능하게 유지하세요. 추적된 스케줄 레코드를 업데이트하고 실행된 버전 및 승인된 통지에 대한 참조와 함께 내부 검토를 위해 초안 통합 보기를 재구축하세요. 이 재구축은 서명된 계약을 대체하거나 법적 효력을 증명하지 않습니다.
예시
통지문 텍스트
설명용 초안일 뿐입니다: 실행된 계약이 이 조건을 승인하고 운영자가 이 정확한 수신자 통지를 승인하는 경우에만 이 조건과 날짜를 사용하세요.
Schedule A 통지, 2026-09-02
계약: 2026-08-14일자 당사자와 Acme 간 마스터 계약
항목 2: Lot B, 8 노드, 지역 EU-West
역할: introducer
조건: 6개월 기간, 늦어도 2026-10-01까지 시작
수수료: standard
이 항목은 귀하가 상대방과의 사전 관계에 대한 날짜가 기재된 서면 증거와 함께 10영업일 이내에 이의를 제기하지 않는 한 오늘 발효됩니다.
사양에 항목 추가하기
"schedule": [
["1", "2026-08-20", "Lot A (16 nodes)", "introducer", "12 months", "standard"],
["2", "2026-09-02", "Lot B (8 nodes, EU-West)", "introducer", "6 months", "standard"]
]
재구축하고, 초안 Markdown의 차이를 비교하고, 변경되지 않은 실행 문서 및 통지 증거와 함께 통합 초안을 내부 기록에 첨부하세요.
상대방이 서명 시 자체 세부 정보를 작성하는 경우
초안 작성 시, 사양에서 legal, juris, addr, signer, title, email을 생략하여 빈 줄로 렌더링하세요. 별도로 검토된 실행 워크플로우는 상대방이 완료할 수 있는 세부 정보를 결정하고 실제 필드를 확인해야 합니다. 생성기는 전자 서명 봉투를 생성하거나 승인하지 않습니다.