open-agreements 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/bin/open-agreements.js +2 -0
  4. package/dist/cli/index.d.ts +2 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +102 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/fill.d.ts +7 -0
  9. package/dist/commands/fill.d.ts.map +1 -0
  10. package/dist/commands/fill.js +84 -0
  11. package/dist/commands/fill.js.map +1 -0
  12. package/dist/commands/list.d.ts +6 -0
  13. package/dist/commands/list.d.ts.map +1 -0
  14. package/dist/commands/list.js +202 -0
  15. package/dist/commands/list.js.map +1 -0
  16. package/dist/commands/recipe.d.ts +21 -0
  17. package/dist/commands/recipe.d.ts.map +1 -0
  18. package/dist/commands/recipe.js +71 -0
  19. package/dist/commands/recipe.js.map +1 -0
  20. package/dist/commands/scan.d.ts +12 -0
  21. package/dist/commands/scan.d.ts.map +1 -0
  22. package/dist/commands/scan.js +122 -0
  23. package/dist/commands/scan.js.map +1 -0
  24. package/dist/commands/validate.d.ts +6 -0
  25. package/dist/commands/validate.d.ts.map +1 -0
  26. package/dist/commands/validate.js +139 -0
  27. package/dist/commands/validate.js.map +1 -0
  28. package/dist/core/command-generation/adapters/claude.d.ts +11 -0
  29. package/dist/core/command-generation/adapters/claude.d.ts.map +1 -0
  30. package/dist/core/command-generation/adapters/claude.js +85 -0
  31. package/dist/core/command-generation/adapters/claude.js.map +1 -0
  32. package/dist/core/command-generation/types.d.ts +14 -0
  33. package/dist/core/command-generation/types.d.ts.map +1 -0
  34. package/dist/core/command-generation/types.js +2 -0
  35. package/dist/core/command-generation/types.js.map +1 -0
  36. package/dist/core/engine.d.ts +13 -0
  37. package/dist/core/engine.d.ts.map +1 -0
  38. package/dist/core/engine.js +149 -0
  39. package/dist/core/engine.js.map +1 -0
  40. package/dist/core/external/index.d.ts +8 -0
  41. package/dist/core/external/index.d.ts.map +1 -0
  42. package/dist/core/external/index.js +92 -0
  43. package/dist/core/external/index.js.map +1 -0
  44. package/dist/core/external/types.d.ts +18 -0
  45. package/dist/core/external/types.d.ts.map +1 -0
  46. package/dist/core/external/types.js +2 -0
  47. package/dist/core/external/types.js.map +1 -0
  48. package/dist/core/fill-pipeline.d.ts +61 -0
  49. package/dist/core/fill-pipeline.d.ts.map +1 -0
  50. package/dist/core/fill-pipeline.js +279 -0
  51. package/dist/core/fill-pipeline.js.map +1 -0
  52. package/dist/core/fill-utils.d.ts +39 -0
  53. package/dist/core/fill-utils.d.ts.map +1 -0
  54. package/dist/core/fill-utils.js +127 -0
  55. package/dist/core/fill-utils.js.map +1 -0
  56. package/dist/core/metadata.d.ts +396 -0
  57. package/dist/core/metadata.d.ts.map +1 -0
  58. package/dist/core/metadata.js +126 -0
  59. package/dist/core/metadata.js.map +1 -0
  60. package/dist/core/recipe/cleaner.d.ts +13 -0
  61. package/dist/core/recipe/cleaner.d.ts.map +1 -0
  62. package/dist/core/recipe/cleaner.js +106 -0
  63. package/dist/core/recipe/cleaner.js.map +1 -0
  64. package/dist/core/recipe/downloader.d.ts +8 -0
  65. package/dist/core/recipe/downloader.d.ts.map +1 -0
  66. package/dist/core/recipe/downloader.js +58 -0
  67. package/dist/core/recipe/downloader.js.map +1 -0
  68. package/dist/core/recipe/index.d.ts +14 -0
  69. package/dist/core/recipe/index.d.ts.map +1 -0
  70. package/dist/core/recipe/index.js +91 -0
  71. package/dist/core/recipe/index.js.map +1 -0
  72. package/dist/core/recipe/ooxml-parts.d.ts +21 -0
  73. package/dist/core/recipe/ooxml-parts.d.ts.map +1 -0
  74. package/dist/core/recipe/ooxml-parts.js +33 -0
  75. package/dist/core/recipe/ooxml-parts.js.map +1 -0
  76. package/dist/core/recipe/patcher.d.ts +17 -0
  77. package/dist/core/recipe/patcher.d.ts.map +1 -0
  78. package/dist/core/recipe/patcher.js +240 -0
  79. package/dist/core/recipe/patcher.js.map +1 -0
  80. package/dist/core/recipe/types.d.ts +28 -0
  81. package/dist/core/recipe/types.d.ts.map +1 -0
  82. package/dist/core/recipe/types.js +2 -0
  83. package/dist/core/recipe/types.js.map +1 -0
  84. package/dist/core/recipe/verifier.d.ts +24 -0
  85. package/dist/core/recipe/verifier.d.ts.map +1 -0
  86. package/dist/core/recipe/verifier.js +143 -0
  87. package/dist/core/recipe/verifier.js.map +1 -0
  88. package/dist/core/validation/external.d.ts +16 -0
  89. package/dist/core/validation/external.d.ts.map +1 -0
  90. package/dist/core/validation/external.js +106 -0
  91. package/dist/core/validation/external.js.map +1 -0
  92. package/dist/core/validation/license.d.ts +15 -0
  93. package/dist/core/validation/license.d.ts.map +1 -0
  94. package/dist/core/validation/license.js +30 -0
  95. package/dist/core/validation/license.js.map +1 -0
  96. package/dist/core/validation/output.d.ts +12 -0
  97. package/dist/core/validation/output.d.ts.map +1 -0
  98. package/dist/core/validation/output.js +47 -0
  99. package/dist/core/validation/output.js.map +1 -0
  100. package/dist/core/validation/recipe.d.ts +19 -0
  101. package/dist/core/validation/recipe.d.ts.map +1 -0
  102. package/dist/core/validation/recipe.js +148 -0
  103. package/dist/core/validation/recipe.js.map +1 -0
  104. package/dist/core/validation/template.d.ts +11 -0
  105. package/dist/core/validation/template.d.ts.map +1 -0
  106. package/dist/core/validation/template.js +159 -0
  107. package/dist/core/validation/template.js.map +1 -0
  108. package/dist/index.d.ts +13 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +19 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/utils/paths.d.ts +15 -0
  113. package/dist/utils/paths.d.ts.map +1 -0
  114. package/dist/utils/paths.js +43 -0
  115. package/dist/utils/paths.js.map +1 -0
  116. package/external/LICENSE +27 -0
  117. package/external/README.md +38 -0
  118. package/external/yc-safe-discount/README.md +16 -0
  119. package/external/yc-safe-discount/clean.json +4 -0
  120. package/external/yc-safe-discount/metadata.yaml +71 -0
  121. package/external/yc-safe-discount/replacements.json +13 -0
  122. package/external/yc-safe-discount/template.docx +0 -0
  123. package/external/yc-safe-mfn/README.md +16 -0
  124. package/external/yc-safe-mfn/clean.json +4 -0
  125. package/external/yc-safe-mfn/metadata.yaml +64 -0
  126. package/external/yc-safe-mfn/replacements.json +12 -0
  127. package/external/yc-safe-mfn/template.docx +0 -0
  128. package/external/yc-safe-pro-rata-side-letter/README.md +16 -0
  129. package/external/yc-safe-pro-rata-side-letter/clean.json +4 -0
  130. package/external/yc-safe-pro-rata-side-letter/metadata.yaml +49 -0
  131. package/external/yc-safe-pro-rata-side-letter/replacements.json +9 -0
  132. package/external/yc-safe-pro-rata-side-letter/template.docx +0 -0
  133. package/external/yc-safe-valuation-cap/README.md +16 -0
  134. package/external/yc-safe-valuation-cap/clean.json +4 -0
  135. package/external/yc-safe-valuation-cap/metadata.yaml +64 -0
  136. package/external/yc-safe-valuation-cap/replacements.json +12 -0
  137. package/external/yc-safe-valuation-cap/template.docx +0 -0
  138. package/package.json +77 -0
  139. package/recipes/nvca-certificate-of-incorporation/clean.json +8 -0
  140. package/recipes/nvca-certificate-of-incorporation/metadata.yaml +43 -0
  141. package/recipes/nvca-certificate-of-incorporation/replacements.json +9 -0
  142. package/recipes/nvca-certificate-of-incorporation/schema.json +11 -0
  143. package/recipes/nvca-indemnification-agreement/clean.json +7 -0
  144. package/recipes/nvca-indemnification-agreement/metadata.yaml +83 -0
  145. package/recipes/nvca-indemnification-agreement/replacements.json +17 -0
  146. package/recipes/nvca-indemnification-agreement/schema.json +19 -0
  147. package/recipes/nvca-investors-rights-agreement/clean.json +12 -0
  148. package/recipes/nvca-investors-rights-agreement/metadata.yaml +75 -0
  149. package/recipes/nvca-investors-rights-agreement/replacements.json +18 -0
  150. package/recipes/nvca-investors-rights-agreement/schema.json +18 -0
  151. package/recipes/nvca-management-rights-letter/clean.json +7 -0
  152. package/recipes/nvca-management-rights-letter/metadata.yaml +50 -0
  153. package/recipes/nvca-management-rights-letter/replacements.json +11 -0
  154. package/recipes/nvca-management-rights-letter/schema.json +13 -0
  155. package/recipes/nvca-rofr-co-sale-agreement/clean.json +7 -0
  156. package/recipes/nvca-rofr-co-sale-agreement/metadata.yaml +80 -0
  157. package/recipes/nvca-rofr-co-sale-agreement/replacements.json +17 -0
  158. package/recipes/nvca-rofr-co-sale-agreement/schema.json +19 -0
  159. package/recipes/nvca-stock-purchase-agreement/clean.json +10 -0
  160. package/recipes/nvca-stock-purchase-agreement/metadata.yaml +74 -0
  161. package/recipes/nvca-stock-purchase-agreement/replacements.json +20 -0
  162. package/recipes/nvca-stock-purchase-agreement/schema.json +19 -0
  163. package/recipes/nvca-voting-agreement/README.md +53 -0
  164. package/recipes/nvca-voting-agreement/clean.json +7 -0
  165. package/recipes/nvca-voting-agreement/metadata.yaml +70 -0
  166. package/recipes/nvca-voting-agreement/replacements.json +18 -0
  167. package/recipes/nvca-voting-agreement/schema.json +28 -0
  168. package/skills/open-agreements/SKILL.md +166 -0
  169. package/templates/bonterms-mutual-nda/README.md +27 -0
  170. package/templates/bonterms-mutual-nda/metadata.yaml +58 -0
  171. package/templates/bonterms-mutual-nda/template.docx +0 -0
  172. package/templates/bonterms-professional-services-agreement/README.md +24 -0
  173. package/templates/bonterms-professional-services-agreement/metadata.yaml +40 -0
  174. package/templates/bonterms-professional-services-agreement/template.docx +0 -0
  175. package/templates/common-paper-ai-addendum/README.md +23 -0
  176. package/templates/common-paper-ai-addendum/metadata.yaml +33 -0
  177. package/templates/common-paper-ai-addendum/template.docx +0 -0
  178. package/templates/common-paper-ai-addendum-in-app/README.md +21 -0
  179. package/templates/common-paper-ai-addendum-in-app/metadata.yaml +23 -0
  180. package/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
  181. package/templates/common-paper-amendment/README.md +27 -0
  182. package/templates/common-paper-amendment/metadata.yaml +53 -0
  183. package/templates/common-paper-amendment/template.docx +0 -0
  184. package/templates/common-paper-business-associate-agreement/README.md +29 -0
  185. package/templates/common-paper-business-associate-agreement/metadata.yaml +63 -0
  186. package/templates/common-paper-business-associate-agreement/template.docx +0 -0
  187. package/templates/common-paper-cloud-service-agreement/README.md +32 -0
  188. package/templates/common-paper-cloud-service-agreement/metadata.yaml +488 -0
  189. package/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  190. package/templates/common-paper-csa-click-through/README.md +33 -0
  191. package/templates/common-paper-csa-click-through/metadata.yaml +83 -0
  192. package/templates/common-paper-csa-click-through/template.docx +0 -0
  193. package/templates/common-paper-csa-with-ai/README.md +49 -0
  194. package/templates/common-paper-csa-with-ai/metadata.yaml +166 -0
  195. package/templates/common-paper-csa-with-ai/template.docx +0 -0
  196. package/templates/common-paper-csa-with-sla/README.md +53 -0
  197. package/templates/common-paper-csa-with-sla/metadata.yaml +185 -0
  198. package/templates/common-paper-csa-with-sla/template.docx +0 -0
  199. package/templates/common-paper-csa-without-sla/README.md +47 -0
  200. package/templates/common-paper-csa-without-sla/metadata.yaml +155 -0
  201. package/templates/common-paper-csa-without-sla/template.docx +0 -0
  202. package/templates/common-paper-data-processing-agreement/README.md +46 -0
  203. package/templates/common-paper-data-processing-agreement/metadata.yaml +149 -0
  204. package/templates/common-paper-data-processing-agreement/template.docx +0 -0
  205. package/templates/common-paper-design-partner-agreement/README.md +29 -0
  206. package/templates/common-paper-design-partner-agreement/metadata.yaml +65 -0
  207. package/templates/common-paper-design-partner-agreement/template.docx +0 -0
  208. package/templates/common-paper-independent-contractor-agreement/README.md +27 -0
  209. package/templates/common-paper-independent-contractor-agreement/metadata.yaml +55 -0
  210. package/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  211. package/templates/common-paper-letter-of-intent/README.md +25 -0
  212. package/templates/common-paper-letter-of-intent/metadata.yaml +43 -0
  213. package/templates/common-paper-letter-of-intent/template.docx +0 -0
  214. package/templates/common-paper-mutual-nda/README.md +29 -0
  215. package/templates/common-paper-mutual-nda/metadata.yaml +59 -0
  216. package/templates/common-paper-mutual-nda/template.docx +0 -0
  217. package/templates/common-paper-one-way-nda/README.md +27 -0
  218. package/templates/common-paper-one-way-nda/metadata.yaml +60 -0
  219. package/templates/common-paper-one-way-nda/template.docx +0 -0
  220. package/templates/common-paper-order-form/README.md +36 -0
  221. package/templates/common-paper-order-form/metadata.yaml +98 -0
  222. package/templates/common-paper-order-form/template.docx +0 -0
  223. package/templates/common-paper-order-form-with-sla/README.md +42 -0
  224. package/templates/common-paper-order-form-with-sla/metadata.yaml +129 -0
  225. package/templates/common-paper-order-form-with-sla/template.docx +0 -0
  226. package/templates/common-paper-partnership-agreement/README.md +34 -0
  227. package/templates/common-paper-partnership-agreement/metadata.yaml +90 -0
  228. package/templates/common-paper-partnership-agreement/template.docx +0 -0
  229. package/templates/common-paper-pilot-agreement/README.md +34 -0
  230. package/templates/common-paper-pilot-agreement/metadata.yaml +90 -0
  231. package/templates/common-paper-pilot-agreement/template.docx +0 -0
  232. package/templates/common-paper-professional-services-agreement/README.md +44 -0
  233. package/templates/common-paper-professional-services-agreement/metadata.yaml +141 -0
  234. package/templates/common-paper-professional-services-agreement/template.docx +0 -0
  235. package/templates/common-paper-software-license-agreement/README.md +18 -0
  236. package/templates/common-paper-software-license-agreement/metadata.yaml +13 -0
  237. package/templates/common-paper-software-license-agreement/template.docx +0 -0
  238. package/templates/common-paper-statement-of-work/README.md +32 -0
  239. package/templates/common-paper-statement-of-work/metadata.yaml +78 -0
  240. package/templates/common-paper-statement-of-work/template.docx +0 -0
  241. package/templates/common-paper-term-sheet/README.md +22 -0
  242. package/templates/common-paper-term-sheet/metadata.yaml +28 -0
  243. package/templates/common-paper-term-sheet/template.docx +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "removeFootnotes": true,
