open-agreements 0.2.2 → 0.3.1

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 (147) hide show
  1. package/README.de.md +371 -0
  2. package/README.es.md +371 -0
  3. package/README.md +30 -0
  4. package/README.pt-br.md +371 -0
  5. package/README.zh.md +371 -0
  6. package/content/templates/closing-checklist/template.docx +0 -0
  7. package/content/templates/common-paper-ai-addendum/README.md +18 -0
  8. package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
  9. package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
  10. package/content/templates/common-paper-ai-addendum/selections.json +62 -0
  11. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  12. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
  13. package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
  14. package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
  15. package/content/templates/common-paper-amendment/README.md +18 -0
  16. package/content/templates/common-paper-amendment/metadata.yaml +48 -0
  17. package/content/templates/common-paper-amendment/template.docx +0 -0
  18. package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
  19. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
  20. package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
  21. package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
  22. package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
  23. package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
  24. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
  25. package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  26. package/content/templates/common-paper-csa-with-ai/README.md +18 -0
  27. package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
  28. package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
  29. package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
  30. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  31. package/content/templates/common-paper-csa-with-sla/README.md +18 -0
  32. package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
  33. package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
  34. package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
  35. package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
  36. package/content/templates/common-paper-csa-without-sla/README.md +18 -0
  37. package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
  38. package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
  39. package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
  40. package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
  41. package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
  42. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
  43. package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
  44. package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
  45. package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
  46. package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
  47. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
  48. package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
  49. package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
  50. package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
  51. package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
  52. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
  53. package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
  54. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  55. package/content/templates/common-paper-letter-of-intent/README.md +18 -0
  56. package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
  57. package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
  58. package/content/templates/common-paper-mutual-nda/README.md +29 -7
  59. package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
  60. package/content/templates/common-paper-mutual-nda/template.docx +0 -0
  61. package/content/templates/common-paper-one-way-nda/README.md +13 -0
  62. package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
  63. package/content/templates/common-paper-one-way-nda/selections.json +38 -0
  64. package/content/templates/common-paper-one-way-nda/template.docx +0 -0
  65. package/content/templates/common-paper-order-form/README.md +18 -0
  66. package/content/templates/common-paper-order-form/metadata.yaml +115 -3
  67. package/content/templates/common-paper-order-form/replacements.json +5 -2
  68. package/content/templates/common-paper-order-form/selections.json +56 -0
  69. package/content/templates/common-paper-order-form/template.docx +0 -0
  70. package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
  71. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
  72. package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
  73. package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
  74. package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
  75. package/content/templates/common-paper-partnership-agreement/README.md +18 -0
  76. package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
  77. package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
  78. package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
  79. package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
  80. package/content/templates/common-paper-pilot-agreement/README.md +18 -0
  81. package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
  82. package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
  83. package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
  84. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
  85. package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
  86. package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
  87. package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
  88. package/content/templates/common-paper-statement-of-work/README.md +18 -0
  89. package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
  90. package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
  91. package/content/templates/common-paper-statement-of-work/selections.json +55 -0
  92. package/content/templates/common-paper-statement-of-work/template.docx +0 -0
  93. package/content/templates/common-paper-term-sheet/README.md +18 -0
  94. package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
  95. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  96. package/content/templates/working-group-list/template.docx +0 -0
  97. package/dist/commands/checklist.d.ts.map +1 -1
  98. package/dist/commands/checklist.js +2 -1
  99. package/dist/commands/checklist.js.map +1 -1
  100. package/dist/commands/list.d.ts.map +1 -1
  101. package/dist/commands/list.js +1 -46
  102. package/dist/commands/list.js.map +1 -1
  103. package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
  104. package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
  105. package/dist/core/checklist/format-checklist-docx.js +321 -0
  106. package/dist/core/checklist/format-checklist-docx.js.map +1 -0
  107. package/dist/core/checklist/index.d.ts +1 -0
  108. package/dist/core/checklist/index.d.ts.map +1 -1
  109. package/dist/core/checklist/index.js +7 -3
  110. package/dist/core/checklist/index.js.map +1 -1
  111. package/dist/core/engine.d.ts +1 -0
  112. package/dist/core/engine.d.ts.map +1 -1
  113. package/dist/core/engine.js +72 -11
  114. package/dist/core/engine.js.map +1 -1
  115. package/dist/core/selector.d.ts +2 -0
  116. package/dist/core/selector.d.ts.map +1 -1
  117. package/dist/core/selector.js +181 -39
  118. package/dist/core/selector.js.map +1 -1
  119. package/dist/core/template-listing.d.ts +40 -0
  120. package/dist/core/template-listing.d.ts.map +1 -0
  121. package/dist/core/template-listing.js +91 -0
  122. package/dist/core/template-listing.js.map +1 -0
  123. package/dist/core/validation/template.d.ts.map +1 -1
  124. package/dist/core/validation/template.js +10 -2
  125. package/dist/core/validation/template.js.map +1 -1
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +4 -0
  129. package/dist/index.js.map +1 -1
  130. package/package.json +8 -2
  131. package/skills/iso-27001-evidence-collection/CONNECTORS.md +25 -9
  132. package/skills/iso-27001-evidence-collection/SKILL.md +10 -6
  133. package/skills/iso-27001-internal-audit/CONNECTORS.md +25 -9
  134. package/skills/iso-27001-internal-audit/SKILL.md +12 -9
  135. package/skills/soc2-readiness/CONNECTORS.md +25 -9
  136. package/skills/soc2-readiness/SKILL.md +17 -5
  137. package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
  138. package/skills/soc2-readiness/rules/communication-info.md +85 -0
  139. package/skills/soc2-readiness/rules/control-activities.md +95 -0
  140. package/skills/soc2-readiness/rules/control-environment.md +126 -0
  141. package/skills/soc2-readiness/rules/logical-access.md +264 -0
  142. package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
  143. package/skills/soc2-readiness/rules/optional-categories.md +264 -0
  144. package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
  145. package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
  146. package/skills/soc2-readiness/rules/system-operations.md +170 -0
  147. package/skills/soc2-readiness/rules/trust-services.md +0 -230
