open-agreements 0.2.2 → 0.3.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 (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
package/README.es.md ADDED
@@ -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
+ > **Nota de traducción:** `README.md` en inglés es la fuente canónica de verdad. Esta traducción puede tener un pequeño retraso. Los cambios importantes del README en inglés deben propagarse en un plazo de 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 completa un Mutual NDA de Common Paper en menos de 2 minutos. Acelerado para brevedad.*
29
+
30
+ Completa plantillas estándar de acuerdos legales y genera archivos DOCX listos para firma. Las plantillas cubren NDAs, términos cloud, documentos laborales, acuerdos con contratistas, SAFEs y documentos de financiamiento NVCA.
31
+
32
+ Creado por el equipo detrás de [UseJunior.com](https://usejunior.com) — en producción en firmas Am Law 100.
33
+
34
+ ## Calidad y señales de confianza
35
+
36
+ - CI se ejecuta en pull requests y en pushes a `main`.
37
+ - La salud del servicio en vivo se publica a través de OpenStatus en `openagreements.openstatus.dev`.
38
+ - La cobertura se publica en Codecov con compuertas de patch/proyecto definidas en el repositorio en `codecov.yml`.
39
+ - El framework de pruebas JS activo es Vitest, con resultados JUnit subidos para análisis de pruebas en Codecov.
40
+ - La trazabilidad de escenarios de OpenSpec se aplica mediante `npm run check:spec-coverage`. Para exportar una matriz local, ejecuta `npm run check:spec-coverage -- --write-matrix integration-tests/OPENSPEC_TRACEABILITY.md`.
41
+ - El canario de deriva de fuentes de recetas (`npm run check:source-drift`) verifica el hash esperado de la fuente junto con anclas estructurales de reemplazo/normalización.
42
+ - Las regresiones a nivel de supuestos se rastrean en `docs/assumptions.md` y se validan con pruebas de regresión dirigidas + compuertas de CI.
43
+ - El renderizado visual DOCX con LibreOffice usa una configuración fijada en macOS (`config/libreoffice-headless.json`); ejecuta `npm run check:libreoffice` antes de pruebas visuales de evidencia de Allure.
44
+ - Maintainer: [Steven Obiajulu](https://www.linkedin.com/in/steven-obiajulu/) (ingeniero mecánico formado en MIT; abogado formado en Harvard Law).
45
+
46
+ ## Cómo funciona
47
+
48
+ 1. Paso 1: Elige una plantilla (36 acuerdos estándar)
49
+ 2. Paso 2: Completa tus datos (prompts interactivos o MCP)
50
+ 3. Paso 3: Obtén un DOCX con formato profesional
51
+
52
+ OpenAgreements admite dos modos de ejecución con límites de confianza diferentes:
53
+
54
+ - Conector MCP remoto alojado (`https://openagreements.ai/api/mcp`) para configuración rápida en Claude.
55
+ - Ejecución totalmente local del paquete (`npx`, instalación global o paquete MCP local por stdio) para flujos de trabajo locales en tu máquina.
56
+
57
+ No existe una recomendación de modo global por defecto. Elige según sensibilidad del documento, políticas internas y necesidades de velocidad del flujo de trabajo. Consulta `docs/trust-checklist.md` para un resumen de flujo de datos en 60 segundos.
58
+
59
+ ### Decisión rápida
60
+
61
+ - Si tu documento es sensible, usa ejecución totalmente local del paquete.
62
+ - Si priorizas conveniencia, usa el conector MCP remoto alojado.
63
+
64
+ ## Uso con Claude Code
65
+
66
+ OpenAgreements funciona como [plugin de Claude Code](https://docs.anthropic.com/en/docs/claude-code/plugins) y [Agent Skill](https://agentskills.io). No se requiere instalación previa: Claude descarga y ejecuta el CLI bajo demanda vía `npx`.
67
+
68
+ ### Opción 1: Agent Skill (recomendado)
69
+
70
+ ```bash
71
+ npx skills add open-agreements/open-agreements
72
+ ```
73
+
74
+ Luego pide a Claude que redacte un acuerdo:
75
+
76
+ ```
77
+ > Draft an NDA between Acme Corp and Beta Inc
78
+ ```
79
+
80
+ Claude descubre las plantillas disponibles, te entrevista para obtener los valores de campos y genera un DOCX listo para firma.
81
+
82
+ ### Opción 2: Extensión Gemini CLI
83
+
84
+ ```bash
85
+ gemini extensions install https://github.com/open-agreements/open-agreements
86
+ ```
87
+
88
+ Luego pide a Gemini que redacte un acuerdo. La extensión proporciona herramientas MCP, archivos de contexto y skills para descubrimiento y llenado de plantillas.
89
+
90
+ ### Opción 3: Directo con Claude Code
91
+
92
+ Si tienes Node.js >= 20, solo pídeselo a Claude:
93
+
94
+ ```
95
+ > Fill the Common Paper mutual NDA for my company
96
+ ```
97
+
98
+ Claude ejecuta `npx -y open-agreements@latest list --json` para descubrir plantillas, y luego `npx -y open-agreements@latest fill <template>` para generar el resultado. Cero instalación.
99
+
100
+ ### Opción 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
+ ### Qué sucede
114
+
115
+ 1. Claude ejecuta `list --json` para descubrir plantillas disponibles y sus campos
116
+ 2. Claude te entrevista para obtener valores de campos (agrupados por sección, hasta 4 preguntas por ronda)
117
+ 3. Claude ejecuta `fill <template>` para generar un DOCX preservando todo el formato original
118
+ 4. Revisas y firmas el documento de salida
119
+
120
+ ## Uso con Cursor
121
+
122
+ Este repositorio incluye un manifiesto de plugin de Cursor con integración MCP:
123
+
124
+ - Plugin manifest: `.cursor-plugin/plugin.json`
125
+ - MCP config: `mcp.json`
126
+ - Skill: `skills/open-agreements/SKILL.md`
127
+
128
+ La configuración MCP por defecto en `mcp.json` incluye:
129
+
130
+ - Conector MCP OpenAgreements alojado (`https://openagreements.ai/api/mcp`)
131
+ - Servidor MCP local de workspace (`npx -y @open-agreements/contracts-workspace-mcp`)
132
+ - Servidor MCP local para redacción de plantillas (`npx -y @open-agreements/contract-templates-mcp`)
133
+
134
+ Para publicar este plugin en Cursor Marketplace, envía este repositorio en:
135
+
136
+ - https://cursor.com/marketplace/publish
137
+
138
+ ## Plantillas
139
+
140
+ 28 plantillas en tres niveles. Ejecuta `open-agreements list` para el inventario completo.
141
+
142
+ | Nivel | Cantidad | Fuente | Cómo funciona |
143
+ |------|-------|--------|--------------|
144
+ | Plantillas internas | 17 | [Common Paper](https://commonpaper.com), [Bonterms](https://bonterms.com), OpenAgreements | Incluidas en el paquete, CC BY 4.0 |
145
+ | Plantillas externas | 4 | [Y Combinator](https://www.ycombinator.com/documents) | Vendorizadas sin cambios, CC BY-ND 4.0 |
146
+ | Recipes | 7 | [NVCA](https://nvca.org/model-legal-documents/) | Se descargan bajo demanda (no redistribuibles) |
147
+
148
+ **Plantillas internas** (NDAs, términos cloud, formularios laborales, acuerdos con contratistas, etc.) están bajo CC BY 4.0: enviamos el DOCX con placeholders `{tag}`.
149
+
150
+ **Plantillas externas** (YC SAFEs) están bajo CC BY-ND 4.0: vendorizamos el original sin cambios. El resultado completado es un derivado transitorio en tu máquina.
151
+
152
+ **Recipes** (documentos de financiamiento NVCA) se pueden descargar libremente pero no son redistribuibles: enviamos solo instrucciones de transformación y descargamos el DOCX fuente desde nvca.org en tiempo de ejecución.
153
+
154
+ ### Extracción de guidance
155
+
156
+ Los documentos fuente contienen comentarios expertos (notas al pie, notas de redacción, bloques `[Comment: ...]`) escritos por especialistas del dominio (por ejemplo, abogados de valores). El limpiador de recipes elimina ese contenido para producir un documento rellenable, pero también puede extraerlo como JSON estructurado:
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
+ Esto produce un `guidance.json` con cada nota al pie, comentario y nota de redacción removidos, etiquetados por tipo de fuente y posición en el documento. El guidance es un artefacto solo local (no se commitea ni se distribuye) que agentes de IA o autores humanos pueden consultar al completar el formulario. Consulta [Adding Recipes — Guidance Extraction](docs/adding-recipes.md#guidance-extraction) para detalles de formato.
165
+
166
+ **¿Por qué extracción programática?** El documento fuente es la fuente única de verdad. Re-ejecutar la extracción tras una actualización del editor produce guidance fresco sin esfuerzo manual, preserva el lenguaje exacto de expertos de dominio y captura todo: una IA puede resumir sobre la marcha, pero no puede recuperar contenido descartado.
167
+
168
+ Cada plantilla es un directorio autocontenido:
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
+ Genera un DOCX completado desde una plantilla.
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
+ Ejecuta el pipeline de validación sobre una o todas las plantillas.
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
+ Muestra las plantillas disponibles con información de licencia y conteo 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
+ ## CLI de Contracts Workspace (paquete separado)
212
+
213
+ OpenAgreements ahora incluye un paquete hermano para operaciones de repositorio/workspace:
214
+
215
+ - Package: `@open-agreements/contracts-workspace`
216
+ - Binary: `open-agreements-workspace`
217
+ - Docs: `docs/contracts-workspace.md`
218
+
219
+ Este paquete está intencionalmente separado de `open-agreements` para que los equipos puedan adoptar:
220
+
221
+ - solo llenado de plantillas
222
+ - solo gestión de workspace
223
+ - o ambos juntos
224
+
225
+ Funciones principales de workspace:
226
+
227
+ - planificación `init` orientada por temas (estructura mínima sugerida con dominios de nivel superior)
228
+ - catálogo de formularios con validación de URL + SHA-256
229
+ - indexación y linting de estado YAML con estado `_executed` basado en nombre de archivo
230
+
231
+ El modelo v1 es solo de sistema de archivos y funciona en carpetas de nube sincronizadas localmente (por ejemplo, sincronización de Google Drive). No se requiere integración Drive API/OAuth.
232
+
233
+ ## MCP local para demo de workspace
234
+
235
+ Para demos de conectores locales, hay un paquete 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
+ Inicio 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 redacción de plantillas
249
+
250
+ Para flujos locales Gemini/Cursor de redacción de plantillas, usa:
251
+
252
+ - Package: `@open-agreements/contract-templates-mcp`
253
+ - Binary: `open-agreements-contract-templates-mcp`
254
+
255
+ Inicio 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
+ ## Sitio web (Vercel)
263
+
264
+ Un sitio de marketing estático se genera desde `site/` con 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
+ Vista previa local:
273
+
274
+ ```bash
275
+ npm run build:site
276
+ python3 -m http.server 8080 --directory _site
277
+ ```
278
+
279
+ Luego abre `http://localhost:8080`.
280
+
281
+ Notas de despliegue en Vercel:
282
+
283
+ - Importa este repositorio en Vercel
284
+ - Mantén la raíz del proyecto como la raíz del repositorio
285
+ - El `vercel.json` incluido despliega `_site/` como salida estática
286
+
287
+ ## Raíces de contenido opcionales (preparado para futuro)
288
+
289
+ Para soportar desacoplamiento lógico a medida que crecen las bibliotecas de formularios, `open-agreements` puede cargar contenido desde raíces adicionales mediante:
290
+
291
+ - env var: `OPEN_AGREEMENTS_CONTENT_ROOTS`
292
+ - format: lista delimitada por separador de rutas de directorios absolutos/relativos (por ejemplo, `dirA:dirB` en macOS/Linux)
293
+ - estructura esperada bajo cada raíz: `templates/`, `external/`, y/o `recipes/` (o anidados bajo `content/`)
294
+
295
+ La precedencia de búsqueda es:
296
+
297
+ 1. raíces en `OPEN_AGREEMENTS_CONTENT_ROOTS` (en el orden listado)
298
+ 2. contenido del paquete incluido (fallback por defecto)
299
+
300
+ Esto mantiene simples las instalaciones por defecto y permite a usuarios avanzados mover bibliotecas de contenido grandes fuera del paquete principal.
301
+
302
+ ## Contribuir
303
+
304
+ Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para agregar plantillas, recipes y otras mejoras.
305
+
306
+ - [Adding templates](docs/adding-templates.md) (CC BY 4.0 / fuentes CC0)
307
+ - [Adding recipes](docs/adding-recipes.md) (fuentes no redistribuibles)
308
+ - [Employment source policy](docs/employment-source-policy.md) (clasificaciones de confianza y términos)
309
+ - [Code of Conduct](CODE_OF_CONDUCT.md) (expectativas de comunidad y cumplimiento)
310
+
311
+ ## Lanzamientos
312
+
313
+ Los lanzamientos están automatizados mediante GitHub Actions usando publicación confiable de npm (OIDC) con provenance habilitado.
314
+
315
+ 1. Actualiza versiones en el paquete raíz + paquetes MCP publicables.
316
+ 2. Haz push del commit + etiqueta con `git push origin main --tags`
317
+ 3. Ejecuta la compuerta local de extensión Gemini (copia/symlink en `~/.gemini/extensions/open-agreements` y verifica que ambos servidores MCP locales inicien/respondan).
318
+ 4. El workflow `Release` publica desde la etiqueta después de ejecutar build, validación, pruebas, smoke de runtime aislado y chequeos de paquete.
319
+
320
+ Compuertas del workflow:
321
+
322
+ - la etiqueta debe coincidir con las versiones del paquete raíz + paquetes publicables
323
+ - el commit de release debe estar contenido en `origin/main`
324
+ - la publicación falla si alguna versión objetivo en npm ya existe
325
+
326
+ ## Arquitectura
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
+ ## Licencia
364
+
365
+ MIT
366
+
367
+ El contenido de plantillas está licenciado por sus respectivos autores: CC BY 4.0 (Common Paper, Bonterms), CC BY-ND 4.0 (Y Combinator) o propietario (NVCA, descargado en tiempo de ejecución). Consulta `metadata.yaml` de cada plantilla para más detalles.
368
+
369
+ ## Descargo de responsabilidad
370
+
371
+ Esta herramienta genera documentos a partir de plantillas estándar. No proporciona asesoría legal. No se implica afiliación ni respaldo por parte de Common Paper, Bonterms, Y Combinator, NVCA ni ninguna fuente de plantillas. Consulta a un abogado para recibir orientación legal.
package/README.md CHANGED
@@ -280,6 +280,36 @@ Vercel deploy notes:
280
280
  - Keep project root as repo root
281
281
  - The included `vercel.json` deploys `_site/` as static output
282
282
 
283
+ ## Compliance & Audit Skills
284
+
285
+ Open Agreements includes AI agent skills for ISO 27001 and SOC 2 compliance work. These are markdown-only procedural skills — no scripts executed, no secrets required, evidence stays local. Developed with [Hazel Castro](https://internalisoaudit.com) (ISO 27001 Lead Auditor, 14+ years, 100+ audits).
286
+
287
+ ### ISO 27001 Evidence Collection
288
+
289
+ Collect, organize, and validate evidence for ISO 27001 and SOC 2 audits. API-first approach with CLI commands for major cloud platforms. Produces timestamped, auditor-ready evidence packages.
290
+
291
+ ```bash
292
+ npx skills add open-agreements/open-agreements --skill iso-27001-evidence-collection
293
+ ```
294
+
295
+ ### ISO 27001 Internal Audit
296
+
297
+ Run a structured internal audit against ISO 27001:2022. Walk through controls by domain, identify gaps, collect evidence, and generate findings with corrective action recommendations.
298
+
299
+ ```bash
300
+ npx skills add open-agreements/open-agreements --skill iso-27001-internal-audit
301
+ ```
302
+
303
+ ### SOC 2 Readiness
304
+
305
+ Assess SOC 2 Type II readiness. Map Trust Services Criteria to controls, identify gaps, and build a prioritized remediation plan with NIST SP 800-53 cross-mapping.
306
+
307
+ ```bash
308
+ npx skills add open-agreements/open-agreements --skill soc2-readiness
309
+ ```
310
+
311
+ All three skills use NIST SP 800-53 (public domain) as their canonical reference. Browse the full skill catalog at [skills.sh/open-agreements](https://skills.sh/open-agreements).
312
+
283
313
  ## Optional Content Roots (Future-Proofing)
284
314
 
285
315
  To support logical unbundling as form libraries grow, `open-agreements` can load content from additional roots via: