lawve-ai/legal-document-drafting-formatting-alessandro-dardano
>- Produces properly-formatted legal documents in Word (.docx). The user provides the substantive content (instructions, attached files, project knowledge); the skill handles document architecture and formatting. * No precedent or template required memos, employment, policies, correspondence * Jurisdiction-agnostic — works across any legal system the user specifies * Multi-Chain numbering, defined-terms convention, structured recitals, atomic signature blocks * Also reformats existing .docx to a consistent house style * Works in Claude.ai, Cowork, and Claude for Word
npx skills add https://github.com/lawve-ai/awesome-legal-skills --skill legal-document-drafting-formatting-alessandro-dardano
*Author: Alessandro Dardano. Dual-qualified Italy and England & Wales, 18+ years across energy transactions, project finance, corporate governance, and compliance. Originally developed for in-house use, generalised for publication.*
*Version 2.3 — restructured for progressive disclosure: this SKILL.md is now a lean router, and the detailed material lives in references/ modules that are read only when relevant. The MC template is a deployer-supplied, optional asset (assets/inhouse-mc-template.docx); where it is absent, MC tracks fall back to docx-js native automatic numbering (Environment 2). v2.3 corrects the earlier text that implied the template was bundled, aligns the assets/ README accordingly, and adds a reformatting note on numbering that is itself cross-referenced (e.g., lettered article inserts). Substantive drafting content is unchanged from v2.1.*
*Licensed under Apache 2.0. © 2026 Alessandro Dardano. See LICENSE file for terms.*
> Disclaimer. This skill encodes document drafting and formatting conventions. It is not legal advice. Substantive legal content (clause selection, position, commercial terms, jurisdiction-specific carve-outs) produced using this skill remains the responsibility of qualified counsel in the relevant jurisdiction. The boilerplate clause library and starter jurisdiction profiles provide starting positions that must be adapted to the specific transaction, counterparty, governing law, and commercial context. Custom jurisdiction profiles supplied by deployers must be validated by local counsel before use in live transactions. Use of this skill does not create an attorney-client relationship.
This skill defines a comprehensive house style for all Word documents produced by an in-house legal team. It operates in two layers: (a) Layer 1 universal formatting (typography, margins, footer, signature conventions, entity verification, automatic numbering) applied to every document; and (b) Layer 2 document-family tracks (A through G) that apply the right structure for each document type. Transactional agreements, corporate documents, and employment contracts use a international transactional template (the "MC template") as the structural base; litigation filings, memos, policies, and correspondence use native Word styles with their own conventions. Every Word document Claude produces must conform to Layer 1 universally and to the applicable Layer 2 track.
The skill is designed for in-house legal teams of mid-to-large companies and groups (typically multinational or with international operations) that need a consistent, professional house style across the full range of legal documents the team produces. It is jurisdiction-aware (covering Netherlands, England & Wales, Hungary, Italy and Poland by default; extendable) and orientation-aware (drafting from the in-house counsel's position, with appropriate protective defaults).
Throughout this skill, the following abbreviations are used:
ClauseL*, PreambleL*, ScheduleL*) follow long-established conventions in international transactional documentation and are not specific to any one firm or tradition.[COMPANY ENTITY NAME] in the template with the actual values for your deployment. The MC template itself (assets/inhouse-mc-template.docx) is deployer-supplied and optional — drop in your own in-house template carrying the MC styles (ClauseL*, PreambleL*, ScheduleL*) with numbering chains numId=6 (body), numId=4 (preamble/recitals) and per-schedule chains. It is not required for the skill to function: where no template is present, the MC tracks fall back to docx-js native multi-level numbering (Environment 2 in references/workflow.md), which produces equivalent automatic numbering. Provide the template only to use Environment 1's full named-style styleset, or ask Claude to generate a verified generic MC template.sharepoint_search, sharepoint_folder_search), substitute the equivalent tool for your platform.This skill is jurisdiction-neutral by design and is intended to operate in any jurisdiction the user identifies. The user indicates the governing law jurisdiction for each document; Claude applies the corresponding jurisdiction profile throughout.
The skill ships with five ready-made starter profiles reflecting the author's areas of practice. These are worked examples that demonstrate how a profile is structured. The architecture is designed to operate in any jurisdiction the user identifies — the starter set is a convenience, not a limit.
| Profile | Code | Notable provisions |
|---|---|---|
| Netherlands | NL | Dutch Civil Code construction rules; statutory commercial interest (*wettelijke handelsrente*); ontbinding/vernietiging waiver; Amsterdam courts as default forum; notarial deeds for share transfers; *derdenbeding* exclusion (Section 6:253 BW) |
| England & Wales | EN | English law boilerplate; no implied good faith caveat; LCIA arbitration option; English courts default; no notarial requirements; Contracts (Rights of Third Parties) Act 1999 exclusion |
| Hungary | HU | Hungarian Civil Code; Commercial Court of Arbitration at HCCI option; Kft quota transfer formalities; energy regulatory awareness |
| Italy | IT | Italian Civil Code; SRL quota transfer notarial requirements; Italian FDI screening (Golden Power); ICC arbitration or Milan/Rome courts; Registro delle Imprese registration; Track C Italian litigation conventions |
| Poland | PL | Polish Civil Code; sp. z o.o. share transfer formalities; Polish energy regulatory awareness; Warsaw courts or Polish Chamber of Commerce arbitration |
The profile content is contained in the "Starter Jurisdiction Profiles" section toward the end of this skill, and in the Boilerplate Clause Library where jurisdiction-specific Positions 22 (Governing Law) are listed for each starter profile.
The deployer (or user, per-document) can supply a jurisdiction profile for any jurisdiction beyond the starter set. The profile is a structured set of values that Claude reads and applies. See the section "Adding a Jurisdiction Profile" below for the profile template and a worked example (Germany).
Claude can also build a profile on the fly during a drafting session if the user gives the necessary jurisdiction-specific input (e.g., "use German law — base rate is ECB +9 percentage points, courts of Frankfurt am Main, no notarial requirement, BGB §242 good faith applies"). Capture the profile in the chat summary so the user can save it for reuse.
If the user indicates a jurisdiction with no starter profile and no custom profile supplied:
[TO BE COMPLETED — local counsel input required], or (c) use a "neighbouring" starter profile as starting point and flag adjustments needed.Claude acts as in-house legal counsel to the company deploying this skill (the "Company"). Every document is drafted from the Company's perspective and in the Company's interest. This means:
Always when producing a .docx file for the Company, regardless of document type.
This skill operates in two layers:
Layer 1 — Universal formatting applies to every document:
Layer 2 — Document-family track — Claude identifies the document family and applies the matching formatting track:
| Document family | Track | When to use |
|---|---|---|
| Transactional agreements | Track A — Transactional | SPAs, SHAs, loan agreements, cooperation agreements, JDAs, NDAs, LOIs, side letters, amendments, deeds, guarantees |
| Corporate documents | Track B — Corporate | Board resolutions, shareholder resolutions, POAs, articles of association, written resolutions, director appointments |
| Litigation filings | Track C — Litigation | Memorie, briefs, pleadings, responses to court, writs (any jurisdiction) |
| Legal memos and opinions | Track D — Memo | Legal opinions, advice memos, tax memoranda, regulatory analyses, regulatory submissions |
| Employment contracts | Track E — Employment | Employment contracts only (agreements between the Company and an individual employee). For HR policies and codes of conduct, use Track F. |
| Policies and procedures | Track F — Policy | Company policies, HR policies, codes of conduct, procedures, guidelines |
| Correspondence | Track G — Letter | Formal letters, engagement letters, notices not tied to an agreement |
| Formal notices under agreements | Track A (agreement-style) | Termination notices, notices of default under a contract |
Decision rule: Identify the document family first from the user's request. If ambiguous, ask before drafting. Never apply Track A (transactional) formatting to documents outside that family — it produces broken output (as happened with a prior Italian court filing that received MC numbering conventions).
The skill applies in two distinct invocations:
Critical distinction (Rule #5): if the user uploads a document but does NOT explicitly request reformatting (e.g., "review this", "redline this", "amend Clause 7", "add a confidentiality clause"), Claude preserves the existing format and only edits substantively. Reformatting is a deliberate, opt-in operation that the user must request in clear terms.
This SKILL.md is the router. It carries what Claude needs on every task — orientation, track selection, the universal Critical Rules, and the workflow at a glance — and points to detailed modules in references/ that are read only when relevant. Do not attempt a task from this file alone where it directs you to a reference module; read the named module first.
| Module | Contents | Read it when |
|---|---|---|
| references/formatting-and-numbering.md | Layer-1 typography, body-size-by-track, the three MC numbering chains + the mandatory numPr overrides, the non-MC docx-js numbering configs, the MC style-name mapping, and the section-by-section style assignments | Every drafting or reformatting task. For MC tracks (A/B/E), read before applying any style. |
| references/tracks.md | Per-track structural rules (Track A full / short / side-letter / notice, and Tracks B, C, D, E, F, G), the flexibility / cover-page / definitions-placement / signature / entity-verification rules, and the track-specific Critical Rules | After selecting the track — read the section for that track. |
| references/drafting-conventions.md | Operative language, defined-terms convention, enumeration, cross-references, captions, provisos, complex definitions, status marker, page numbering, recital labels, execution block | When drafting the body text of an MC-based document (Tracks A/B/E). |
| references/boilerplate-library.md | Track A locked boilerplate (Pos. 1–22), standard clause ordering, optional-clause decision tree | When drafting a Track A transactional agreement. |
| references/jurisdiction-profiles.md | Five starter profiles (NL, EN, HU, IT, PL) + Germany worked example, the profile template for any other jurisdiction, the jurisdiction-dependent extension points, and Track C interaction | At Step 0, once the governing-law jurisdiction is identified — load the relevant profile. |
| references/workflow.md | The full drafting workflow (Steps 0–4) and the produce-by-environment instructions (the three MC environments + the non-MC path) | At the start of an MC-based drafting task, and when choosing the production environment. |
| references/anti-patterns.md | What-NOT-to-do tables (cross-track, within A/B/E, precedent handling) | As a sanity check before finalising, or whenever unsure whether an approach is correct. |
Every document, regardless of track, uses: Times New Roman; A4; 1-inch margins; justified body text with left-aligned headings; smart (curly) quotes; a CONFIDENTIAL footer (subject to track overrides); and body size by track (Track A 10pt; Tracks B/D/E/F/G 11pt; Track C 12pt with 1.5 line spacing). All numbering is automatic — never hand-typed.
The full typography tables, the three MC numbering chains with the mandatory numPr overrides, the non-MC docx-js numbering configurations, the MC style-name mapping, and the section-by-section style assignments are all in references/formatting-and-numbering.md. Read that module before applying any styles or numbering.
Before drafting any document, identify the track:
If the request is ambiguous (e.g., "draft a document about X"), ask the user which type before proceeding. Getting the track wrong produces visible formatting failures.
Once the track is identified, apply: (a) Layer 1 universal rules (typography, margins, language, dual signature where applicable), with any track-specific overrides; plus (b) the structural rules for that track set out below.
MC-based tracks (A, B, E):
references/jurisdiction-profiles.md.Full detail and the produce-by-environment instructions are in references/workflow.md.
Non-MC tracks (C, D, F, G): no precedent search. Draft per the track's structural rules in references/tracks.md, using the docx-js numbering configs in references/formatting-and-numbering.md.
assets/inhouse-mc-template.docx, then unpack → edit document.xml → repack.docx skill's multi-level-list workflow (native auto-numbering).Full steps in references/workflow.md.
This rule applies to:
Exceptions — when Claude may reformat:
Technical defects in the precedent: If the precedent has objective defects that compromise functionality — manual numbering that breaks when clauses are added, misaligned hanging indents, broken cross-references, inconsistent styles within the document, non-searchable scanned content — Claude shall flag the defect to the user and ask whether to correct it, without unilaterally fixing it. The user decides whether the fix is worth the disruption to the precedent's negotiated form.
Substantive Company-interest orientation (Rule #4) always applies regardless — preserving format does not mean preserving bad substance.
"1. ", "(a) ", "(A) ", or "Doc. 1" by hand in a new draft. Manual numbers do not update when content is added, removed, or reordered, and break any cross-references or TOC that depend on them. When preserving a precedent's format per Rule #5, manual numbering in the precedent is a technical defect to flag — not something Claude unilaterally converts to automatic numbering.the "Purchase Price", the "Indemnified Party", the "Run-Off Period"). Subsequent uses are capitalised, no bold, no quotes (e.g., the Purchase Price). This applies regardless of where the term is introduced — preamble, recitals, definitions clause, body of an article, narrative paragraph, memo introduction, or letter opening. The only exception is the rare case where Claude is preserving the format of a precedent that uses a different convention per Rule #5 — and even then, Claude shall flag the inconsistency to the user. This rule applies to ALL tracks. The convention exists so that defined terms are visually identifiable on first introduction and unambiguous thereafter.Implementation patterns:
MC template (XML editing, Tracks A/B/E): the defined term and its surrounding quotes must be split across multiple <w:r> runs so the term run can carry bold formatting while the quote characters remain unbolded:
<w:r><w:t xml:space="preserve">(the “</w:t></w:r>
<w:r><w:rPr><w:b/></w:rPr><w:t>Purchase Price</w:t></w:r>
<w:r><w:t>”)</w:t></w:r>
The curly quote characters (“ and ”) sit in unbolded runs adjacent to the bolded term run.
docx-js (Tracks C/D/F/G): the same logic — split the surrounding text and the bold term into separate TextRun instances within the same Paragraph:
new Paragraph({
children: [
new TextRun({ text: "Atlantic Wind Holding B.V. (the \u201C", font: TNR, size: 22 }),
new TextRun({ text: "Company", font: TNR, size: 22, bold: true }),
new TextRun({ text: "\u201D) is contemplating...", font: TNR, size: 22 })
]
})
Use \u201C (left curly double quote) and \u201D (right curly double quote), not straight ASCII ". Common defect (observed in v2.1 dummy-doc testing): writing (the "Company") as a single TextRun with straight quotes — this fails the convention on three counts: not bold, not curly, not visually distinguishable from a stray quotation. Always use the three-run pattern above.
Implementation patterns:
MC template (XML editing, Tracks A/B/E): wrap each signature block in a borderless single-row table with <w:cantSplit/> on the row. The table prevents the row from breaking across pages; the "For and on behalf of [ENTITY]" header paragraph preceding the table carries <w:keepNext/> so it stays with the table. Example for a dual signature block (Company as counterparty, two signatories side-by-side):
<w:p>
<w:pPr><w:pStyle w:val="BodyText"/><w:keepNext/></w:pPr>
<w:r><w:rPr><w:b/></w:rPr><w:t>For and on behalf of [ENTITY]</w:t></w:r>
</w:p>
<w:tbl>
<w:tblPr>
<w:tblW w:w="9026" w:type="dxa"/>
<w:tblBorders>
<w:top w:val="none" w:sz="0" w:space="0" w:color="auto"/>
<w:left w:val="none" w:sz="0" w:space="0" w:color="auto"/>
<w:bottom w:val="none" w:sz="0" w:space="0" w:color="auto"/>
<w:right w:val="none" w:sz="0" w:space="0" w:color="auto"/>
<w:insideH w:val="none" w:sz="0" w:space="0" w:color="auto"/>
<w:insideV w:val="none" w:sz="0" w:space="0" w:color="auto"/>
</w:tblBorders>
<w:tblLayout w:type="fixed"/>
</w:tblPr>
<w:tblGrid><w:gridCol w:w="4513"/><w:gridCol w:w="4513"/></w:tblGrid>
<w:tr>
<w:trPr><w:cantSplit/></w:trPr>
<w:tc><w:tcPr><w:tcW w:w="4513" w:type="dxa"/></w:tcPr>
<w:p><w:pPr><w:pStyle w:val="BodyText"/></w:pPr><w:r><w:t>____________________________________</w:t></w:r></w:p>
<w:p><w:pPr><w:pStyle w:val="BodyText"/></w:pPr><w:r><w:t>Name:</w:t></w:r></w:p>
<w:p><w:pPr><w:pStyle w:val="BodyText"/></w:pPr><w:r><w:t>Title:</w:t></w:r></w:p>
<w:p><w:pPr><w:pStyle w:val="BodyText"/></w:pPr><w:r><w:t>Date:</w:t></w:r></w:p>
</w:tc>
<w:tc><w:tcPr><w:tcW w:w="4513" w:type="dxa"/></w:tcPr>
<!-- second signatory column: identical structure -->
</w:tc>
</w:tr>
</w:tbl>
For a single signature block (counterparty signing through one representative), use a 1-column table with the same cantSplit row.
docx-js (Tracks C/D/F/G): wrap the author block, sign-off block, or signature block in a Table with a single TableRow having cantSplit: true. Borders on all cells set to BorderStyle.NONE. Example for a memo author block:
new Table({
width: { size: 4513, type: WidthType.DXA },
borders: {
top: { style: BorderStyle.NONE, size: 0, color: "FFFFFF" },
bottom: { style: BorderStyle.NONE, size: 0, color: "FFFFFF" },
left: { style: BorderStyle.NONE, size: 0, color: "FFFFFF" },
right: { style: BorderStyle.NONE, size: 0, color: "FFFFFF" },
},
rows: [
new TableRow({
cantSplit: true, // critical: prevents row split across pages
children: [
new TableCell({
width: { size: 4513, type: WidthType.DXA },
borders: NO_BORDERS,
children: [
new Paragraph({ children: [new TextRun({ text: "_____________________", font: TNR, size: 22 })] }),
new Paragraph({ children: [new TextRun({ text: "[Author Name]", font: TNR, size: 22, bold: true })] }),
new Paragraph({ children: [new TextRun({ text: "[Title]", font: TNR, size: 22 })] }),
]
})
]
})
]
})
Why a table and not just <w:keepNext/> on each paragraph? keepNext works for short blocks but Word's renderer can occasionally still break the chain when a long paragraph precedes the signature block and the remaining page space is awkward. The cantSplit table row is a hard constraint — it cannot break across pages regardless of what precedes it. For the most important and visually sensitive part of a legal document, hard constraints are non-negotiable.
Common defect (observed in v2.1 dummy-doc testing): the Dutch Board Resolution test produced a page 2 containing only an orphan Title: Managing Director A Title: Managing Director B line, with the rest of the signature block (For-and-on-behalf-of header, signature line, Name) stranded on page 1. The fix was to wrap the dual signature block in a cantSplit table as described above. After the fix, the entire block sits atomically on page 2.
references/tracks.md)assets/inhouse-mc-template.docx as the drafting base; two Company signature blocks wherever the Company signs.Take lawve-ai/legal-document-drafting-formatting-alessandro-dardano from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.