@@ -0,0 +1,371 @@
1
+ # OpenAgreements
2
+
3
+ [![npm version](https://img.shields.io/npm/v/open-agreements)](https://www.npmjs.com/package/open-agreements)
4
+ [![npm downloads](https://img.shields.io/npm/dm/open-agreements.svg)](https://npmjs.org/package/open-agreements)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
+ [![Agent Skill](https://img.shields.io/badge/agent--skill-open--agreements-purple)](https://skills.sh)
7
+ [![CI](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml/badge.svg)](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml)
8
+ [![MCP Server Status](https://img.shields.io/endpoint?url=https%3A%2F%2Fopenagreements.ai%2Fapi%2Fstatus%3Fformat%3Dshields)](https://openagreements.openstatus.dev/)
9
+ [![codecov](https://img.shields.io/codecov/c/github/open-agreements/open-agreements/main)](https://app.codecov.io/gh/open-agreements/open-agreements)
10
+ [![GitHub stargazers](https://img.shields.io/github/stars/open-agreements/open-agreements?style=social)](https://github.com/open-agreements/open-agreements/stargazers)
11
+ [![Tests: Vitest](https://img.shields.io/badge/tests-vitest-6E9F18)](https://vitest.dev/)
12
+ [![OpenSpec Traceability](https://img.shields.io/badge/openspec-traceability%20gate-brightgreen)](./scripts/validate_openspec_coverage.mjs)
13
+ [![Socket Badge](https://socket.dev/api/badge/npm/package/open-agreements)](https://socket.dev/npm/package/open-agreements)
14
+ [![install size](https://packagephobia.com/badge?p=open-agreements)](https://packagephobia.com/result?p=open-agreements)
15
+
16
+ [English](./README.md) | [Español](./README.es.md) | [简体中文](./README.zh.md) | [Português (Brasil)](./README.pt-br.md) | [Deutsch](./README.de.md)
17
+
18
+ > **Aviso de tradução:** o `README.md` em inglês é a fonte canônica de verdade. Esta tradução pode ter pequeno atraso. Atualizações importantes do README em inglês devem ser propagadas em até 72 horas.
19
+
20
+ <!-- TODO: Add OpenSSF Scorecard badge once repo is indexed at securityscorecards.dev -->
21
+ <!-- TODO: Add OpenSSF Best Practices badge after registration at bestpractices.dev -->
22
+ <!-- TODO: Re-evaluate Snyk badge — Advisor migrated to security.snyk.io (July 2024) -->
23
+
24
+ <p align="center">
25
+ <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">
26
+ </p>
27
+
28
+ > *Demo: Claude preenche um NDA mútuo da Common Paper em menos de 2 minutos. Acelerado para brevidade.*
29
+
30
+ Preencha modelos padrão de acordos legais e gere arquivos DOCX prontos para assinatura. Os modelos cobrem NDAs, termos de cloud, documentos de trabalho, acordos com contratados, SAFEs e documentos de financiamento NVCA.
31
+
32
+ Construído pela equipe por trás da [UseJunior.com](https://usejunior.com) — em produção em escritórios Am Law 100.
33
+
34
+ ## Qualidade e sinais de confiança
35
+
36
+ - O CI roda em pull requests e em pushes para `main`.
37
+ - A saúde do serviço em produção é publicada via OpenStatus em `openagreements.openstatus.dev`.
38
+ - A cobertura é publicada no Codecov com gates de patch/projeto definidos no repositório em `codecov.yml`.
39
+ - O framework de testes JS ativo é Vitest, com resultados JUnit enviados para analytics de testes no Codecov.
40
+ - A rastreabilidade de cenários OpenSpec é aplicada com `npm run check:spec-coverage`. Para exportar uma matriz local, rode `npm run check:spec-coverage -- --write-matrix integration-tests/OPENSPEC_TRACEABILITY.md`.
41
+ - O canário de source drift de recipes (`npm run check:source-drift`) valida o hash de origem esperado e âncoras estruturais de replace/normalize.
42
+ - Regressões em nível de suposição são rastreadas em `docs/assumptions.md` e validadas por testes de regressão direcionados + gates de CI.
43
+ - A renderização visual de DOCX com LibreOffice usa configuração fixada no macOS (`config/libreoffice-headless.json`); rode `npm run check:libreoffice` antes de testes visuais de evidência do Allure.
44
+ - Maintainer: [Steven Obiajulu](https://www.linkedin.com/in/steven-obiajulu/) (engenheiro mecânico formado no MIT; advogado com formação em Harvard Law).
45
+
46
+ ## Como funciona
47
+
48
+ 1. Etapa 1: escolha um modelo (36 acordos padrão)
49
+ 2. Etapa 2: preencha seus dados (prompts interativos ou MCP)
50
+ 3. Etapa 3: receba um DOCX com formatação profissional
51
+
52
+ O OpenAgreements oferece dois modos de execução com limites de confiança diferentes:
53
+
54
+ - Conector MCP remoto hospedado (`https://openagreements.ai/api/mcp`) para setup rápido no Claude.
55
+ - Execução totalmente local do pacote (`npx`, instalação global ou pacote MCP local por stdio) para fluxos de trabalho na própria máquina.
56
+
57
+ Não há recomendação global de modo padrão. Escolha com base na sensibilidade do documento, política interna e velocidade desejada no fluxo de trabalho. Veja `docs/trust-checklist.md` para um resumo de fluxo de dados em 60 segundos.
58
+
59
+ ### Decisão rápida
60
+
61
+ - Se seu documento é sensível, use execução totalmente local do pacote.
62
+ - Se você prioriza conveniência, use o conector MCP remoto hospedado.
63
+
64
+ ## Uso com Claude Code
65
+
66
+ OpenAgreements funciona como [plugin do Claude Code](https://docs.anthropic.com/en/docs/claude-code/plugins) e [Agent Skill](https://agentskills.io). Não é necessária pré-instalação: o Claude baixa e executa o CLI sob demanda via `npx`.
67
+
68
+ ### Opção 1: Agent Skill (recomendado)
69
+
70
+ ```bash
71
+ npx skills add open-agreements/open-agreements
72
+ ```
73
+
74
+ Depois, peça ao Claude para redigir um acordo:
75
+
76
+ ```
77
+ > Draft an NDA between Acme Corp and Beta Inc
78
+ ```
79
+
80
+ O Claude descobre os modelos disponíveis, entrevista você para coletar valores de campos e gera um DOCX pronto para assinatura.
81
+
82
+ ### Opção 2: Extensão Gemini CLI
83
+
84
+ ```bash
85
+ gemini extensions install https://github.com/open-agreements/open-agreements
86
+ ```
87
+
88
+ Depois, peça ao Gemini para redigir um acordo. A extensão fornece ferramentas MCP, arquivos de contexto e skills para descoberta e preenchimento de modelos.
89
+
90
+ ### Opção 3: Direto com Claude Code
91
+
92
+ Se você tiver Node.js >= 20, basta pedir ao Claude:
93
+
94
+ ```
95
+ > Fill the Common Paper mutual NDA for my company
96
+ ```
97
+
98
+ O Claude executa `npx -y open-agreements@latest list --json` para descobrir modelos e depois `npx -y open-agreements@latest fill <template>` para gerar a saída. Sem instalação.
99
+
100
+ ### Opção 4: CLI
101
+
102
+ ```bash
103
+ # Install globally
104
+ npm install -g open-agreements
105
+
106
+ # List available templates
107
+ open-agreements list
108
+
109
+ # Fill a template
110
+ open-agreements fill common-paper-mutual-nda -d values.json -o my-nda.docx
111
+ ```
112
+
113
+ ### O que acontece
114
+
115
+ 1. O Claude executa `list --json` para descobrir modelos disponíveis e seus campos
116
+ 2. O Claude entrevista você para coletar valores de campos (agrupados por seção, até 4 perguntas por rodada)
117
+ 3. O Claude executa `fill <template>` para gerar um DOCX preservando toda a formatação original
118
+ 4. Você revisa e assina o documento de saída
119
+
120
+ ## Uso com Cursor
121
+
122
+ Este repositório inclui um manifesto de plugin do Cursor com integração MCP:
123
+
124
+ - Plugin manifest: `.cursor-plugin/plugin.json`
125
+ - MCP config: `mcp.json`
126
+ - Skill: `skills/open-agreements/SKILL.md`
127
+
128
+ A configuração MCP padrão em `mcp.json` inclui:
129
+
130
+ - Conector MCP OpenAgreements hospedado (`https://openagreements.ai/api/mcp`)
131
+ - Servidor MCP local de workspace (`npx -y @open-agreements/contracts-workspace-mcp`)
132
+ - Servidor MCP local para drafting de modelos (`npx -y @open-agreements/contract-templates-mcp`)
133
+
134
+ Para publicar este plugin no Cursor Marketplace, envie este repositório em:
135
+
136
+ - https://cursor.com/marketplace/publish
137
+
138
+ ## Modelos
139
+
140
+ 28 modelos em três níveis. Rode `open-agreements list` para ver o inventário completo.
141
+
142
+ | Nível | Quantidade | Fonte | Como funciona |
143
+ |------|-------|--------|--------------|
144
+ | Modelos internos | 17 | [Common Paper](https://commonpaper.com), [Bonterms](https://bonterms.com), OpenAgreements | Empacotados no pacote, CC BY 4.0 |
145
+ | Modelos externos | 4 | [Y Combinator](https://www.ycombinator.com/documents) | Vendorizados sem alterações, CC BY-ND 4.0 |
146
+ | Recipes | 7 | [NVCA](https://nvca.org/model-legal-documents/) | Baixados sob demanda (não redistribuíveis) |
147
+
148
+ **Modelos internos** (NDAs, termos cloud, formulários de trabalho, acordos com contratados etc.) são CC BY 4.0 — enviamos o DOCX com placeholders `{tag}`.
149
+
150
+ **Modelos externos** (YC SAFEs) são CC BY-ND 4.0 — vendorizamos o original sem alterações. A saída preenchida é um derivado transitório na sua máquina.
151
+
152
+ **Recipes** (documentos de financiamento NVCA) são livremente baixáveis, mas não redistribuíveis — enviamos apenas instruções de transformação e baixamos o DOCX de origem de nvca.org em tempo de execução.
153
+
154
+ ### Extração de guidance
155
+
156
+ Documentos de origem contêm comentários especializados — notas de rodapé, notas de redação, blocos `[Comment: ...]` — escritos por especialistas de domínio (por exemplo, advogados de mercado de capitais). O limpador de recipes remove esse conteúdo para produzir um documento preenchível, mas também pode extraí-lo como JSON estruturado:
157
+
158
+ ```bash
159
+ open-agreements recipe clean source.docx -o cleaned.docx \
160
+ --recipe nvca-indemnification-agreement \
161
+ --extract-guidance guidance.json
162
+ ```
163
+
164
+ Isso produz um `guidance.json` com cada nota de rodapé, comentário e nota de redação removidos, marcados por tipo de fonte e posição no documento. O guidance é um artefato somente local (não é commitado nem distribuído) que agentes de IA ou autores humanos podem consultar ao preencher o formulário. Veja [Adding Recipes — Guidance Extraction](docs/adding-recipes.md#guidance-extraction) para detalhes de formato.
165
+
166
+ **Por que extração programática?** O documento de origem é a única fonte de verdade. Reexecutar a extração após uma atualização do editor gera guidance atualizado sem esforço manual, preserva a linguagem exata de especialistas e captura tudo — uma IA pode resumir em tempo real, mas não pode recuperar conteúdo descartado.
167
+
168
+ Cada modelo é um diretório autocontido:
169
+
170
+ ```
171
+ content/templates/<name>/
172
+ ├── template.docx # DOCX with {tag} placeholders
173
+ ├── metadata.yaml # Fields, license, source, attribution
174
+ └── README.md # Template-specific documentation
175
+ ```
176
+
177
+ ## Comandos CLI
178
+
179
+ ### `fill <template>`
180
+
181
+ Renderiza um DOCX preenchido a partir de um modelo.
182
+
183
+ ```bash
184
+ # Using a JSON data file
185
+ open-agreements fill common-paper-mutual-nda -d data.json -o output.docx
186
+
187
+ # Using inline --set flags
188
+ open-agreements fill common-paper-mutual-nda --set party_1_name="Acme Corp" --set governing_law="Delaware"
189
+ ```
190
+
191
+ ### `validate [template]`
192
+
193
+ Executa o pipeline de validação em um ou todos os modelos.
194
+
195
+ ```bash
196
+ open-agreements validate # All templates
197
+ open-agreements validate common-paper-mutual-nda # One template
198
+ ```
199
+
200
+ ### `list`
201
+
202
+ Mostra modelos disponíveis com informações de licença e contagem de campos.
203
+
204
+ ```bash
205
+ open-agreements list
206
+
207
+ # Machine-readable JSON output (for agent skills and automation)
208
+ open-agreements list --json
209
+ ```
210
+
211
+ ## Contracts Workspace CLI (pacote separado)
212
+
213
+ O OpenAgreements agora inclui um pacote irmão para operações de repositório/workspace:
214
+
215
+ - Package: `@open-agreements/contracts-workspace`
216
+ - Binary: `open-agreements-workspace`
217
+ - Docs: `docs/contracts-workspace.md`
218
+
219
+ Este pacote é propositalmente separado de `open-agreements`, permitindo que equipes adotem:
220
+
221
+ - apenas preenchimento de modelos
222
+ - apenas gerenciamento de workspace
223
+ - ou ambos juntos
224
+
225
+ Recursos principais de workspace:
226
+
227
+ - planejamento `init` orientado por tópicos (estrutura mínima sugerida com domínios de nível superior)
228
+ - catálogo de formulários com validação de URL + SHA-256
229
+ - indexação e lint de status YAML com status `_executed` orientado por nome de arquivo
230
+
231
+ O modelo v1 é apenas filesystem e funciona em pastas de nuvem sincronizadas localmente (por exemplo, sync do Google Drive). Não requer integração com Drive API/OAuth.
232
+
233
+ ## MCP local para demo de workspace
234
+
235
+ Para demos de conectores locais, há um pacote MCP local por stdio:
236
+
237
+ - Package: `@open-agreements/contracts-workspace-mcp`
238
+ - Binary: `open-agreements-workspace-mcp`
239
+ - Docs: `docs/contracts-workspace.md`
240
+
241
+ Início rápido:
242
+
243
+ ```bash
244
+ npm run build:workspace-mcp
245
+ node packages/contracts-workspace-mcp/bin/open-agreements-workspace-mcp.js
246
+ ```
247
+
248
+ ## MCP local para drafting de modelos
249
+
250
+ Para fluxos locais de drafting de modelos em Gemini/Cursor, use:
251
+
252
+ - Package: `@open-agreements/contract-templates-mcp`
253
+ - Binary: `open-agreements-contract-templates-mcp`
254
+
255
+ Início rápido:
256
+
257
+ ```bash
258
+ npm run build:contract-templates-mcp
259
+ node packages/contract-templates-mcp/bin/open-agreements-contract-templates-mcp.js
260
+ ```
261
+
262
+ ## Website (Vercel)
263
+
264
+ Um site estático de marketing é gerado a partir de `site/` com Eleventy.
265
+
266
+ - Entry points: `site/index.njk`, `site/templates.njk`, `site/template-detail.njk`
267
+ - Styles: `site/styles.css`
268
+ - Demo media: `site/assets/demo-fill-nda.gif`
269
+ - Deployment config: `vercel.json`
270
+ - Discovery outputs (generated during `npm run build:site`): `_site/llms.txt`, `_site/llms-full.txt`, `_site/sitemap.xml`, `_site/robots.txt`
271
+
272
+ Pré-visualização local:
273
+
274
+ ```bash
275
+ npm run build:site
276
+ python3 -m http.server 8080 --directory _site
277
+ ```
278
+
279
+ Depois abra `http://localhost:8080`.
280
+
281
+ Notas de deploy na Vercel:
282
+
283
+ - Importe este repositório na Vercel
284
+ - Mantenha a raiz do projeto como a raiz do repositório
285
+ - O `vercel.json` incluído publica `_site/` como saída estática
286
+
287
+ ## Raízes opcionais de conteúdo (preparação para o futuro)
288
+
289
+ Para suportar desacoplamento lógico conforme bibliotecas de formulários crescem, `open-agreements` pode carregar conteúdo de raízes adicionais via:
290
+
291
+ - env var: `OPEN_AGREEMENTS_CONTENT_ROOTS`
292
+ - format: lista delimitada por separador de caminho de diretórios absolutos/relativos (por exemplo, `dirA:dirB` em macOS/Linux)
293
+ - estrutura esperada em cada raiz: `templates/`, `external/` e/ou `recipes/` (ou aninhados em `content/`)
294
+
295
+ A precedência de busca é:
296
+
297
+ 1. raízes em `OPEN_AGREEMENTS_CONTENT_ROOTS` (na ordem listada)
298
+ 2. conteúdo empacotado padrão (fallback)
299
+
300
+ Isso mantém instalações padrão simples e permite que usuários avançados movam bibliotecas de conteúdo grandes para fora do pacote principal.
301
+
302
+ ## Contribuindo
303
+
304
+ Veja [CONTRIBUTING.md](CONTRIBUTING.md) para saber como adicionar modelos, recipes e outras melhorias.
305
+
306
+ - [Adding templates](docs/adding-templates.md) (fontes CC BY 4.0 / CC0)
307
+ - [Adding recipes](docs/adding-recipes.md) (fontes não redistribuíveis)
308
+ - [Employment source policy](docs/employment-source-policy.md) (classificações de confiança e termos)
309
+ - [Code of Conduct](CODE_OF_CONDUCT.md) (expectativas da comunidade e aplicação)
310
+
311
+ ## Releases
312
+
313
+ Releases são automatados via GitHub Actions usando publicação confiável da npm (OIDC) com provenance habilitada.
314
+
315
+ 1. Atualize versões no pacote raiz + pacotes MCP publicáveis.
316
+ 2. Faça push do commit + tag com `git push origin main --tags`
317
+ 3. Rode o gate local da extensão Gemini (copiar/symlink para `~/.gemini/extensions/open-agreements` e verificar que ambos servidores MCP locais iniciam/respondem).
318
+ 4. O workflow `Release` publica a partir da tag após rodar build, validação, testes, smoke de runtime isolado e checks de pacote.
319
+
320
+ Guardrails do workflow:
321
+
322
+ - a tag deve corresponder às versões do pacote raiz + pacotes publicáveis
323
+ - o commit de release deve estar contido em `origin/main`
324
+ - a publicação falha se qualquer versão alvo na npm já existir
325
+
326
+ ## Arquitetura
327
+
328
+ - **Language**: TypeScript
329
+ - **DOCX Engine**: [docx-templates](https://www.npmjs.com/package/docx-templates) (MIT)
330
+ - **CLI**: [Commander.js](https://www.npmjs.com/package/commander)
331
+ - **Validation**: [Zod](https://www.npmjs.com/package/zod) schemas
332
+ - **Skill Pattern**: Agent-agnostic `ToolCommandAdapter` interface
333
+
334
+ ```
335
+ content/ # All content directories
336
+ ├── templates/ # Internal templates (CC BY 4.0)
337
+ ├── external/ # External templates (CC BY-ND 4.0)
338
+ └── recipes/ # Recipes (downloaded at runtime)
339
+
340
+ src/ # TypeScript source + collocated unit tests
341
+ ├── cli/ # Commander.js CLI
342
+ ├── commands/ # fill, validate, list, recipe, scan
343
+ ├── core/
344
+ │ ├── engine.ts # docx-templates wrapper
345
+ │ ├── metadata.ts # Zod schemas + loader
346
+ │ ├── recipe/ # Recipe pipeline (clean → patch → fill → verify)
347
+ │ ├── external/ # External template support
348
+ │ ├── validation/ # template, license, output, recipe
349
+ │ └── command-generation/
350
+ │ ├── types.ts # ToolCommandAdapter interface
351
+ │ └── adapters/ # Claude Code adapter
352
+ └── index.ts # Public API
353
+
354
+ integration-tests/ # Integration and end-to-end tests
355
+ ```
356
+
357
+ ## Recursos
358
+
359
+ - [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
360
+ - [Claude Code Plugins Guide](https://docs.anthropic.com/en/docs/claude-code/plugins)
361
+ - [Agent Skills Specification](https://agentskills.io)
362
+
363
+ ## Licença
364
+
365
+ MIT
366
+
367
+ O conteúdo dos modelos é licenciado por seus respectivos autores — CC BY 4.0 (Common Paper, Bonterms), CC BY-ND 4.0 (Y Combinator) ou proprietário (NVCA, baixado em tempo de execução). Veja `metadata.yaml` de cada modelo para detalhes.
368
+
369
+ ## Aviso legal
370
+
371
+ Esta ferramenta gera documentos a partir de modelos padrão. Ela não fornece assessoria jurídica. Não há afiliação com ou endosso por Common Paper, Bonterms, Y Combinator, NVCA ou qualquer fonte de modelo. Consulte um advogado para orientação jurídica.