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.

ComponenteFinalidade
mcp.jsonRegistra https://teamshared.com/mcp (somente URL; Cursor OAuth Connect)
rules/teamshared.mdcLoop 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.jsonCatálogo do marketplace do Claude Code (/plugin marketplace add teamshared-ai/teamshared-plugin)
.agents/plugins/marketplace.jsonCatá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)

  1. Configurações → Plugins → Adicionar marketplace → cole https://github.com/teamshared-ai/teamshared-plugin
  2. Execute /add-plugin teamshared ou habilite teamshared em Configurações → Plugins
  3. 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

  1. 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 token tsk_* ao mcp.json do plugin.
  2. 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.json ou no config.toml do Codex.
  3. 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 /mcp não vinculado continua funcionando (org do momento do Connect).
  4. Desenvolvedor: Recarregar janela — confirme que Configurações → MCP mostra teamshared habilitado.

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 por mcp.json quando 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. sessionStart mapeia conversation_id para uma sessão de trabalho e, após um ensure bem-sucedido com auto_recall=true, injeta um bloco additional_context limitado do Cursor (soul vinculado, um cabeçalho curto de playbook quando presente e marcadores compactos auto_recall — não corpos completos de memória nem transcrições). O memory_recall explícito continua sendo o preferido para trabalho com palavras-chave. Fail-open em erros de MCP/auth. beforeSubmitPrompt e afterAgentResponse anexam texto de usuário/assistente com dados sensíveis removidos; sessionEnd encerra e destila. stop apenas registra loops abortados/com erro (ele dispara após cada turno, então não destila). postToolUse ainda anexa um fato episódico curto quando um teste/lint/comando de Shell falha (comando + final do erro, segredos removidos). No Cursor postToolUseFailure e nesse postToolUse com falha, os hooks também chamam o memory_recall remoto com uma consulta enxuta (nome da ferramenta + erro truncado, k=3, verbose=false) e injetam resultados compactos como additional_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. preCompact grava um resumo curto da sessão. Tudo reutiliza a sessão Connect existente — sem tsk_ em mcp.json. Agentes cloud podem pular sessionStart / 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.

HarnessConectar uma vezVincularNão fazer
CursorConfiguraçõ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 CloudConnect herdado da contaMesmo arquivo do checkout; os hooks seguem eleURL MCP do repositório como caminho de vínculo no Cloud
Claude Code/mcp → AutenticarMesmo arquivo; os hooks usam um TEAMSHARED_TOKEN com escopo de orgServidor TeamShared de projeto .mcp.json
CodexOAuth 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.