iWork Studio

Edición segura con IA para Apple Numbers, Keynote y Pages: presentaciones diseñadas, compatibles con árabe y deshacibles.

Documentación

iWork Studio — read and edit Apple Numbers, Keynote and Pages with Python

CI Version License: MIT iWork MCP server Arabic safe Undo

La forma segura de dejar que la IA edite tus archivos de Numbers, Keynote y Pages.

Presentaciones diseñadas a partir de tus datos y tu marca, verificadas tal como se renderizan. Listo para árabe.
Cada cambio se respalda, se verifica y se puede deshacer, y cualquier cosa arriesgada se rechaza, nunca se adivina.

🛡️ Nunca daña tu archivo🎨 Diseñado a partir de tus datosع Árabe de primera clase
Respaldo → cambia una copia → vuelve a leer y compara → intercambio atómico. Los archivos abiertos se dejan en paz. Una llamada deshace cualquier cambio.Convierte una hoja de cálculo en una presentación de Keynote con diapositivas de gráficos y tablas en tu kit de marca, luego revísala tal como se renderiza.El texto en árabe y de derecha a izquierda se conserva exactamente, en cada aplicación y cada exportación.

Instalar · Pruébalo · Seguridad · Lo que puede hacer · Todas las herramientas · Para agentes de IA · Registro de cambios


iWork Studio in 15 seconds: a prompt turns sales.numbers into a designed Keynote slide, a write that didn't match is rolled back with the file untouched, and the same slide comes back in Arabic, right to left

15 segundos: datos → presentación diseñada → una reversión segura → árabe. Video HD



iWork Studio in action: an AI agent edits a Numbers cell and keeps its formula, updates every Keynote slide without touching the formatting, and writes an Arabic letter in Pages

▶ Mira la película con sonido (46s) · Lee la historia de lanzamiento


Instalación

Tu aplicaciónHaz esto
Aplicación de escritorio de Claude, un clic (Mac)Descarga iwork-studio-<version>.mcpb desde la última versión, haz doble clic, elige las carpetas que puede usar
Aplicación de escritorio de Claude (Mac, desde Terminal)Pega en Terminal: curl -LsSf https://raw.githubusercontent.com/Arkanji/iwork-studio/main/install.sh | sh, luego cierra Claude (Cmd-Q) y vuelve a abrirlo
Claude Code, como plugin (herramientas + habilidad)/plugin marketplace add Arkanji/iwork-studio, luego /plugin install iwork-studio@iwork-studio
Claude Code, solo herramientasclaude mcp add iwork-studio -- uvx --from iwork-studio@latest iwork-studio-mcp
Cursor, VS Code, Codex, cualquier cliente MCPuvx --from iwork-studio@latest iwork-studio-mcp config, luego pega el JSON impreso en la configuración MCP del cliente. También está listado en el Registro MCP como io.github.Arkanji/iwork-studio

Eso es todo. El instalador configura uv si es necesario, y uv trae su propio Python.

  • Delimítalo (recomendado): … | sh -s -- --roots ~/Documents ~/Desktop lo limita a esas carpetas. Otros clientes: configura IWORK_STUDIO_ROOTS (separado por :).
  • Carga menos (opcional): ¿solo trabajas en Keynote? Configura IWORK_STUDIO_TOOLSETS=keynote,design (cualquiera de files, numbers, keynote, pages, design; por defecto todos). Menos herramientas mantienen a la IA enfocada y su contexto pequeño. La extensión de Claude Desktop tiene un campo Toolsets; en Claude Code: claude mcp add iwork-studio -e IWORK_STUDIO_TOOLSETS=keynote,design -- uvx --from iwork-studio@latest iwork-studio-mcp. Las capacidades, lectura, búsqueda, deshacer y la lista de kits siempre se cargan.
  • Primera ejecución: macOS pregunta una vez si Claude puede controlar Keynote / Pages / Numbers. Haz clic en OK. (¿Lo perdiste? Configuración del sistema → Privacidad y seguridad → Automatización.)
  • Verifícalo: pregunta "¿qué puede hacer iwork-studio en este Mac?".
  • Eliminar: uvx --from iwork-studio@latest iwork-studio-mcp uninstall

