マスター契約書生成ツール は何をしますか?
1つのマスターテンプレート、カウンターパーティごとに1つの小さな仕様書、1つのドラフトビルドステップ。 生成ツールは、完成したテンプレートから生成されたドキュメントも含め、出力に常にDRAFTとラベル付けします。変換の成功は、アーティファクト生成の成功を証明するものであり、法的な完全性、契約締結の権限、送信または署名の準備ができていることを証明するものではありません。実行済み契約によっては、指定された機会を通知により追加することが許可されている場合があります。その権限は、Schedule Aワークフローを使用する前に確立しておく必要があります。
使用すべき場面
- フレームワーク契約(NDA、紹介料契約、非回避契約、マスターサービス契約)を、同じ条件で、パーティ固有のフィールドだけが異なる多数のカウンターパーティに対して発行する場合。
- 取引が時間の経過とともに追加され、そのたびに契約を再作成することがボトルネックになっている場合。
- ドキュメントが追跡可能なソースから再現可能であり、差分を確認でき、手動編集がないことが求められる場合。
- 署名欄が自動的に配置され、安定したページレイアウトが必要な場合。
仕組み
テンプレート
{{PLACEHOLDER}} フィールドを含む1つのMarkdownテンプレート。パーティ固有の値はすべてプレースホルダーであり、それ以外はすべて固定テキストです。スケルトンは references/master-template.example.md にあります。その汎用的な文章を、あなたの法務が承認した条項に置き換えてください。
リファレンススクリプトが埋めるプレースホルダー:
| プレースホルダー | ソース |
|---|---|
{{DATE}} | spec.date、デフォルトは本日 |
{{CP_SHORT}} | spec.short |
{{CP_LEGAL}}、{{CP_JURIS}}、{{CP_ADDR}} | specフィールド。または、カウンターパーティが署名時に記入する場合は空白行 |
{{ROLE_CLAUSE}}、{{FEE_TITLE}}、{{FEE_CLAUSE}} | ロールテーブルから spec.role によって選択 |
{{SCHEDULE_ROWS}} | spec.schedule、または「署名時のエントリなし」行 |
{{SUPPLEMENT_CLAUSE}} | spec.supplement、末尾のセパレータ付きでレンダリング、または空 |
{{CP_SIGBLOCK}}、{{CP_SIGNER}}、{{CP_TITLE}}、{{CP_EMAIL}} | 署名ブロックフィールド、不明な場合は空白 |
仕様書
カウンターパーティごとに1つの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つのセルからなる配列の密集した配列である必要があり、その順序は次のとおりです: 番号、日付、保護対象のカウンターパーティまたはロット、ロール、条件、手数料。各セルは有効なUnicode文字列または有限の数値である必要があります。意図的な空白には空文字列が許可されます。Null、ブーリアン、オブジェクト、ネストされたセル配列、セルの欠落、非有限の数値は、アーティファクトの書き込みやpandocアクティビティの前に行/セルインデックスとともに拒否されます。ペアになっていないUTF-16サロゲートも、UTF-8出力中に置き換えられるのではなく拒否されます。絵文字などの有効な補助文字は引き続きサポートされます。
セルはプレーンテキストであり、MarkdownやHTMLではありません。ビルダーは構文文字をエンコードするため、リテラルのパイプ、バックスラッシュ、バックティック、マークアップは元のフィールドに保持されます。各CRLF、単独のCR、LFはスペースになります。改行の前後のテキストは保持されます。その他の空白やリテラルの句読点は、レンダリングされたセルに保持されます。ソースの仕様書は変更されません。通常の有効なスケジュールは6つの列を保持します。不正な入力が空のスケジュールに静かに置き換えられることはありません。
ロールテーブル
spec.role は、3つの文字列を選択します: 基本契約条項、手数料セクションのタイトル、手数料条項の冒頭。
| ロール | 支払う側 | 条項の形状 |
|---|---|---|
| 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-only を明示的に使用すると、Markdownのみのドラフトが成功します。このモードはpandocをプローブまたは呼び出さず、ライブラリから docxSkipped: true を返し、e-signワークフロー用の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 notice, 2026-09-02
Agreement: Master Agreement dated 2026-08-14 between Us and Acme
Entry 2: Lot B, 8 nodes, region EU-West
Role: introducer
Terms: 6 month term, start no later than 2026-10-01
Fee: standard
This entry takes effect today unless you object within ten business days
with dated written evidence of a prior relationship with the counterparty.
仕様書へのエントリ追加
"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 を仕様書から省略して空白行をレンダリングします。個別にレビューされた実行ワークフローで、どの詳細をカウンターパーティが記入できるかを決定し、実際のフィールドを検証する必要があります。ジェネレーターはe-signエンベロープを作成または承認しません。