{"_id":"@alexprietoromani/research-suite","name":"@alexprietoromani/research-suite","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"@alexprietoromani/research-suite","version":"1.1.0","description":"Suite de investigacion y documentacion: descubre literatura via MCP (openalex/arxiv), redacta informes, grafica datos, diagrama flujos y exporta a .tex/.pdf/.docx.","keywords":["opencode-plugin","claude-code-plugin","research","literature","citations","latex","pandoc"],"license":"MIT","author":{"name":"Alex Prieto Romani"},"homepage":"https://github.com/AlexPrietoRomani/research-suite","repository":{"type":"git","url":"git+https://github.com/AlexPrietoRomani/research-suite.git"},"bugs":{"url":"https://github.com/AlexPrietoRomani/research-suite/issues"},"main":"./.opencode/plugins/research-suite.mjs","exports":{".":"./.opencode/plugins/research-suite.mjs","./plugin":"./.opencode/plugins/research-suite.mjs"},"publishConfig":{"access":"public"},"gitHead":"dbb2c8a3f10c6e028109c8fb04f6b99b9e39f0e7","_id":"@alexprietoromani/research-suite@1.1.0","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-V+g10FHcLZqDYhnEpajNMdpKNC9NXM8IkvvzKCF8s1pZg5ehIGD51hkx3vFQ5tQJh5UQ7p4qbp1W2h7HhAnGcw==","shasum":"2d6458c931bc83c5f7a001dd6050be297033cc05","tarball":"https://registry.npmjs.org/@alexprietoromani/research-suite/-/research-suite-1.1.0.tgz","fileCount":47,"unpackedSize":152898,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD09WM14PZNeFGDPlQVX07cDLRZbLlkOmvv4idtwVpkrAIgX7cFVp8BU+FmMqp0VwVEkVq4S4oylThFF4bbuPD2SMw="}]},"_npmUser":{"name":"alexprietoromani","email":"alexprieto1997@gmail.com"},"directories":{},"maintainers":[{"name":"alexprietoromani","email":"alexprieto1997@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/research-suite_1.1.0_1784240921888_0.35942650492506245"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T22:28:41.680Z","1.1.0":"2026-07-16T22:28:42.016Z","modified":"2026-07-16T22:28:42.261Z"},"maintainers":[{"name":"alexprietoromani","email":"alexprieto1997@gmail.com"}],"description":"Suite de investigacion y documentacion: descubre literatura via MCP (openalex/arxiv), redacta informes, grafica datos, diagrama flujos y exporta a .tex/.pdf/.docx.","homepage":"https://github.com/AlexPrietoRomani/research-suite","keywords":["opencode-plugin","claude-code-plugin","research","literature","citations","latex","pandoc"],"repository":{"type":"git","url":"git+https://github.com/AlexPrietoRomani/research-suite.git"},"author":{"name":"Alex Prieto Romani"},"bugs":{"url":"https://github.com/AlexPrietoRomani/research-suite/issues"},"license":"MIT","readme":"<h1 align=\"center\">research-suite</h1>\r\n\r\n<p align=\"center\">\r\n  <em>Cada afirmación con su cita. Sin fuente, no se escribe.</em>\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <img src=\"https://img.shields.io/badge/version-0.2.0-111111?style=flat-square\" alt=\"Version\">\r\n  <img src=\"https://img.shields.io/badge/works%20with-Claude%20Code%20%7C%20opencode-111111?style=flat-square\" alt=\"Works with Claude Code and opencode\">\r\n  <img src=\"https://img.shields.io/badge/license-MIT-111111?style=flat-square\" alt=\"MIT license\">\r\n</p>\r\n\r\n---\r\n\r\nLe pides un informe a un agente sin este plugin y te da prosa segura y fluida sin una sola fuente real detrás — cifras de memoria, \"estudios demuestran\", nada que puedas verificar.\r\n\r\nCon research-suite, cada afirmación factual del documento final lleva un DOI, un arXiv ID o una URL. Si no hay fuente, no se escribe: se reformula como hipótesis explícita o se elimina.\r\n\r\n## Antes / después\r\n\r\n**Sin el plugin**, un informe típico suena así:\r\n\r\n```\r\nLos modelos de horas frío subestiman la floración en climas tropicales,\r\nsegún diversos estudios recientes.\r\n```\r\n\r\nCero fuentes. No puedes verificar nada de esa oración.\r\n\r\n**Con `investigar` + `redactar-informe`:**\r\n\r\n```\r\nEl Dynamic Model supera al umbral fijo (HF ≤ 7 °C) en zonas tropicales porque\r\ncaptura la destrucción térmica del intermediario de frío [@fishman1987b],\r\naunque no está calibrado para *Vaccinium* [@lobos2015].\r\n```\r\n\r\nCada claim, su cita. `refs.bib` lo genera `investigar`; `exportar` lo formatea al estilo que pidas (APA, Vancouver, el que sea) vía Pandoc + CSL.\r\n\r\n## Cómo funciona\r\n\r\n```\r\ninvestigar          redactar-informe          graficar-datos  (datos → matplotlib/seaborn/ggplot2)    exportar\r\n(openalex/arxiv) → (técnico/científico/    → diagramar        (flujos → Mermaid/Graphviz)          → (.md → .tex/.pdf/.docx\r\n + web → refs.bib   mercado/general, .md)     generar-figuras  (proceso, para publicar → paperbanana)   vía Pandoc + LaTeX)\r\n```\r\n\r\n1. **`investigar`** descubre fuentes reales (openalex para impacto/tendencias, arxiv para full-text, web para lo no académico) y las devuelve trazables en `refs.bib`. Temas amplios se paralelizan con el agente `investigador`, uno por sub-tema.\r\n2. **`redactar-informe`** convierte ese mapa de fuentes en un documento — técnico, científico, de mercado o general — cada afirmación anclada a su cita.\r\n3. **Visuales por tipo, no por capricho:** datos siempre vía código (`graficar-datos`, nunca IA generativa para gráficos); flujos/procesos en Mermaid/Graphviz (`diagramar`); solo las figuras de publicación pasan por `generar-figuras` (paperbanana).\r\n4. **`exportar`** convierte el `.md` final a `.tex`/`.pdf`/`.docx` con Pandoc + TeX Live, resolviendo las citas de `refs.bib`.\r\n5. **`/revisar-informe`** lanza `revisor-informe` + `verificador-citas` en paralelo antes de cerrar: estructura, registro, lenguaje-IA, DOIs huérfanos, citas retractadas.\r\n\r\nIdioma de salida: **español o inglés** (`default_output_language`, por defecto español; pídelo distinto por documento).\r\n\r\n## Skills\r\n\r\n| Skill | Rol | Herramienta |\r\n|---|---|---|\r\n| `investigar` | Descubre y sintetiza fuentes | MCP openalex, arxiv, web |\r\n| `redactar-informe` | Redacta según tipo de documento | MCP context7 |\r\n| `graficar-datos` | Grafica **datos** vía código | matplotlib/seaborn (Python), ggplot2 (R) |\r\n| `diagramar` | Diagramas de **flujo/proceso/esquema** para `.md` | Mermaid (por defecto), Graphviz |\r\n| `generar-figuras` | Figuras de **proceso/metodología** para publicar | MCP paperbanana |\r\n| `exportar` | Convierte el `.md` a **.tex / .pdf / .docx** con citas | Pandoc + TeX Live (xelatex) |\r\n\r\n**Regla de visuales:** datos = código, siempre — nunca paperbanana para un gráfico de barras. paperbanana es solo para la figura de proceso/metodología con calidad de publicación.\r\n\r\n## Agentes\r\n\r\n| Agente | Rol | Se lanza en… |\r\n|---|---|---|\r\n| `investigador` | Explora un sub-tema y devuelve fuentes + BibTeX, sin redactar | `investigar` (paralelo, uno por sub-tema) |\r\n| `revisor-informe` | Revisión crítica: estructura, registro, claims, lenguaje-IA, rigor | `/revisar-informe` |\r\n| `verificador-citas` | Integridad de citas: huérfanas, DOIs, afirmación↔fuente, retractadas | `/revisar-informe` (paralelo con el revisor) |\r\n\r\n## Comandos\r\n\r\n| Comando | Qué hace |\r\n|---|---|\r\n| `/research-suite [tema]` | Pipeline completo: tipo → investiga (con agentes) → redacta → visuales → revisa → exporta. Pide solo investigar y se detiene ahí. |\r\n| `/revisar-informe [ruta]` | Revisa un documento existente con `revisor-informe` + `verificador-citas` en paralelo. |\r\n\r\nTipos de documento: `informe-tecnico` · `articulo-cientifico` · `analisis-mercado` · `general` (plantilla propia en `skills/redactar-informe/references/`).\r\n\r\n## Install\r\n\r\n### Claude Code\r\n\r\n```\r\n/plugin marketplace add AlexPrietoRomani/research-suite\r\n/plugin install research-suite@research-suite-marketplace\r\n```\r\n\r\n(Envía los dos comandos como prompts separados)\r\n\r\nLa app de escritorio no tiene `/plugin`. Instálalo desde la UI: Customize → el + junto a personal plugins → Create plugin and add marketplace → Add from repository → pega la URL del repo.\r\n\r\nTrae sus propios MCP (`arxiv`, `openalex`, `paperbanana`, `context7`) vía `.mcp.json` — no hay que configurarlos a mano. Si ya tienes alguno a nivel usuario, el tuyo gana (precedencia de scope) y el del plugin se ignora, sin duplicados.\r\n\r\nCredenciales pedidas al activar (`userConfig`, las sensibles van al keychain):\r\n\r\n| Config | Para | Sensible |\r\n|---|---|---|\r\n| `context7_api_key` | context7 | Sí |\r\n| `google_api_key` | paperbanana (Gemini) | Sí |\r\n| `openalex_mailto` | openalex (polite pool) | No |\r\n| `arxiv_storage_path` | cache de papers de arxiv | No |\r\n| `default_output_language` | idioma de salida (es \\| en) | No |\r\n\r\n### opencode\r\n\r\n**Desde npm (recomendado, sin clonar):**\r\n\r\n```json\r\n{ \"plugin\": [\"@alexprietoromani/research-suite\"] }\r\n```\r\n\r\n**Desde checkout local:**\r\n\r\nEl repo trae un árbol generado desde la misma fuente:\r\n\r\n- `.opencode/skills/` — las 6 skills (SKILL.md nativo de opencode)\r\n- `.opencode/command/` — `/research-suite`, `/revisar-informe` (sin prefijo)\r\n- `.opencode/agent/` — los 3 subagentes (`mode: subagent`)\r\n- `.opencode/plugins/research-suite.mjs` — plugin que registra comandos y skills\r\n- `opencode.json` — los 4 MCP, reescritos a formato opencode con `{env:VAR}`\r\n\r\nExporta las variables de entorno necesarias antes de usar: `ARXIV_STORAGE_PATH`, `OPENALEX_MAILTO`, `GOOGLE_API_KEY`, `CONTEXT7_API_KEY`.\r\n\r\nAbre opencode dentro del repo (lee `.opencode/` + `opencode.json` solo), o copia `.opencode/*` a `~/.config/opencode/` y fusiona el bloque `mcp`.\r\n\r\n> `.opencode/` y `opencode.json` son **generados**, no los edites a mano. Tras tocar `skills/`, `commands/`, `agents/` o `.mcp.json`: `python scripts/sync_opencode.py`.\r\n\r\n### Gemini CLI\r\n\r\n```\r\ngemini extensions install https://github.com/AlexPrietoRomani/research-suite\r\n```\r\n\r\nCarga las reglas como contexto siempre activo y registra los comandos `/research-suite` y `/revisar-informe` de forma automática usando `gemini-extension.json`.\r\n\r\n### Antigravity CLI\r\n\r\nEl binario `agy` es la evolución de Gemini CLI; la misma extensión funciona ahí:\r\n\r\n```\r\nagy plugin install https://github.com/AlexPrietoRomani/research-suite\r\n```\r\n\r\nReutiliza `gemini-extension.json` para registrar los comandos y skills automáticamente. En Antigravity los comandos se escriben directamente como mensajes en el chat (por ejemplo, `/revisar-informe` como mensaje).\r\n\r\n## Dependencias externas\r\n\r\n| Herramienta | Para | Estado |\r\n|---|---|---|\r\n| Pandoc 3.10 | exportar → PDF/LaTeX/DOCX | Instalado |\r\n| TeX Live 2026 (`xelatex`) | compilar PDF | Instalado |\r\n| strata-reader | arxiv PDF → Markdown (ahorra tokens) | `pip install strata-reader` |\r\n| gh CLI | flujos de PR/issues | Instalado |\r\n\r\n## FAQ\r\n\r\n**¿Puedo pedir solo investigación, sin redactar?**\r\nSí — `/research-suite` se detiene tras `investigar` si eso es lo único que pides. Entrega el mapa de fuentes + `refs.bib` + síntesis.\r\n\r\n**¿Qué pasa si una fuente no tiene DOI ni URL confiable?**\r\nNo se cita. Se marca `[sin fuente verificada]` o se reformula como hipótesis — nunca se inventa un respaldo.\r\n\r\n**¿Por qué separa datos (código) de figuras de publicación (paperbanana)?**\r\nPorque un gráfico de barras generado por IA puede alucinar valores; el mismo gráfico hecho con matplotlib sobre tus datos reales, no. paperbanana queda para ilustraciones de proceso donde no hay \"datos\" que graficar mal.\r\n\r\n## Licencia\r\n\r\nMIT.\r\n","readmeFilename":"README.md","_rev":"1-ad98dce98fad96871457e62de52efee6"}