¿Un agente de IA configurando esto para alguien? Elige la fila para su aplicación, ejecútala, luego llama a iwork_capabilities. Las reglas para usar las herramientas están en AGENTS.md.

Solo pregunta, en inglés o árabe

¿No tienes un archivo a mano? Pregunta "copia los ejemplos de iWork Studio a mi Escritorio y convierte sample-sales.numbers en una presentación de junta". Los ejemplos son datos de ventas sintéticos con una hoja en inglés y una en árabe.

"Crea una presentación de 6 diapositivas para una startup de paneles solares con el kit midnight, con notas del presentador, y expórtala a PowerPoint."

"Convierte sales.numbers en una presentación de junta: grafica los trimestres, una tabla de las regiones principales, con nuestro kit Acme."

"Toma las fuentes y colores de brand.key y guárdalos como nuestro kit Acme."

"Revisa pitch.key y arregla cualquier cosa que se desborde o sea demasiado pequeña para leer."

"Haz que budget.numbers se vea profesional con el kit bancario — y muéstrame una vista previa primero."

"Convierte sales.csv en un archivo de Numbers, haz el encabezado en negrita con relleno verde azulado, muestra la columna B como SAR con dos decimales, y agrega una fila de totales."

"En pitch.key, cambia al tema Gradient, haz el título de la diapositiva 1 blanco a 60 pt, agrega una disolución entre cada diapositiva, y pon logo.png en la última diapositiva."

"Agrega un gráfico de barras de ingresos por trimestre para 2025 y 2026 a la diapositiva 4."

"Duplica la diapositiva 3, mueve el texto al frente y agrega notas del presentador: ملاحظات المتحدث"

"Completa los campos Nombre y Fecha en offer-letter.pages, luego expórtalo como PDF protegido con contraseña."

"En la tabla de invoice.pages, establece la cantidad en B3 a 12 y haz que D9 sea el total de D2:D8."

"Encuentra mis presentaciones de Keynote de esta semana y exporta cada una a PowerPoint."

"Deshaz el último cambio en budget.numbers."

Lo que puede hacer

NumbersKeynotePages
LeerCada hoja, tabla, celda, fórmula y formatoEl texto, notas, diseño, tema, estilo y gráficos de cada diapositivaTexto del cuerpo, marcadores de posición y tablas
CrearDesde datos o CSV ⚡ · desde una plantilla integrada · desde tu propio archivoUna presentación diseñada desde un esquema, con diapositivas de gráficos y tablas (directamente desde una tabla de Numbers) · desde un tema integrado · desde tu propia presentaciónDesde una plantilla integrada · desde tu propio archivo
Editar contenidoCeldas ⚡ · fórmulas · recalcular · insertar/eliminar filas y columnas ⚡ · agregar tablas y hojas ⚡ · ordenarBuscar/reemplazar en toda la presentación ⚡ · títulos de diapositivas y viñetas · agregar, duplicar, eliminar, mover, ocultar diapositivas · notas del presentador · imágenes · gráficos · tablasReemplazar texto en todas partes · reemplazar el cuerpo · completar marcadores de posición · celdas de tabla (texto, números, fórmulas)
DiseñarKits de diseño ⚡ · tu kit de marca ⚡ · fuentes, colores, relleno, alineación, ajuste ⚡ · moneda, %, fechas, decimales ⚡ · bordes ⚡ · anchos y altos ⚡ · encabezados ⚡ · fusiones ⚡Kits de diseño · tu kit de marca · tema · diseño de diapositiva · fuente, tamaño y color de texto · tablas con estilo · transiciones—
RevisarRevisión de diseño de lo que Keynote dibuja: texto fuera de la diapositiva o más allá de su caja, texto que Keynote tuvo que encoger, superposiciones, texto pequeño, diapositivas abarrotadas · cualquier diapositiva como imagen
ExportarPDF · Excel · CSVPDF · PowerPoint · imágenes · películaPDF · Word · EPUB · texto · RTF
PresentarIniciar, detener, siguiente, anterior

