@open-agreements/open-agreements 0.2.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.
- package/LICENSE +21 -0
- package/README.md +359 -0
- package/bin/open-agreements.js +4 -0
- package/content/external/LICENSE +27 -0
- package/content/external/README.md +38 -0
- package/content/external/yc-safe-discount/README.md +16 -0
- package/content/external/yc-safe-discount/clean.json +4 -0
- package/content/external/yc-safe-discount/metadata.yaml +67 -0
- package/content/external/yc-safe-discount/replacements.json +13 -0
- package/content/external/yc-safe-discount/template.docx +0 -0
- package/content/external/yc-safe-mfn/README.md +16 -0
- package/content/external/yc-safe-mfn/clean.json +4 -0
- package/content/external/yc-safe-mfn/metadata.yaml +64 -0
- package/content/external/yc-safe-mfn/replacements.json +12 -0
- package/content/external/yc-safe-mfn/template.docx +0 -0
- package/content/external/yc-safe-pro-rata-side-letter/README.md +16 -0
- package/content/external/yc-safe-pro-rata-side-letter/clean.json +4 -0
- package/content/external/yc-safe-pro-rata-side-letter/metadata.yaml +49 -0
- package/content/external/yc-safe-pro-rata-side-letter/replacements.json +9 -0
- package/content/external/yc-safe-pro-rata-side-letter/template.docx +0 -0
- package/content/external/yc-safe-valuation-cap/README.md +16 -0
- package/content/external/yc-safe-valuation-cap/clean.json +4 -0
- package/content/external/yc-safe-valuation-cap/metadata.yaml +64 -0
- package/content/external/yc-safe-valuation-cap/replacements.json +12 -0
- package/content/external/yc-safe-valuation-cap/template.docx +0 -0
- package/content/recipes/nvca-certificate-of-incorporation/clean.json +8 -0
- package/content/recipes/nvca-certificate-of-incorporation/metadata.yaml +43 -0
- package/content/recipes/nvca-certificate-of-incorporation/replacements.json +9 -0
- package/content/recipes/nvca-indemnification-agreement/clean.json +17 -0
- package/content/recipes/nvca-indemnification-agreement/metadata.yaml +79 -0
- package/content/recipes/nvca-indemnification-agreement/replacements.json +17 -0
- package/content/recipes/nvca-investors-rights-agreement/clean.json +12 -0
- package/content/recipes/nvca-investors-rights-agreement/metadata.yaml +71 -0
- package/content/recipes/nvca-investors-rights-agreement/replacements.json +18 -0
- package/content/recipes/nvca-management-rights-letter/clean.json +7 -0
- package/content/recipes/nvca-management-rights-letter/metadata.yaml +47 -0
- package/content/recipes/nvca-management-rights-letter/replacements.json +11 -0
- package/content/recipes/nvca-rofr-co-sale-agreement/clean.json +7 -0
- package/content/recipes/nvca-rofr-co-sale-agreement/metadata.yaml +76 -0
- package/content/recipes/nvca-rofr-co-sale-agreement/replacements.json +17 -0
- package/content/recipes/nvca-stock-purchase-agreement/clean.json +13 -0
- package/content/recipes/nvca-stock-purchase-agreement/computed.json +103 -0
- package/content/recipes/nvca-stock-purchase-agreement/metadata.yaml +138 -0
- package/content/recipes/nvca-stock-purchase-agreement/normalize.json +83 -0
- package/content/recipes/nvca-stock-purchase-agreement/replacements.json +41 -0
- package/content/recipes/nvca-voting-agreement/README.md +53 -0
- package/content/recipes/nvca-voting-agreement/clean.json +7 -0
- package/content/recipes/nvca-voting-agreement/metadata.yaml +66 -0
- package/content/recipes/nvca-voting-agreement/replacements.json +18 -0
- package/content/templates/bonterms-mutual-nda/README.md +27 -0
- package/content/templates/bonterms-mutual-nda/metadata.yaml +58 -0
- package/content/templates/bonterms-mutual-nda/source.json +18 -0
- package/content/templates/bonterms-mutual-nda/template.docx +0 -0
- package/content/templates/bonterms-professional-services-agreement/README.md +24 -0
- package/content/templates/bonterms-professional-services-agreement/metadata.yaml +45 -0
- package/content/templates/bonterms-professional-services-agreement/selections.json +12 -0
- package/content/templates/bonterms-professional-services-agreement/source.json +18 -0
- package/content/templates/bonterms-professional-services-agreement/template.docx +0 -0
- package/content/templates/closing-checklist/metadata.yaml +39 -0
- package/content/templates/closing-checklist/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum/README.md +23 -0
- package/content/templates/common-paper-ai-addendum/metadata.yaml +31 -0
- package/content/templates/common-paper-ai-addendum/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum-in-app/README.md +21 -0
- package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +21 -0
- package/content/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
- package/content/templates/common-paper-amendment/README.md +27 -0
- package/content/templates/common-paper-amendment/metadata.yaml +53 -0
- package/content/templates/common-paper-amendment/template.docx +0 -0
- package/content/templates/common-paper-business-associate-agreement/README.md +29 -0
- package/content/templates/common-paper-business-associate-agreement/metadata.yaml +56 -0
- package/content/templates/common-paper-business-associate-agreement/replacements.json +3 -0
- package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
- package/content/templates/common-paper-cloud-service-agreement/README.md +32 -0
- package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +354 -0
- package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
- package/content/templates/common-paper-csa-click-through/README.md +33 -0
- package/content/templates/common-paper-csa-click-through/metadata.yaml +73 -0
- package/content/templates/common-paper-csa-click-through/template.docx +0 -0
- package/content/templates/common-paper-csa-with-ai/README.md +49 -0
- package/content/templates/common-paper-csa-with-ai/metadata.yaml +143 -0
- package/content/templates/common-paper-csa-with-ai/replacements.json +7 -0
- package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
- package/content/templates/common-paper-csa-with-sla/README.md +53 -0
- package/content/templates/common-paper-csa-with-sla/metadata.yaml +159 -0
- package/content/templates/common-paper-csa-with-sla/replacements.json +7 -0
- package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
- package/content/templates/common-paper-csa-without-sla/README.md +47 -0
- package/content/templates/common-paper-csa-without-sla/metadata.yaml +135 -0
- package/content/templates/common-paper-csa-without-sla/replacements.json +7 -0
- package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
- package/content/templates/common-paper-data-processing-agreement/README.md +46 -0
- package/content/templates/common-paper-data-processing-agreement/metadata.yaml +130 -0
- package/content/templates/common-paper-data-processing-agreement/replacements.json +3 -0
- package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
- package/content/templates/common-paper-design-partner-agreement/README.md +29 -0
- package/content/templates/common-paper-design-partner-agreement/metadata.yaml +59 -0
- package/content/templates/common-paper-design-partner-agreement/replacements.json +4 -0
- package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
- package/content/templates/common-paper-independent-contractor-agreement/README.md +27 -0
- package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +55 -0
- package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
- package/content/templates/common-paper-letter-of-intent/README.md +25 -0
- package/content/templates/common-paper-letter-of-intent/metadata.yaml +42 -0
- package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
- package/content/templates/common-paper-mutual-nda/README.md +29 -0
- package/content/templates/common-paper-mutual-nda/metadata.yaml +59 -0
- package/content/templates/common-paper-mutual-nda/selections.json +38 -0
- package/content/templates/common-paper-mutual-nda/template.docx +0 -0
- package/content/templates/common-paper-one-way-nda/README.md +27 -0
- package/content/templates/common-paper-one-way-nda/metadata.yaml +59 -0
- package/content/templates/common-paper-one-way-nda/template.docx +0 -0
- package/content/templates/common-paper-order-form/README.md +36 -0
- package/content/templates/common-paper-order-form/metadata.yaml +87 -0
- package/content/templates/common-paper-order-form/replacements.json +5 -0
- package/content/templates/common-paper-order-form/template.docx +0 -0
- package/content/templates/common-paper-order-form-with-sla/README.md +42 -0
- package/content/templates/common-paper-order-form-with-sla/metadata.yaml +111 -0
- package/content/templates/common-paper-order-form-with-sla/replacements.json +5 -0
- package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
- package/content/templates/common-paper-partnership-agreement/README.md +34 -0
- package/content/templates/common-paper-partnership-agreement/metadata.yaml +78 -0
- package/content/templates/common-paper-partnership-agreement/replacements.json +7 -0
- package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
- package/content/templates/common-paper-pilot-agreement/README.md +34 -0
- package/content/templates/common-paper-pilot-agreement/metadata.yaml +100 -0
- package/content/templates/common-paper-pilot-agreement/replacements.json +4 -0
- package/content/templates/common-paper-pilot-agreement/selections.json +37 -0
- package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
- package/content/templates/common-paper-professional-services-agreement/README.md +44 -0
- package/content/templates/common-paper-professional-services-agreement/metadata.yaml +124 -0
- package/content/templates/common-paper-professional-services-agreement/replacements.json +8 -0
- package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
- package/content/templates/common-paper-software-license-agreement/README.md +18 -0
- package/content/templates/common-paper-software-license-agreement/metadata.yaml +13 -0
- package/content/templates/common-paper-software-license-agreement/template.docx +0 -0
- package/content/templates/common-paper-statement-of-work/README.md +32 -0
- package/content/templates/common-paper-statement-of-work/metadata.yaml +71 -0
- package/content/templates/common-paper-statement-of-work/replacements.json +3 -0
- package/content/templates/common-paper-statement-of-work/template.docx +0 -0
- package/content/templates/common-paper-term-sheet/README.md +22 -0
- package/content/templates/common-paper-term-sheet/metadata.yaml +28 -0
- package/content/templates/common-paper-term-sheet/template.docx +0 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/README.md +31 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +71 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.docx +0 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.md +80 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/README.md +30 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +60 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.docx +0 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.md +51 -0
- package/content/templates/openagreements-employment-offer-letter/README.md +33 -0
- package/content/templates/openagreements-employment-offer-letter/metadata.yaml +75 -0
- package/content/templates/openagreements-employment-offer-letter/template.docx +0 -0
- package/content/templates/openagreements-employment-offer-letter/template.md +90 -0
- package/content/templates/working-group-list/metadata.yaml +22 -0
- package/content/templates/working-group-list/template.docx +0 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +199 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/checklist.d.ts +22 -0
- package/dist/commands/checklist.d.ts.map +1 -0
- package/dist/commands/checklist.js +222 -0
- package/dist/commands/checklist.js.map +1 -0
- package/dist/commands/fill.d.ts +18 -0
- package/dist/commands/fill.d.ts.map +1 -0
- package/dist/commands/fill.js +119 -0
- package/dist/commands/fill.js.map +1 -0
- package/dist/commands/list.d.ts +7 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +247 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/recipe.d.ts +24 -0
- package/dist/commands/recipe.d.ts.map +1 -0
- package/dist/commands/recipe.js +96 -0
- package/dist/commands/recipe.js.map +1 -0
- package/dist/commands/scan.d.ts +28 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +138 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/validate.d.ts +6 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +158 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/core/checklist/index.d.ts +38 -0
- package/dist/core/checklist/index.d.ts.map +1 -0
- package/dist/core/checklist/index.js +229 -0
- package/dist/core/checklist/index.js.map +1 -0
- package/dist/core/checklist/patch-apply.d.ts +65 -0
- package/dist/core/checklist/patch-apply.d.ts.map +1 -0
- package/dist/core/checklist/patch-apply.js +274 -0
- package/dist/core/checklist/patch-apply.js.map +1 -0
- package/dist/core/checklist/patch-schemas.d.ts +86 -0
- package/dist/core/checklist/patch-schemas.d.ts.map +1 -0
- package/dist/core/checklist/patch-schemas.js +89 -0
- package/dist/core/checklist/patch-schemas.js.map +1 -0
- package/dist/core/checklist/patch-validator.d.ts +76 -0
- package/dist/core/checklist/patch-validator.d.ts.map +1 -0
- package/dist/core/checklist/patch-validator.js +404 -0
- package/dist/core/checklist/patch-validator.js.map +1 -0
- package/dist/core/checklist/schemas.d.ts +270 -0
- package/dist/core/checklist/schemas.d.ts.map +1 -0
- package/dist/core/checklist/schemas.js +229 -0
- package/dist/core/checklist/schemas.js.map +1 -0
- package/dist/core/checklist/test-utils.d.ts +7 -0
- package/dist/core/checklist/test-utils.d.ts.map +1 -0
- package/dist/core/checklist/test-utils.js +13 -0
- package/dist/core/checklist/test-utils.js.map +1 -0
- package/dist/core/command-generation/adapters/claude.d.ts +11 -0
- package/dist/core/command-generation/adapters/claude.d.ts.map +1 -0
- package/dist/core/command-generation/adapters/claude.js +91 -0
- package/dist/core/command-generation/adapters/claude.js.map +1 -0
- package/dist/core/command-generation/types.d.ts +14 -0
- package/dist/core/command-generation/types.d.ts.map +1 -0
- package/dist/core/command-generation/types.js +2 -0
- package/dist/core/command-generation/types.js.map +1 -0
- package/dist/core/employment/jurisdiction-rules.d.ts +20 -0
- package/dist/core/employment/jurisdiction-rules.d.ts.map +1 -0
- package/dist/core/employment/jurisdiction-rules.js +57 -0
- package/dist/core/employment/jurisdiction-rules.js.map +1 -0
- package/dist/core/employment/memo.d.ts +57 -0
- package/dist/core/employment/memo.d.ts.map +1 -0
- package/dist/core/employment/memo.js +589 -0
- package/dist/core/employment/memo.js.map +1 -0
- package/dist/core/engine.d.ts +13 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +182 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/external/index.d.ts +8 -0
- package/dist/core/external/index.d.ts.map +1 -0
- package/dist/core/external/index.js +50 -0
- package/dist/core/external/index.js.map +1 -0
- package/dist/core/external/types.d.ts +18 -0
- package/dist/core/external/types.d.ts.map +1 -0
- package/dist/core/external/types.js +2 -0
- package/dist/core/external/types.js.map +1 -0
- package/dist/core/fill-pipeline.d.ts +64 -0
- package/dist/core/fill-pipeline.d.ts.map +1 -0
- package/dist/core/fill-pipeline.js +350 -0
- package/dist/core/fill-pipeline.js.map +1 -0
- package/dist/core/fill-utils.d.ts +39 -0
- package/dist/core/fill-utils.d.ts.map +1 -0
- package/dist/core/fill-utils.js +127 -0
- package/dist/core/fill-utils.js.map +1 -0
- package/dist/core/metadata.d.ts +194 -0
- package/dist/core/metadata.d.ts.map +1 -0
- package/dist/core/metadata.js +197 -0
- package/dist/core/metadata.js.map +1 -0
- package/dist/core/recipe/bracket-normalizer.d.ts +46 -0
- package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -0
- package/dist/core/recipe/bracket-normalizer.js +354 -0
- package/dist/core/recipe/bracket-normalizer.js.map +1 -0
- package/dist/core/recipe/cleaner.d.ts +27 -0
- package/dist/core/recipe/cleaner.d.ts.map +1 -0
- package/dist/core/recipe/cleaner.js +345 -0
- package/dist/core/recipe/cleaner.js.map +1 -0
- package/dist/core/recipe/computed.d.ts +136 -0
- package/dist/core/recipe/computed.d.ts.map +1 -0
- package/dist/core/recipe/computed.js +225 -0
- package/dist/core/recipe/computed.js.map +1 -0
- package/dist/core/recipe/downloader.d.ts +8 -0
- package/dist/core/recipe/downloader.d.ts.map +1 -0
- package/dist/core/recipe/downloader.js +58 -0
- package/dist/core/recipe/downloader.js.map +1 -0
- package/dist/core/recipe/index.d.ts +17 -0
- package/dist/core/recipe/index.d.ts.map +1 -0
- package/dist/core/recipe/index.js +90 -0
- package/dist/core/recipe/index.js.map +1 -0
- package/dist/core/recipe/ooxml-parts.d.ts +21 -0
- package/dist/core/recipe/ooxml-parts.d.ts.map +1 -0
- package/dist/core/recipe/ooxml-parts.js +33 -0
- package/dist/core/recipe/ooxml-parts.js.map +1 -0
- package/dist/core/recipe/patcher.d.ts +34 -0
- package/dist/core/recipe/patcher.d.ts.map +1 -0
- package/dist/core/recipe/patcher.js +423 -0
- package/dist/core/recipe/patcher.js.map +1 -0
- package/dist/core/recipe/replacement-keys.d.ts +33 -0
- package/dist/core/recipe/replacement-keys.d.ts.map +1 -0
- package/dist/core/recipe/replacement-keys.js +53 -0
- package/dist/core/recipe/replacement-keys.js.map +1 -0
- package/dist/core/recipe/source-drift.d.ts +33 -0
- package/dist/core/recipe/source-drift.d.ts.map +1 -0
- package/dist/core/recipe/source-drift.js +113 -0
- package/dist/core/recipe/source-drift.js.map +1 -0
- package/dist/core/recipe/types.d.ts +33 -0
- package/dist/core/recipe/types.d.ts.map +1 -0
- package/dist/core/recipe/types.js +2 -0
- package/dist/core/recipe/types.js.map +1 -0
- package/dist/core/recipe/verifier.d.ts +24 -0
- package/dist/core/recipe/verifier.d.ts.map +1 -0
- package/dist/core/recipe/verifier.js +158 -0
- package/dist/core/recipe/verifier.js.map +1 -0
- package/dist/core/selector.d.ts +41 -0
- package/dist/core/selector.d.ts.map +1 -0
- package/dist/core/selector.js +323 -0
- package/dist/core/selector.js.map +1 -0
- package/dist/core/unified-pipeline.d.ts +53 -0
- package/dist/core/unified-pipeline.d.ts.map +1 -0
- package/dist/core/unified-pipeline.js +107 -0
- package/dist/core/unified-pipeline.js.map +1 -0
- package/dist/core/validation/external.d.ts +16 -0
- package/dist/core/validation/external.d.ts.map +1 -0
- package/dist/core/validation/external.js +114 -0
- package/dist/core/validation/external.js.map +1 -0
- package/dist/core/validation/license.d.ts +15 -0
- package/dist/core/validation/license.d.ts.map +1 -0
- package/dist/core/validation/license.js +30 -0
- package/dist/core/validation/license.js.map +1 -0
- package/dist/core/validation/output.d.ts +12 -0
- package/dist/core/validation/output.d.ts.map +1 -0
- package/dist/core/validation/output.js +47 -0
- package/dist/core/validation/output.js.map +1 -0
- package/dist/core/validation/recipe.d.ts +19 -0
- package/dist/core/validation/recipe.d.ts.map +1 -0
- package/dist/core/validation/recipe.js +159 -0
- package/dist/core/validation/recipe.js.map +1 -0
- package/dist/core/validation/scan-metadata.d.ts +21 -0
- package/dist/core/validation/scan-metadata.d.ts.map +1 -0
- package/dist/core/validation/scan-metadata.js +70 -0
- package/dist/core/validation/scan-metadata.js.map +1 -0
- package/dist/core/validation/template.d.ts +11 -0
- package/dist/core/validation/template.d.ts.map +1 -0
- package/dist/core/validation/template.js +248 -0
- package/dist/core/validation/template.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/paths.d.ts +43 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +149 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +148 -0
- package/skills/cloud-service-agreement/CONNECTORS.md +19 -0
- package/skills/cloud-service-agreement/SKILL.md +172 -0
- package/skills/data-privacy-agreement/CONNECTORS.md +19 -0
- package/skills/data-privacy-agreement/SKILL.md +158 -0
- package/skills/delaware-franchise-tax/CONNECTORS.md +16 -0
- package/skills/delaware-franchise-tax/SKILL.md +206 -0
- package/skills/delaware-franchise-tax/reference/ecorp-portal-playwright-notes.md +136 -0
- package/skills/delaware-franchise-tax/reference/faq.md +101 -0
- package/skills/delaware-franchise-tax/reference/filing-instructions.md +111 -0
- package/skills/delaware-franchise-tax/reference/tax-calculation.md +167 -0
- package/skills/employment-contract/CONNECTORS.md +19 -0
- package/skills/employment-contract/SKILL.md +157 -0
- package/skills/nda/CONNECTORS.md +19 -0
- package/skills/nda/SKILL.md +153 -0
- package/skills/open-agreements/CONNECTORS.md +19 -0
- package/skills/open-agreements/SKILL.md +182 -0
- package/skills/safe/CONNECTORS.md +19 -0
- package/skills/safe/SKILL.md +161 -0
- package/skills/services-agreement/CONNECTORS.md +19 -0
- package/skills/services-agreement/SKILL.md +156 -0
- package/skills/unit-test-philosophy/SKILL.md +113 -0
- package/skills/unit-test-philosophy/references/allure-test-spec-writing-guide.md +164 -0
- package/skills/venture-financing/CONNECTORS.md +19 -0
- package/skills/venture-financing/SKILL.md +169 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 UseJunior
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# OpenAgreements
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/open-agreements)
|
|
4
|
+
[](https://npmjs.org/package/open-agreements)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://skills.sh)
|
|
7
|
+
[](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml)
|
|
8
|
+
[](https://openagreements.openstatus.dev/)
|
|
9
|
+
[](https://app.codecov.io/gh/open-agreements/open-agreements)
|
|
10
|
+
[](https://github.com/open-agreements/open-agreements/stargazers)
|
|
11
|
+
[](https://vitest.dev/)
|
|
12
|
+
[](./scripts/validate_openspec_coverage.mjs)
|
|
13
|
+
[](https://socket.dev/npm/package/open-agreements)
|
|
14
|
+
[](https://packagephobia.com/result?p=open-agreements)
|
|
15
|
+
|
|
16
|
+
<!-- TODO: Add OpenSSF Scorecard badge once repo is indexed at securityscorecards.dev -->
|
|
17
|
+
<!-- TODO: Add OpenSSF Best Practices badge after registration at bestpractices.dev -->
|
|
18
|
+
<!-- TODO: Re-evaluate Snyk badge — Advisor migrated to security.snyk.io (July 2024) -->
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<img src="docs/assets/demo-fill-nda.gif" alt="Fill a Mutual NDA in Claude Code — prompt, answer questions, get a signed-ready DOCX" width="720">
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
> *Demo: Claude fills a Common Paper Mutual NDA in under 2 minutes. Sped up for brevity.*
|
|
25
|
+
|
|
26
|
+
Fill standard legal agreement templates and produce signable DOCX files. Templates cover NDAs, cloud terms, employment docs, contractor agreements, SAFEs, and NVCA financing documents.
|
|
27
|
+
|
|
28
|
+
Built by the team behind [UseJunior.com](https://usejunior.com) — in production at Am Law 100 firms.
|
|
29
|
+
|
|
30
|
+
## Quality and Trust Signals
|
|
31
|
+
|
|
32
|
+
- CI runs on pull requests and pushes to `main`.
|
|
33
|
+
- Live service health is published via OpenStatus at `openagreements.openstatus.dev`.
|
|
34
|
+
- Coverage is published to Codecov with repository-defined patch/project gates in `codecov.yml`.
|
|
35
|
+
- The active JS test framework is Vitest, with JUnit test results uploaded for Codecov test analytics.
|
|
36
|
+
- OpenSpec scenario traceability is enforced via `npm run check:spec-coverage`. For a local matrix export, run `npm run check:spec-coverage -- --write-matrix integration-tests/OPENSPEC_TRACEABILITY.md`.
|
|
37
|
+
- Recipe source drift canary (`npm run check:source-drift`) verifies expected source hash plus structural replacement/normalize anchors.
|
|
38
|
+
- Assumption-level regressions are tracked in `docs/assumptions.md` and validated via targeted regression tests + CI gates.
|
|
39
|
+
- LibreOffice-powered DOCX visual rendering uses a pinned build config on macOS (`config/libreoffice-headless.json`); run `npm run check:libreoffice` before visual Allure evidence tests.
|
|
40
|
+
- Maintainer: [Steven Obiajulu](https://www.linkedin.com/in/steven-obiajulu/) (MIT-trained mechanical engineer; Harvard Law trained lawyer).
|
|
41
|
+
|
|
42
|
+
## How It Works
|
|
43
|
+
|
|
44
|
+
1. Step 1: Choose a template (36 standard agreements)
|
|
45
|
+
2. Step 2: Fill in your details (interactive prompts or MCP)
|
|
46
|
+
3. Step 3: Get a professionally formatted DOCX
|
|
47
|
+
|
|
48
|
+
OpenAgreements supports two execution modes with different trust boundaries:
|
|
49
|
+
|
|
50
|
+
- Hosted remote MCP connector (`https://openagreements.ai/api/mcp`) for fast setup in Claude.
|
|
51
|
+
- Fully local package execution (`npx`, global install, or local stdio MCP package) for machine-local workflows.
|
|
52
|
+
|
|
53
|
+
There is no global default mode recommendation. Choose based on document sensitivity, internal policy, and workflow speed needs. See `docs/trust-checklist.md` for a 60-second data-flow summary.
|
|
54
|
+
|
|
55
|
+
### Quick Decision
|
|
56
|
+
|
|
57
|
+
- If your document is sensitive, use fully local package execution.
|
|
58
|
+
- If you prioritize convenience, use the hosted remote MCP connector.
|
|
59
|
+
|
|
60
|
+
## Use with Claude Code
|
|
61
|
+
|
|
62
|
+
OpenAgreements works as a [Claude Code plugin](https://docs.anthropic.com/en/docs/claude-code/plugins) and [Agent Skill](https://agentskills.io). No pre-installation required — Claude downloads and runs the CLI on demand via `npx`.
|
|
63
|
+
|
|
64
|
+
### Option 1: Agent Skill (recommended)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx skills add open-agreements/open-agreements
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Then ask Claude to draft an agreement:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
> Draft an NDA between Acme Corp and Beta Inc
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Claude discovers available templates, interviews you for field values, and renders a signed-ready DOCX.
|
|
77
|
+
|
|
78
|
+
### Option 2: Direct with Claude Code
|
|
79
|
+
|
|
80
|
+
If you have Node.js >= 20, just ask Claude:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
> Fill the Common Paper mutual NDA for my company
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Claude runs `npx -y open-agreements@latest list --json` to discover templates, then `npx -y open-agreements@latest fill <template>` to render the output. Zero install.
|
|
87
|
+
|
|
88
|
+
### Option 3: CLI
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Install globally
|
|
92
|
+
npm install -g open-agreements
|
|
93
|
+
|
|
94
|
+
# List available templates
|
|
95
|
+
open-agreements list
|
|
96
|
+
|
|
97
|
+
# Fill a template
|
|
98
|
+
open-agreements fill common-paper-mutual-nda -d values.json -o my-nda.docx
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### What Happens
|
|
102
|
+
|
|
103
|
+
1. Claude runs `list --json` to discover available templates and their fields
|
|
104
|
+
2. Claude interviews you for field values (grouped by section, up to 4 questions per round)
|
|
105
|
+
3. Claude runs `fill <template>` to render a DOCX preserving all original formatting
|
|
106
|
+
4. You review and sign the output document
|
|
107
|
+
|
|
108
|
+
## Use with Cursor
|
|
109
|
+
|
|
110
|
+
This repository includes a Cursor plugin manifest with MCP wiring:
|
|
111
|
+
|
|
112
|
+
- Plugin manifest: `.cursor-plugin/plugin.json`
|
|
113
|
+
- MCP config: `mcp.json`
|
|
114
|
+
- Skill: `skills/open-agreements/SKILL.md`
|
|
115
|
+
|
|
116
|
+
The default MCP setup in `mcp.json` includes:
|
|
117
|
+
|
|
118
|
+
- Hosted OpenAgreements MCP connector (`https://openagreements.ai/api/mcp`)
|
|
119
|
+
- Local workspace MCP server (`npx -y @open-agreements/contracts-workspace-mcp`)
|
|
120
|
+
- Local template drafting MCP server (`npx -y @open-agreements/contract-templates-mcp`)
|
|
121
|
+
|
|
122
|
+
To publish this plugin in Cursor Marketplace, submit this repository at:
|
|
123
|
+
|
|
124
|
+
- https://cursor.com/marketplace/publish
|
|
125
|
+
|
|
126
|
+
## Templates
|
|
127
|
+
|
|
128
|
+
28 templates across three tiers. Run `open-agreements list` for the full inventory.
|
|
129
|
+
|
|
130
|
+
| Tier | Count | Source | How It Works |
|
|
131
|
+
|------|-------|--------|--------------|
|
|
132
|
+
| Internal templates | 17 | [Common Paper](https://commonpaper.com), [Bonterms](https://bonterms.com), OpenAgreements | Shipped in package, CC BY 4.0 |
|
|
133
|
+
| External templates | 4 | [Y Combinator](https://www.ycombinator.com/documents) | Vendored unchanged, CC BY-ND 4.0 |
|
|
134
|
+
| Recipes | 7 | [NVCA](https://nvca.org/model-legal-documents/) | Downloaded on demand (not redistributable) |
|
|
135
|
+
|
|
136
|
+
**Internal templates** (NDAs, cloud terms, employment forms, contractor agreements, etc.) are CC BY 4.0 — we ship the DOCX with `{tag}` placeholders.
|
|
137
|
+
|
|
138
|
+
**External templates** (YC SAFEs) are CC BY-ND 4.0 — we vendor the original unchanged. The filled output is a transient derivative on your machine.
|
|
139
|
+
|
|
140
|
+
**Recipes** (NVCA financing documents) are freely downloadable but not redistributable — we ship only transformation instructions and download the source DOCX from nvca.org at runtime.
|
|
141
|
+
|
|
142
|
+
### Guidance Extraction
|
|
143
|
+
|
|
144
|
+
Source documents contain expert commentary — footnotes, drafting notes, `[Comment: ...]` blocks — written by domain specialists (e.g., securities lawyers). The recipe cleaner removes this content to produce a fillable document, but can also extract it as structured JSON:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
open-agreements recipe clean source.docx -o cleaned.docx \
|
|
148
|
+
--recipe nvca-indemnification-agreement \
|
|
149
|
+
--extract-guidance guidance.json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
This produces a `guidance.json` with every removed footnote, comment, and drafting note tagged by source type and document position. The guidance is a local-only artifact (not committed or shipped) that AI agents or human authors can reference while filling the form. See [Adding Recipes — Guidance Extraction](docs/adding-recipes.md#guidance-extraction) for format details.
|
|
153
|
+
|
|
154
|
+
**Why programmatic extraction?** The source document is the single source of truth. Re-running extraction after a publisher update produces fresh guidance with zero manual effort, preserves the exact language of domain experts, and captures everything — an AI can summarize on the fly, but cannot recover discarded content.
|
|
155
|
+
|
|
156
|
+
Each template is a self-contained directory:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
content/templates/<name>/
|
|
160
|
+
├── template.docx # DOCX with {tag} placeholders
|
|
161
|
+
├── metadata.yaml # Fields, license, source, attribution
|
|
162
|
+
└── README.md # Template-specific documentation
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## CLI Commands
|
|
166
|
+
|
|
167
|
+
### `fill <template>`
|
|
168
|
+
|
|
169
|
+
Render a filled DOCX from a template.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Using a JSON data file
|
|
173
|
+
open-agreements fill common-paper-mutual-nda -d data.json -o output.docx
|
|
174
|
+
|
|
175
|
+
# Using inline --set flags
|
|
176
|
+
open-agreements fill common-paper-mutual-nda --set party_1_name="Acme Corp" --set governing_law="Delaware"
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### `validate [template]`
|
|
180
|
+
|
|
181
|
+
Run the validation pipeline on one or all templates.
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
open-agreements validate # All templates
|
|
185
|
+
open-agreements validate common-paper-mutual-nda # One template
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### `list`
|
|
189
|
+
|
|
190
|
+
Show available templates with license info and field counts.
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
open-agreements list
|
|
194
|
+
|
|
195
|
+
# Machine-readable JSON output (for agent skills and automation)
|
|
196
|
+
open-agreements list --json
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Contracts Workspace CLI (Separate Package)
|
|
200
|
+
|
|
201
|
+
OpenAgreements now includes a sibling package for repository/workspace operations:
|
|
202
|
+
|
|
203
|
+
- Package: `@open-agreements/contracts-workspace`
|
|
204
|
+
- Binary: `open-agreements-workspace`
|
|
205
|
+
- Docs: `docs/contracts-workspace.md`
|
|
206
|
+
|
|
207
|
+
This package is intentionally separate from `open-agreements` so teams can adopt:
|
|
208
|
+
|
|
209
|
+
- template filling only
|
|
210
|
+
- workspace management only
|
|
211
|
+
- or both together
|
|
212
|
+
|
|
213
|
+
Core workspace features:
|
|
214
|
+
|
|
215
|
+
- topic-first `init` planning (minimal suggested structure with top-level domains)
|
|
216
|
+
- forms catalog with URL + SHA-256 validation
|
|
217
|
+
- YAML status indexing and linting with filename-driven `_executed` status
|
|
218
|
+
|
|
219
|
+
The v1 model is filesystem-only and works in locally synced cloud-drive folders (for example, Google Drive sync). No Drive API/OAuth integration is required.
|
|
220
|
+
|
|
221
|
+
## Local MCP for Workspace Demo
|
|
222
|
+
|
|
223
|
+
For local connector demos, there is a local stdio MCP package:
|
|
224
|
+
|
|
225
|
+
- Package: `@open-agreements/contracts-workspace-mcp`
|
|
226
|
+
- Binary: `open-agreements-workspace-mcp`
|
|
227
|
+
- Docs: `docs/contracts-workspace.md`
|
|
228
|
+
|
|
229
|
+
Quick start:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
npm run build:workspace-mcp
|
|
233
|
+
node packages/contracts-workspace-mcp/bin/open-agreements-workspace-mcp.js
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Local MCP for Template Drafting
|
|
237
|
+
|
|
238
|
+
For local Gemini/Cursor template drafting flows, use:
|
|
239
|
+
|
|
240
|
+
- Package: `@open-agreements/contract-templates-mcp`
|
|
241
|
+
- Binary: `open-agreements-contract-templates-mcp`
|
|
242
|
+
|
|
243
|
+
Quick start:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
npm run build:contract-templates-mcp
|
|
247
|
+
node packages/contract-templates-mcp/bin/open-agreements-contract-templates-mcp.js
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Website (Vercel)
|
|
251
|
+
|
|
252
|
+
A static marketing site is generated from `site/` with Eleventy.
|
|
253
|
+
|
|
254
|
+
- Entry points: `site/index.njk`, `site/templates.njk`, `site/template-detail.njk`
|
|
255
|
+
- Styles: `site/styles.css`
|
|
256
|
+
- Demo media: `site/assets/demo-fill-nda.gif`
|
|
257
|
+
- Deployment config: `vercel.json`
|
|
258
|
+
- Discovery outputs (generated during `npm run build:site`): `_site/llms.txt`, `_site/llms-full.txt`, `_site/sitemap.xml`, `_site/robots.txt`
|
|
259
|
+
|
|
260
|
+
Local preview:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
npm run build:site
|
|
264
|
+
python3 -m http.server 8080 --directory _site
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Then open `http://localhost:8080`.
|
|
268
|
+
|
|
269
|
+
Vercel deploy notes:
|
|
270
|
+
|
|
271
|
+
- Import this repository in Vercel
|
|
272
|
+
- Keep project root as repo root
|
|
273
|
+
- The included `vercel.json` deploys `_site/` as static output
|
|
274
|
+
|
|
275
|
+
## Optional Content Roots (Future-Proofing)
|
|
276
|
+
|
|
277
|
+
To support logical unbundling as form libraries grow, `open-agreements` can load content from additional roots via:
|
|
278
|
+
|
|
279
|
+
- env var: `OPEN_AGREEMENTS_CONTENT_ROOTS`
|
|
280
|
+
- format: path-delimited list of absolute/relative directories (for example, `dirA:dirB` on macOS/Linux)
|
|
281
|
+
- expected structure under each root: `templates/`, `external/`, and/or `recipes/` (or nested under `content/`)
|
|
282
|
+
|
|
283
|
+
Lookup precedence is:
|
|
284
|
+
|
|
285
|
+
1. roots in `OPEN_AGREEMENTS_CONTENT_ROOTS` (in listed order)
|
|
286
|
+
2. bundled package content (default fallback)
|
|
287
|
+
|
|
288
|
+
This keeps default installs simple while allowing advanced users to move large content libraries outside the core package.
|
|
289
|
+
|
|
290
|
+
## Contributing
|
|
291
|
+
|
|
292
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add templates, recipes, and other improvements.
|
|
293
|
+
|
|
294
|
+
- [Adding templates](docs/adding-templates.md) (CC BY 4.0 / CC0 sources)
|
|
295
|
+
- [Adding recipes](docs/adding-recipes.md) (non-redistributable sources)
|
|
296
|
+
- [Employment source policy](docs/employment-source-policy.md) (trust and terms classifications)
|
|
297
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md) (community expectations and enforcement)
|
|
298
|
+
|
|
299
|
+
## Releasing
|
|
300
|
+
|
|
301
|
+
Releases are automated through GitHub Actions using npm trusted publishing (OIDC) with provenance enabled.
|
|
302
|
+
|
|
303
|
+
1. Update versions in root package + publishable MCP packages.
|
|
304
|
+
2. Push commit + tag with `git push origin main --tags`
|
|
305
|
+
3. Run the local Gemini extension gate (copy/symlink into `~/.gemini/extensions/open-agreements` and verify both local MCP servers start/respond).
|
|
306
|
+
4. The `Release` workflow publishes from the tag after running build, validation, tests, isolated runtime smoke, and package checks.
|
|
307
|
+
|
|
308
|
+
Workflow guardrails:
|
|
309
|
+
|
|
310
|
+
- tag must match root + publishable package versions
|
|
311
|
+
- release commit must be contained in `origin/main`
|
|
312
|
+
- publish fails if any target npm version already exists
|
|
313
|
+
|
|
314
|
+
## Architecture
|
|
315
|
+
|
|
316
|
+
- **Language**: TypeScript
|
|
317
|
+
- **DOCX Engine**: [docx-templates](https://www.npmjs.com/package/docx-templates) (MIT)
|
|
318
|
+
- **CLI**: [Commander.js](https://www.npmjs.com/package/commander)
|
|
319
|
+
- **Validation**: [Zod](https://www.npmjs.com/package/zod) schemas
|
|
320
|
+
- **Skill Pattern**: Agent-agnostic `ToolCommandAdapter` interface
|
|
321
|
+
|
|
322
|
+
```
|
|
323
|
+
content/ # All content directories
|
|
324
|
+
├── templates/ # Internal templates (CC BY 4.0)
|
|
325
|
+
├── external/ # External templates (CC BY-ND 4.0)
|
|
326
|
+
└── recipes/ # Recipes (downloaded at runtime)
|
|
327
|
+
|
|
328
|
+
src/ # TypeScript source + collocated unit tests
|
|
329
|
+
├── cli/ # Commander.js CLI
|
|
330
|
+
├── commands/ # fill, validate, list, recipe, scan
|
|
331
|
+
├── core/
|
|
332
|
+
│ ├── engine.ts # docx-templates wrapper
|
|
333
|
+
│ ├── metadata.ts # Zod schemas + loader
|
|
334
|
+
│ ├── recipe/ # Recipe pipeline (clean → patch → fill → verify)
|
|
335
|
+
│ ├── external/ # External template support
|
|
336
|
+
│ ├── validation/ # template, license, output, recipe
|
|
337
|
+
│ └── command-generation/
|
|
338
|
+
│ ├── types.ts # ToolCommandAdapter interface
|
|
339
|
+
│ └── adapters/ # Claude Code adapter
|
|
340
|
+
└── index.ts # Public API
|
|
341
|
+
|
|
342
|
+
integration-tests/ # Integration and end-to-end tests
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Resources
|
|
346
|
+
|
|
347
|
+
- [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
|
|
348
|
+
- [Claude Code Plugins Guide](https://docs.anthropic.com/en/docs/claude-code/plugins)
|
|
349
|
+
- [Agent Skills Specification](https://agentskills.io)
|
|
350
|
+
|
|
351
|
+
## License
|
|
352
|
+
|
|
353
|
+
MIT
|
|
354
|
+
|
|
355
|
+
Template content is licensed by their respective authors — CC BY 4.0 (Common Paper, Bonterms), CC BY-ND 4.0 (Y Combinator), or proprietary (NVCA, downloaded at runtime). See each template's `metadata.yaml` for details.
|
|
356
|
+
|
|
357
|
+
## Disclaimer
|
|
358
|
+
|
|
359
|
+
This tool generates documents from standard templates. It does not provide legal advice. No affiliation with or endorsement by Common Paper, Bonterms, Y Combinator, NVCA, or any template source is implied. Consult an attorney for legal guidance.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
|
|
2
|
+
|
|
3
|
+
The DOCX files in this directory are redistributed under the CC BY-ND 4.0 license.
|
|
4
|
+
They are unmodified copies of the originals published by their respective authors.
|
|
5
|
+
|
|
6
|
+
You are free to:
|
|
7
|
+
- Share: copy and redistribute the material in any medium or format for any purpose,
|
|
8
|
+
even commercially.
|
|
9
|
+
|
|
10
|
+
Under the following terms:
|
|
11
|
+
- Attribution: You must give appropriate credit, provide a link to the license, and
|
|
12
|
+
indicate if changes were made.
|
|
13
|
+
- NoDerivatives: If you remix, transform, or build upon the material, you may not
|
|
14
|
+
distribute the modified material.
|
|
15
|
+
|
|
16
|
+
Full license text: https://creativecommons.org/licenses/by-nd/4.0/legalcode
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
Y Combinator Post-Money SAFE Documents
|
|
21
|
+
Copyright Y Combinator
|
|
22
|
+
Source: https://www.ycombinator.com/documents
|
|
23
|
+
|
|
24
|
+
- yc-safe-valuation-cap/template.docx — Post-Money SAFE, Valuation Cap Only
|
|
25
|
+
- yc-safe-discount/template.docx — Post-Money SAFE, Discount Only
|
|
26
|
+
- yc-safe-mfn/template.docx — Post-Money SAFE, MFN Only
|
|
27
|
+
- yc-safe-pro-rata-side-letter/template.docx — Pro Rata Side Letter
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# External Templates
|
|
2
|
+
|
|
3
|
+
This directory contains third-party standard-form legal documents that are redistributable under **CC BY-ND 4.0** but must not be modified. The `template.docx` files here are unmodified copies of the originals published by their respective authors.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
Unlike templates in `templates/` (which contain pre-baked `{tag}` placeholders), external templates store the original document as-is. At fill time, the CLI applies bracket-to-tag replacement in a temporary directory, fills the values, and produces an output file. The committed source is never altered.
|
|
8
|
+
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
| Directory | Document | Publisher |
|
|
12
|
+
|-----------|----------|-----------|
|
|
13
|
+
| `yc-safe-valuation-cap/` | Post-Money SAFE — Valuation Cap | Y Combinator |
|
|
14
|
+
| `yc-safe-discount/` | Post-Money SAFE — Discount | Y Combinator |
|
|
15
|
+
| `yc-safe-mfn/` | Post-Money SAFE — MFN | Y Combinator |
|
|
16
|
+
| `yc-safe-pro-rata-side-letter/` | Pro Rata Side Letter | Y Combinator |
|
|
17
|
+
|
|
18
|
+
## Each Directory Contains
|
|
19
|
+
|
|
20
|
+
- `template.docx` — Unmodified original DOCX from the publisher
|
|
21
|
+
- `metadata.yaml` — Zod-validated schema with fields, source URL, license info, and `source_sha256` integrity hash
|
|
22
|
+
- `replacements.json` — Bracket-to-tag mapping used at fill time
|
|
23
|
+
- `clean.json` — Optional cleanup config (footnotes, notes to drafter)
|
|
24
|
+
- `README.md` — Attribution, source link, usage notes
|
|
25
|
+
|
|
26
|
+
## Updating External Templates
|
|
27
|
+
|
|
28
|
+
When a publisher releases a new version:
|
|
29
|
+
|
|
30
|
+
1. Re-download the DOCX from the official `source_url` (never re-save through Microsoft Word)
|
|
31
|
+
2. Update `source_sha256` in `metadata.yaml` with the new file's SHA-256 hash
|
|
32
|
+
3. Update `version` in `metadata.yaml`
|
|
33
|
+
4. Re-test the replacement mappings with `open-agreements scan` and a test fill
|
|
34
|
+
5. Run `open-agreements validate` to confirm integrity
|
|
35
|
+
|
|
36
|
+
## License
|
|
37
|
+
|
|
38
|
+
See [LICENSE](./LICENSE) for full attribution and license details.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# YC Post-Money SAFE — Discount
|
|
2
|
+
|
|
3
|
+
Y Combinator's Post-Money SAFE (Simple Agreement for Future Equity) with a discount rate and no valuation cap.
|
|
4
|
+
|
|
5
|
+
## Source
|
|
6
|
+
|
|
7
|
+
- **Document**: Post-Money SAFE — Discount Only
|
|
8
|
+
- **Publisher**: Y Combinator
|
|
9
|
+
- **URL**: https://www.ycombinator.com/documents
|
|
10
|
+
- **License**: CC BY-ND 4.0
|
|
11
|
+
|
|
12
|
+
## License Notice
|
|
13
|
+
|
|
14
|
+
This document is redistributed under the Creative Commons Attribution-NoDerivatives 4.0 International license (CC BY-ND 4.0). The `template.docx` file in this directory is an unmodified copy of the original as published by Y Combinator.
|
|
15
|
+
|
|
16
|
+
You may fill in the blanks for your own use. Do not redistribute modified versions of the document itself. See https://creativecommons.org/licenses/by-nd/4.0/ for full license terms.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: YC Post-Money SAFE — Discount
|
|
2
|
+
description: Y Combinator's Post-Money SAFE (Simple Agreement for Future Equity) with a discount rate and no valuation cap.
|
|
3
|
+
source_url: https://www.ycombinator.com/documents
|
|
4
|
+
version: '2024.12'
|
|
5
|
+
license: CC-BY-ND-4.0
|
|
6
|
+
allow_derivatives: false
|
|
7
|
+
attribution_text: >-
|
|
8
|
+
Based on the Y Combinator Post-Money SAFE, available at https://www.ycombinator.com/documents. Licensed under CC BY-ND
|
|
9
|
+
4.0. Copyright Y Combinator.
|
|
10
|
+
source_sha256: 93d606fc568e39673ab96c581850ece30b4f478972b7b4d4d132df695264b5a5
|
|
11
|
+
fields:
|
|
12
|
+
- name: company_name
|
|
13
|
+
type: string
|
|
14
|
+
description: Full legal name of the company
|
|
15
|
+
section: Parties
|
|
16
|
+
- name: investor_name
|
|
17
|
+
type: string
|
|
18
|
+
description: Full legal name of the investor
|
|
19
|
+
section: Parties
|
|
20
|
+
- name: purchase_amount
|
|
21
|
+
type: string
|
|
22
|
+
description: Dollar amount of the investment (e.g., "100,000")
|
|
23
|
+
section: Deal Terms
|
|
24
|
+
- name: discount_rate
|
|
25
|
+
type: string
|
|
26
|
+
description: Discount rate as a percentage, expressed as 100 minus the discount (e.g., "80" for a 20% discount)
|
|
27
|
+
section: Deal Terms
|
|
28
|
+
- name: date_of_safe
|
|
29
|
+
type: date
|
|
30
|
+
description: Date the SAFE is executed
|
|
31
|
+
section: Deal Terms
|
|
32
|
+
- name: state_of_incorporation
|
|
33
|
+
type: string
|
|
34
|
+
description: State where the company is incorporated (e.g., "Delaware")
|
|
35
|
+
section: Company Details
|
|
36
|
+
- name: governing_law_jurisdiction
|
|
37
|
+
type: string
|
|
38
|
+
description: State whose laws govern the agreement (e.g., "Delaware")
|
|
39
|
+
section: Company Details
|
|
40
|
+
- name: company
|
|
41
|
+
type: string
|
|
42
|
+
description: Company name as used in the signature block (typically matches company_name)
|
|
43
|
+
section: Signatures
|
|
44
|
+
- name: company_name_caps
|
|
45
|
+
type: string
|
|
46
|
+
description: Company name in uppercase as used in the header (e.g., "ACME INC.")
|
|
47
|
+
section: Signatures
|
|
48
|
+
- name: name
|
|
49
|
+
type: string
|
|
50
|
+
description: Name of the company signatory
|
|
51
|
+
section: Signatures
|
|
52
|
+
- name: title
|
|
53
|
+
type: string
|
|
54
|
+
description: Title of the company signatory (e.g., "CEO")
|
|
55
|
+
section: Signatures
|
|
56
|
+
required_fields:
|
|
57
|
+
- company_name
|
|
58
|
+
- investor_name
|
|
59
|
+
- purchase_amount
|
|
60
|
+
- discount_rate
|
|
61
|
+
- date_of_safe
|
|
62
|
+
- state_of_incorporation
|
|
63
|
+
- governing_law_jurisdiction
|
|
64
|
+
- company
|
|
65
|
+
- company_name_caps
|
|
66
|
+
- name
|
|
67
|
+
- title
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"[Company Name]": "{company_name}",
|
|
3
|
+
"[Investor Name]": "{investor_name}",
|
|
4
|
+
"[__________]": "{purchase_amount}",
|
|
5
|
+
"[100 minus the discount]": "{discount_rate}",
|
|
6
|
+
"[Date of Safe]": "{date_of_safe}",
|
|
7
|
+
"[State of Incorporation]": "{state_of_incorporation}",
|
|
8
|
+
"[Governing Law Jurisdiction]": "{governing_law_jurisdiction}",
|
|
9
|
+
"[COMPANY]": "{company}",
|
|
10
|
+
"[COMPANY NAME]": "{company_name_caps}",
|
|
11
|
+
"[name]": "{name}",
|
|
12
|
+
"[title]": "{title}"
|
|
13
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# YC Post-Money SAFE — MFN
|
|
2
|
+
|
|
3
|
+
Y Combinator's Post-Money SAFE (Simple Agreement for Future Equity) with a most favored nation (MFN) provision, no valuation cap, and no discount.
|
|
4
|
+
|
|
5
|
+
## Source
|
|
6
|
+
|
|
7
|
+
- **Document**: Post-Money SAFE — MFN Only
|
|
8
|
+
- **Publisher**: Y Combinator
|
|
9
|
+
- **URL**: https://www.ycombinator.com/documents
|
|
10
|
+
- **License**: CC BY-ND 4.0
|
|
11
|
+
|
|
12
|
+
## License Notice
|
|
13
|
+
|
|
14
|
+
This document is redistributed under the Creative Commons Attribution-NoDerivatives 4.0 International license (CC BY-ND 4.0). The `template.docx` file in this directory is an unmodified copy of the original as published by Y Combinator.
|
|
15
|
+
|
|
16
|
+
You may fill in the blanks for your own use. Do not redistribute modified versions of the document itself. See https://creativecommons.org/licenses/by-nd/4.0/ for full license terms.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
name: YC Post-Money SAFE — MFN
|
|
2
|
+
description: >-
|
|
3
|
+
Y Combinator's Post-Money SAFE (Simple Agreement for Future Equity) with a most favored nation (MFN) provision, no
|
|
4
|
+
valuation cap, and no discount.
|
|
5
|
+
source_url: https://www.ycombinator.com/documents
|
|
6
|
+
version: '2024.12'
|
|
7
|
+
license: CC-BY-ND-4.0
|
|
8
|
+
allow_derivatives: false
|
|
9
|
+
attribution_text: >-
|
|
10
|
+
Based on the Y Combinator Post-Money SAFE, available at https://www.ycombinator.com/documents. Licensed under CC BY-ND
|
|
11
|
+
4.0. Copyright Y Combinator.
|
|
12
|
+
source_sha256: d3ad99466059b6f4d838e8e5daeeff5752e9866e6b557c6056df772f8509e727
|
|
13
|
+
fields:
|
|
14
|
+
- name: company_name
|
|
15
|
+
type: string
|
|
16
|
+
description: Full legal name of the company
|
|
17
|
+
section: Parties
|
|
18
|
+
- name: investor_name
|
|
19
|
+
type: string
|
|
20
|
+
description: Full legal name of the investor
|
|
21
|
+
section: Parties
|
|
22
|
+
- name: purchase_amount
|
|
23
|
+
type: string
|
|
24
|
+
description: Dollar amount of the investment (e.g., "100,000")
|
|
25
|
+
section: Deal Terms
|
|
26
|
+
- name: date_of_safe
|
|
27
|
+
type: date
|
|
28
|
+
description: Date the SAFE is executed
|
|
29
|
+
section: Deal Terms
|
|
30
|
+
- name: state_of_incorporation
|
|
31
|
+
type: string
|
|
32
|
+
description: State where the company is incorporated (e.g., "Delaware")
|
|
33
|
+
section: Company Details
|
|
34
|
+
- name: governing_law_jurisdiction
|
|
35
|
+
type: string
|
|
36
|
+
description: State whose laws govern the agreement (e.g., "Delaware")
|
|
37
|
+
section: Company Details
|
|
38
|
+
- name: company
|
|
39
|
+
type: string
|
|
40
|
+
description: Company name as used in the signature block (typically matches company_name)
|
|
41
|
+
section: Signatures
|
|
42
|
+
- name: company_name_caps
|
|
43
|
+
type: string
|
|
44
|
+
description: Company name in uppercase as used in the header (e.g., "ACME INC.")
|
|
45
|
+
section: Signatures
|
|
46
|
+
- name: name
|
|
47
|
+
type: string
|
|
48
|
+
description: Name of the company signatory
|
|
49
|
+
section: Signatures
|
|
50
|
+
- name: title
|
|
51
|
+
type: string
|
|
52
|
+
description: Title of the company signatory (e.g., "CEO")
|
|
53
|
+
section: Signatures
|
|
54
|
+
required_fields:
|
|
55
|
+
- company_name
|
|
56
|
+
- investor_name
|
|
57
|
+
- purchase_amount
|
|
58
|
+
- date_of_safe
|
|
59
|
+
- state_of_incorporation
|
|
60
|
+
- governing_law_jurisdiction
|
|
61
|
+
- company
|
|
62
|
+
- company_name_caps
|
|
63
|
+
- name
|
|
64
|
+
- title
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"[Company Name]": "{company_name}",
|
|
3
|
+
"[Investor Name]": "{investor_name}",
|
|
4
|
+
"[_____________]": "{purchase_amount}",
|
|
5
|
+
"[Date of Safe]": "{date_of_safe}",
|
|
6
|
+
"[State of Incorporation]": "{state_of_incorporation}",
|
|
7
|
+
"[Governing Law Jurisdiction]": "{governing_law_jurisdiction}",
|
|
8
|
+
"[COMPANY]": "{company}",
|
|
9
|
+
"[COMPANY NAME]": "{company_name_caps}",
|
|
10
|
+
"[name]": "{name}",
|
|
11
|
+
"[title]": "{title}"
|
|
12
|
+
}
|
|
Binary file
|