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.
| Componente | Propósito |
|---|---|
mcp.json | Registra https://teamshared.com/mcp (solo URL; Cursor OAuth Connect) |
rules/teamshared.mdc | Bucle 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.json | Catálogo de marketplace de Claude Code (/plugin marketplace add teamshared-ai/teamshared-plugin) |
.agents/plugins/marketplace.json | Catá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)
- Settings → Plugins → Add marketplace → pega
https://github.com/teamshared-ai/teamshared-plugin - Ejecuta
/add-plugin teamsharedo habilita teamshared en Settings → Plugins - 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
- 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 tokentsk_*almcp.jsondel plugin. - 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.jsonde proyecto, oconfig.tomlde Codex. - 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./mcpsin vincular sigue funcionando (org del momento del Connect). - Desarrollador: Reload Window — confirma que Settings → MCP muestra
teamsharedhabilitado.
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 pormcp.jsoncuando 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.sessionStartmapeaconversation_ida una sesión de trabajo y, después de un ensure exitoso conauto_recall=true, inyecta un bloque de Cursoradditional_contextlimitado (alma vinculada, un encabezado corto de playbook cuando está presente, y viñetas compactas deauto_recall— no cuerpos completos de memoria ni transcripciones).memory_recallexplícito sigue siendo preferido para trabajo con palabras clave. Fail-open en errores de MCP/auth.beforeSubmitPromptyafterAgentResponseagregan texto de usuario/asistente redactado;sessionEndcierra y destila.stopsolo registra bucles abortados/error (se dispara después de cada turno, por lo que no destila).postToolUseaún agrega un hecho episódico corto cuando falla un test/lint/comando de Shell (comando + cola de error, secretos eliminados). En CursorpostToolUseFailurey en esepostToolUsefallido, los hooks también llaman amemory_recallremoto con una consulta ajustada (nombre de herramienta + error truncado,k=3,verbose=false) e inyectan resultados compactos comoadditional_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.preCompactescribe un resumen corto de sesión. Todos reutilizan la sesión Connect existente — sintsk_enmcp.json. Los agentes en la nube pueden omitirsessionStart/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.
| Entorno | Connect una vez | Vincular | No hacer |
|---|---|---|---|
| Cursor | Settings → 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 Cloud | Connect de cuenta heredado | Mismo archivo de checkout; los hooks lo siguen | URL de MCP del repositorio como ruta de vínculo de Cloud |
| Claude Code | /mcp → Authenticate | Mismo archivo; los hooks usan un TEAMSHARED_TOKEN limitado a la org | Servidor TeamShared de .mcp.json de proyecto |
| Codex | OAuth 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.