⚡ = funciona en cualquier lugar, sin necesidad de aplicación (Python puro). Todo lo demás maneja la aplicación real en un Mac con una sesión iniciada, iWork clásico o las aplicaciones Creator Studio.

Cada tipo de archivo: previsualiza cualquier cambio antes de que se haga (dry_run), consulta metadatos, extrae la miniatura de vista previa, encuentra archivos con Spotlight, verifica que una palabra se muestre visiblemente, verifica la fuente/tamaño/color renderizados, lista respaldos y deshacer.

Lo que no hará

A propósito, para que nunca rompa un archivo:

  • Los archivos con gráficos son rechazados por las herramientas que funcionan sin la aplicación: su reescritura puede romper silenciosamente el vínculo de un gráfico con sus datos. Las herramientas impulsadas por la aplicación (diapositivas de Keynote, temas, transiciones, imágenes; fórmulas y ordenamiento de Numbers) funcionan en ellos y verifican que cada gráfico siga ahí.
  • Los gráficos en Numbers y Pages no se crean: no son confiablemente scriptables, y preferimos rechazar antes que hacer clic en los menús de la aplicación y arriesgar tu archivo. Los gráficos de Keynote se pueden agregar. Para graficar datos ordenados sin tocar un gráfico de Numbers, ordena en una tabla nueva (numbers_sort con to_new_table) y crea una diapositiva de gráfico de Keynote a partir de ella.
  • Pages se limita a texto y tablas existentes: reemplazar, establecer cuerpo, marcadores de posición y celdas de tabla. No se pueden crear tablas nuevas (Pages 15 no lo scripta), y los documentos de diseño de página, como la mayoría de las plantillas de cartas, no tienen texto de cuerpo. No hay un analizador de formato de archivo de Pages en ningún lugar, así que no finge uno.
  • Fórmulas y desplazamientos de filas: en una tabla que tiene fórmulas, las filas y columnas solo se pueden agregar sin la aplicación. Insertar en el medio dejaría referencias apuntando a las celdas equivocadas.
  • No scriptable por Apple, así que no se ofrece: estilos de tabla de Numbers, relleno de formas y alineación de texto en Keynote, eliminar una tabla de Keynote, editar las diapositivas maestras de un tema. Los márgenes de página y la configuración de página están planificados.

Diseñado, no solo editado

Seis kits de diseño convierten una presentación o tabla simple en algo que presentarías: un par de fuentes (latín + árabe, todas incluidas con macOS — nada que instalar), una paleta sobria verificada por contraste WCAG, y una escala tipográfica.

KitSensación
executiveCalmado y corporativo: neutros gris pizarra, un acento azul
bankingConfianza y peso: azul marino profundo, dorado sobrio
classicInformes formales y juntas: encabezados serif, azul marino y ámbar
tealFresco y seguro: verde azulado profundo
analyticsOrientado a datos: azul fuerte, resaltados ámbar
midnightEscenario oscuro: diapositivas casi negras, títulos blancos, acento menta

Construye con uno (keynote_build_deck(..., kit="midnight")), reestiliza cualquier cosa (keynote_apply_design, numbers_apply_design), o trae tu marca como colores y fuentes — el contraste se verifica. Los agentes también obtienen una guía de diseño: una idea por diapositiva, títulos que expresan la conclusión, números alineados a la derecha, color sobrio.

