TeamShared

Memoria compartida para agentes de codificación. Deja de reexplicar tu base de código en cada sesión. MCP alojado en https://teamshared.com/mcp con conexión por correo electrónico/OTP.

Documentación

teamshared (plugins para Cursor, Claude Code y Codex)

Registra el servidor MCP de teamshared. El plugin de Cursor también incluye la regla de memoria de recuperación primero y los hooks de Cursor que capturan Agent Chat en TeamShared (sessionStart, beforeSubmitPrompt, afterAgentResponse, stop, sessionEnd) además de postToolUse (test/lint/shell fallidos), postToolUseFailure (recuperación de solo lectura) y preCompact. El plugin de Cursor aún no tiene skills, comandos de barra ni agentes adicionales.

Este repositorio también incluye un plugin de marketplace para Claude Code bajo claude/ (MCP remoto mediante el OAuth nativo /mcp de Claude Code, TEAMSHARED_TOKEN para los hooks de captura opcionales, protocolo 1.31.0, inyección en SessionStart y hooks oficiales de captura de Claude Code).

El paquete nativo de Codex bajo plugins/teamshared/ utiliza el flujo de descubrimiento OAuth MCP del servidor y trata a Codex como un cliente de primera clase: protocolo 1.31.0, inyección en SessionStart y hooks oficiales de captura de Codex. Una configuración manual de Codex TOML sigue disponible bajo install/codex/ (TEAMSHARED_TOKEN; no mezclar).

La instalación alojada está en teamshared.com/#connect. La fuente pública del plugin / marketplace es este repositorio (teamshared-ai/teamshared-plugin). El endpoint MCP remoto es https://teamshared.com/mcp.

Un Connect, una org por repositorio. Instala el plugin una vez y conéctate una vez. Desde el chat, llama a org_list / org_bind(slug=...). La CLI teamshared org bind <slug> es un respaldo opcional que escribe .teamshared/org. No agregues un segundo servidor TeamShared. /mcp sin vincular sigue funcionando: permanece en la org elegida al momento del Connect. Texto dirigido a agentes: AGENTS.md.

ComponentePropósito
mcp.jsonRegistra https://teamshared.com/mcp (solo URL; Cursor OAuth Connect)
rules/teamshared.mdcBucle ligero de fetch/store siempre activo (alwaysApply); la enciclopedia de herramientas vive en memory_tools_catalog
hooks/Hooks de Cursor: captura de Agent Chat más postToolUse (test/lint/shell fallidos), postToolUseFailure (recuperación de solo lectura) y preCompact
claude/Plugin de Claude Code (MCP remoto mediante OAuth nativo /mcp + protocolo 1.31.0 + hooks de captura que requieren TEAMSHARED_TOKEN)
.claude-plugin/marketplace.jsonCatálogo de marketplace de Claude Code (/plugin marketplace add teamshared-ai/teamshared-plugin)
.agents/plugins/marketplace.jsonCatálogo de marketplace de Codex (codex plugin marketplace add teamshared-ai/teamshared-plugin)
plugins/teamshared/Plugin nativo de Codex (OAuth MCP + protocolo 1.31.0 + hooks de captura oficiales)
clients/Protocolo de copiar y pegar + ejemplos de MCP para entornos que no son Cursor (no se carga en Cursor)

Instalación

Desde el marketplace de git (recomendado)

  1. Settings → Plugins → Add marketplace → pega https://github.com/teamshared-ai/teamshared-plugin
  2. Ejecuta /add-plugin teamshared o habilita teamshared en Settings → Plugins
  3. Settings → Tools & MCP → teamshared → Connect (correo electrónico + código de un solo uso, igual que la consola)

Los agentes Cloud y Grok Bot heredan ese Connect a nivel de cuenta. Instalar el plugin registra https://teamshared.com/mcp: solo haces clic en Connect. No pegues una URL ni un token en el mcp.json del plugin. Luego vincula el repositorio (teamshared org bind <slug>); no agregues un segundo servidor TeamShared.

