Que fait Générateur de Contrat-Cadre ?
Un modèle maître, une petite spécification par contrepartie, une étape de construction du projet. Le générateur étiquette toujours la sortie DRAFT, y compris les documents générés à partir d'un modèle complété. Une conversion réussie prouve la génération de l'artefact, pas l'exhaustivité juridique, l'autorité de contracter, ni la préparation à l'envoi ou à la signature. Un contrat signé peut autoriser l'ajout d'opportunités désignées par notification ; cette autorité doit être établie avant d'utiliser le workflow de l'Annexe A.
Quand l'utiliser
- Vous émettez un contrat-cadre (NDA, accord d'honoraires de recommandation ou de sourcing, accord de non-contournement, contrat-cadre de services) à de nombreuses contreparties avec les mêmes conditions et quelques champs spécifiques à la partie.
- Les transactions sont ajoutées au fil du temps et la renégociation de chacune d'elles est un goulot d'étranglement.
- Les documents doivent être reproductibles à partir d'une source suivie, différenciables et exempts de modifications manuelles.
- Les champs de signature sont placés par automatisation et nécessitent une mise en page stable.
Comment ça fonctionne
Modèle
Un modèle Markdown unique avec des champs {{PLACEHOLDER}}. Chaque valeur
spécifique à une partie est un espace réservé ; tout le reste est un texte fixe. Un squelette se trouve dans
références/master-template.example.md.
Remplacez ses phrases génériques par vos clauses approuvées par le conseil juridique.
Espaces réservés que le script de référence remplit :
| Espace réservé | Source |
|---|---|
{{DATE}} | spec.date, par défaut aujourd'hui |
{{CP_SHORT}} | spec.short |
{{CP_LEGAL}}, {{CP_JURIS}}, {{CP_ADDR}} | champs de la spécification, ou une ligne vide lorsque la contrepartie les remplit à la signature |
{{ROLE_CLAUSE}}, {{FEE_TITLE}}, {{FEE_CLAUSE}} | sélectionnés par spec.role dans la table des rôles |
{{SCHEDULE_ROWS}} | spec.schedule, ou une ligne « aucune entrée à la signature » |
{{SUPPLEMENT_CLAUSE}} | spec.supplement, rendu avec un séparateur de fin ou vide |
{{CP_SIGBLOCK}}, {{CP_SIGNER}}, {{CP_TITLE}}, {{CP_EMAIL}} | champs du bloc de signature, vides lorsqu'ils sont inconnus |
Spécification
Un fichier JSON par contrepartie :
{
"file": "AcmeSupplier",
"short": "Acme",
"role": "supplier",
"legal": "Acme Compute Ltd",
"juris": "société d'Angleterre et du Pays de Galles",
"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": "l'avenant sur le traitement des données daté du 2026-09-01"
}
Seuls file, short et role sont requis pour un projet. Les champs de signature manquants sont rendus
sous forme de lignes vides pour révision et complétion. Voir
références/spec.example.json.
file doit être un nom de fichier portable non vide, tel que AcmeSupplier ou
Acme Supplier, sans composants de répertoire. Le constructeur rejette tout séparateur
ou syntaxe de lecteur/UNC, les caractères de contrôle, la ponctuation réservée à Windows
ou les noms de périphériques, ainsi que les points ou espaces finaux. Les noms invalides sont rejetés sans
assainissement ni renommage, avant la création de la sortie ou l'appel à pandoc.
Omettez schedule ou utilisez [] pour l'espace réservé « aucune entrée à la signature ». Un calendrier
fourni doit sinon être un tableau dense de tableaux de six cellules, dans cet ordre :
numéro, date, contrepartie protégée ou lot, rôle, conditions, honoraires. Chaque cellule doit être
une chaîne Unicode valide ou un nombre fini ; les chaînes vides sont autorisées pour les blancs intentionnels.
Les valeurs nulles, booléennes, les objets, les tableaux de cellules imbriqués, les cellules manquantes et les nombres non finis
sont rejetés avec un index de ligne/cellule avant toute écriture d'artefact ou activité pandoc.
Les substituts UTF-16 non appariés sont également rejetés plutôt que remplacés lors de la sortie UTF-8 ;
les caractères supplémentaires valides, tels que les emoji, restent pris en charge.
Les cellules sont en texte brut, pas en Markdown ou HTML. Le constructeur encode les caractères de syntaxe de sorte que les barres verticales littérales, les barres obliques inverses, les guillemets inversés et le balisage restent dans leurs champs d'origine. Chaque CRLF, CR ou LF nu devient un espace ; le texte autour des sauts de ligne est conservé. Les autres espaces blancs et la ponctuation littérale sont préservés dans les cellules rendues. La spécification source n'est pas modifiée. Un calendrier valide ordinaire conserve ses six colonnes ; une entrée malformée n'est jamais remplacée silencieusement par un calendrier vide.
Table des rôles
spec.role sélectionne trois chaînes : la clause de l'arrangement permanent, le titre
de la section des honoraires et l'ouverture de la clause des honoraires.
| Rôle | Qui paie | Forme de la clause |
|---|---|---|
| acheteur | La contrepartie paie sur les transactions avec les parties présentées | La contrepartie nous nomme sur une base non exclusive pour sourcer et présenter |
| fournisseur | La contrepartie paie sur les transactions avec les parties présentées ; lorsque nous achetons en tant que principal, nous contractons selon les conditions du calendrier | La contrepartie offre sa capacité à nous et aux acheteurs que nous présentons |
| mutuel | Celui qui conclut avec la présentation de l'autre paie | Chaque partie peut présenter ; la partie qui conclut paie |
Les rôles inconnus sont rejetés au moment de la construction.
Construction
Utilisez uniquement les modèles et spécifications examinés par l'opérateur. Les substitutions ordinaires de modèle en dehors de l'Annexe A sont capables de balisage, pas un assainisseur pour documents non fiables. Pandoc peut lire des ressources locales ou distantes référencées ; ce générateur ne limite pas l'accès au système de fichiers ou au réseau du convertisseur. Examinez ces références et exécutez la conversion dans votre propre environnement restreint de manière appropriée. Les tests ciblés utilisent un convertisseur synthétique et ne certifient pas une mise en page DOCX réelle ou un isolement.
node skills/master-agreement-generator/scripts/build-agreement.js \
skills/master-agreement-generator/references/master-template.example.md \
specs/AcmeSupplier.json \
out/
Le script remplit les espaces réservés, rend le tableau du calendrier et écrit
out/<fichier> MASTER.md avec un avis obligatoire DRAFT. Par défaut (ou avec
--require-docx), il nécessite que pandoc soit installé pour produire un artefact .docx
régulier non vide. L'absence de pandoc, une conversion échouée ou une sortie manquante/vide
renvoie le code de sortie 1. Chaque sondage ou conversion pandoc est limité à dix secondes.
Les indicateurs inconnus, en double ou contradictoires renvoient le code de sortie 2.
Utilisez --markdown-only explicitement pour un projet Markdown réussi. Ce mode
ne sonde ni n'invoque jamais pandoc, renvoie docxSkipped: true depuis la bibliothèque,
et ne fournit pas de DOCX pour un workflow de signature électronique. Les appelants de la bibliothèque doivent passer
{ markdownOnly: true } ; { pandoc: false } seul échoue désormais à l'exigence DOCX.
Le résultat signale toujours documentStatus: 'draft'. Le DOCX généré existant est
supprimé lors de la reconstruction de son Markdown, et une conversion échouée ne laisse aucun DOCX partiel,
donc un artefact antérieur ne peut pas se faire passer pour la sortie actuelle. Conservez les deux
fichiers générés hors du contrôle de version ; le modèle et les spécifications sont la source.
Il n'existe pas de mode de copie d'exécution. L'exemple contient délibérément des directives de rédaction
entre crochets non résolues ; remplir les jetons {{PLACEHOLDER}} ne complète pas
ces dispositions juridiques. Avant de préparer un document d'exécution, obtenez un examen
séparé des clauses complétées, des détails de la partie, du signataire autorisé, des conditions
commerciales et de la version exacte du document. Conservez le projet et la copie d'exécution
révisée comme des enregistrements distincts. Même une conversion DOCX réussie n'autorise pas un
téléchargement, un envoi ou une signature. Voir le workflow d'approbation de placement des champs de signature électronique.
Les deux destinations de sortie doivent être des enfants directs du répertoire de sortie résolu. Un lien symbolique existant à l'une ou l'autre destination, y compris un lien cassé, est rejeté avant que l'un ou l'autre artefact soit écrit, même lorsque la conversion DOCX est désactivée. Les fichiers réguliers ordinaires peuvent être reconstruits. Utilisez un répertoire de sortie que vous contrôlez ; ces vérifications ne fournissent pas d'isolement contre les modifications simultanées hostiles du système de fichiers. Les chemins d'artefacts renvoyés sont absolus.
Géométrie de la page de signature
Le modèle termine le corps par un saut de page OpenXML afin que le bloc de signature commence sur une nouvelle page dans un rendu DOCX compatible :
```{=openxml}
<w:p><w:r><w:br w:type="page"/></w:r></w:p>
```
La structure de la page de signature (notre bloc, puis le bloc de la contrepartie, chacun avec By, Name, Title, Email, Date) est cohérente, mais la pagination peut changer avec le texte, les polices, le moteur de rendu ou le format. Inspectez le document révisé réel et sa géométrie de page avant de placer les champs ; voir le skill de placement des champs de signature électronique.
Workflow d'ajout à l'Annexe A
Utilisez l'autorité réelle et les exigences de notification du contrat signé :
- Examinez l'économie de l'opportunité et la stratégie de négociation dans un canal interne de négociation/approbation. Obtenez l'approbation d'engagement avant d'envoyer un contenu contractuel. Un canal partagé avec la contrepartie n'est pas un canal interne.
- Confirmez que l'entrée proposée, le rôle, les conditions, les honoraires et la date d'effet relèvent de l'autorité expresse de notification de l'Annexe A du contrat. Les modifications des conditions permanentes, ou les variations en dehors de cette autorité, nécessitent la procédure d'amendement applicable ; une notification ne peut pas créer sa propre exception.
- Rédigez une notification approuvée, spécifique à la contrepartie et datée pour le destinataire et le canal de notification autorisé par le contrat signé. Incluez un contenu commercial utile : la contrepartie ou le lot protégé, le rôle autorisé, les conditions commerciales et les honoraires applicables. Excluez les marges internes, la stratégie de négociation, l'économie des autres parties, les traces système, les erreurs brutes et les avis de classement internes.
- Déposez la notification exacte pour approbation par l'opérateur avant l'envoi ; voir la boucle d'approbation de l'opérateur. Maintenez le silence dans le canal de la contrepartie tant que l'approbation ou l'autorité de participation est absente. L'approbation est distincte de la preuve qu'un expéditeur autorisé a effectivement délivré la notification.
- Enregistrez la preuve de livraison autorisée, la date d'effet et toute objection conformément aux exigences réelles du contrat signé. Les délais d'exemple ne sont pas des valeurs par défaut. Conservez le document signé immuable ; mettez à jour l'enregistrement du calendrier suivi et reconstruisez une vue consolidée de projet pour examen interne, avec une référence à la version signée et à la notification approuvée. Cette reconstruction ne remplace pas le contrat signé ni ne prouve l'effet juridique.
Exemples
Texte de notification
Projet illustratif uniquement : n'utilisez ces conditions et dates que lorsque le contrat signé les autorise et que l'opérateur approuve cette notification exacte au destinataire.
Notification de l'Annexe A, 2026-09-02
Contrat : Contrat-Cadre daté du 2026-08-14 entre Nous et Acme
Entrée 2 : Lot B, 8 nœuds, région UE-Ouest
Rôle : présentateur
Conditions : durée de 6 mois, début au plus tard le 2026-10-01
Honoraires : standard
Cette entrée prend effet aujourd'hui sauf si vous vous y opposez dans les dix jours ouvrables
avec une preuve écrite datée d'une relation antérieure avec la contrepartie.
Ajout de l'entrée à la spécification
"schedule": [
["1", "2026-08-20", "Lot A (16 nodes)", "presentateur", "12 months", "standard"],
["2", "2026-09-02", "Lot B (8 nodes, UE-Ouest)", "presentateur", "6 months", "standard"]
]
Reconstruisez, différenciez le projet Markdown et joignez le projet consolidé à l'enregistrement interne avec le document signé inchangé et la preuve de notification.
La contrepartie remplit ses propres détails à la signature
Pour le projet, omettez legal, juris, addr, signer, title, email de la
spécification pour rendre des lignes vides. Un workflow d'exécution séparément examiné doit décider
quels détails peuvent être complétés par la contrepartie et vérifier les champs réels ;
le générateur ne crée ni n'approuve une enveloppe de signature électronique.