Tu marca, una vez. Apunta iwork_extract_design_kit a una presentación o tabla que ya tenga tu estilo: lee las fuentes (latín y árabe) y los colores, y los guarda como un kit con nombre que puedes usar en cualquier lugar donde se use un kit. O guarda tus colores y fuentes directamente con iwork_save_design_kit.

Numbers en diapositivas. Una diapositiva en keynote_build_deck puede llevar un gráfico o una tabla, desde datos o directamente desde una tabla de Numbers: la fila de encabezado da las columnas, la primera columna las filas. Las tablas obtienen la banda de encabezado del kit, fuentes, bandas y números alineados a la derecha, y cada celda se lee de vuelta.

Verifica su propio trabajo. keynote_review_deck renderiza la presentación a través de Keynote y compara cada línea dibujada con su caja de texto: texto fuera de la diapositiva o más allá de su caja es un error; texto que Keynote tuvo que encoger para que quepa, cajas superpuestas, texto menor de 18 pt y diapositivas abarrotadas son advertencias. keynote_slide_image devuelve una diapositiva como imagen, para que un agente pueda mirar antes de decir "listo".

El modelo de seguridad

Una aplicación de iWork dirá felizmente "guardado" sobre un archivo que acaba de romper. Nada aquí confía en "guardado".

backup → change a scratch copy → re-open it and compare → atomic swap
                       ↘ anything off: your file is untouched, the error says why
  • Haz una copia de seguridad primero, versionada y privada: en ~/.iwork-studio/backups/ (o IWORK_STUDIO_BACKUP_DIR), nunca junto a tu archivo, para que las copias no llenen ni sincronicen tu iCloud Escritorio y Documentos. Se conservan las últimas 10 por archivo.
  • Nunca a espaldas de la app: si el archivo está abierto en Numbers, Keynote o Pages, la escritura se rechaza. El siguiente guardado de la app sobrescribiría silenciosamente el cambio.
  • Relectura y comparación: exactamente el cambio solicitado ocurrió, y nada más. Una edición de celda lee la celda editada y verifica todas las demás. Una inserción de fila verifica cada celda en su nueva posición. Una operación de diapositiva verifica todas las demás diapositivas. Una ordenación verifica que sea una reorganización pura, y se rechaza de antemano cuando las fórmulas de la tabla leen otras filas (la propia ordenación de Numbers las rompería). En archivos con gráficos, cada gráfico se cuenta antes y después; en presentaciones con tablas, se comparan las celdas de cada tabla. Una exportación se relee con una segunda herramienta independiente.
  • Intercambio atómico: el archivo se reemplaza en un solo paso, por lo que un fallo no puede dejar medio archivo.
  • El "ok" de la app nunca se confía. Las escrituras impulsadas por la app se releen del disco, y una escritura que "tuvo éxito" pero no se aplicó se revierte.
  • Deshacer es una llamada: iwork_list_backups → iwork_restore_backup. La restauración hace una copia de seguridad de la versión actual primero, para que deshacer también se pueda deshacer.
  • Vista previa primero: cada escritura que cambia un documento existente toma dry_run=true (restaurar y exportar son las excepciones). Ejecuta el cambio real en una copia desechable, con todas las verificaciones, y muestra exactamente qué cambiaría. Tu archivo no se toca.
  • Buscar y reemplazar conserva el formato: en Pages, solo se reescriben los párrafos que contienen el texto.
  • Los archivos nuevos nunca sobrescriben uno existente.
  • Rechazar, no mutilar. El peor caso es un "no" claro, nunca un archivo roto.