Consulta MARKETPLACE.md para la lista de verificación oficial de publicación en el marketplace.

Claude Code (marketplace)

/plugin marketplace add teamshared-ai/teamshared-plugin
/plugin install teamshared@teamshared
/reload-plugins
/mcp

En /mcp, selecciona teamshared y elige Authenticate: el flujo OAuth nativo de Claude Code, mismo inicio de sesión con correo/OTP que la consola web, token almacenado en tu llavero del sistema. Confirma que las herramientas aparecen en /mcp como plugin:teamshared:teamshared conectado.

Los hooks de captura de chat son un subproceso separado sin acceso a ese llavero, así que si también quieres que capturen el chat automáticamente, genera una clave de org tsk_ y expórtala; nunca la confirmes en el repositorio:

export TEAMSHARED_TOKEN=tsk_...   # mint under https://teamshared.com/app/keys

Sin ella, los hooks simplemente no hacen nada; la conexión MCP y el flujo de trabajo de cada turno funcionan bien de cualquier manera. Desde el chat, llama a org_bind(slug=...) (la CLI teamshared org bind <slug> es opcional) para que la captura siga a la org; no agregues un servidor TeamShared de .mcp.json de proyecto. /mcp sin vincular sigue funcionando. SessionStart inyecta el protocolo 1.31.0; /teamshared:status verifica salud + versión. Detalles: claude/README.md.

Codex (marketplace de plugin nativo)

El paquete nativo de Codex utiliza el flujo de descubrimiento OAuth MCP de TeamShared, por lo que no requiere TEAMSHARED_TOKEN ni almacena un encabezado de autorización. La primera apertura del navegador es el host de Codex (navegador predeterminado del sistema). TeamShared solo sirve /oauth/authorize y la redirección; la página final posterior al OTP usa un único traspaso. El @Browser dentro de la aplicación de ChatGPT es Computer Use, no MCP Authenticate: no hay API para forzar Connect allí. Para omitir el navegador, usa install/codex/ + TEAMSHARED_TOKEN en lugar de este plugin. Detalles: #46 y plugins/teamshared/README.md.

codex plugin marketplace add teamshared-ai/teamshared-plugin
codex plugin add teamshared@teamshared

Reinicia la aplicación de Codex, inicia una nueva tarea y conecta TeamShared cuando se te solicite. Luego revisa y confía en los hooks del plugin con /hooks para que las escrituras de captura se ejecuten. Desde el chat, llama a org_bind(slug=...) (la CLI teamshared org bind <slug> es opcional); no agregues un segundo [mcp_servers.teamshared] junto al plugin. /mcp sin vincular sigue funcionando. SessionStart inyecta el protocolo 1.31.0; $status verifica salud + versión. El paquete vive en plugins/teamshared/ y está catalogado por .agents/plugins/marketplace.json. Detalles: plugins/teamshared/README.md.

Listado en cursor.directory

Envía este repositorio en cursor.directory/plugins/new:

https://github.com/teamshared-ai/teamshared-plugin

No envíes la antigua redirección xhad/teamshared-cursor. Los archivos raíz plugin.json y .mcp.json son los archivos de descubrimiento de Open Plugins / directorio; la instalación de Cursor aún usa .cursor-plugin/ y mcp.json.

Descripción lista para pegar en el listado:

TeamShared is hosted MCP plus the recall-first memory rule and Cursor
hooks that capture Agent Chat (plus failed test/lint/shell + preCompact).
No skills, slash commands, or extra agents.

Install in Cursor:
1. Settings → Plugins → Add marketplace
2. Paste https://github.com/teamshared-ai/teamshared-plugin
3. /add-plugin teamshared
4. Settings → Tools & MCP → teamshared → Connect (email + one-time code)

Cloud and Grok Bot agents inherit that Connect.
Bind each repo with teamshared org bind; do not add a second server.

