Patricia

oficial

O Patricia conecta seu cliente de IA a um workspace do Patricia. Leia a memória e os arquivos do workspace, inspecione integrações conectadas e delegue trabalho ao Patricia com controles de aprovação humana.

O que você pode fazer com Patricia MCP?

  • Instale e configure o plugin — Peça à sua IA para instalar o plugin patricia via marketplace e faça login com OAuth ou um token pessoal.
  • Integre projetos automaticamente — O hook SessionStart cumprimenta você e oferece a skill de integração uma vez por projeto quando um token está configurado.
  • Recupere memória relevante — O hook UserPromptSubmit adiciona memória relevante a prompts elegíveis via search_memory, enviando até 300 caracteres.
  • Verifique integrações antes de executar ferramentas — O hook PreToolUse verifica localmente a entrada de WebFetch, WebSearch e Bash contra um catálogo de provedores conhecido, sem chamadas de rede.
  • Proponha envios de memória — Após gravações locais de memória, o hook PostToolUse sugere remember com um escopo explícito, e o hook Stop lembra você após sessões substanciais.
  • Gerencie configurações e arquivos — Use get_settings, update_settings, list_files e get_brand_kit para ler ou alterar a configuração do workspace e os ativos da marca.

Documentação

[!NOTE] Este repositório é gerado a partir de bettergroupinc/patricia-monorepo em plugins/patricia/. A automação sincroniza este espelho público. Commit de origem: 147037702592109a4944cdbfb94bdcabb33f490f. Abra pull requests e issues no monorepo.

Plugin Claude Code patricia

Instale isto uma vez e um agente usará o servidor MCP da Patricia corretamente sem precisar ser instruído novamente.

Ele carrega três coisas.

  1. Orientação. Cinco habilidades cobrem os fundamentos da Patricia, integração, trabalho delegado, integrações e a ponte de memória.
  2. Uma conexão MCP. A instalação configura o servidor Streamable HTTP da Patricia para login via OAuth.
  3. Cinco hooks locais. Eles integram projetos, recuperam memória, verificam integrações primeiro e propõem envios de memória. Eles nunca gravam na Patricia.

Este é um plugin Claude Code distribuível. Uma pessoa o instala em sua própria máquina, e ele roda na sessão Claude Code dessa pessoa. Não é o catálogo de habilidades do produto Patricia, e nada nele roda dentro da Patricia.

Instalação

claude plugin marketplace add patricia-app/patricia-plugin
claude plugin install patricia@patricia

Em seguida, inicie uma nova sessão ou execute /reload-plugins.

Esse marketplace é https://github.com/patricia-app/patricia-plugin.. A automação gera cada arquivo nele a partir do monorepo da Patricia.

Nota para contribuidores: o monorepo é privado. Um contribuidor com acesso pode adicionar o próprio monorepo como marketplace, porque sua raiz .claude-plugin/marketplace.json aponta o plugin patricia para ./plugins/patricia.

Instale-o. Não o carregue com --plugin-dir. Um plugin carregado por diretório recebe suas habilidades, mas não seus hooks, então a orientação funcionaria e a ponte de memória nunca dispararia. Isso foi medido, não presumido: um hook de sondagem carregado via --plugin-dir nunca rodou, enquanto o mesmo hook declarado nas configurações do projeto rodou na mesma gravação no mesmo modo headless. O Claude Code registra o hooks/hooks.json de um plugin apenas para um plugin instalado e habilitado.

claude plugin details patricia relata o que foi aplicado:

Component inventory
  Skills (5)  delegating-work, integrations, memory-bridge, onboard, using-patricia
  MCP servers (1)  patricia
  Hooks (5)  SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop

Entrar no servidor MCP

O plugin configura o servidor MCP sem um cabeçalho armazenado. No primeiro uso, execute /mcp e selecione Patricia. Você também pode iniciar o fluxo OAuth a partir de um terminal:

claude mcp login plugin:patricia:patricia

O login OAuth do MCP e o token pessoal pat_mcp_ dos hooks são credenciais separadas. O OAuth sozinho não ativa os hooks que dependem de token.

Use um token como alternativa quando o OAuth não for adequado:

claude mcp add --transport http patricia https://api.patricia.app/v1/mcp \
  --header "Authorization: Bearer $PATRICIA_MCP_TOKEN"

Um token pessoal pat_mcp_ identifica a pessoa responsável e pode gravar. Uma chave de API de locatário pat_live_ não identifica ninguém, então ela só lê, e não pode responder a list_skills ou list_integrations.

Dar um token pessoal aos hooks locais

O Python 3 deve estar disponível através do comando python3 para os hooks locais.

Crie uma chave pessoal pat_mcp_ na Patricia em Configurações > Desenvolvedor > Chaves pessoais. Em seguida, escolha uma configuração:

export PATRICIA_MCP_TOKEN="pat_mcp_..."