Árabe y RTL

  • El texto árabe viaja de ida y vuelta exactamente en las tres apps, incluyendo notas del presentador, marcadores de posición de Pages y celdas de tabla de Pages.
  • La dirección del párrafo se verifica en Pages. Un reemplazo que cambia un párrafo de derecha a izquierda a izquierda a derecha se revierte. Pages escribe nuevos párrafos de izquierda a derecha, incluso los árabes, y los scripts no pueden cambiar eso, por lo que se marcan: establece la dirección en Pages (Formato › Texto).
  • Los valores se mantienen como se escribieron: dígitos arábigo-indios (١٢٣), "$1,234.56" y =… el texto sigue siendo texto. Pasa un número real cuando quieras un número.
  • Al verificar un PDF renderizado, afirma una palabra árabe. Las capas de texto de PDF reordenan texto RTL de múltiples palabras.

Las 65 herramientas

Las escrituras se marcan como destructivas y las lecturas como solo lectura, para que los clientes puedan preguntar antes de escribir. Cada escritura que cambia un archivo existente toma dry_run=true para una vista previa. Cada herramienta tiene un título, cada parámetro una descripción, y cada herramienta dice cuándo usarla en lugar de sus hermanas. ¿Necesitas menos? Carga solo algunos conjuntos de herramientas (ver Cargar menos en Instalar).

Cualquier archivo (17)
HerramientaQué hace
iwork_capabilitiesLo que esta máquina puede hacer: apps, sesión GUI, qué rutas funcionan
iwork_readCualquier .numbers / .key / .pages → JSON
iwork_findEncuentra archivos de iWork por tipo y nombre (Spotlight en una Mac)
iwork_samplesCopia archivos de muestra (datos de ventas sintéticos, inglés y árabe) para probarlo sin nada propio
iwork_metadata · iwork_thumbnailPlantilla, compilaciones de la app, versión del formato, número de diapositivas · la imagen de vista previa almacenada
iwork_create · iwork_create_from_templateNuevo archivo desde las plantillas integradas de Apple · copia de tu propio archivo
iwork_list_templatesPlantillas integradas (Numbers, Pages) y temas (Keynote)
iwork_list_design_kitsKits de diseño: fuentes, paletas, escala tipográfica — ajustes preestablecidos y tus kits guardados
iwork_extract_design_kitUn kit de tu propia presentación o tabla: sus fuentes y colores; guárdalo por nombre
iwork_save_design_kit · iwork_delete_design_kitMantén tu kit de marca por nombre · elimina uno
iwork_exportPDF, Excel, CSV, Word, EPUB, texto, RTF, PowerPoint, imágenes de diapositivas, película; contraseña opcional
iwork_verify_render · iwork_verify_formatEl PDF renderizado muestra este texto · con esta fuente, tamaño, color, tamaño de página
iwork_list_backups · iwork_restore_backupDeshacer
Numbers (17)
HerramientaQué hace
numbers_create · numbers_import_csvNuevo archivo desde filas de datos · desde un CSV/TSV
numbers_edit_cellEstablecer una celda
numbers_set_formulaPoner una fórmula en una celda; Numbers la calcula
numbers_recalculateHacer que Numbers recalcule cada fórmula después de ediciones hechas sin él
numbers_insert · numbers_deleteFilas o columnas, en cualquier lugar
numbers_add_tableNueva tabla en una hoja, o en una hoja nueva
numbers_sortOrdenar filas de cuerpo por una columna. Una tabla cuyas fórmulas leen otras filas se rechaza, ya que la ordenación de Numbers las rompería; to_new_table pone una copia ordenada de sus valores en una nueva tabla y deja el original, sus fórmulas y sus gráficos intactos
numbers_inspect_formatAnchos, alturas, encabezados, fusiones, y el estilo de cada celda, formato de número y bordes
numbers_set_cell_styleFuente, tamaño, negrita/cursiva/subrayado/tachado, colores, relleno, alineación, ajuste
numbers_set_number_formatNúmero, moneda (cualquier código ISO), %, científico, fracción, fecha, texto; decimales, separadores, negativos
numbers_set_bordersTodo / contorno / interior / un lado; ancho, color, estilo
numbers_set_dimensions · numbers_set_headers · numbers_merge_cellsAnchos de columna y alturas de fila · filas/columnas de encabezado · fusiones
Keynote (23)
HerramientaQué hace
keynote_build_deckUna nueva presentación desde un esquema: títulos, viñetas, notas, imágenes, diapositivas de gráficos y tablas, transición, kit de diseño
keynote_review_deckRevisión de diseño de la presentación renderizada: texto fuera de la diapositiva y desbordado, superposiciones, texto pequeño, diapositivas abarrotadas
keynote_slide_imageUna diapositiva como imagen, para mirarla
keynote_set_slide_textRellenar el título y el cuerpo de una diapositiva
keynote_apply_designReestilizar cada diapositiva desde un kit de diseño
keynote_replace_textBuscar/reemplazar en cada diapositiva, formato intacto
keynote_list_slidesTexto de cada diapositiva, notas, estado oculto y recuento de gráficos
keynote_add_slide · keynote_duplicate_slide · keynote_delete_slide · keynote_move_slide · keynote_skip_slideOperaciones de diapositiva
keynote_set_presenter_notesNotas del presentador
keynote_list_themes · keynote_inspect_styleTemas disponibles · el tema de una presentación, diseños y estilo de texto
keynote_set_theme · keynote_set_slide_layout · keynote_format_textTema · el diseño de una diapositiva · la fuente, tamaño, color de un elemento de texto
keynote_set_transitionEfecto, duración, retraso, avance automático
keynote_add_imageColocar una imagen en una diapositiva
keynote_add_chartAñadir un gráfico de barras, líneas, áreas, circular o de dispersión desde datos
keynote_add_tableAñadir una tabla, estilizada desde un kit de diseño; cada celda se lee de vuelta
keynote_slideshowIniciar, detener, siguiente, anterior
Pages (7)
HerramientaQué hace
pages_preflightVerifica que Pages puede responder (ejecutar una vez primero)
pages_replace_all · pages_set_bodyReemplazar texto en todas partes · reemplazar todo el cuerpo (restablece su formato)
pages_list_placeholders · pages_fill_placeholdersCampos de plantilla como Nombre y Fecha
pages_read_tables · pages_set_table_cellsLeer cada tabla · escribir texto, números y fórmulas en una tabla existente