3
+ "removeParagraphPatterns": [
4
+ "^Note to Drafter:",
5
+ "^Preliminary Note\\b"
6
+ ]
7
+ }
@@ -0,0 +1,70 @@
1
+ name: NVCA Model Voting Agreement
2
+ description: >-
3
+ Standard-form voting agreement for venture capital financings, covering board
4
+ composition, drag-along rights, and stockholder voting obligations.
5
+ source_url: https://nvca.org/wp-content/uploads/2024/10/NVCA-Model-VA-10-1-2025.docx
6
+ source_version: "10-1-2025"
7
+ license_note: >-
8
+ NVCA model documents are freely downloadable but not redistributable.
9
+ This recipe contains only transformation instructions, not the source document.
10
+ source_sha256: 3496d7ae9343d1b5b7db13239313c6512e7e0d68d13273538c4dbf06416a5f0d
11
+ optional: false
12
+ fields:
13
+ - name: company_name
14
+ type: string
15
+ description: Full legal name of the company
16
+ required: true
17
+ - name: investor_name
18
+ type: string
19
+ description: Full name of the lead investor
20
+ required: true
21
+ - name: investor_2_name
22
+ type: string
23
+ description: Full name of the second investor (if applicable)
24
+ required: false
25
+ - name: key_holder_name
26
+ type: string
27
+ description: Name of the key holder (typically founder/CEO)
28
+ required: true
29
+ - name: effective_date
30
+ type: string
31
+ description: Effective date of the agreement (e.g. January 15, 2025)
32
+ required: true
33
+ - name: company_counsel
34
+ type: string
35
+ description: Company counsel name and address
36
+ required: true
37
+ - name: counsel_cc
38
+ type: string
39
+ description: Additional counsel to CC on notices, or empty string if none
40
+ required: false
41
+ default: ""
42
+ - name: judicial_district
43
+ type: string
44
+ description: Federal judicial district for disputes (e.g. District of Delaware)
45
+ required: true
46
+ default: District of Delaware
47
+ - name: state_of_incorporation_lower
48
+ type: string
49
+ description: State of incorporation in lowercase (e.g. delaware)
50
+ required: true
51
+ default: delaware
52
+ - name: specify_percentage
53
+ type: string
54
+ description: Percentage threshold for drag-along and amendment provisions (number only, e.g. 60)
55
+ required: true
56
+ - name: amended_restated_upper
57
+ type: string
58
+ description: "AMENDED AND RESTATED or empty string"
59
+ required: false
60
+ default: ""
61
+ - name: amended_restated
62
+ type: string
63
+ description: "Amended and Restated or empty string"
64
+ required: false
65
+ default: ""
66
+ - name: signature_page_marker
67
+ type: string
68
+ description: Signature page marker text
69
+ required: false
70
+ default: Signature Page Follows
@@ -0,0 +1,18 @@
1
+ {
2
+ "[AMENDED AND RESTATED]": "{amended_restated_upper}",
3
+ "[Amended and Restated]": "{amended_restated}",
4
+ "[________], 20[__]": "{effective_date}",
5
+ "among [____________], a Delaware": "among {company_name}, a Delaware",
6
+ "[Insert Company Name]": "{company_name}",
7
+ "[Insert Investor Name]": "{investor_name}",
8
+ "[Insert Key Holder Name]": "{key_holder_name}",
9
+ "[Name of Investor]": "{investor_name}",
10
+ "[Name of Investor 1]": "{investor_name}",
11
+ "[Name of Investor 2]": "{investor_2_name}",
12
+ "[Company counsel name and address]": "{company_counsel}",
13
+ "[Counsel cc, if any]": "{counsel_cc}",
14
+ "[judicial district]": "{judicial_district}",
15
+ "[state]": "{state_of_incorporation_lower}",
16
+ "[specify percentage]": "{specify_percentage}",
17
+ "[Signature Page Follows]": "{signature_page_marker}"
18
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "fields": [
3
+ { "name": "company_name", "type": "string", "description": "Full legal name of the company" },
4
+ { "name": "company_name_upper", "type": "string", "description": "Company name in uppercase" },
5
+ { "name": "state_of_incorporation", "type": "string", "description": "State of incorporation" },
6
+ { "name": "state_of_incorporation_lower", "type": "string", "description": "State of incorporation (lowercase)" },
7
+ { "name": "investor_1_name", "type": "string", "description": "Full name of the lead investor" },
8
+ { "name": "investor_2_name", "type": "string", "description": "Full name of the second investor" },
9
+ { "name": "investor_1_designee", "type": "string", "description": "Lead investor board designee" },
10
+ { "name": "investor_2_designee", "type": "string", "description": "Second investor board designee" },
11
+ { "name": "key_holder_name", "type": "string", "description": "Name of key holder (founder/CEO)" },
12
+ { "name": "alternate_key_holder_name", "type": "string", "description": "Alternate key holder" },
13
+ { "name": "key_holder_spouse_name", "type": "string", "description": "Key holder's spouse" },
14
+ { "name": "series_name", "type": "string", "description": "Preferred stock series name" },
15
+ { "name": "company_counsel", "type": "string", "description": "Company counsel name and address" },
16
+ { "name": "investor_counsel", "type": "string", "description": "Investor counsel name and address" },
17
+ { "name": "effective_date", "type": "date", "description": "Agreement effective date" },
18
+ { "name": "drag_along_percentage", "type": "string", "description": "Drag-along threshold" },
19
+ { "name": "board_size", "type": "string", "description": "Number of board members" },
20
+ { "name": "notice_period_days", "type": "string", "description": "Notice period in days" },
21
+ { "name": "judicial_district", "type": "string", "description": "Federal judicial district" },
22
+ { "name": "amended_restated_upper", "type": "string", "description": "AMENDED AND RESTATED or empty" },
23
+ { "name": "amended_restated", "type": "string", "description": "Amended and Restated or empty" },
24
+ { "name": "named_person", "type": "string", "description": "Named person for specific provisions" },
25
+ { "name": "employee_title", "type": "string", "description": "Employee title reference" },
26
+ { "name": "signature_page_marker", "type": "string", "description": "Signature page marker" }
27
+ ]
28
+ }
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: open-agreements
3
+ description: >-
4
+ Fill standard legal agreement templates (NDAs, cloud service agreements, SAFEs)
5
+ and produce signable DOCX files. Supports Common Paper, Bonterms, and
6
+ Y Combinator templates. Use when the user needs to draft a legal agreement,
7
+ create an NDA, fill a contract template, or generate a SAFE.
8
+ DOCX generation requires Node.js >=20.
9
+ license: MIT
10
+ compatibility: Requires Node.js >=20 for DOCX rendering.
11
+ metadata:
12
+ author: open-agreements
13
+ version: "0.1.0"
14
+ ---
15
+
16
+ # open-agreements
17
+
18
+ Fill standard legal agreement templates and produce signable DOCX files.
19
+
20
+ ## Activation
21
+
22
+ Use this skill when the user wants to:
23
+ - Draft an NDA, confidentiality agreement, or cloud service agreement
24
+ - Generate a SAFE (Simple Agreement for Future Equity) for a startup investment
25
+ - Fill a legal template with their company details
26
+ - Generate a signable DOCX from a standard form
27
+
28
+ ## Execution
29
+
30
+ ### Step 1: Detect runtime
31
+
32
+ Determine which execution path to use:
33
+
34
+ ```bash
35
+ if command -v open-agreements >/dev/null 2>&1; then
36
+ echo "GLOBAL"
37
+ elif command -v node >/dev/null 2>&1; then
38
+ echo "NPX"
39
+ else
40
+ echo "PREVIEW_ONLY"
41
+ fi
42
+ ```
43
+
44
+ - **GLOBAL**: The CLI is installed. Use `open-agreements` directly.
45
+ - **NPX**: Node.js is available. Use `npx -y open-agreements@latest` as the command prefix.
46
+ - **PREVIEW_ONLY**: No Node.js. Skip to Step 5 (preview fallback).
47
+
48
+ ### Step 2: Discover templates
49
+
50
+ Run the list command with `--json` to get available templates and their fields:
51
+
52
+ **If GLOBAL:**
53
+ ```bash
54
+ open-agreements list --json
55
+ ```
56
+
57
+ **If NPX:**
58
+ ```bash
59
+ npx -y open-agreements@latest list --json
60
+ ```
61
+
62
+ The output is a JSON envelope. Parse the response and verify `schema_version` is `1`. Use the `items` array for template discovery.
63
+
64
+ ```json
65
+ {
66
+ "schema_version": 1,
67
+ "cli_version": "0.1.0",
68
+ "items": [...]
69
+ }
70
+ ```
71
+
72
+ Each item in the `items` array has:
73
+ - `name`: template identifier (use this in the fill command)
74
+ - `description`: what the template is for
75
+ - `license`: SPDX license identifier (e.g. `CC-BY-4.0`, `CC-BY-ND-4.0`)
76
+ - `source_url`: URL to the original template source
77
+ - `source`: human-friendly source name (e.g. "Common Paper", "Y Combinator")
78
+ - `attribution_text`: required attribution text
79
+ - `fields`: array of field definitions with `name`, `type`, `required`, `section`, `description`, `default`
80
+
81
+ The `license` field tells you what you can do with the filled output:
82
+ - `CC-BY-4.0`: derivatives allowed, can redistribute with attribution
83
+ - `CC-BY-ND-4.0`: fill for your own use, do not redistribute modified versions
84
+
85
+ ### Step 3: Help user choose a template
86
+
87
+ Present the available templates to the user. If they asked for a specific type (e.g., "NDA" or "SAFE"), filter to matching items. Ask the user to confirm which template to use.
88
+
89
+ If the selected template has a `CC-BY-ND` license, note that the CLI will print a license notice when filling. No extra steps are needed — all templates work the same from the user's perspective.
90
+
91
+ ### Step 4: Interview user for field values
92
+
93
+ Group fields by `section`. Ask the user for values in rounds of up to 4 questions each. For each field, show:
94
+ - The field description
95
+ - Whether it's required
96
+ - The default value (if any)
97
+
98
+ Write the collected values to a temporary JSON file:
99
+
100
+ ```bash
101
+ cat > /tmp/oa-values.json << 'FIELDS'
102
+ {
103
+ "party_1_name": "Acme Corp",
104
+ "party_1_email": "legal@acme.com",
105
+ "party_2_name": "Beta Inc",
106
+ "party_2_email": "legal@beta.com",
107
+ "effective_date": "February 1, 2026",
108
+ "purpose": "Evaluating a potential business partnership",
109
+ "mnda_term": "2 years",
110
+ "confidentiality_term": "2 years",
111
+ "governing_law": "Delaware",
112
+ "jurisdiction": "courts located in New Castle County, Delaware"
113
+ }
114
+ FIELDS
115
+ ```
116
+
117
+ ### Step 5: Render DOCX
118
+
119
+ **If GLOBAL:**
120
+ ```bash
121
+ open-agreements fill <template-name> -d /tmp/oa-values.json -o <output-name>.docx
122
+ ```
123
+
124
+ **If NPX:**
125
+ ```bash
126
+ npx -y open-agreements@latest fill <template-name> -d /tmp/oa-values.json -o <output-name>.docx
127
+ ```
128
+
129
+ **If PREVIEW_ONLY (no Node.js):**
130
+
131
+ Generate a markdown preview using the collected values. Label clearly:
132
+
133
+ ```markdown
134
+ # PREVIEW ONLY -- install Node.js >=20 for signable DOCX output
135
+
136
+ ## Mutual Non-Disclosure Agreement
137
+
138
+ Between **Acme Corp** and **Beta Inc**
139
+
140
+ Effective Date: February 1, 2026
141
+
142
+ ...
143
+ ```
144
+
145
+ Tell the user: "I've generated a preview. To produce a signable DOCX file, install Node.js 20+ and run this skill again."
146
+
147
+ ### Step 6: Confirm output
148
+
149
+ Report the output file path to the user. Remind them to review the document before signing.
150
+
151
+ Clean up the temporary values file:
152
+ ```bash
153
+ rm /tmp/oa-values.json
154
+ ```
155
+
156
+ ## Templates Available
157
+
158
+ Templates are discovered dynamically -- always run `list --json` for the current inventory.
159
+ Do NOT rely on a hardcoded list. The output of `list --json` is the single source of truth.
160
+
161
+ ## Notes
162
+
163
+ - All templates produce Word DOCX files that preserve original formatting
164
+ - Templates are licensed by their respective authors (CC BY 4.0, CC0, or CC BY-ND 4.0)
165
+ - External templates (CC BY-ND 4.0, e.g. YC SAFEs) can be filled for your own use but must not be redistributed in modified form
166
+ - This tool does not provide legal advice -- consult an attorney
@@ -0,0 +1,27 @@
1
+ # Bonterms Mutual NDA
2
+
3
+ Cover page for the [Bonterms Mutual NDA](https://bonterms.com/forms/bonterms-mutual-nda-v1/) (Version 1.0). The standard terms are incorporated by reference.
4
+
5
+ ## Source
6
+
7
+ - **URL**: https://github.com/Bonterms/Mutual-NDA
8
+ - **Version**: 1.0
9
+ - **License**: CC0 1.0
10
+
11
+ ## Fields
12
+
13
+ | Field | Type | Required | Description |
14
+ |-------|------|----------|-------------|
15
+ | `party_1_name` | string | yes | Full legal name of the first party |
16
+ | `party_2_name` | string | yes | Full legal name of the second party |
17
+ | `effective_date` | date | yes | Date the NDA takes effect |
18
+ | `purpose` | string | yes | Permitted purpose for sharing confidential information |
19
+ | `nda_term` | string | yes | Duration of the NDA agreement and disclosure period |
20
+ | `confidentiality_period` | string | yes | How long confidential information remains protected |
21
+ | `governing_law` | string | yes | State or jurisdiction whose laws govern the agreement |
22
+ | `courts` | string | yes | Courts with jurisdiction over disputes |
23
+
24
+ ## Attribution
25
+
26
+ Based on the Bonterms Mutual NDA Cover Page, available at https://bonterms.com/forms/bonterms-mutual-nda-v1/.
27
+ Made available under CC0 1.0.
@@ -0,0 +1,58 @@
1
+ name: Bonterms Mutual NDA
2
+ description: >-
3
+ Cover page for the Bonterms Mutual NDA (Version 1.0). The standard terms
4
+ are incorporated by reference from bonterms.com.
5
+ source_url: https://github.com/Bonterms/Mutual-NDA
6
+ version: "1.0"
7
+ license: CC0-1.0
8
+ allow_derivatives: true
9
+ attribution_text: >-
10
+ Based on the Bonterms Mutual NDA Cover Page, available at
11
+ https://bonterms.com/forms/bonterms-mutual-nda-v1/.
12
+ Made available under CC0 1.0.
13
+ fields:
14
+ - name: party_1_name
15
+ type: string
16
+ description: Full legal name of the first party
17
+ required: true
18
+ section: Parties
19
+ - name: party_2_name
20
+ type: string
21
+ description: Full legal name of the second party
22
+ required: true
23
+ section: Parties
24
+ - name: effective_date
25
+ type: date
26
+ description: Date the NDA takes effect
27
+ required: true
28
+ section: Terms
29
+ - name: purpose
30
+ type: string
31
+ description: Permitted purpose for sharing confidential information
32
+ required: true
33
+ default: Evaluating a potential business relationship
34
+ section: Terms
35
+ - name: nda_term
36
+ type: string
37
+ description: Duration of the NDA agreement and disclosure period
38
+ required: true
39
+ default: 1 year
40
+ section: Terms
41
+ - name: confidentiality_period
42
+ type: string
43
+ description: How long confidential information remains protected after NDA expires
44
+ required: true
45
+ default: 1 year
46
+ section: Terms
47
+ - name: governing_law
48
+ type: string
49
+ description: State or jurisdiction whose laws govern the agreement
50
+ required: true
51
+ default: California
52
+ section: Legal
53
+ - name: courts
54
+ type: string
55
+ description: Courts with jurisdiction over disputes
56
+ required: true
57
+ default: courts located in San Francisco, California
58
+ section: Legal
@@ -0,0 +1,24 @@
1
+ # Bonterms Professional Services Agreement
2
+
3
+ Cover page for the [Bonterms Professional Services Agreement](https://bonterms.com/forms/professional-services-agreement-v1.2/) (Version 1.2). The standard terms are incorporated by reference.
4
+
5
+ ## Source
6
+
7
+ - **URL**: https://github.com/Bonterms/Professional-Services-Agreement
8
+ - **Version**: 1.2
9
+ - **License**: CC0 1.0
10
+
11
+ ## Fields
12
+
13
+ | Field | Type | Required | Description |
14
+ |-------|------|----------|-------------|
15
+ | `customer_name` | string | yes | Full legal name of the customer |
16
+ | `provider_name` | string | yes | Full legal name of the provider |
17
+ | `effective_date` | date | yes | Date the agreement takes effect |
18
+ | `governing_law` | string | yes | State or jurisdiction whose laws govern the agreement |
19
+ | `courts` | string | yes | Courts with jurisdiction over disputes |
20
+
21
+ ## Attribution
22
+
23
+ Based on the Bonterms Professional Services Agreement Cover Page, available at https://bonterms.com/forms/professional-services-agreement-v1.2/.
24
+ Made available under CC0 1.0.
@@ -0,0 +1,40 @@
1
+ name: Bonterms Professional Services Agreement
2
+ description: >-
3
+ Cover page for the Bonterms Professional Services Agreement (Version 1.2).
4
+ The standard terms are incorporated by reference from bonterms.com.
5
+ source_url: https://github.com/Bonterms/Professional-Services-Agreement
6
+ version: "1.2"
7
+ license: CC0-1.0
8
+ allow_derivatives: true
9
+ attribution_text: >-
10
+ Based on the Bonterms Professional Services Agreement Cover Page, available at
11
+ https://bonterms.com/forms/professional-services-agreement-v1.2/.
12
+ Made available under CC0 1.0.
13
+ fields:
14
+ - name: customer_name
15
+ type: string
16
+ description: Full legal name of the customer
17
+ required: true
18
+ section: Parties
19
+ - name: provider_name
20
+ type: string
21
+ description: Full legal name of the provider
22
+ required: true
23
+ section: Parties
24
+ - name: effective_date
25
+ type: date
26
+ description: Date the agreement takes effect
27
+ required: true
28
+ section: Terms
29
+ - name: governing_law
30
+ type: string
31
+ description: State or jurisdiction whose laws govern the agreement
32
+ required: true
33
+ default: California
34
+ section: Legal
35
+ - name: courts
36
+ type: string
37
+ description: Courts with jurisdiction over disputes
38
+ required: true
39
+ default: courts located in San Francisco, California
40
+ section: Legal
@@ -0,0 +1,23 @@
1
+ # Common Paper AI Addendum
2
+
3
+ An AI addendum based on [Common Paper's](https://commonpaper.com) standard terms. Adds AI-specific provisions to an existing agreement, covering model training, input/output rights, and AI usage policies.
4
+
5
+ ## Source
6
+
7
+ - **URL**: https://commonpaper.com/standards/ai-addendum/1.0
8
+ - **Version**: 1.0
9
+ - **License**: CC BY 4.0
10
+
11
+ ## Fields
12
+
13
+ | Field | Type | Required | Description |
14
+ |-------|------|----------|-------------|
15
+ | `company_name` | string | yes | Official company name |
16
+ | `agreement_description` | string | yes | Description of the underlying agreement |
17
+ | `ai_policy_reference` | string | no | Reference to AI usage policy |
18
+ | `additional_terms` | string | no | Additional AI-specific terms |
19
+
20
+ ## Attribution
21
+
22
+ Based on the Common Paper AI Addendum, available at https://commonpaper.com.
23
+ Licensed under CC BY 4.0. Copyright Common Paper, Inc.
@@ -0,0 +1,33 @@
1
+ name: Common Paper AI Addendum
2
+ description: >-
3
+ An AI addendum cover page and standard terms, based on Common Paper's standard
4
+ form. Adds AI-specific provisions to an existing agreement, covering model
5
+ training, input/output rights, and AI usage policies.
6
+ source_url: https://commonpaper.com/standards/ai-addendum/1.0
7
+ version: "1.0"
8
+ license: CC-BY-4.0
9
+ allow_derivatives: true
10
+ attribution_text: >-
11
+ Based on the Common Paper AI Addendum, available at
12
+ https://commonpaper.com. Licensed under CC BY 4.0. Copyright Common Paper, Inc.
13
+ fields:
14
+ - name: company_name
15
+ type: string
16
+ description: Official company name
17
+ required: true
18
+ section: Parties
19
+ - name: agreement_description
20
+ type: string
21
+ description: Description of the underlying agreement
22
+ required: true
23
+ section: Terms
24
+ - name: ai_policy_reference
25
+ type: string
26
+ description: Reference to AI usage policy
27
+ required: false
28
+ section: Service
29
+ - name: additional_terms
30
+ type: string
31
+ description: Additional AI-specific terms
32
+ required: false
33
+ section: Legal
@@ -0,0 +1,21 @@
1
+ # Common Paper AI Addendum In-App
2
+
3
+ An in-app AI addendum based on [Common Paper's](https://commonpaper.com) standard terms. A streamlined version of the AI addendum designed to be accepted electronically within an application.
4
+
5
+ ## Source
6
+
7
+ - **URL**: https://commonpaper.com/standards/ai-addendum/1.0
8
+ - **Version**: 1.0
9
+ - **License**: CC BY 4.0
10
+
11
+ ## Fields
12
+
13
+ | Field | Type | Required | Description |
14
+ |-------|------|----------|-------------|
15
+ | `ai_policy_reference` | string | no | Reference to AI usage policy |
16
+ | `additional_terms` | string | no | Additional AI-specific terms |
17
+
18
+ ## Attribution
19
+
20
+ Based on the Common Paper AI Addendum In-App, available at https://commonpaper.com.
21
+ Licensed under CC BY 4.0. Copyright Common Paper, Inc.
@@ -0,0 +1,23 @@
1
+ name: Common Paper AI Addendum In-App
2
+ description: >-
3
+ An in-app AI addendum based on Common Paper's standard form. A streamlined
4
+ version of the AI addendum designed to be accepted electronically within an
5
+ application.
6
+ source_url: https://commonpaper.com/standards/ai-addendum/1.0
7
+ version: "1.0"
8
+ license: CC-BY-4.0
9
+ allow_derivatives: true
10
+ attribution_text: >-
11
+ Based on the Common Paper AI Addendum In-App, available at
12
+ https://commonpaper.com. Licensed under CC BY 4.0. Copyright Common Paper, Inc.
13
+ fields:
14
+ - name: ai_policy_reference
15
+ type: string
16
+ description: Reference to AI usage policy
17
+ required: false
18
+ section: Service
19
+ - name: additional_terms
20
+ type: string
21
+ description: Additional AI-specific terms
22
+ required: false
23
+ section: Legal
@@ -0,0 +1,27 @@
1
+ # Common Paper Amendment
2
+
3
+ An amendment template for modifying existing agreements, based on [Common Paper's](https://commonpaper.com) standard form.
4
+
5
+ ## Source
6
+
7
+ - **URL**: https://commonpaper.com/standards/amendment
8
+ - **Version**: 1.0
9
+ - **License**: CC BY 4.0
10
+
11
+ ## Fields
12
+
13
+ | Field | Type | Required | Description |
14
+ |-------|------|----------|-------------|
15
+ | `company_name` | string | yes | Company name (shown in header) |
16
+ | `party_1` | string | yes | Full name of the first party |
17
+ | `party_2` | string | yes | Full name of the second party |
18
+ | `agreement_name` | string | yes | Name of the agreement being amended |
19
+ | `agreement_date` | string | yes | Date of the original agreement |
20
+ | `amendment_effective_date` | date | yes | Effective date of this amendment |
21
+ | `amendment_topic` | string | yes | Topic or variable being changed |
22
+ | `amendment_details` | string | yes | Details about what is being changed |
23
+
24
+ ## Attribution
25
+
26
+ Based on the Common Paper Amendment, available at https://commonpaper.com.
27
+ Licensed under CC BY 4.0. Copyright Common Paper, Inc.
@@ -0,0 +1,53 @@
1
+ name: Common Paper Amendment
2
+ description: >-
3
+ An amendment template for modifying existing agreements, based on Common
4
+ Paper's standard form. References the original agreement and details the
5
+ specific changes being made.
6
+ source_url: https://commonpaper.com/standards/amendment
7
+ version: "1.0"
8
+ license: CC-BY-4.0
9
+ allow_derivatives: true
10
+ attribution_text: >-
11
+ Based on the Common Paper Amendment, available at https://commonpaper.com.
12
+ Licensed under CC BY 4.0. Copyright Common Paper, Inc.
13
+ fields:
14
+ - name: company_name
15
+ type: string
16
+ description: Company name (shown in header)
17
+ required: true
18
+ section: Parties
19
+ - name: party_1
20
+ type: string
21
+ description: Full name of the first party to the original agreement
22
+ required: true
23
+ section: Parties
24
+ - name: party_2
25
+ type: string
26
+ description: Full name of the second party to the original agreement
27
+ required: true
28
+ section: Parties
29
+ - name: agreement_name
30
+ type: string
31
+ description: Name of the agreement being amended
32
+ required: true
33
+ section: Terms
34
+ - name: agreement_date
35
+ type: string
36
+ description: Date of the original agreement
37
+ required: true
38
+ section: Terms
39
+ - name: amendment_effective_date
40
+ type: date
41
+ description: Effective date of this amendment
42
+ required: true
43
+ section: Terms
44
+ - name: amendment_topic
45
+ type: string
46
+ description: Topic or variable being changed
47
+ required: true
48
+ section: Terms
49
+ - name: amendment_details
50
+ type: string
51
+ description: Details about what is being changed
52
+ required: true
53
+ section: Terms