主協議生成器 是做什麼的?
一個主模板、每個交易對手一份小型規範、一個草稿建構步驟。 生成器始終將輸出標示為 DRAFT,包括從已完成模板產生的文件。成功的轉換僅證明文件生成,不代表法律完整性、簽約授權或已準備好發送或簽署。已執行的協議可能允許透過書面通知添加指定機會;在使用 Schedule A 工作流程前,必須先建立該授權。
何時使用
- 您向許多交易對手發布一份框架協議(NDA、轉介或採購費用、非規避、主服務協議),條款相同,僅少數交易對手特定欄位不同。
- 隨著時間推移新增交易,且每次重新起草成為瓶頸。
- 文件必須可從追蹤的來源重現、可比較且無手動編輯。
- 簽名欄位由自動化放置且需要穩定的頁面佈局。
運作方式
模板
一個帶有 {{PLACEHOLDER}} 欄位的單一 Markdown 模板。每個交易對手特定的值都是一個佔位符;其他所有內容均為固定文字。範例骨架位於 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 或使用 [] 表示「簽署時無條目」佔位符。提供的 schedule 必須是六個儲存格陣列的密集陣列,順序為:編號、日期、受保護的交易對手或批次、角色、條款、費用。每個儲存格必須是有效的 Unicode 字串或有限數字;允許為空字串以表示有意留空。Null、布林值、物件、巢狀儲存格陣列、缺少儲存格和非有限數字將在寫入任何文件或 pandoc 活動之前,以行/儲存格索引被拒絕。未配對的 UTF-16 代理對也會在 UTF-8 輸出期間被拒絕,而非替換;有效的補充字元(如表情符號)仍受支援。
儲存格為純文字,而非 Markdown 或 HTML。建構器會對語法字元進行編碼,以使字面管線符、反斜線、反引號和標記保留在其原始欄位中。每個 CRLF、裸 CR 或 LF 都會變成空格;換行前後的文字會保留。其他空白字元和字面標點符號會在渲染後的儲存格中保留。來源規範不會被修改。一個普通有效的 schedule 會保留其六欄;格式錯誤的輸入絕不會被靜默替換為空的 schedule。
角色表格
spec.role 選取三個字串:長期安排條款、費用部分標題和費用條款開場白。
| 角色 | 誰付費 | 條款形式 |
|---|---|---|
| buyer | 交易對手支付與被介紹方的交易費用 | 交易對手以非獨家基礎任命我們來尋找和介紹 |
| supplier | 交易對手支付與被介紹方的交易費用;當我們以本人身份購買時,我們按 schedule 條款簽約 | 交易對手向我們以及我們介紹的買家提供產能 |
| 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/
腳本會填入佔位符、渲染 schedule 表格,並寫入 out/<file> MASTER.md,其中包含強制性的 DRAFT 通知。預設情況下(或使用 --require-docx),它需要已安裝的 pandoc 來產生非空的常規 .docx 文件。缺少 pandoc、轉換失敗或缺少/空的輸出會返回退出碼 1。每次 pandoc 探測或轉換的超時時間為十秒。未知、重複或衝突的旗標會返回退出碼 2。
明確使用 --markdown-only 以僅成功產生 Markdown 草稿。此模式絕不會探測或呼叫 pandoc,會從函式庫返回 docxSkipped: true,且不會為電子簽名工作流程提供 DOCX。函式庫呼叫者必須傳遞 { markdownOnly: true };僅傳遞 { pandoc: false } 現在會導致 DOCX 要求失敗。結果始終報告 documentStatus: 'draft'。重建其 Markdown 時,會移除現有的已生成 DOCX,而失敗的轉換不會留下部分的 DOCX,因此較早的文件無法冒充為當前輸出。將兩個生成的檔案保留在版本控制之外;模板和規範才是原始碼。
沒有執行副本模式。範例中故意包含未解決的方括號起草指示;填寫 {{PLACEHOLDER}} 記號並不能完成這些法律條款。在準備執行文件之前,請單獨審查已完成的條款、當事人詳細資訊、授權簽署人、商業條款和確切文件版本。將草稿和經審查的執行副本作為不同的記錄保存。即使成功的 DOCX 轉換也不授權上傳、發送或簽署。請參閱電子簽名欄位放置審批工作流程。
兩個輸出目標必須是已解析輸出目錄的直接子項。任一目標處的現有符號連結(包括失效連結)會在寫入任一文件之前被拒絕,即使 DOCX 轉換已禁用。普通的常規檔案可以重建。使用您控制的輸出目錄;這些檢查不提供針對並發惡意檔案系統變更的隔離性。返回的文件路徑是絕對路徑。
簽名頁面幾何
模板以 OpenXML 分頁符號結束內文,以便簽名區塊在相容的 DOCX 渲染器中請求新頁面:
```{=openxml}
<w:p><w:r><w:br w:type="page"/></w:r></w:p>
```
簽名頁面結構(我方區塊,接著交易對手區塊,每個區塊包含 By、Name、Title、Email、Date)是一致的,但分頁可能因文字、字型、渲染器或格式而改變。在放置欄位之前,請檢查實際審閱後的文件及其頁面幾何;請參閱電子簽名欄位放置技能。
Schedule A 附錄工作流程
使用已執行協議的實際授權和通知要求:
- 在內部談判/批准頻道中審閱機會經濟性和談判策略。在發送合約內容之前獲得承諾批准。共用交易對手頻道不是內部頻道。
- 確認提議的條目、角色、條款、費用和生效日期在協議明示的 Schedule A 通知授權範圍內。對長期條款的變更或超出該授權的變更,需要適用的修訂程序;通知不能自行創設例外。
- 為已執行協議授權的接收者和通知頻道起草一份經批准的、針對特定交易對手的日期通知。包含有用的商業內容:受保護的交易對手或批次、授權角色、商業條款和適用費用。排除內部利潤率、談判策略、其他方的經濟利益、系統追蹤、原始錯誤和內部歸檔通知。
- 在發送前,將準確的通知提交運營者批准;請參閱運營者批准循環。在缺乏批准或參與授權時,保持交易對手頻道靜默。批准不同於授權發送者實際送達通知的證據。
- 根據已執行協議的實際要求,記錄授權送達證據、生效日期和任何異議。範例期限並非預設值。保持已執行文件不變;更新追蹤的 schedule 記錄,並重建一份草稿整合檢視供內部審閱,其中引用已執行版本和經批准的通知。此重建不會取代簽署的協議或證明法律效力。
範例
通知文字
僅供說明性草稿使用:僅在已執行協議授權且運營者批准此特定接收者通知時,才能使用這些條款和日期。
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,以呈現空白行。單獨審查的執行工作流程必須決定哪些詳細資訊可由交易對手完成並驗證實際欄位;生成器不會建立或批准電子簽名信封。