Was macht master-agreement-generator?
Eine Master-Vorlage, ein kleines Spec pro Gegenpartei, ein Entwurfserstellungsschritt. Der Generator kennzeichnet die Ausgabe stets als DRAFT, auch bei Dokumenten, die aus einer vollständigen Vorlage erstellt wurden. Eine erfolgreiche Konvertierung belegt die Generierung von Artefakten, nicht die rechtliche Vollständigkeit, die Vertretungsbefugnis oder die Bereitschaft zum Versand oder zur Unterzeichnung. Eine ausgefertigte Vereinbarung kann es erlauben, bestimmte Gelegenheiten durch Mitteilung hinzuzufügen; diese Befugnis muss vor der Nutzung des Anhang-A-Workflows festgestellt werden.
Wann verwenden
- Sie schließen mit vielen Gegenparteien eine Rahmenvereinbarung (NDA, Vermittlungs- oder Provisionsgebühren, Nichtumgehung, Master Services) mit denselben Bedingungen und wenigen parteispezifischen Feldern ab.
- Geschäfte werden im Laufe der Zeit hinzugefügt, und die Neubeurkundung jedes einzelnen ist der Engpass.
- Dokumente müssen aus einer nachverfolgbaren Quelle reproduzierbar, diffbar und frei von manuellen Bearbeitungen sein.
- Unterschriftsfelder werden automatisiert platziert und benötigen ein stabiles Seitenlayout.
Funktionsweise
Vorlage
Eine einzelne Markdown-Vorlage mit {{PLACEHOLDER}}-Feldern. Jeder parteispezifische Wert ist ein Platzhalter; alles andere ist festgelegter Text. Ein Grundgerüst befindet sich unter references/master-template.example.md. Ersetzen Sie dessen allgemeine Sätze durch Ihre von der Rechtsabteilung genehmigten Klauseln.
Platzhalter, die das Referenzskript ausfüllt:
| Platzhalter | Quelle |
|---|---|
{{DATE}} | spec.date, Standard heute |
{{CP_SHORT}} | spec.short |
{{CP_LEGAL}}, {{CP_JURIS}}, {{CP_ADDR}} | Spec-Felder oder eine Leerzeile, wenn die Gegenpartei sie bei Unterzeichnung ergänzt |
{{ROLE_CLAUSE}}, {{FEE_TITLE}}, {{FEE_CLAUSE}} | ausgewählt durch spec.role aus der Rollentabelle |
{{SCHEDULE_ROWS}} | spec.schedule oder eine Zeile „keine Einträge bei Unterzeichnung“ |
{{SUPPLEMENT_CLAUSE}} | spec.supplement, mit einem abschließenden Trennzeichen oder leer dargestellt |
{{CP_SIGBLOCK}}, {{CP_SIGNER}}, {{CP_TITLE}}, {{CP_EMAIL}} | Unterschriftsblockfelder, leer wenn unbekannt |
Spec
Eine JSON-Datei pro Gegenpartei:
{
"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"
}
Für einen Entwurf sind nur file, short und role erforderlich. Fehlende Unterschriftsfelder werden als Leerzeilen zur Überprüfung und Vervollständigung dargestellt. Siehe references/spec.example.json.
file muss ein nicht leerer portabler Dateiname sein, z. B. AcmeSupplier oder Acme Supplier, ohne Verzeichniskomponenten. Der Builder lehnt Pfadtrennzeichen, Laufwerk-/UNC-Syntax, Steuerzeichen, Windows-reservierte Satzzeichen oder Gerätenamen sowie abschließende Punkte oder Leerzeichen ab. Ungültige Namen werden ohne Bereinigung oder Umbenennung abgelehnt, bevor eine Ausgabe erstellt oder Pandoc aufgerufen wird.
Lassen Sie schedule weg oder verwenden Sie [] für den Platzhalter „keine Einträge bei Unterzeichnung“. Ein bereitgestellter Zeitplan muss andernfalls ein dichtes Array aus sechs-elementigen Arrays in dieser Reihenfolge sein: Nummer, Datum, geschützte Gegenpartei oder Los, Rolle, Bedingungen, Gebühr. Jede Zelle muss ein gültiger Unicode-String oder eine endliche Zahl sein; leere Strings sind für beabsichtigte Leerstellen erlaubt. Nulls, Booleans, Objekte, verschachtelte Zellen-Arrays, fehlende Zellen und nicht-endliche Zahlen werden mit einem Zeilen-/Zellenindex abgelehnt, bevor ein Artefakt geschrieben oder Pandoc aktiv wird. Ungepaarte UTF-16-Ersatzzeichen werden ebenfalls abgelehnt und nicht während der UTF-8-Ausgabe ersetzt; gültige Supplementary Characters wie Emojis werden weiterhin unterstützt.
Zellen sind Klartext, nicht Markdown oder HTML. Der Builder kodiert Syntaxzeichen, sodass wörtliche Pipes, Backslashes, Backticks und Markup in ihren ursprünglichen Feldern bleiben. Jeder CRLF, bloße CR oder LF wird zu einem Leerzeichen; Text um Zeilenumbrüche wird beibehalten. Andere Leerzeichen und wörtliche Satzzeichen bleiben in den gerenderten Zellen erhalten. Das Quell-Spec wird nicht geändert. Ein gewöhnlicher gültiger Zeitplan behält seine sechs Spalten; fehlerhafte Eingabe wird nie stillschweigend durch einen leeren Zeitplan ersetzt.
Rollentabelle
spec.role wählt drei Zeichenfolgen aus: die Klausel für die laufende Vereinbarung, den Abschnittstitel für die Gebühren und die Einleitung der Gebührenklausel.
| Rolle | Wer zahlt | Form der Klausel |
|---|---|---|
| buyer | Die Gegenpartei zahlt bei Transaktionen mit eingeführten Parteien | Gegenpartei beauftragt uns auf nicht-exklusiver Basis, zu vermitteln und einzuführen |
| supplier | Die Gegenpartei zahlt bei Transaktionen mit eingeführten Parteien; wenn wir als Auftraggeber kaufen, kontrahieren wir zu den Zeitplanbedingungen | Gegenpartei bietet uns und den von uns eingeführten Käufern Kapazität an |
| mutual | Wer mit der Einführung des anderen abschließt, zahlt | Jede Partei darf einführen; die abschließende Partei zahlt |
Unbekannte Rollen werden zum Build-Zeitpunkt abgelehnt.
Build
Verwenden Sie nur überprüfte Vorlagen und Specs. Gewöhnliche Vorlagensubstitutionen außerhalb von Anhang A sind markup-fähig, kein Sanitizer für nicht vertrauenswürdige Dokumente. Pandoc kann referenzierte lokale oder entfernte Ressourcen lesen; dieser Generator isoliert den Dateisystem- oder Netzwerkzugriff des Konverters nicht. Überprüfen Sie diese Referenzen und führen Sie die Konvertierung in Ihrer eigenen, angemessen eingeschränkten Umgebung durch. Die fokussierten Tests verwenden einen synthetischen Konverter und zertifizieren kein echtes DOCX-Layout oder keine Isolation.
node skills/master-agreement-generator/scripts/build-agreement.js \
skills/master-agreement-generator/references/master-template.example.md \
specs/AcmeSupplier.json \
out/
Das Skript füllt Platzhalter, rendert die Zeitplantabelle und schreibt out/<file> MASTER.md mit einem obligatorischen DRAFT-Hinweis. Standardmäßig (oder mit --require-docx) wird ein installierter pandoc benötigt, um ein nicht leeres reguläres .docx-Artefakt zu erstellen. Fehlender pandoc, fehlgeschlagene Konvertierung oder fehlende/leere Ausgabe geben Exit-Code 1 zurück. Jede pandoc-Überprüfung oder Konvertierung ist auf zehn Sekunden begrenzt. Unbekannte, doppelte oder widersprüchliche Flags geben Exit-Code 2 zurück.
Verwenden Sie explizit --markdown-only für einen erfolgreichen Markdown-Only-Entwurf. Dieser Modus überprüft oder ruft pandoc nie auf, gibt docxSkipped: true von der Bibliothek zurück und stellt kein DOCX für einen e-Sign-Workflow bereit. Bibliotheksaufrufer müssen { markdownOnly: true } übergeben; { pandoc: false } allein schlägt jetzt die DOCX-Anforderung fehl. Das Ergebnis meldet immer documentStatus: 'draft'. Vorhandene generierte DOCX werden beim Neuerstellen des Markdowns entfernt, und eine fehlgeschlagene Konvertierung hinterlässt kein partielles DOCX, sodass ein früheres Artefakt nicht als aktuelle Ausgabe getarnt werden kann. Halten Sie beide generierten Dateien außerhalb der Versionskontrolle; die Vorlage und die Specs sind die Quelle.
Es gibt keinen Ausführungs-Kopiermodus. Das Beispiel enthält bewusst ungelöste eckige Klammern mit Formulierungsanweisungen; das Ausfüllen der {{PLACEHOLDER}}-Token vervollständigt diese rechtlichen Bestimmungen nicht. Vor der Erstellung eines Ausführungsdokuments müssen Sie die vervollständigten Klauseln, Parteiangaben, den bevollmächtigten Unterzeichner, die kommerziellen Bedingungen und die genaue Dokumentenversion separat prüfen lassen. Bewahren Sie den Entwurf und die geprüfte Ausführungskopie als getrennte Aufzeichnungen auf. Auch eine erfolgreiche DOCX-Konvertierung autorisiert keinen Upload, Versand oder keine Unterzeichnung. Siehe den Genehmigungs-Workflow für die Platzierung von e-Sign-Feldern.
Beide Ausgabeverzeichnisse müssen direkte Kinder des aufgelösten Ausgabeverzeichnisses sein. Ein bestehender Symlink an einem der Ziele, einschließlich eines hängenden Links, wird abgelehnt, bevor eines der Artefakte geschrieben wird, selbst wenn die DOCX-Konvertierung deaktiviert ist. Gewöhnliche reguläre Dateien können neu erstellt werden. Verwenden Sie ein Ausgabeverzeichnis, das Sie kontrollieren; diese Prüfungen bieten keine Isolation gegen gleichzeitige feindliche Dateisystemänderungen. Zurückgegebene Artefaktpfade sind absolut.
Geometrie der Unterschriftsseite
Die Vorlage beendet den Textkörper mit einem OpenXML-Seitenumbruch, sodass der Unterschriftsblock in einem kompatiblen DOCX-Renderer eine neue Seite anfordert:
```{=openxml}
<w:p><w:r><w:br w:type="page"/></w:r></w:p>
```
Die Struktur der Unterschriftsseite (unser Block, dann der Block der Gegenpartei, jeweils mit By, Name, Title, Email, Date) ist konsistent, aber die Seitennummerierung kann sich mit Text, Schriftarten, Renderer oder Format ändern. Überprüfen Sie das tatsächlich überprüfte Dokument und seine Seitengeometrie, bevor Sie Felder platzieren; siehe das esign-field-placement skill.
Anhang-A-Anhänge-Workflow
Verwenden Sie die tatsächliche Befugnis und die Mitteilungspflichten der ausgefertigten Vereinbarung:
- Überprüfen Sie die wirtschaftlichen Chancen und die Verhandlungsstrategie in einem internen Verhandlungs-/Genehmigungskanal. Holen Sie die Genehmigung für den Abschluss ein, bevor Sie vertraglichen Inhalt senden. Ein gemeinsamer Kanal mit der Gegenpartei ist kein interner Kanal.
- Bestätigen Sie, dass der vorgeschlagene Eintrag, die Rolle, die Bedingungen, die Gebühr und das Wirksamkeitsdatum innerhalb der ausdrücklichen Mitteilungsbefugnis des Anhangs A der Vereinbarung liegen. Änderungen der laufenden Bedingungen oder Abweichungen, die außerhalb dieser Befugnis liegen, erfordern das geltende Änderungsverfahren; eine Mitteilung kann keine eigene Ausnahme schaffen.
- Erstellen Sie einen genehmigten, gegenparteispezifischen, datierten Mitteilungstext für den Empfänger und den Mitteilungskanal, der durch die ausgefertigte Vereinbarung autorisiert ist. Fügen Sie nützliche geschäftliche Inhalte hinzu: die geschützte Gegenpartei oder das Los, die autorisierte Rolle, die kommerziellen Bedingungen und die anwendbare Gebühr. Schließen Sie interne Margen, Verhandlungsstrategie, wirtschaftliche Details anderer Parteien, Systemspuren, rohe Fehler und interne Vermerke aus.
- Reichen Sie den genauen Mitteilungstext zur Genehmigung durch den Bediener ein, bevor Sie ihn senden; siehe operator-approval-loop. Bewahren Sie Stille im Kanal der Gegenpartei, während keine Genehmigung oder Teilnahmebefugnis vorliegt. Die Genehmigung ist getrennt vom Nachweis, dass ein autorisierter Absender die Mitteilung tatsächlich zugestellt hat.
- Dokumentieren Sie den autorisierten Zustellnachweis, das Wirksamkeitsdatum und etwaige Einwände gemäß den tatsächlichen Anforderungen der ausgefertigten Vereinbarung. Beispielhafte Fristen sind keine Standards. Halten Sie das ausgefertigte Dokument unveränderbar; aktualisieren Sie den nachverfolgten Zeitplan und erstellen Sie einen Entwurf einer konsolidierten Ansicht zur internen Überprüfung mit einem Verweis auf die ausgefertigte Version und die genehmigte Mitteilung. Diese Neuerstellung ersetzt nicht die unterzeichnete Vereinbarung und belegt keine rechtliche Wirkung.
Beispiele
Mitteilungstext
Nur veranschaulichender Entwurf: Verwenden Sie diese Bedingungen und Daten ausschließlich, wenn die ausgefertigte Vereinbarung sie autorisiert und der Bediener diese genaue Mitteilung an den Empfänger genehmigt.
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.
Hinzufügen des Eintrags zum Spec
"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"]
]
Neu erstellen, den Markdown-Entwurf differenzieren und den konsolidierten Entwurf zusammen mit dem unveränderten ausgefertigten Dokument und dem Mitteilungsnachweis an die interne Aufzeichnung anhängen.
Gegenpartei füllt eigene Angaben bei Unterzeichnung aus
Lassen Sie für den Entwurf legal, juris, addr, signer, title, email aus dem Spec weg, um Leerzeilen zu rendern. Ein separat geprüfter Ausführungsworkflow muss entscheiden, welche Angaben von der Gegenpartei vervollständigt werden dürfen, und die tatsächlichen Felder überprüfen; der Generator erstellt oder genehmigt kein e-Sign-Umschlag.