TeamShared
Memória compartilhada para agentes de codificação. Pare de reexplicar seu codebase a cada sessão. MCP hospedado em https://teamshared.com/mcp com conexão por email/OTP.
Documentação
teamshared (plugins para Cursor, Claude Code e Codex)
Registra o servidor MCP teamshared. O plugin do Cursor também inclui a
regra de memória recall-first e hooks do Cursor que capturam o Agent Chat no
TeamShared (sessionStart, beforeSubmitPrompt, afterAgentResponse,
stop, sessionEnd) além de postToolUse (falha em teste/lint/shell),
postToolUseFailure (recall somente leitura) e preCompact. O plugin do Cursor
ainda não possui skills, comandos de barra ou agentes extras.
Este repositório também inclui um plugin de marketplace do Claude Code em claude/
(MCP remoto via OAuth nativo do Claude Code /mcp, TEAMSHARED_TOKEN para os
hooks de captura opcionais, protocolo 1.31.0, injeção no SessionStart e hooks
oficiais de captura do Claude Code).
O pacote nativo do Codex em plugins/teamshared/ usa o fluxo de descoberta OAuth
do servidor MCP e trata o Codex como cliente de primeira classe: protocolo 1.31.0,
injeção no SessionStart e hooks oficiais de captura do Codex. Uma configuração
manual em TOML para o Codex continua disponível em install/codex/ (TEAMSHARED_TOKEN; não misture).
Instalação hospedada em teamshared.com/#connect.
A fonte pública do plugin / marketplace é este repositório
(teamshared-ai/teamshared-plugin).
O endpoint MCP remoto é https://teamshared.com/mcp.
Um Connect, uma org por repositório. Instale o plugin uma vez e conecte uma vez.
Pelo chat, chame org_list / org_bind(slug=...). A CLI
teamshared org bind <slug> é um fallback opcional que grava
.teamshared/org. Não adicione um segundo servidor TeamShared. O /mcp não vinculado
continua funcionando — ele permanece na org escolhida no momento do Connect. Texto
voltado ao agente: AGENTS.md.
| Componente | Finalidade |
|---|---|
mcp.json | Registra https://teamshared.com/mcp (somente URL; Cursor OAuth Connect) |
rules/teamshared.mdc | Loop enxuto sempre ativo de fetch/store (alwaysApply); a enciclopédia de ferramentas fica em memory_tools_catalog |
hooks/ | Hooks do Cursor: captura do Agent Chat além de postToolUse (falha em teste/lint/shell), postToolUseFailure (recall somente leitura) e preCompact |
claude/ | Plugin do Claude Code (MCP remoto via OAuth nativo /mcp + protocolo 1.31.0 + hooks de captura que exigem TEAMSHARED_TOKEN) |
.claude-plugin/marketplace.json | Catálogo do marketplace do Claude Code (/plugin marketplace add teamshared-ai/teamshared-plugin) |
.agents/plugins/marketplace.json | Catálogo do marketplace do Codex (codex plugin marketplace add teamshared-ai/teamshared-plugin) |
plugins/teamshared/ | Plugin nativo do Codex (OAuth MCP + protocolo 1.31.0 + hooks oficiais de captura) |
clients/ | Protocolo copiar-e-colar + exemplos de MCP para harnesses que não são Cursor (não carregado pelo Cursor) |
Instalação
Pelo marketplace do git (recomendado)
- Configurações → Plugins → Adicionar marketplace → cole
https://github.com/teamshared-ai/teamshared-plugin - Execute
/add-plugin teamsharedou habilite teamshared em Configurações → Plugins - Configurações → Ferramentas e MCP → teamshared → Conectar (e-mail + código de uso único, igual ao console)
Os agentes Cloud e Grok Bot herdam esse Connect no nível da conta. Instalar o
plugin registra https://teamshared.com/mcp — você só precisa clicar em Conectar.
Não cole URL ou token no mcp.json do plugin. Depois vincule o repositório
(teamshared org bind <slug>); não adicione um segundo servidor TeamShared.
Consulte MARKETPLACE.md para a lista de verificação oficial de publicação no Marketplace.
Claude Code (marketplace)
/plugin marketplace add teamshared-ai/teamshared-plugin
/plugin install teamshared@teamshared
/reload-plugins
/mcp
Em /mcp, selecione teamshared e escolha Autenticar — o fluxo
OAuth nativo do próprio Claude Code, mesmo login por e-mail/OTP do console web, token
armazenado no chaveiro do sistema. Confirme que as ferramentas aparecem em /mcp como
plugin:teamshared:teamshared conectado.
Os hooks de captura de chat são um subprocesso separado, sem acesso a esse
chaveiro. Portanto, se você também quiser que eles capturem o chat automaticamente,
gere uma chave de org tsk_ e exporte-a — nunca a envie para o repositório:
export TEAMSHARED_TOKEN=tsk_... # mint under https://teamshared.com/app/keys
Sem ela, os hooks apenas não fazem nada; a conexão MCP e o fluxo de trabalho
a cada turno funcionam normalmente de qualquer forma. Pelo chat, chame org_bind(slug=...) (a CLI
teamshared org bind <slug> é opcional) para que a captura siga a org; não
adicione um servidor TeamShared de projeto .mcp.json.
O /mcp não vinculado continua funcionando. SessionStart injeta o protocolo 1.31.0;
/teamshared:status verifica saúde + versão. Detalhes:
claude/README.md.
Codex (marketplace de plugin nativo)
O pacote nativo do Codex usa o fluxo de descoberta OAuth do MCP do TeamShared,
portanto não exige TEAMSHARED_TOKEN nem armazena cabeçalho de autorização. A primeira
abertura do navegador é o host Codex (navegador padrão do sistema). O TeamShared
apenas serve /oauth/authorize e o redirecionamento; a página final pós-OTP usa um
único handoff. O @Browser no aplicativo do ChatGPT é Computer Use, não MCP
Authenticate — não há API para forçar o Connect ali. Para pular o navegador,
use install/codex/ + TEAMSHARED_TOKEN em vez
deste plugin. Detalhes:
#46 e
plugins/teamshared/README.md.
codex plugin marketplace add teamshared-ai/teamshared-plugin
codex plugin add teamshared@teamshared
Reinicie o aplicativo Codex, inicie uma nova tarefa e conecte o TeamShared quando
solicitado. Depois revise e confie nos hooks do plugin com /hooks para que as
gravações de captura sejam executadas. Pelo chat, chame org_bind(slug=...) (a CLI
teamshared org bind <slug> é opcional); não adicione um segundo [mcp_servers.teamshared] ao lado do
plugin. O /mcp não vinculado continua funcionando.
SessionStart injeta o protocolo 1.31.0; $status verifica saúde + versão.
O pacote fica em plugins/teamshared/ e é
catalogado por .agents/plugins/marketplace.json.
Detalhes: plugins/teamshared/README.md.
Listagem no cursor.directory
Envie este repositório em cursor.directory/plugins/new:
https://github.com/teamshared-ai/teamshared-plugin
Não envie o redirecionamento antigo xhad/teamshared-cursor. Os arquivos plugin.json e
.mcp.json na raiz são os arquivos de descoberta do Open Plugins / diretório; a
instalação no Cursor ainda usa .cursor-plugin/ e mcp.json.
Descrição pronta para colar na listagem:
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.
A partir deste repositório (pasta ou symlink)
Adicionar plugins de pasta exige um catálogo de marketplace no diretório
selecionado. Selecione a raiz deste repositório (ela inclui .cursor-plugin/marketplace.json
com "source": "./").
Depois habilite o plugin, recarregue a janela e Conecte.
Para iteração local sem o seletor de pasta:
ln -sf "$(pwd)" ~/.cursor/plugins/local/teamshared
Configuração
- Conecte com e-mail/OTP — Configurações → Ferramentas e MCP → teamshared → Conectar.
O Cursor abre um navegador; entre com o mesmo e-mail + código de uso único do
console web (
/app). O plugin já enviou a URL do servidor; não adicione cabeçalhos nem tokentsk_*aomcp.jsondo plugin. - Vincule o repositório —
teamshared org bind <slug>grava.teamshared/org({"v":1,"slug"}). Envie esse arquivo para o repositório. A captura segue ele. Não adicione um segundo servidor TeamShared em.cursor/mcp.json, no projeto.mcp.jsonou noconfig.tomldo Codex. - Cursor Cloud / Grok Bot — eles herdam o Connect do Cursor no nível da
conta. Após o Connect único, todo agente cloud daquele usuário recebe o
TeamShared. O vínculo continua no checkout (
.teamshared/org); o Cloud não aceita uma segunda URL MCP vinda da configuração do repositório. O/mcpnão vinculado continua funcionando (org do momento do Connect). - Desenvolvedor: Recarregar janela — confirme que Configurações → MCP mostra
teamsharedhabilitado.
Se você adicionou https://teamshared.com/mcp manualmente antes, remova essa
entrada manual para não ficar com dois servidores teamshared.
Bots que precisam permanecer em uma única org usam uma chave de assento — teamshared token mint
com escopo para aquela org, ou gerada em /app/keys — nos cabeçalhos MCP
(Authorization: Bearer tsk_…). Não no mcp.json do plugin. O
/mcp não vinculado continua funcionando para Connect interativo.
O que você recebe
- Ferramentas MCP:
memory_recall,memory_remember,memory_session_*, etc. (registradas pormcp.jsonquando o plugin está instalado). - Regra: injeta o protocolo recall-first em cada turno do agente e aponta
os colegas para o console web (
/app) para ações humanas. - Hooks do Cursor: os turnos do Agent Chat são anexados ao TeamShared em
tempo quase real, sem esperar o agente chamar
memory_session_ensure/context_commit.sessionStartmapeiaconversation_idpara uma sessão de trabalho e, após um ensure bem-sucedido comauto_recall=true, injeta um blocoadditional_contextlimitado do Cursor (soul vinculado, um cabeçalho curto de playbook quando presente e marcadores compactosauto_recall— não corpos completos de memória nem transcrições). Omemory_recallexplícito continua sendo o preferido para trabalho com palavras-chave. Fail-open em erros de MCP/auth.beforeSubmitPrompteafterAgentResponseanexam texto de usuário/assistente com dados sensíveis removidos;sessionEndencerra e destila.stopapenas registra loops abortados/com erro (ele dispara após cada turno, então não destila).postToolUseainda anexa um fato episódico curto quando um teste/lint/comando de Shell falha (comando + final do erro, segredos removidos). No CursorpostToolUseFailuree nessepostToolUsecom falha, os hooks também chamam omemory_recallremoto com uma consulta enxuta (nome da ferramenta + erro truncado,k=3,verbose=false) e injetam resultados compactos comoadditional_context— mesmo padrão do auto_recall do SessionStart. Pule quando o recall estiver vazio ou o MCP não tiver token. Esse caminho de recall nunca grava (context_commit). Fail-open se o MCP estiver inacessível.preCompactgrava um resumo curto da sessão. Tudo reutiliza a sessão Connect existente — semtsk_emmcp.json. Agentes cloud podem pularsessionStart/sessionEnd; os hooks de prompt/resposta ainda capturam os turnos. Os agentes ainda fazem recall primeiro e podem confirmar fatos selecionados; os hooks armazenam a transcrição.
Vincular um repositório a uma org
Um servidor TeamShared permanece em https://teamshared.com/mcp. O arquivo do repositório
escolhe a org; a captura segue ele. Não adicione um segundo servidor TeamShared.
teamshared org bind sapien --token "$TEAMSHARED_TOKEN"
teamshared org status
teamshared org unbind
bind verifica a associação e depois grava apenas .teamshared/org:
{"v":1,"slug":"sapien"}
A URL derivada https://teamshared.com/o/{slug}/mcp nunca é armazenada. Envie o arquivo
para o repositório para que todos os harnesses no checkout vejam a mesma org. status e
unbind funcionam offline. Arquivo ausente ou inválido → /mcp não vinculado (org do
momento do Connect). Isso é suportado; o vínculo não é obrigatório.
| Harness | Conectar uma vez | Vincular | Não fazer |
|---|---|---|---|
| Cursor | Configurações → Ferramentas e MCP → teamshared → Conectar | .teamshared/org; os hooks fazem POST para a URL da org com o mesmo token do Connect | .cursor/mcp.json / gêmeo MCP no projeto |
| Cursor Cloud | Connect herdado da conta | Mesmo arquivo do checkout; os hooks seguem ele | URL MCP do repositório como caminho de vínculo no Cloud |
| Claude Code | /mcp → Autenticar | Mesmo arquivo; os hooks usam um TEAMSHARED_TOKEN com escopo de org | Servidor TeamShared de projeto .mcp.json |
| Codex | OAuth do plugin (ou tsk_ manual — não ambos) | Mesmo arquivo | [mcp_servers.teamshared] ao lado do plugin |
Bots que precisam permanecer em uma única org: teamshared token mint <agent> (chave de assento
com escopo de org) ou /app/keys. Ainda assim, um único servidor.
O plugin do Cursor ainda não possui skills, comandos de barra ou agentes extras.
O pacote do Claude Code inclui o protocolo 1.31.0 (teamshared-memory),
/teamshared:status e hooks oficiais de captura do Claude Code. O pacote do
Codex inclui o mesmo loop 1.31.0 além dos hooks oficiais do Codex (SessionStart,
UserPromptSubmit, Stop, Interrupt, SessionEnd, PostToolUse em falha de
Bash, PreCompact). SessionEnd encerra com um único commit limitado;
Interrupt cobre a paridade de abort do Cursor. O Codex não tem StopFailure nem
PostToolUseFailure.
Outros clientes
Consulte clients/ para Hermes, Claude Desktop e markdown de protocolo.
Claude Code e Codex devem usar os plugins de marketplace acima, a menos que você esteja
depurando uma configuração manual de cliente.
Codex (alternativa manual em TOML)
Para registro manual de MCP sem o plugin nativo, o Codex usa TOML em vez
do JSON do Cursor mcp.json. Gere uma chave tsk_ em
teamshared.com/app/keys, exporte-a e então
registre o MCP hospedado (o Codex envia 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
Ou mescle install/codex/mcp.toml no .codex/config.toml local do projeto
e execute o Codex a partir dessa raiz de repositório confiável. Passos completos:
install/codex/README.md.
Use o plugin nativo do marketplace ou a entrada manual TOML, não ambos.
O caminho manual é o caminho da chave de assento para bots que precisam permanecer em uma única organização
(teamshared token mint com escopo para essa organização) e a maneira confiável de pular
o navegador OAuth. Não adicione um segundo servidor TeamShared ao lado do
plugin. Vincule o checkout com teamshared org bind <slug> de qualquer forma;
/mcp não vinculado continua funcionando.
Cursor desktop, Cursor Cloud e Grok Bot ainda usam Connect — não adicione
este bloco tsk_ ao plugin mcp.json.
Licença
MIT — veja LICENSE.