Las herramientas de diapositiva, tema, transición e imagen de Keynote rechazan una presentación abierta en Keynote (nunca cierran una ventana que pueda contener trabajo sin guardar). Para ocultarlas todas: IWORK_STUDIO_DISABLE_SLIDE_OPS=1.

Prompts. Los clientes que muestran prompts de MCP obtienen cuatro flujos de trabajo listos: Presentación de pitch desde un esquema, Presentación de informe desde una tabla de Numbers, Reestilizar con mi marca y Hacer que esta tabla se vea diseñada. Cada uno escribe a las reglas de diseño, construye en una llamada, muestra vista previa antes de reestilizar, y ejecuta la revisión de diseño antes de dar el trabajo por terminado.

Para agentes de IA

  • AGENTS.md: reglas de configuración y uso para cualquier agente (Codex, Cursor, Copilot, Gemini; Claude Code lo lee vía CLAUDE.md).
  • Instrucciones de MCP: el servidor envía sus reglas al conectarse, para que el modelo las tenga incluso sin este repositorio.
  • Skill: skill-pack/SKILL.md, auto-descubierto por Claude Code en este repositorio, o bash skill-pack/install.sh para otros agentes basados en skills. Incluye scripts CLI con salida JSON para agentes sin MCP.
  • llms.txt: un resumen corto legible por máquina.

El contrato: JSON entra, JSON sale. Los errores están tipados y dicen qué decirle al usuario: ChartRefusalError, DocumentOpenError, PagesOutOfScopeError, AquaSessionError (no hay GUI de Mac aquí) y así sucesivamente. No reintentes una escritura rechazada con un truco.