Desde este repositorio (carpeta o enlace simbólico)

Add plugins from folder necesita un catálogo de marketplace en el directorio seleccionado. Selecciona la raíz de este repositorio (incluye .cursor-plugin/marketplace.json con "source": "./").

Luego habilita el plugin, recarga la ventana y haz Connect.

Para iteración local sin el selector de carpetas:

ln -sf "$(pwd)" ~/.cursor/plugins/local/teamshared

Configuración

  1. Conéctate con correo/OTP — Settings → Tools & MCP → teamshared → Connect. Cursor abre un navegador; inicia sesión con el mismo correo + código de un solo uso que en la consola web (/app). El plugin ya incluyó la URL del servidor; no agregues encabezados ni un token tsk_* al mcp.json del plugin.
  2. Vincula el repositorio — teamshared org bind <slug> escribe .teamshared/org ({"v":1,"slug"}). Confirma ese archivo. La captura lo sigue. No agregues un segundo servidor TeamShared en .cursor/mcp.json, .mcp.json de proyecto, o config.toml de Codex.
  3. Cursor Cloud / Grok Bot — heredan ese Connect de Cursor a nivel de cuenta. Después del Connect único, cada agente en la nube de ese usuario obtiene TeamShared. El vínculo sigue viviendo en el checkout (.teamshared/org); Cloud no toma una segunda URL de MCP de la configuración del repositorio. /mcp sin vincular sigue funcionando (org del momento del Connect).
  4. Desarrollador: Reload Window — confirma que Settings → MCP muestra teamshared habilitado.

Si previamente agregaste https://teamshared.com/mcp manualmente, elimina esa entrada manual para no tener dos servidores teamshared.

Los bots que deben permanecer en una sola org usan una clave de asiento: teamshared token mint limitada a esa org, o genera una bajo /app/keys — en los encabezados de MCP (Authorization: Bearer tsk_…). No en el mcp.json del plugin. /mcp sin vincular sigue funcionando para Connect interactivo.

Qué obtienes

  • Herramientas MCP: memory_recall, memory_remember, memory_session_*, etc. (registradas por mcp.json cuando el plugin está instalado).
  • Regla: inyecta el protocolo de recuperación primero en cada turno del agente, y apunta a los compañeros de equipo a la consola web (/app) para acciones humanas.
  • Hooks de Cursor: los turnos de Agent Chat se agregan a TeamShared en tiempo casi real sin esperar a que el agente llame a memory_session_ensure / context_commit. sessionStart mapea conversation_id a una sesión de trabajo y, después de un ensure exitoso con auto_recall=true, inyecta un bloque de Cursor additional_context limitado (alma vinculada, un encabezado corto de playbook cuando está presente, y viñetas compactas de auto_recall — no cuerpos completos de memoria ni transcripciones). memory_recall explícito sigue siendo preferido para trabajo con palabras clave. Fail-open en errores de MCP/auth. beforeSubmitPrompt y afterAgentResponse agregan texto de usuario/asistente redactado; sessionEnd cierra y destila. stop solo registra bucles abortados/error (se dispara después de cada turno, por lo que no destila). postToolUse aún agrega un hecho episódico corto cuando falla un test/lint/comando de Shell (comando + cola de error, secretos eliminados). En Cursor postToolUseFailure y en ese postToolUse fallido, los hooks también llaman a memory_recall remoto con una consulta ajustada (nombre de herramienta + error truncado, k=3, verbose=false) e inyectan resultados compactos como additional_context — mismo patrón que auto_recall de SessionStart. Omite cuando la recuperación está vacía o MCP no tiene token. Esa ruta de recuperación nunca escribe (context_commit). Fail-open si MCP no es alcanzable. preCompact escribe un resumen corto de sesión. Todos reutilizan la sesión Connect existente — sin tsk_ en mcp.json. Los agentes en la nube pueden omitir sessionStart / sessionEnd; los hooks de prompt/respuesta aún capturan turnos. Los agentes aún recuperan primero y pueden confirmar hechos curados; los hooks almacenan la transcripción.

