{"id":"fb9b2843-9d2f-4d95-8f97-e1d91dc441ef","shortId":"AmSmYj","kind":"skill","title":"canonical-markdown-authoring","tagline":">-","description":"# canonical-markdown-authoring\n\nConvert plain markdown contract drafts into OpenAgreements' canonical `template.md`\nauthoring format. The canonical form is a single lawyer-editable file that compiles\nto a validated JSON contract spec plus a rendered DOCX via the shared template\nrenderer.\n\n## Activation\n\nUse this skill when the user wants to:\n- Convert a plain-prose contract draft into a canonical OpenAgreements `template.md`\n- Migrate an existing JSON-source template to canonical authoring\n- Author a new template that compiles via `npm run generate:templates`\n- Add or refactor a Defined Terms clause, `oa:clause` directives, or signer metadata\n- Bring a template into parity with the Wyoming / Employee IP canonical patterns\n\nThis skill assumes:\n- You are working inside an OpenAgreements repo checkout. Templates live at\n  `content/templates/<template-id>/template.md`.\n- The shared canonical compiler (`scripts/template_renderer/canonical-source.mjs`)\n  and the `cover-standard-signature-v1` layout are present.\n\n## Canonical structure overview\n\nA canonical `template.md` has these parts in this order:\n\n1. **YAML frontmatter** — template ID, source paths, layout, style, document\n   metadata, section labels.\n2. **`# Title`** — H1 matching `document.title` in frontmatter.\n3. **`## Cover Terms`** — short subtitle paragraph followed by a\n   `Kind | Label | Value | Show When` table with `{snake_case}` field\n   placeholders.\n4. **Optional `recitals` section** — `<!-- oa:section type=recitals -->`\n   followed by an H2 such as `## Recitals` and one or more recital paragraphs.\n5. **Operative section** — `<!-- oa:section type=standard_terms -->` followed\n   by an author-chosen H2 such as `## Standard Terms`, `## Resolutions`, or\n   `## Terms`. Clauses live here, each preceded by `<!-- oa:clause id=... -->`.\n   The first clause should be `Defined Terms` with `type=definitions` when a\n   definitions clause is needed.\n6. **Signature section** — `<!-- oa:section type=signature -->` followed by the\n   signature H2 and then `<!-- oa:signature-mode arrangement=... -->` plus the\n   signer blocks.\n\n## Step-by-step conversion\n\n### Step 1 — Skeleton the frontmatter\n\n```yaml\n---\ntemplate_id: openagreements-<slug>                # kebab-case, must match the directory slug\nlayout_id: cover-standard-signature-v1\nstyle_id: openagreements-default-v1\noutputs:\n  docx: content/templates/openagreements-<slug>/template.docx\ndocument:\n  title: <Document title>                         # MUST match the H1 below\n  label: <Catalog label, e.g. \"OpenAgreements XYZ\">\n  version: \"1.0\"\n  license: Free to use under CC BY 4.0\n  include_cloud_doc_line: true\n  defined_term_highlight_mode: definition_site_only   # see \"Highlight modes\"\n  cover_row_height: 700\nsections:\n  cover_terms:\n    section_label: Cover Terms\n    heading_title: Cover Terms\n  standard_terms:\n    section_label: Standard Terms\n    heading_title: Standard Terms\n  signature:\n    section_label: Signature Page\n    heading_title: Signatures\n---\n```\n\nNotes:\n- Canonical sources do **not** declare `source_json`. `npm run generate:templates`\n  auto-discovers any `content/templates/<slug>/template.md` whose frontmatter\n  declares `template_id`, `layout_id`, and `style_id`, then writes the\n  generated JSON to `content/templates/<slug>/.template.generated.json`\n  (a hidden, do-not-edit-by-hand artifact).\n- Do **not** add `output_markdown_path` or `outputs.markdown` — the canonical\n  compiler rejects them. The canonical `template.md` *is* the source.\n- For directive-backed sections, the body H2 that follows `oa:section` is the\n  rendered heading source of truth. Keep the frontmatter `sections` metadata in\n  place, but treat the body heading as authoritative for the visible section\n  title.\n\n### Step 2 — Title (H1)\n\n```markdown\n# <Document title>\n```\n\nKeep the H1 text identical to `document.title`. There is no automatic\ncross-validation today, but drift between the two is a known footgun.\n\nIf the rendered title or section heading differs from the raw markdown, see\n\"Sharp edges and renderer transforms\" below for the body-vs.-frontmatter\nsource-of-truth map.\n\n### Step 3 — Cover Terms section\n\nOpen with one short subtitle paragraph, then the `Kind | Label | Value | Show When`\ntable:\n\n```markdown\n## Cover Terms\n\nThe terms below are incorporated into and form part of this agreement.\n\n| Kind | Label | Value | Show When |\n| --- | --- | --- | --- |\n| row | Company | {company_name} | always |\n| row | Employee | {employee_name} | always |\n| row | Effective Date | {effective_date} | always |\n| group | Confidentiality |  | always |\n| subrow | Trade Secrets Duration | {trade_secret_duration} | always |\n| subrow | Other Confidential Information Duration | {other_confidentiality_duration} | confidentiality_other_included |\n```\n\nRules:\n- **Kind** is `row`, `group`, or `subrow`.\n  - `row` — single-line cover term.\n  - `group` — section header with no value (leave the `Value` column blank).\n  - `subrow` — child of the most recent `group`; rendered indented.\n- **Label** is the lawyer-facing label.\n- **Value** is either literal text or a `{snake_case}` field placeholder. Field\n  names must match `^[a-z_][a-z0-9_]*$`.\n- **Show When**:\n  - `always` — always rendered.\n  - `<field_name>` — rendered only when the boolean field is truthy. The\n    field's name must satisfy `^[a-z_][a-z0-9_]*$`.\n\n### Step 4 — Directive-anchored body sections\n\nEvery operative section starts with an `oa:section` directive. The H2 that\nfollows may be author-chosen. Every clause inside the operative section then\ngets an `oa:clause` directive, a `### Heading`, and prose paragraphs:\n\n```markdown\n<!-- oa:section type=standard_terms -->\n## Standard Terms\n\n<!-- oa:clause id=assignment-of-inventions -->\n### Assignment of Inventions\n\nEmployee hereby assigns and agrees to assign to Company all right, title, and\ninterest in Covered Inventions, to the extent permitted by law.\n\n<!-- oa:clause id=non-competition when=noncompete_included omitted=\"[Intentionally Omitted.]\" -->\n### Non-Competition\n\nDuring the Restricted Period, Employee must not engage in any Competitive Business\nwithin the Restricted Territory.\n```\n\nIf the document needs standalone WHEREAS-style recitals, author them in a\nseparate `recitals` section before the operative section:\n\n```markdown\n<!-- oa:section type=recitals -->\n## Recitals\n\n**WHEREAS**, Company is considering a financing transaction.\n\n**WHEREAS**, the board has reviewed the proposed terms.\n\n<!-- oa:section type=standard_terms -->\n## Resolutions\n```\n\n`oa:section` types:\n\n- `standard_terms` — required operative clause section\n- `signature` — required signature section\n- `recitals` — optional recital-only section\n\nDirective attributes:\n- `id` — slug, kebab-case, unique within the document. Used for stable\n  machine references.\n- `when=<field_name>` (optional) — clause is only included when the named\n  boolean field is truthy.\n- `omitted=\"<text>\"` (optional) — text rendered in place of the body when\n  `when` evaluates false.\n\n### Step 4A — Present-tense IP assignment language\n\nIf a clause transfers inventions, work product, patent rights, copyrights, or\nother IP ownership, use a present-tense operative grant such as `hereby assigns`.\n\n- Preferred baseline: `Employee hereby assigns to Company all right, title, and interest in ...`\n- If future cooperation is also needed, add it after the present assignment:\n  `... and will sign additional documents reasonably requested to confirm ownership.`\n- Do **not** rely on `agrees to assign` or `will assign` without a present-tense\n  grant. Federal Circuit contract law applied in the Stanford/Roche line of\n  cases (*FilmTec*, *DDB Techs*, *Rasmussen Instruments*, the Federal Circuit\n  decision in *Stanford v. Roche*, 583 F.3d 832) treats future-tense language\n  as a promise to assign rather than a present transfer of rights — which\n  diligence reviewers flag as a gap.\n- This applies to employee invention-assignment agreements, contractor IP\n  assignment clauses, work-made-for-hire fallback assignments, and standalone\n  assignment instruments. It does **not** apply to NDAs or services agreements\n  without IP transfer.\n- \"Irrevocably\" (e.g. `hereby irrevocably assigns`) is optional belt-and-\n  suspenders; \"hereby assigns\" is the doctrinal minimum.\n\n### Step 5 — Defined Terms clause (use when it earns its keep)\n\nUse a Defined Terms clause as the **first** clause in the\n`oa:section type=standard_terms` operative section when a capitalized concept\nneeds an explicit anchor or when a longer definition materially shortens later\noperative clauses.\n\nBefore adding a definition, ask:\n\n1. Does the definition add real substantive content, or materially reduce\n   repetition by replacing a long phrase in operative clauses?\n2. Is the term used enough in operative clauses that a short capitalized label\n   improves readability?\n3. If the substance belongs in a Cover Terms value, can that Cover Terms value\n   remain the single source of truth?\n\nDo **not** add pointer-only redefinitions for cover-page-only labels such as\n`Company`, `Employee`, `Effective Date`, `Governing Law`, or `Venue`. Those\nadd a second lookup site without improving readability.\n\nIf a Cover Terms value contains the real substance of a defined concept, keep\nall substantive content there. Use the Defined Terms clause only as a short\nanchor when repeated capitalized use improves readability. Do **not** split one\ndefinition across two sites by writing\n`[[X]] has the meaning given in Cover Terms ... and includes ...`.\n\nIf you remove a formal definition, do not leave behind an unexplained\ncapitalized pseudo-term. Either use the exact Cover Terms label in prose\n(`The Prior Inventions and Excluded Inventions identified in Cover Terms`)\nor rewrite descriptively in lower-case prose.\n\n```markdown\n<!-- oa:clause id=defined-terms type=definitions -->\n### Defined Terms\n\n[[Covered Inventions]] means inventions, software, works of authorship,\ndiscoveries, designs, data models, and related intellectual property created\nduring employment that arise from Company work, use Company resources, or\nrelate to Company actual or anticipated business.\n\n[[Confidential Information]] means non-public information that Employee\nlearns, accesses, or develops during employment, including business strategies,\ncustomer and prospect data, trade secrets, technical and product information,\nfinancial information, personnel information, and any additional information\ndescribed in Cover Terms under Confidential Information Definition.\nConfidential Information does not include information that (a) was publicly\nknown when Employee learned it, (b) becomes publicly known through no fault\nof Employee, (c) was lawfully known to Employee before employment without\nconfidentiality restriction, or (d) Employee independently develops outside\nthe scope of employment without using Confidential Information.\n```\n\nDefinition rules:\n- Every paragraph inside the definitions clause must start its definition body\n  with a `[[...]]` span — that span declares the canonical term.\n- A leading article (`A`, `An`, `The`) before the first `[[...]]` is allowed\n  and is stripped from the canonical term.\n- Optional aliases follow the canonical term immediately as\n  `(Aliases: [[Alias 1]], [[Alias 2]])`. Aliases never render in the legal\n  output.\n- Canonical terms must be unique. Aliases must be unique and may not collide\n  with any canonical term.\n\n### Step 6 — Explicit references\n\nAnywhere outside the definitions clause, `[[Term]]` is an explicit reference and\nmust resolve to a canonical term, an alias, or a clause ID via\n`[[clause:<id>]]`. **Plain-text mentions are valid** — you do not need to wrap\nevery \"Confidential Information\" in brackets. Use `[[...]]` only when you want\nexplicit linking semantics.\n\n### Step 7 — Signatures section\n\n```markdown\n<!-- oa:section type=signature -->\n## Signatures\n\n<!-- oa:signature-mode arrangement=entity-plus-individual -->\n\nBy signing this agreement, each party acknowledges and agrees to the obligations\nabove.\n\n<!-- oa:signer id=company kind=entity capacity=through_representative label=\"Company\" -->\n**Company**\n\nSignature: _______________\nPrint Name: {company_name}\nTitle: _______________\nDate: _______________\n\n<!-- oa:signer id=employee kind=individual capacity=personal label=\"Employee\" -->\n**Employee**\n\nSignature: _______________\nPrint Name: {employee_name}\nTitle: _______________\nDate: _______________\n```\n\nStrict rules (the `cover-standard-signature-v1` layout enforces these):\n- **Exactly two signers.** Schema rejects any other count.\n- **Same row IDs across signers.** Both signers should declare the same set\n  of row IDs (e.g. `signature`, `print-name`, `title`, `date`) in the same\n  order. The renderer unions row IDs in declaration order.\n- **Matching labels and hints.** When both signers declare the same row ID,\n  their `label` and `hint` must match. Mismatches are rejected with a clear\n  error.\n- `arrangement` is `entity-plus-individual` or `stacked`. Defaults to `stacked`.\n- `kind` is `entity`, `individual`, or `acknowledging-individual`.\n- `capacity` is `through_representative`, `personal`, or `acknowledging`.\n\n### Sharp edges and renderer transforms\n\nA few parts of canonical `template.md` are structural-only in source or\nnormalized by the renderer. If the artifact looks different from the raw\nmarkdown, check these first:\n\n- **Body H1 is anchor-only.** Keep the `# ...` line readable for humans\n  navigating the raw `.md`, but the rendered title comes from frontmatter\n  `document.title`. If they drift, the artifact follows frontmatter.\n- **The H2 after `<!-- oa:section -->` becomes the in-document section\n  heading.** Post-#285, that H2 is the visible section title in the body, so\n  choose names that read well in the output. Example:\n  `<!-- oa:section type=standard_terms -->` + `## Resolutions` renders\n  `Resolutions` as the in-document heading; the same directive +\n  `## Standard Terms` renders `Standard Terms`. Note that on\n  `cover-standard-signature-v1`, the **running page header** is separately\n  driven by frontmatter `sections.<name>.section_label` — if you rename the\n  body H2 but leave `section_label` alone, the page header will not change.\n- **`[Signature Page Follows]` is renderer-inserted.** Authors do not write\n  that string in canonical source. The `traditional-consent-v1` layout always\n  inserts `[Signature Page Follows]` between the operative section and the\n  signature section, so seeing it in output but not source is expected.\n- **Signer row values in repeat-backed signature sections get `$`\n  auto-prefixed.** In a repeat-backed signature section, write\n  `{stockholder.name}` in canonical source. The parser rewrites it to\n  `{$stockholder.name}` in generated artifacts, so do not \"fix\" the `$`\n  you see there. This rewrite is scoped to signer row values; it does not\n  fire for other loop contexts.\n\nUse this quick source-of-truth map when deciding where authored text will show\nup:\n\n- Body `# <H1>` -> anchor-only for raw `.md`; not rendered in the artifact\n- Body `## <heading>` immediately after `<!-- oa:section type=... -->` ->\n  rendered as the in-document section heading\n- Body `### <clause heading>` plus following paragraphs -> rendered\n- Frontmatter `sections.<name>.section_label` -> running page header in\n  `cover-standard-signature-v1` (independent of the body H2)\n- Body recital paragraphs under `<!-- oa:section type=recitals -->` ->\n  rendered in the optional recital section (currently only `traditional-consent-v1`\n  emits a recital section; `cover-standard-signature-v1` ignores it)\n- Frontmatter `document.title` -> rendered as the document title\n- Frontmatter `document.opening_recital` -> rendered before the operative\n  section by `traditional-consent-v1`; not consumed by\n  `cover-standard-signature-v1`\n- Frontmatter `document.label` and `document.version` -> rendered in the\n  layout footer; exact placement varies by layout\n- Frontmatter `document.license` -> consumed in the Markdown export, but\n  both current DOCX layouts hardcode the footer license string as\n  \"Free to use under CC BY 4.0.\" rather than reading frontmatter. All\n  first-party templates currently use that license so the output happens\n  to match, but don't expect a non-CC-BY-4.0 license to flow through to\n  the DOCX footer today.\n\n### Step 8 — Generate and verify\n\n```bash\nnpm run generate:templates\n```\n\nThe canonical compiler:\n1. Parses `template.md` → normalized model.\n2. Validates definitions, references, signers, and field-name shapes.\n3. Writes the regenerated JSON to `content/templates/<slug>/.template.generated.json`.\n4. Renders the DOCX via the shared layout to `outputs.docx`.\n\nAfter generation:\n- `git diff content/templates/<slug>/.template.generated.json` — should be empty\n  if your source matches the previously committed JSON.\n- `npx vitest run integration-tests/canonical-source-sync.test.ts` — proves the\n  canonical → JSON projection is in sync.\n- `npx vitest run integration-tests/canonical-source-authoring.test.ts integration-tests/template-renderer-json-spec.test.ts packages/contract-templates-mcp/tests/tools.test.ts` — broader coverage.\n\n## Highlight modes\n\n`document.defined_term_highlight_mode` controls how defined terms are visually\nhighlighted in the rendered DOCX:\n\n| Mode | Behavior | When to use |\n| --- | --- | --- |\n| `definition_site_only` | Highlights only at the definition paragraph; brackets are stripped from prose. | **Default for templates with a Defined Terms clause.** Avoids \"too much blue\" in body text. |\n| `all_instances` | Highlights every occurrence of any term in `style.defined_terms`. | Templates without a Defined Terms clause that still want emphasis on a small fixed list (e.g. Company, Employee). |\n| `none` | No highlighting. | Plain-text outputs. |\n\nIf you add a Defined Terms clause, switch to `definition_site_only`. The\ntemplate-wide `style.defined_terms` list still applies as a fallback for\n`all_instances` mode.\n\n## Reference templates\n\nWorking canonical templates already in the repo:\n\n- `content/templates/openagreements-restrictive-covenant-wyoming/template.md` —\n  feature-rich: substantive defined terms paired with narrow cover-term anchors\n  for operative concepts, group/subrow cover terms, and conditional clauses.\n- `content/templates/openagreements-employee-ip-inventions-assignment/template.md` —\n  simpler: 2 substantive defined terms (`Covered Inventions`, `Confidential\n  Information`), present-tense IP assignment language, and all-row cover terms.\n\nWhen migrating a JSON-sourced template, copy the closer of these two as a\nshape reference and adapt.\n\n## Pitfalls\n\n| Pitfall | Symptom | Fix |\n| --- | --- | --- |\n| Edited `template.md` but forgot to regenerate | `canonical-source-sync.test.ts` fails | Run `npm run generate:templates` and commit the regenerated `.template.generated.json` diff. |\n| H1 doesn't match `document.title` | Silent drift; renders the frontmatter title | Keep them in sync manually until cross-validation lands. |\n| `output_markdown_path` left in frontmatter | Compiler throws | Remove `outputs.markdown` and any top-level `output_markdown_path`. |\n| `source_json` left in frontmatter | Quietly ignored today; will become an error | Remove `source_json` — JSON paths are now derived from the slug. |\n| Same-id signer rows with different labels | Layout throws \"mismatched labels\" error | Make both signers' row labels identical, or rename one row's ID. |\n| Three signers | `cover-standard-signature-v1` rejects at render | Reduce to two signers, or add a new layout that supports N signers. |\n| Field placeholder uses `camelCase` | Validation rejects | Use `snake_case` matching `^[a-z_][a-z0-9_]*$`. |\n| Definitions paragraph without a `[[...]]` declaration | Compiler throws | Every paragraph in a definitions clause must declare a canonical term. |\n| Alias collides with a canonical term or another alias | Compiler throws | Choose a unique alias. |\n| Adding `[[...]]` everywhere in prose | \"Too much blue\" in DOCX | Reserve `[[...]]` for definition sites and explicit references; let plain prose stay plain. |\n| Pointer-only redefinition of a cover-page-only term | Second lookup site with no readability gain | Omit the defined-term entry; use the Cover Terms label directly in prose. |\n| One term split across Cover Terms and Defined Terms | Reader must combine two sources for one definition | Put all substantive content in one place — usually a substantive body definition with optional Cover Terms supplementation. |\n| Capitalized pseudo-term with no exact anchor | Reader cannot tell where the term is defined | Keep an exact anchor (`identified in Cover Terms`) or rewrite in descriptive lower-case prose. |\n| Bare `agrees to assign` in an IP assignment clause | Diligence flag — not a present transfer of rights | Use `hereby assigns and agrees to assign` (see Step 4A). |\n\n## Minimal complete example\n\n```markdown\n---\ntemplate_id: openagreements-example-nda\nlayout_id: cover-standard-signature-v1\nstyle_id: openagreements-default-v1\noutputs:\n  docx: content/templates/openagreements-example-nda/template.docx\ndocument:\n  title: Example Mutual NDA\n  label: OpenAgreements Example Mutual NDA\n  version: \"1.0\"\n  license: Free to use under CC BY 4.0\n  include_cloud_doc_line: true\n  defined_term_highlight_mode: definition_site_only\n  cover_row_height: 600\nsections:\n  cover_terms:\n    section_label: Cover Terms\n    heading_title: Cover Terms\n  standard_terms:\n    section_label: Standard Terms\n    heading_title: Standard Terms\n  signature:\n    section_label: Signature Page\n    heading_title: Signatures\n---\n\n# Example Mutual NDA\n\n## Cover Terms\n\nThe terms below are incorporated into and form part of this agreement.\n\n| Kind | Label | Value | Show When |\n| --- | --- | --- | --- |\n| row | Disclosing Party | {disclosing_party_name} | always |\n| row | Receiving Party | {receiving_party_name} | always |\n| row | Effective Date | {effective_date} | always |\n| row | Confidentiality Term | {confidentiality_term} | always |\n\n<!-- oa:section type=standard_terms -->\n## Standard Terms\n\n<!-- oa:clause id=defined-terms type=definitions -->\n### Defined Terms\n\n[[Confidential Information]] means non-public information disclosed by a party\nthat is identified as confidential at the time of disclosure or that a\nreasonable person would understand to be confidential given the nature of the\ninformation and the circumstances of disclosure.\n\n<!-- oa:clause id=use-restrictions -->\n### Use Restrictions\n\nThe Receiving Party identified in Cover Terms will use Confidential Information\nsolely to evaluate the business relationship contemplated between the parties\nand will not disclose Confidential Information to third parties without the\nDisclosing Party's written consent.\n\n<!-- oa:clause id=term-and-survival -->\n### Term and Survival\n\nEach party's confidentiality obligations apply for the Confidentiality Term\nlisted in Cover Terms, beginning on the Effective Date. Trade-secret\nobligations survive indefinitely.\n\n<!-- oa:section type=signature -->\n## Signatures\n\n<!-- oa:signature-mode arrangement=stacked -->\n\nBy signing this agreement, each party acknowledges and agrees to the obligations above.\n\n<!-- oa:signer id=disclosing kind=entity capacity=through_representative label=\"Disclosing Party\" -->\n**Disclosing Party**\n\nSignature: _______________\nPrint Name: {disclosing_party_name}\nTitle: _______________\nDate: _______________\n\n<!-- oa:signer id=receiving kind=entity capacity=through_representative label=\"Receiving Party\" -->\n**Receiving Party**\n\nSignature: _______________\nPrint Name: {receiving_party_name}\nTitle: _______________\nDate: _______________\n```\n\n## Notes\n\n- Canonical authoring is the standard authoring format for OpenAgreements\n  templates. New templates and migrations of existing JSON-source or\n  Contract-IR-source templates should land in canonical `template.md` form\n  and be picked up automatically by `npm run generate:templates`.\n- This tool does not provide legal advice — consult an attorney.\n\n## Connectors\n\nFor setup of the OpenAgreements repo / CLI, see [CONNECTORS.md](./CONNECTORS.md).","tags":["canonical","markdown","authoring","open","agreements","open-agreements","agent-skills","anthropic","claude","claude-code","claude-code-cli","claude-code-commands"],"capabilities":["skill","source-open-agreements","skill-canonical-markdown-authoring","topic-agent-skills","topic-anthropic","topic-claude","topic-claude-code","topic-claude-code-cli","topic-claude-code-commands","topic-claude-code-plugin","topic-claude-code-plugins","topic-claude-code-skills","topic-claude-code-subagents","topic-claude-skills","topic-contract-automation"],"categories":["open-agreements"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/open-agreements/open-agreements/canonical-markdown-authoring","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add open-agreements/open-agreements","source_repo":"https://github.com/open-agreements/open-agreements","install_from":"skills.sh"}},"qualityScore":"0.467","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 34 github stars · SKILL.md body (24,174 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:08.643Z","embedding":null,"createdAt":"2026-04-30T00:56:57.913Z","updatedAt":"2026-05-18T19:04:08.643Z","lastSeenAt":"2026-05-18T19:04:08.643Z","tsv":"'/.template.generated.json':412,2201,2217 '/canonical-source-authoring.test.ts':2250 '/canonical-source-sync.test.ts':2235 '/connectors.md':3123 '/template-renderer-json-spec.test.ts':2254 '/template.docx':305 '/template.md':129,394 '1':157,273,1131,1498,2179 '1.0':320,2812 '2':170,480,1151,1500,2184,2407 '285':1794 '3':177,539,1167,2194 '4':197,704,2202 '4.0':328,2127,2156,2820 '4a':893,2774 '5':214,1080 '583':1000 '6':253,1526 '600':2836 '7':1580 '700':347 '8':2167 '832':1002 '9':676,702,2595 'a-z':670,696,2589 'a-z0':673,699,2592 'access':1365 'acknowledg':1591,1709,1717,3034 'acknowledging-individu':1708 'across':1259,1636,2685 'activ':47 'actual':1351 'ad':1127,2629 'adapt':2445 'add':89,424,944,1135,1190,1212,2347,2571 'addit':953,1389 'advic':3109 'agre':755,964,1593,2749,2769,3036 'agreement':571,1034,1058,1588,2882,3031 'alia':1497,1499,1547,2614,2622,2628 'alias':1489,1496,1501,1513 'all-row':2422 'allow':1480 'alon':1862 'alreadi':2378 'also':942 'alway':581,586,592,595,603,679,680,1891,2894,2901,2907,2913 'anchor':707,1115,1247,1756,1990,2395,2723,2735 'anchor-on':1755,1989 'anoth':2621 'anticip':1353 'anywher':1529 'appli':980,1028,1053,2365,3007 'aris':1340 'arrang':1692 'articl':1472 'artifact':421,1742,1780,1947,1999 'ask':1130 'assign':748,753,757,898,924,929,949,966,969,1012,1033,1037,1045,1048,1066,1074,2419,2751,2755,2767,2771 'assum':116 'attorney':3112 'attribut':851 'author':4,8,18,77,78,221,726,802,1876,1983,3063,3067 'author-chosen':220,725 'authorit':473 'authorship':1327 'auto':390,1925 'auto-discov':389 'auto-prefix':1924 'automat':494,3097 'avoid':2302 'b':1414 'back':444,1920,1931 'bare':2748 'baselin':926 'bash':2171 'becom':1415,1786,2517 'begin':3016 'behavior':2276 'behind':1283 'belong':1171 'belt':1070 'belt-and':1069 'blank':638 'block':266 'blue':2305,2635 'board':824 'bodi':447,470,530,708,887,1460,1752,1804,1856,1988,2000,2011,2032,2034,2307,2709 'body-v':529 'boolean':686,875 'bracket':1570,2289 'bring':102 'broader':2256 'busi':788,1354,1371,2977 'c':1423 'camelcas':2582 'cannot':2725 'canon':2,6,16,21,65,76,112,132,145,149,378,431,436,1468,1486,1492,1508,1523,1544,1727,1883,1937,2177,2238,2376,2612,2618,3062,3090 'canonical-markdown-author':1,5 'canonical-source-sync.test.ts':2456 'capac':1711 'capit':1110,1163,1250,1286,2716 'case':194,283,663,856,986,1315,2587,2746 'catalog':314 'cc':326,2125,2154,2818 'chang':1868 'check':1749 'checkout':124 'child':640 'choos':1806,2625 'chosen':222,727 'circuit':977,994 'circumst':2957 'claus':95,97,231,239,250,729,738,838,868,902,1038,1083,1094,1098,1125,1150,1159,1242,1455,1533,1550,1553,2301,2325,2351,2404,2608,2756 'clear':1690 'cli':3120 'closer':2436 'cloud':330,2822 'collid':1520,2615 'column':637 'combin':2693 'come':1772 'commit':2227,2464 'compani':578,579,759,816,931,1203,1342,1345,1350,1598,1602,2336 'competit':776,787 'compil':31,83,133,432,2178,2496,2601,2623 'complet':2776 'concept':1111,1232,2398 'condit':2403 'confidenti':594,606,610,612,1355,1396,1399,1432,1446,1567,2413,2909,2911,2918,2933,2948,2971,2987,3005,3010 'confirm':958 'connector':3113 'connectors.md':3122 'consent':1888,2048,2079,2998 'consid':818 'consult':3110 'consum':2082,2105 'contain':1225 'contempl':2979 'content':1138,1236,2702 'content/templates':128,393,411,2200,2216 'content/templates/openagreements-':304 'content/templates/openagreements-employee-ip-inventions-assignment/template.md':2405 'content/templates/openagreements-example-nda/template.docx':2800 'content/templates/openagreements-restrictive-covenant-wyoming/template.md':2382 'context':1971 'contract':12,36,61,978,3083 'contract-ir-sourc':3082 'contractor':1035 'control':2264 'convers':271 'convert':9,56 'cooper':940 'copi':2434 'copyright':909 'count':1632 'cover':138,178,292,344,349,353,357,540,558,626,766,1174,1179,1197,1222,1270,1294,1307,1320,1393,1618,1836,2025,2055,2085,2393,2400,2411,2425,2559,2657,2676,2686,2713,2738,2788,2833,2838,2842,2846,2869,2967,3014 'cover-page-on':1196,2656 'cover-standard-signature-v1':137,291,1617,1835,2024,2054,2084,2558,2787 'cover-term':2392 'coverag':2257 'creat':1336 'cross':496,2487 'cross-valid':495,2486 'current':2044,2112,2137 'custom':1373 'd':1435 'data':1330,1376 'date':589,591,1206,1605,1613,1654,2904,2906,3020,3050,3060 'ddb':988 'decid':1981 'decis':995 'declar':382,397,1466,1641,1665,1674,2600,2610 'default':300,1700,2294,2796 'defin':93,242,334,1081,1092,1231,1240,1318,2266,2299,2323,2349,2387,2409,2671,2689,2731,2826,2916 'defined-term':2670 'definit':246,249,338,1120,1129,1134,1258,1279,1398,1448,1454,1459,1532,2186,2280,2287,2354,2596,2607,2640,2698,2710,2830 'deriv':2527 'describ':1391 'descript':1311,2743 'design':1329 'develop':1367,1438 'diff':2215,2468 'differ':515,1744,2537 'dilig':1021,2757 'direct':98,443,706,718,739,850,1826,2679 'directive-anchor':705 'directive-back':442 'directori':287 'disclos':2889,2891,2925,2986,2994,3041,3046 'disclosur':2938,2959 'discov':391 'discoveri':1328 'do-not-edit-by-hand':415 'doc':331,2823 'doctrin':1077 'document':166,306,795,860,954,1790,1822,2008,2066,2801 'document.defined':2260 'document.label':2090 'document.license':2104 'document.opening':2069 'document.title':174,490,1775,2062,2473 'document.version':2092 'docx':41,303,2113,2163,2205,2274,2637,2799 'doesn':2470 'draft':13,62 'drift':500,1778,2475 'driven':1846 'durat':599,602,608,611 'e.g':316,1063,1648,2335 'earn':1087 'edg':522,1719 'edit':28,418,2450 'effect':588,590,1205,2903,2905,3019 'either':657,1290 'emit':2050 'emphasi':2329 'employ':1338,1369,1430,1443 'employe':110,583,584,751,781,927,1030,1204,1363,1411,1422,1428,1436,1606,1610,2337 'empti':2220 'enforc':1623 'engag':784 'enough':1156 'entiti':1695,1705 'entity-plus-individu':1694 'entri':2673 'error':1691,2519,2543 'evalu':890,2975 'everi':710,728,1450,1566,2312,2603 'everywher':2630 'exact':1293,1625,2098,2722,2734 'exampl':1814,2777,2783,2803,2808,2866 'exclud':1303 'exist':70,3077 'expect':1913,2150 'explicit':1114,1527,1537,1576,2643 'export':2109 'extent':770 'f.3d':1001 'face':653 'fail':2457 'fallback':1044,2368 'fals':891 'fault':1420 'featur':2384 'feature-rich':2383 'feder':976,993 'field':195,664,666,687,691,876,2191,2579 'field-nam':2190 'file':29 'filmtec':987 'financ':820 'financi':1383 'fire':1967 'first':238,1097,1478,1751,2134 'first-parti':2133 'fix':1951,2333,2449 'flag':1023,2758 'flow':2159 'follow':183,201,217,256,450,722,1490,1781,1871,1895,2013 'footer':2097,2117,2164 'footgun':507 'forgot':2453 'form':22,567,2878,3092 'formal':1278 'format':19,3068 'free':322,2121,2814 'frontmatt':159,176,276,396,462,532,1774,1782,1848,2016,2061,2068,2089,2103,2131,2478,2495,2512 'futur':939,1005 'future-tens':1004 'gain':2667 'gap':1026 'generat':87,387,408,1946,2168,2174,2213,2461,3101 'get':735,1923 'git':2214 'given':1268,2949 'govern':1207 'grant':920,975 'group':593,619,628,645 'group/subrow':2399 'h1':172,311,482,486,1753,2469 'h2':204,223,260,448,720,1784,1796,1857,2033 'hand':420 'happen':2144 'hardcod':2115 'head':355,365,374,456,471,514,741,1792,1823,2010,2844,2854,2863 'header':630,1843,1865,2022 'height':346,2835 'herebi':752,923,928,1064,1073,2766 'hidden':414 'highlight':336,342,2258,2262,2270,2283,2311,2340,2828 'hint':1670,1682 'hire':1043 'human':1763 'id':161,279,290,297,399,401,404,852,1551,1635,1647,1663,1678,2533,2555,2780,2786,2793 'ident':488,2549 'identifi':1305,2736,2931,2965 'ignor':2059,2514 'immedi':1494,2001 'improv':1165,1218,1252 'in-docu':1788,1820,2006 'includ':329,614,871,1273,1370,1403,2821 'incorpor':564,2875 'indefinit':3026 'indent':647 'independ':1437,2029 'individu':1697,1706,1710 'inform':607,1356,1361,1382,1384,1386,1390,1397,1400,1404,1447,1568,2414,2919,2924,2954,2972,2988 'insert':1875,1892 'insid':120,730,1452 'instanc':2310,2371 'instrument':991,1049 'integr':2233,2248,2252 'integration-test':2232,2247,2251 'intellectu':1334 'interest':764,936 'invent':750,767,904,1032,1301,1304,1321,1323,2412 'invention-assign':1031 'ip':111,897,912,1036,1060,2418,2754 'ir':3084 'irrevoc':1062,1065 'json':35,72,384,409,2198,2228,2239,2431,2509,2522,2523,3079 'json-sourc':71,2430,3078 'kebab':282,855 'kebab-cas':281,854 'keep':460,484,1089,1233,1758,2480,2732 'kind':186,551,572,616,1703,2883 'known':506,1409,1417,1426 'label':169,187,313,315,352,362,371,552,573,648,654,1164,1200,1296,1668,1680,1851,1861,2019,2538,2542,2548,2678,2806,2841,2851,2860,2884 'land':2489,3088 'languag':899,1007,2420 'later':1123 'law':773,979,1208,1425 'lawyer':27,652 'lawyer-edit':26 'lawyer-fac':651 'layout':142,164,289,400,1622,1890,2096,2102,2114,2209,2539,2574,2785 'lead':1471 'learn':1364,1412 'leav':634,1282,1859 'left':2493,2510 'legal':1506,3108 'let':2645 'level':2504 'licens':321,2118,2140,2157,2813 'line':332,625,984,1760,2824 'link':1577 'list':2334,2363,3012 'liter':658 'live':126,232 'long':1146 'longer':1119 'look':1743 'lookup':1215,2662 'loop':1970 'lower':1314,2745 'lower-cas':1313,2744 'machin':864 'made':1041 'make':2544 'manual':2484 'map':537,1979 'markdown':3,7,11,426,483,519,557,745,813,1317,1583,1748,2108,2491,2506,2778 'match':173,285,309,669,1667,1684,2146,2224,2472,2588 'materi':1121,1140 'may':723,1518 'md':1767,1994 'mean':1267,1322,1357,2920 'mention':1557 'metadata':101,167,464 'migrat':68,2428,3075 'minim':2775 'minimum':1078 'mismatch':1685,2541 'mode':337,343,2259,2263,2275,2372,2829 'model':1331,2183 'much':2304,2634 'must':284,308,668,694,782,1456,1510,1514,1540,1683,2609,2692 'mutual':2804,2809,2867 'n':2577 'name':580,585,667,693,874,1601,1603,1609,1611,1652,1807,2192,2893,2900,3045,3048,3055,3058 'narrow':2391 'natur':2951 'navig':1764 'nda':2784,2805,2810,2868 'ndas':1055 'need':252,796,943,1112,1563 'never':1502 'new':80,2573,3072 'non':775,1359,2153,2922 'non-cc-bi':2152 'non-competit':774 'non-publ':1358,2921 'none':2338 'normal':1736,2182 'note':377,1832,3061 'npm':85,385,2172,2459,3099 'npx':2229,2244 'oa':96,451,716,737,831,1101 'oblig':1596,3006,3024,3039 'occurr':2313 'omit':879,2668 'one':209,545,1257,2552,2682,2697,2704 'open':543 'openagr':15,66,122,280,299,317,2782,2795,2807,3070,3118 'openagreements-default-v1':298,2794 'openagreements-example-nda':2781 'oper':215,711,732,811,837,919,1106,1124,1149,1158,1898,2074,2397 'option':198,845,867,880,1068,1488,2041,2712 'order':156,1658,1666 'output':302,425,1507,1813,1908,2143,2344,2490,2505,2798 'outputs.docx':2211 'outputs.markdown':429,2499 'outsid':1439,1530 'overview':147 'ownership':913,959 'packages/contract-templates-mcp/tests/tools.test.ts':2255 'page':373,1198,1842,1864,1870,1894,2021,2658,2862 'pair':2389 'paragraph':182,213,548,744,1451,2014,2036,2288,2597,2604 'pariti':106 'pars':2180 'parser':1940 'part':153,568,1725,2879 'parti':1590,2135,2890,2892,2897,2899,2928,2964,2982,2991,2995,3003,3033,3042,3047,3052,3057 'patent':907 'path':163,427,2492,2507,2524 'pattern':113 'period':780 'permit':771 'person':1715,2943 'personnel':1385 'phrase':1147 'pick':3095 'pitfal':2446,2447 'place':466,884,2705 'placehold':196,665,2580 'placement':2099 'plain':10,59,1555,2342,2646,2649 'plain-pros':58 'plain-text':1554,2341 'plus':38,263,1696,2012 'pointer':1192,2651 'pointer-on':1191,2650 'post':1793 'preced':235 'prefer':925 'prefix':1926 'present':144,895,917,948,973,1016,2416,2761 'present-tens':894,916,972,2415 'previous':2226 'print':1600,1608,1651,3044,3054 'print-nam':1650 'prior':1300 'product':906,1381 'project':2240 'promis':1010 'properti':1335 'propos':828 'prose':60,743,1298,1316,2293,2632,2647,2681,2747 'prospect':1375 'prove':2236 'provid':3107 'pseudo':1288,2718 'pseudo-term':1287,2717 'public':1360,1408,1416,2923 'put':2699 'quick':1974 'quiet':2513 'rasmussen':990 'rather':1013,2128 'raw':518,1747,1766,1993 'read':1809,2130 'readabl':1166,1219,1253,1761,2666 'reader':2691,2724 'real':1136,1227 'reason':955,2942 'receiv':2896,2898,2963,3051,3056 'recent':644 'recit':199,207,212,801,807,814,844,847,2035,2042,2052,2070 'recital-on':846 'redefinit':1194,2653 'reduc':1141,2566 'refactor':91 'refer':865,1528,1538,2187,2373,2443,2644 'regener':2197,2455,2466 'reject':433,1629,1687,2563,2584 'relat':1333,1348 'relationship':2978 'reli':962 'remain':1182 'remov':1276,2498,2520 'renam':1854,2551 'render':40,46,455,510,524,646,681,682,882,1503,1660,1721,1739,1770,1816,1829,1874,1996,2003,2015,2038,2063,2071,2093,2203,2273,2476,2565 'renderer-insert':1873 'repeat':1249,1919,1930 'repeat-back':1918,1929 'repetit':1142 'replac':1144 'repo':123,2381,3119 'repres':1714 'request':956 'requir':836,841 'reserv':2638 'resolut':228,830,1815,1817 'resolv':1541 'resourc':1346 'restrict':779,791,1433,2961 'review':826,1022 'rewrit':1310,1941,1957,2741 'rich':2385 'right':761,908,933,1019,2764 'roch':999 'row':345,577,582,587,618,622,1634,1646,1662,1677,1915,1962,2424,2535,2547,2553,2834,2888,2895,2902,2908 'rule':615,1449,1615 'run':86,386,1841,2020,2173,2231,2246,2458,2460,3100 'same-id':2531 'satisfi':695 'schema':1628 'scope':1441,1959 'scripts/template_renderer/canonical-source.mjs':134 'second':1214,2661 'secret':598,601,1378,3023 'section':168,200,216,255,348,351,361,370,445,452,463,477,513,542,629,709,712,717,733,808,812,832,839,843,849,1102,1107,1582,1791,1800,1849,1850,1860,1899,1903,1922,1933,2009,2017,2018,2043,2053,2075,2837,2840,2850,2859 'see':341,520,1905,1954,2772,3121 'semant':1578 'separ':806,1845 'servic':1057 'set':1644 'setup':3115 'shape':2193,2442 'share':44,131,2208 'sharp':521,1718 'short':180,546,1162,1246 'shorten':1122 'show':189,554,575,677,1986,2886 'sign':952,1586,3029 'signatur':140,254,259,294,369,372,376,840,842,1581,1584,1599,1607,1620,1649,1838,1869,1893,1902,1921,1932,2027,2057,2087,2561,2790,2858,2861,2865,3027,3043,3053 'signer':100,265,1627,1637,1639,1673,1914,1961,2188,2534,2546,2557,2569,2578 'silent':2474 'simpler':2406 'singl':25,624,1184 'single-lin':623 'site':339,1216,1261,2281,2355,2641,2663,2831 'skeleton':274 'skill':50,115 'skill-canonical-markdown-authoring' 'slug':288,853,2530 'small':2332 'snake':193,662,2586 'softwar':1324 'sole':2973 'sourc':73,162,379,383,440,457,534,1185,1734,1884,1911,1938,1976,2223,2432,2508,2521,2695,3080,3085 'source-of-truth':533,1975 'source-open-agreements' 'span':1463,1465 'spec':37 'split':1256,2684 'stabl':863 'stack':1699,1702 'standalon':797,1047 'standard':139,226,293,359,363,367,746,834,1104,1619,1827,1830,1837,2026,2056,2086,2560,2789,2848,2852,2856,2914,3066 'stanford':997 'stanford/roche':983 'start':713,1457 'stay':2648 'step':268,270,272,479,538,703,892,1079,1525,1579,2166,2773 'step-by-step':267 'still':2327,2364 'stockholder.name':1935,1944 'strategi':1372 'strict':1614 'string':1881,2119 'strip':1483,2291 'structur':146,1731 'structural-on':1730 'style':165,296,403,800,2792 'style.defined':2318,2361 'subrow':596,604,621,639 'substanc':1170,1228 'substant':1137,1235,2386,2408,2701,2708 'subtitl':181,547 'supplement':2715 'support':2576 'surviv':3001,3025 'suspend':1072 'switch':2352 'symptom':2448 'sync':2243,2483 'tabl':191,556 'tech':989 'technic':1379 'tell':2726 'templat':45,74,81,88,104,125,160,278,388,398,2136,2175,2296,2320,2359,2374,2377,2433,2462,2779,3071,3073,3086,3102 'template-wid':2358 'template.generated.json':2467 'template.md':17,67,150,437,1728,2181,2451,3091 'tens':896,918,974,1006,2417 'term':94,179,227,230,243,335,350,354,358,360,364,368,541,559,561,627,747,829,835,1082,1093,1105,1154,1175,1180,1223,1241,1271,1289,1295,1308,1319,1394,1469,1487,1493,1509,1524,1534,1545,1828,1831,2261,2267,2300,2316,2319,2324,2350,2362,2388,2394,2401,2410,2426,2613,2619,2660,2672,2677,2683,2687,2690,2714,2719,2729,2739,2827,2839,2843,2847,2849,2853,2857,2870,2872,2910,2912,2915,2917,2968,2999,3011,3015 'territori':792 'test':2234,2249,2253 'text':487,659,881,1556,1984,2308,2343 'third':2990 'three':2556 'throw':2497,2540,2602,2624 'time':2936 'titl':171,307,356,366,375,478,481,511,762,934,1604,1612,1653,1771,1801,2067,2479,2802,2845,2855,2864,3049,3059 'today':498,2165,2515 'tool':3104 'top':2503 'top-level':2502 'topic-agent-skills' 'topic-anthropic' 'topic-claude' 'topic-claude-code' 'topic-claude-code-cli' 'topic-claude-code-commands' 'topic-claude-code-plugin' 'topic-claude-code-plugins' 'topic-claude-code-skills' 'topic-claude-code-subagents' 'topic-claude-skills' 'topic-contract-automation' 'trade':597,600,1377,3022 'trade-secret':3021 'tradit':1887,2047,2078 'traditional-consent-v1':1886,2046,2077 'transact':821 'transfer':903,1017,1061,2762 'transform':525,1722 'treat':468,1003 'true':333,2825 'truth':459,536,1187,1978 'truthi':689,878 'two':503,1260,1626,2439,2568,2694 'type':245,833,1103 'understand':2945 'unexplain':1285 'union':1661 'uniqu':857,1512,1516,2627 'use':48,324,861,914,1084,1090,1155,1238,1251,1291,1344,1445,1571,1972,2123,2138,2279,2581,2585,2674,2765,2816,2960,2970 'user':53 'usual':2706 'v':998 'v1':141,295,301,1621,1839,1889,2028,2049,2058,2080,2088,2562,2791,2797 'valid':34,497,1559,2185,2488,2583 'valu':188,553,574,633,636,655,1176,1181,1224,1916,1963,2885 'vari':2100 'venu':1210 'verifi':2170 'version':319,2811 'via':42,84,1552,2206 'visibl':476,1799 'visual':2269 'vitest':2230,2245 'vs':531 'want':54,1575,2328 'well':1810 'wherea':799,815,822 'whereas-styl':798 'whose':395 'wide':2360 'within':789,858 'without':970,1059,1217,1431,1444,2321,2598,2992 'work':119,905,1040,1325,1343,2375 'work-made-for-hir':1039 'would':2944 'wrap':1565 'write':406,1263,1879,1934,2195 'written':2997 'wyom':109 'x':1264 'xyz':318 'yaml':158,277 'z':672,698,2591 'z0':675,701,2594","prices":[{"id":"0879939a-d7f1-4168-ac0c-72ca593d8b00","listingId":"fb9b2843-9d2f-4d95-8f97-e1d91dc441ef","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"open-agreements","category":"open-agreements","install_from":"skills.sh"},"createdAt":"2026-04-30T00:56:57.913Z"}],"sources":[{"listingId":"fb9b2843-9d2f-4d95-8f97-e1d91dc441ef","source":"github","sourceId":"open-agreements/open-agreements/canonical-markdown-authoring","sourceUrl":"https://github.com/open-agreements/open-agreements/tree/main/skills/canonical-markdown-authoring","isPrimary":false,"firstSeenAt":"2026-04-30T00:56:57.913Z","lastSeenAt":"2026-05-18T19:04:08.643Z"}],"details":{"listingId":"fb9b2843-9d2f-4d95-8f97-e1d91dc441ef","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"open-agreements","slug":"canonical-markdown-authoring","github":{"repo":"open-agreements/open-agreements","stars":34,"topics":["agent-skills","anthropic","claude","claude-code","claude-code-cli","claude-code-commands","claude-code-plugin","claude-code-plugins","claude-code-skills","claude-code-subagents","claude-skills","contract-automation","docx","gemini-cli-extension","legal-tech","legal-templates","nda-template","open-source-legal","safe-template"],"license":"mit","html_url":"https://github.com/open-agreements/open-agreements","pushed_at":"2026-05-15T19:40:17Z","description":"Fill standard legal agreement templates and produce signable DOCX files.","skill_md_sha":"0b49f8a0197dc5815adf27f88bac741eb95fda99","skill_md_path":"skills/canonical-markdown-authoring/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/open-agreements/open-agreements/tree/main/skills/canonical-markdown-authoring"},"layout":"multi","source":"github","category":"open-agreements","frontmatter":{"name":"canonical-markdown-authoring","license":"MIT","description":">-","compatibility":">-"},"skills_sh_url":"https://skills.sh/open-agreements/open-agreements/canonical-markdown-authoring"},"updatedAt":"2026-05-18T19:04:08.643Z"}}