Ou escreva este arquivo em ~/.claude/patricia.json:

{
  "token": "pat_mcp_..."
}

PATRICIA_MCP_TOKEN tem precedência sobre o arquivo. Um PATRICIA_MCP_TOKEN vazio desativa o fallback do arquivo. Esse comportamento é intencional. Ele permite que uma pessoa suspenda hooks autenticados sem mover o arquivo.

Hooks locais

Todos os cinco hooks estão ativados por padrão. Um arquivo de configuração ausente ou uma chave de hook ausente os mantém ativados. Uma configuração malformada ou ilegível os desativa. Defina a chave listada de um hook para o valor literal false em ~/.claude/patricia-plugin.json para desativar apenas esse hook.

Integração

  • Quando e ação: SessionStart roda para uma sessão nova ou retomada. Ele cumprimenta a pessoa conectada e oferece a habilidade de integração uma vez por projeto.
  • Custo: Com um token, ele faz uma chamada whoami. O timeout de rede é de 3 segundos, e o timeout do hook é de 10 segundos.
  • Interruptor: hooks.onboarding.enabled definido como false.
  • Privacidade: Com um token, apenas a solicitação autenticada whoami sai da máquina. Nenhum prompt, transcrição ou conteúdo do projeto sai através deste hook.

Recuperação

  • Quando e ação: UserPromptSubmit roda antes de cada prompt enviado. Ele ignora comandos, respostas curtas, confirmações e entrada somente de código. Ele adiciona memória relevante a prompts elegíveis.
  • Custo: Com um token e um prompt elegível, ele faz uma chamada search_memory. O timeout de rede é de 3 segundos, e o timeout do hook é de 8 segundos.
  • Interruptor: hooks.recall.enabled definido como false.
  • Privacidade: Ele envia até 300 caracteres do prompt recolhido para a Patricia. Ele envia esse texto apenas quando um token está configurado.

Integrações primeiro

  • Quando e ação: UserPromptSubmit verifica um prompt. PreToolUse verifica a entrada de WebFetch, WebSearch e Bash antes de a ferramenta rodar. Um catálogo local identifica provedores conhecidos.
  • Custo: Ele não faz chamadas MCP ou de rede e não precisa de token. O timeout do hook é de 8 segundos para um prompt e 5 segundos antes de uma chamada de ferramenta.
  • Interruptor: hooks.integrations_first.enabled definido como false.
  • Privacidade: Nada sai da máquina. O hook verifica o prompt ou a entrada da ferramenta localmente.

Ponte de memória

  • Quando e ação: PostToolUse roda após Write, Edit ou MultiEdit. Ele percebe uma nota de memória local salva e propõe remember com um escopo explícito.
  • Custo: Ele não faz chamadas MCP ou de rede. O timeout do hook é de 5 segundos.
  • Interruptor: hooks.memory_bridge.enabled definido como false. O arquivo legado ~/.claude/patricia-memory-bridge.json também pode definir enabled como false.
  • Privacidade: O script lê a nota salva localmente e não envia nada pela rede. Ele retorna o caminho da nota e o texto do lembrete ao Claude Code, sem o conteúdo da nota.

Lembrete de envio

  • Quando e ação: Stop roda quando o agente termina. Ele propõe remember após uma gravação de memória local ou uma sessão substancial com uso de ferramentas sem uma gravação de memória na Patricia.
  • Custo: Ele não faz chamadas MCP ou de rede. O timeout do hook é de 8 segundos.
  • Interruptor: hooks.push_reminder.enabled definido como false.
  • Privacidade: Ele lê no máximo 5 MB da transcrição local e não envia nada. Ele só roda quando um token está configurado, para que a chamada de memória proposta possa ter sucesso após a pessoa concordar.

Rede e credenciais

Este plugin se conecta a https://api.patricia.app/v1/mcp via Streamable HTTP.

A Patricia usa OAuth 2.1 com PKCE S256. Um fluxo OAuth concluído dá ao cliente um token de portador pessoal pat_mcp_.

O manifesto do plugin não contém credencial. O cliente envia o token de portador para api.patricia.app após o login.

Outros marketplaces

  • O Cursor lê plugin.json e mcp.json deste pacote.
  • O OpenAI Codex e o ChatGPT leem .codex-plugin/plugin.json.
  • Uma entrada de fonte remota não precisa de manifesto. O xAI lê .claude-plugin/plugin.json quando presente.

Todos os pacotes de marketplace apontam para a única árvore skills/ neste pacote.

assets/icon.png é um ativo de marca de primeira parte da Patricia.

A ponte de memória propõe; ela nunca grava

Um hook é um comando de shell. Ele não contém um cliente MCP, não tem consentimento de ninguém e não pode ler uma nota e distinguir um fato de equipe de um privado. Um hook que enviasse cada nota local para um espaço de trabalho compartilhado colocaria notas específicas da máquina, descartáveis e privadas diante de toda a equipe, silenciosamente. Esse é o modo de falha que a ponte foi construída para evitar, não um recurso que ela adiou.