Vincular un repositorio a una org

Un servidor TeamShared permanece en https://teamshared.com/mcp. El archivo del repositorio elige la org; la captura lo sigue. No agregues un segundo servidor TeamShared.

teamshared org bind sapien --token "$TEAMSHARED_TOKEN"
teamshared org status
teamshared org unbind

bind verifica la membresía, luego escribe solo .teamshared/org:

{"v":1,"slug":"sapien"}

La URL derivada https://teamshared.com/o/{slug}/mcp nunca se almacena. Confirma el archivo para que cada entorno en el checkout vea la misma org. status y unbind funcionan sin conexión. Archivo faltante o inválido → /mcp sin vincular (org del momento del Connect). Eso es compatible; vincular no es obligatorio.

EntornoConnect una vezVincularNo hacer
CursorSettings → Tools & MCP → teamshared → Connect.teamshared/org; los hooks hacen POST a la URL de la org con el mismo token de Connect.cursor/mcp.json / gemelo MCP de proyecto
Cursor CloudConnect de cuenta heredadoMismo archivo de checkout; los hooks lo siguenURL de MCP del repositorio como ruta de vínculo de Cloud
Claude Code/mcp → AuthenticateMismo archivo; los hooks usan un TEAMSHARED_TOKEN limitado a la orgServidor TeamShared de .mcp.json de proyecto
CodexOAuth del plugin (o tsk_ manual — no ambos)Mismo archivo[mcp_servers.teamshared] junto al plugin

Los bots que deben permanecer en una sola org: teamshared token mint <agent> (clave de asiento limitada a la org) o /app/keys. Sigue siendo un solo servidor.

El plugin de Cursor aún no tiene skills, comandos de barra ni agentes adicionales. El paquete de Claude Code incluye el protocolo 1.31.0 (teamshared-memory), /teamshared:status y hooks oficiales de captura de Claude Code. El paquete de Codex incluye el mismo bucle 1.31.0 más hooks oficiales de Codex (SessionStart, UserPromptSubmit, Stop, Interrupt, SessionEnd, PostToolUse en Bash fallido, PreCompact). SessionEnd cierra mediante un commit acotado; Interrupt cubre la paridad de cancelación de Cursor. Codex no tiene StopFailure ni PostToolUseFailure.

Otros clientes

Consulta clients/ para Hermes, Claude Desktop y markdown de protocolo. Claude Code y Codex deberían usar sus plugins de marketplace anteriores a menos que estés depurando una configuración manual de cliente.

Codex (alternativa manual TOML)

Para el registro manual de MCP sin el plugin nativo, Codex usa TOML en lugar del JSON de Cursor mcp.json. Genera una clave tsk_ en teamshared.com/app/keys, expórtala y luego registra el MCP alojado (Codex envía Authorization: Bearer tsk_…):

export TEAMSHARED_TOKEN=tsk_...   # from /app/keys — never commit this
codex mcp add teamshared \
  --url https://teamshared.com/mcp \
  --bearer-token-env-var TEAMSHARED_TOKEN

O fusiona install/codex/mcp.toml en el .codex/config.toml local del proyecto y ejecuta Codex desde esa raíz de repositorio de confianza. Pasos completos: install/codex/README.md.

Usa ya sea el plugin nativo del marketplace o la entrada manual de TOML, no ambos. La ruta manual es la ruta de clave de asiento para bots que deben permanecer en una sola organización (teamshared token mint con ámbito en esa organización) y la forma confiable de omitir el navegador OAuth. No agregues un segundo servidor TeamShared junto al plugin. Vincula el checkout con teamshared org bind <slug> de cualquier manera; el /mcp sin vincular sigue funcionando.

Cursor desktop, Cursor Cloud y Grok Bot aún usan Connect — no agregues este bloque tsk_ al plugin mcp.json.

Licencia

MIT — consulta LICENSE.