Python

pip install iwork-studio      # Python 3.12
from iwork_studio import numbers_structure, numbers_format, numbers_io, keynote_io, keynote_slides, exporter, backups

from iwork_studio import keynote_deck, design, review

keynote_deck.build_deck("pitch.key", [{"title": "شمس", "body": "Clean energy for every home"},
                                      {"title": "Why now", "body": ["Trust", "Access"]},
                                      {"title": "Riyadh leads growth", "chart": {"type": "bar", "from": "sales.numbers"}}],
                        kit="midnight")                                  # macOS + Keynote
review.review_deck("pitch.key")["findings"]                              # macOS + Keynote
design.extract_kit("brand.numbers", name="Acme", save=True)
numbers_structure.import_csv("sales.csv", "sales.numbers")
design.apply_to_numbers("sales.numbers", "banking")
numbers_format.set_cell_style("sales.numbers", "A1:D1", bold=True, fill_color="#1A7F79", font_color="#FFFFFF")
numbers_format.set_number_format("sales.numbers", "B2:B99", "currency", currency_code="SAR", decimal_places=2)
numbers_io.edit_cell("sales.numbers", "B2", 2500)
keynote_io.edit_text("pitch.key", "2025", "2026")
keynote_slides.set_presenter_notes("pitch.key", 1, "ملاحظات")          # macOS + Keynote
exporter.export("pitch.key", "pptx")                                     # macOS + Keynote
backups.restore_backup("sales.numbers", backups.list_backups("sales.numbers")[0]["name"])
Trampas que mapeamos para que tu agente no las golpee 1. **`save in ` es denegado por la sandbox de iWork.** `save` y `export` en el lugar funcionan. → [`sandbox-trap.md`](https://github.com/Arkanji/iwork-studio/blob/main/skill-pack/references/sandbox-trap.md) 2. **Las propiedades de diapositiva `title`/`body` de Keynote lanzan `-1700`.** Usa el `object text` del elemento de texto. → [`keynote-1700-defect.md`](https://github.com/Arkanji/iwork-studio/blob/main/skill-pack/references/keynote-1700-defect.md) 3. **Los archivos de gráficos se corrompen silenciosamente** cuando las bibliotecas a nivel de archivo los reescriben, por lo que esas rutas los rechazan. Cuando la aplicación hace la edición, mantiene sus propios gráficos vinculados, por lo que las rutas impulsadas por la aplicación los permiten y cuentan cada gráfico antes y después. 4. **No existen guardados byte-idénticos** en el formato de iWork. El estándar real es semántico: se reabre y el modelo completo coincide. 5. **Los diálogos de permisos de primera ejecución y de selector de plantillas** bloquean cada llamada de script. Una verificación previa convierte la espera en un aviso claro. → [`tcc-preflight.md`](https://github.com/Arkanji/iwork-studio/blob/main/skill-pack/references/tcc-preflight.md) 6. **Las aplicaciones de "Creator Studio" tienen nombres diferentes.** Un `Application("Numbers")` codificado impulsa la aplicación incorrecta; los nombres se resuelven por llamada. → [`apps.py`](https://github.com/Arkanji/iwork-studio/blob/main/src/iwork_studio/apps.py) 7. **stdout es el cable MCP.** Las advertencias de importación de bibliotecas lo corromperían, por lo que van a stderr. 8. **La inserción y el movimiento de JavaScript de Keynote están rotos**; `make new slide` y `move slide … to before slide …` de AppleScript funcionan. 9. **Las diapositivas maestras de Keynote no se pueden alcanzar desde JavaScript** (`-1700`); los diseños pasan por AppleScript. 10. **numbers-parser no guarda ediciones de estilo en el lugar.** Los estilos se registran primero y luego se aplican. 11. **numbers-parser almacenaba 12 como 12.000000000000002.** Los decimales ahora se codifican exactamente. 12. **numbers-parser no actualiza las referencias de fórmulas cuando las filas se mueven**, por lo que las inserciones en medio de tablas con fórmulas se rechazan. 13. **Los colores de Keynote son 0–65535 por canal**, no 0–255 ni 0–1. 14. **Los documentos de diseño de página de Pages no tienen texto de cuerpo** (`bodyText()` es nulo), y la mayoría de las plantillas de cartas y volantes son de diseño de página. Los marcadores de posición se completan y verifican en cada cuadro de texto en su lugar. 15. **Las tablas de Pages son invisibles para los scripts de JavaScript**, pero legibles y escribibles desde AppleScript; crear tablas está roto en Pages 15, por lo que solo se ofrecen tablas existentes. 16. **La sandbox de Pages rechaza `open` de AppleScript** para archivos fuera de ella; `open` de JavaScript está permitido, por lo que los documentos se abren de esa manera y luego se encuentran por su ruta exacta. 17. **numbers-parser puede romper fórmulas al re-guardar** (un informe ascendente). Cada escritura sin aplicación compara cada fórmula, por lo que una rota se detecta y nada cambia. 18. **Numbers no recalcula fórmulas cuando abre un archivo cambiado sin él**: un total mantiene su resultado anterior. Las ediciones hechas sin la aplicación lo indican, y `numbers_recalculate` hace que Numbers recalcule cada fórmula. 19. **Una biblioteca de redondeo usada por numbers-parser borra cada filtro de advertencia en el proceso** en cada guardado. Está envuelta para que permanezca silenciosa sin tocar la configuración de los demás. 20. **No mantengas el repositorio en iCloud Drive.** La sincronización crea copias "main 2" dentro de `.git`. 21. **Keynote crea tablas solo de una manera**: `tell slide n to make new table` funciona, mientras que `make new table at end of tables of slide n` y eliminar una tabla fallan con `-10000`. Una adición de tabla fallida se deshace restaurando la copia de seguridad.

Más, cada uno con su estado: jxa-traps.md (incluyendo trampas tomadas de reichenbach/iwork_mcp).

Cómo está construido
pure Python file parsers (headless, deterministic)  →  .numbers everything, .key text
the real app via AppleScript / JXA                   →  .key slides & theming, .pages text & tables, formulas, sort, export, render checks
MCP server · CLI scripts · skill                     →  thin wrappers over the same library and the same safety model
src/iwork_studio/   numbers_io · numbers_format · numbers_structure · keynote_io · keynote_slides · keynote_theme
                    keynote_deck · keynote_table · design · review · preview · pages_io · app_ops · exporter
                    helpers · format_check · render_verify · pdf · backups · apps · mcp_server
mcpb/               Claude Desktop extension manifest (scripts/build_mcpb.sh builds the .mcpb)
skill-pack/         SKILL.md · CLI scripts · references (capabilities, traps, pins); also the Claude Code plugin
.claude-plugin/     plugin marketplace (one plugin: skill-pack/)
tests/              headless suite (CI) · `pytest -m aqua` = live suite for a Mac with iWork
install.sh          one-line setup for the Claude desktop app

Contribuyendo

git clone https://github.com/Arkanji/iwork-studio.git && cd iwork-studio
uv run --extra test pytest -m "not aqua"      # headless suite, what CI runs
uv run --extra test pytest -m aqua            # live suite: a Mac with Numbers, Keynote and Pages
scripts/live.sh                               # the same, unattended: logs to ~/.iwork-studio/probes, quits the apps it opened

iWork cambia entre versiones. Si algo se rompe, revisa las capacidades y trampas, ejecuta la suite en vivo y fija qué cambió. Las nuevas rutas de escritura deben seguir el modelo de seguridad y venir con pruebas que demuestren la reversión. Clona fuera de carpetas sincronizadas con iCloud.

Licencia

MIT, trampas incluidas. Tómalas.