Então o hook faz uma coisa: ele injeta hookSpecificOutput.additionalContext dizendo ao agente que a nota é apenas local e que remember precisa de um scope. O agente decide o escopo, pergunta à sua pessoa e faz a chamada. O julgamento e a gravação permanecem no mesmo lugar.

Quatro portões o mantêm silencioso:

PortãoEfeito
Qualquer configuração suportada define o valor enabled da ponte como falseSilencioso. Sem esse valor, a ponte está ativada.
O caminho gravado está fora de um diretório de memóriaSilencioso.
A gravação não ocorreu, ou o arquivo está vazioSilencioso.
O front matter da nota carrega patricia: skipSilencioso.

Ele também oferece uma determinada nota no máximo uma vez por sessão, então um Write seguido por uma execução de chamadas Edit produz um lembrete em vez de quatro. Esse registro vive em ~/.claude/patricia-memory-bridge-state/, um arquivo por sessão, podado após sete dias.

Ele não usa CLAUDE_PLUGIN_DATA para isso. Essa variável está presente no ambiente de um hook, mas não é confiavelmente o diretório do próprio plugin em execução: um hook de nível de projeto nesta máquina a viu definida como ~/.claude/plugins/data/codex-openai-codex, um diretório de dados de um plugin não relacionado.

Qual ferramenta uma gravação de memória realmente usa

O Claude Code 2.1.238 declara ferramentas chamadas memory_list, memory_read e memory_write. Nas máquinas contra as quais isso foi construído, notas de memória não são gravadas com elas: uma varredura das 120 transcrições de sessão mais recentes encontrou 49 chamadas Write e 35 Edit para ~/.claude/projects/*/memory/, e zero chamadas memory_write.

O matcher é, portanto, Write|Edit|MultiEdit. memory_write é deixado de fora de propósito. Adicionar um matcher para uma ferramenta cuja forma de payload não foi verificada compra um hook que silenciosamente nunca dispara e parece exatamente um que funciona. Adicione-o quando um payload real de memory_write tiver sido lido.

A orientação e a regra permanente do servidor são uma cópia, não duas

start_onboarding_import pode retornar um standing_rule_to_offer carregando ask_first, instruction e um bloco markdown dimensionado para caber no CLAUDE.md de outra pessoa. A habilidade não reformula esse bloco. Ela diz ao agente para chamar a ferramenta e usar o que vier de volta, para que o servidor permaneça o único dono dessa redação.

Buscá-lo no momento da instalação era a alternativa, e não funciona. O SKILL.md de um plugin é texto estático em um cache endereçado por conteúdo, não há etapa de instalação que possa reescrevê-lo, e um plugin cujo trabalho inclui configurar a Patricia não pode depender de uma conexão Patricia autenticada e funcional para renderizar suas próprias instruções. Ler a ferramenta no momento do uso dá a mesma cópia única sem nada disso.

Cada nome de ferramenta aqui é uma ferramenta real

Cada identificador de ferramenta entre crases neste plugin é verificado contra o registro de ferramentas do próprio servidor, a lista que o servidor constrói tools/list. A mesma verificação afirma que encontrou um conjunto não vazio de identificadores, então um extrator quebrado não pode passar ao não encontrar nada.

Nota para contribuidores: essa verificação é backend/api/tests/test_patricia_claude_plugin.py no monorepo da Patricia, e ela roda em cada mudança neste plugin.

Configurações e descoberta de arquivos

FerramentaUso
get_settingsListar configurações, ou ler chaves ou grupos selecionados com significados, valores e permissões. Qualquer credencial pode ler grupos do espaço de trabalho.
update_settingsAlterar um grupo permitido através da operação do painel. Um token pessoal é necessário.
list_filesListar arquivos. A primeira página inclui pastas e contagens filtradas por visibilidade.
get_brand_kitLer cores de marca, tipografia e logotipos.

Use get_settings(keys=["company_profile"]) para o perfil da empresa. As ferramentas de configurações compartilham o catálogo e as operações que a Patricia usa no chat. Alterações de configurações no chat exigem um clique da pessoa solicitante. Uma mudança de política de aprovação afeta execuções de console; ações críticas e exigidas pelo provedor mantêm seu piso de aprovação, e o público e o piso somente de clique mantêm os seus em qualquer ação sobre a qual a Patricia já pergunta.

Leituras de integração aguardam enquanto outra tarefa roda para a mesma pessoa. Pesquise essa tarefa com get_task_status, ou aguarde ela terminar. Após uma aprovação direta de integração, siga a frase next retornada por decide_approval. Ela nomeia a ferramenta a ser chamada novamente com o mesmo tool_ref e argumentos.