19 perguntas com as opcoes e uma recomendacao cada. Nenhuma delas esta respondida: a implementacao espera voce.
1 Onde as tools de prompt de agente entram no catálogo MCP, e o que fazer com o teto de 15.000 tokens?
Prompts de agenteRecomendacao
Recomendação: (a) agora — é o caminho mínimo que entrega o pedido inteiro sem mexer em teto, sem furar o teste e sem arriscar regressão no anti-travamento HITL. Levar (c) ao dono como pergunta separada, porque é a única que resolve também o roadmap (cujas 3 datas, medidas, já estouram o teto sozinhas). Se o dono quiser prompts no padrão, escolher (b) e (c) juntas, nunca (b) sozinha: (b) sem folgar 2.086 tokens não resolve o roadmap.
Ver as 4 opcoes
- a) Toolset opt-in 'prompts' + 'prompts-admin' + 'prompts-history': zero tools e zero tokens no catálogo padrão; o agente acha as tools com agentpack_search_tools ou liga o toolset na chave. Precedente no próprio repo: render, github, skills-history. Custo: 3 linhas em TOOLSETS, 1 em CoreToolDomain, a lista fechada do teste e o espelho no frontend.
- b) Subir o teto de 15.000 para 20.000 tokens: uma linha no teste + uma no doc. Libera prompts E roadmap no padrão, mas é política de produto e backend/docs/mcp-server.md:144 diz que 'subir o teto é decisão humana'.
- c) Mover as 7 tools de decisão humana (task_decision_respond, task_request_more_information, task_decision_supersede, task_decision_cancel, task_decision_create, task_decision_list, task_return_to_decision) para um toolset opt-in: medido, somam 8.344 B = 2.086 tokens e o padrão cairia para 12.807, sobrando 2.193. É a ÚNICA opção que destrava as DUAS branches ao mesmo tempo. Regressão: o agente deixa de ver de primeira que precisa entregar a decisão a uma pessoa.
- d) As 3 tools de vínculo com task (task_prompt_link/list/unlink) virarem campo novo em task_get/task_context_bundle: mais barato em bytes, pior para o agente (campo polimórfico é mais difícil de usar do que tool).
2 O objeto chama-se 'prompt' ou 'agent_prompt' no código, dado que 'prompt' já é nome de capability MCP (prompts/list, executar-task, handover)?
Prompts de agenteRecomendacao
Recomendação: (a). Conferi que prompt_* não existe hoje em routes/, schemas/, services/ nem na lista de pendentes do OpenAPI, então a colisão é de vocabulário e não de código; 'prompt de agente' é o termo que o dono usou. Nos três casos, prompts/list (MCP Prompts) fica intacto e os prompts do projeto não são publicados lá.
Ver as 3 opcoes
- a) agent_prompts no banco, prompt_* no wire (agentpack_prompt_list), 'prompt de agente' na interface. O prefixo agentpack_ do wire já separa do resto; a description de cada tool diz o que o objeto é. (A frase nas instructions seria o reforço ideal, mas não cabe: 1196 de 1200 — ver R1.)
- b) agent_prompt_* no wire também (agentpack_agent_prompt_list): redundante com o prefixo, pior de ler no tools/list e no log; escolhido por quem quiser eliminar qualquer chance de confusão com prompts/list.
- c) prompt_template_* no wire (agentpack_prompt_template_list): evita a colisão da palavra, mas muda o objeto que o dono nomeou e o termo que aparece na tela.
3 O prompt de agente é do projeto ou um catálogo global ligado ao projeto, como a skill?
Prompts de agenteRecomendacao
Recomendação: (a). A skill é global sem organizationId e qualquer usuário logado de qualquer empresa grava no catálogo — copiar esse modelo seria violar 'todo dado novo é da empresa e do projeto'. Com (a) o objeto já é do projeto, a tabela de vínculo some, a lista do projeto é a lista do catálogo e a leitura por id já responde NOT_FOUND para outro projeto.
Ver as 3 opcoes
- a) Do projeto, com projectId obrigatório e isActive como COLUNA (não tabela de vínculo). A empresa vem do projeto e a regra de dado da empresa fica garantida pela construção.
- b) Catálogo global + tabela de vínculo (molde project_skills). Só faz sentido se o dono quiser prompts compartilhados entre projetos e empresas.
- c) Global dentro da organização.
4 Como entra o 'builtin somente leitura com cópia editável', já que não existe seed por projeto no repo?
Prompts de agenteRecomendacao
Recomendação: (a). A diretriz cita 'origem builtin somente leitura com cópia editável' e a entrega inteira sem isso não fecha. (b) existe para skills que o repositório atualiza entre deploys; os 3 modelos do sistema são estáticos, então a migration basta. (c) deixaria o pedido pela metade. O caminho (a) também é o que mantém a multiempresa correta: o modelo é global e somente leitura, e só a cópia é do projeto.
Ver as 3 opcoes
- a) Tabela global agent_prompt_builtin_templates gravada por migration, SEM nenhuma rota de escrita (a API só lê). 'Usar no projeto' = POST .../duplicate com fromTemplate, que cria um prompt editável e guarda template_slug como procedência. Zero infraestrutura de seed.
- b) Seed por projeto no boot, com ledger como as skills: precisa de ledger, job no boot, check:prompts, .dockerignore e validação no Dockerfile — 6 arquivos de infraestrutura para 3 templates estáticos.
- c) Sem builtin nesta entrega.
5 O histórico segue o molde da memória (estados substituídos, com ator e If-Match) ou o da skill (estados novos, com hash, sem ator)?
Prompts de agenteRecomendacao
Recomendação: (a). É o que AGENTS.md:167-168 exige para recurso versionado, e prompt de agente é conteúdo que dois agentes editam: com (b) o último que salvar sobrescreve o outro sem ninguém saber. O custo é ter as duas colunas de ator na versão e o 409 na escrita, que reaproveita código pronto (lib/if-match.ts, schemas/memory.ts:44-63, memory.service.ts).
Ver as 2 opcoes
- a) Molde da memória: agent_prompt_versions guarda os estados SUBSTITUÍDOS com actorType/actorId/source, version + If-Match ou expectedVersion -> 409 VERSION_CONFLICT, e trigger que recusa UPDATE. Concorrência segura entre dois agentes editando o mesmo prompt.
- b) Molde da skill: versões com origin e contentHash, sem ator, PUT last-write-wins. Mais simples e menos colunas.
6 Apagar prompt: lixeira (soft delete) ou hard delete como a skill?
Prompts de agenteRecomendacao
Recomendação: (a). O histórico de versões é metade do valor do objeto, e (b) apagaria justamente o que o dono pediu ao pedir 'versões e histórico'. Custa 1 coluna, 1 rota a mais e o filtro deletedAt IS NULL em toda leitura — que o service já faz com um helper.
Ver as 2 opcoes
- a) Lixeira como a memória: deleted_at anulável, GET ?view=trash e POST .../restore. Preserva o histórico de versões.
- b) Hard delete como a skill: menos colunas; agent_prompt_versions e a tabela de vínculo vão junto em cascade.
7 O corpo do prompt aceita variáveis {{...}} nesta entrega?
Prompts de agenteRecomendacao
Recomendação: (a) agora. Variável é o diferencial real de um prompt sobre um texto, mas é produto novo: parser, validação na escrita, tela de variáveis e a regra do que acontece quando a variável não é preenchida — e nada disso foi pedido. Se o dono quiser, (b) entra como v2 sem mudar o resto do desenho (uma coluna e uma etapa no prompt_get).
Ver as 2 opcoes
- a) Não: o corpo é markdown livre e o agente preenche o que precisa. Variável fica para depois.
- b) Sim: coluna variables Json, validação na escrita e substituição na leitura do prompt_get.
8 Quais relações com a task e qual delas entra no mustRead do agente?
Prompts de agenteRecomendacao
Recomendação: (a). 'execution' já cobre 'ler antes de agir', que é o que mustRead significa; (b) só aumenta o enum e o orçamento do bundle sem ganhar comportamento novo. Vale registrar que o vínculo tem de conferir o MESMO projeto da task (molde linkMemory), coisa que o linkSkill de skills NÃO faz — o bug que este clone não pode copiar.
Ver as 2 opcoes
- a) execution -> mustRead; reference e validation só resumidas no bundle. Igual à skill.
- b) execution e uma categoria nova (constraint) no mustRead; mais um valor no enum AgentPromptTaskRelation.
9 O agente só descobre os prompts do projeto se ligar o toolset, ou eles entram no catálogo padrão junto com o resto?
Prompts de agenteRecomendacao
Recomendação: (a). É coerente com o que o próprio repo já faz com render, github e skills-history, e medido: não há espaço para nenhuma tool nova no padrão (folga de 92,75 tokens). A frase nas instructions NÃO cabe (1196 de 1200, folga 4) e citaria tool fora do padrão, o que o teste proíbe; o agente que liga o toolset descobre tudo por agentpack_search_tools.
Ver as 2 opcoes
- a) Só com o toolset ligado (opt-in); a descoberta é por agentpack_search_tools, que é do toolset core (padrão) e devolve tools de toolsets desligados com o campo activate. O padrão não muda e nenhum agente existente é afetado.
- b) No padrão, o que exige subir o teto de 15.000 tokens (ver D1).
10 Onde ficam as 3 tools de versão (prompt_version_list/get/restore) e o task_prompt_unlink? O critério isAdminToolName manda 2 das 3 de versão e o unlink para o toolset de ADMIN, e prompt_version_get é de LEITURA — quem só quiser ler uma versão teria de ligar prompt_delete junto.
Prompts de agenteRecomendacao
Recomendação: (a). É o precedente do próprio repo e mantém a armadilha que a correção sugeria de criar. Com (a), prompts-admin tem só prompt_delete e ler uma versão não habilita apagar nada; task_prompt_unlink fica em tasks-admin pelo critério, e prompts-history NÃO entra em ADMIN_CONNECTION_TOOLSETS porque é leitura — igual a skills-history, que também não entra. Se o dono preferir (b), a consequência a registrar é que ligar prompts-admin por uma leitura habilita prompt_delete junto, sem tela que faça isso hoje.
Ver as 3 opcoes
- a) As 3 de versão em prompts-history, carimbadas à mão, como skills-history já faz: prompts-admin fica SÓ com prompt_delete. Precedente medido no repo (isAdminToolName também dá true para skill_version_get e skill_version_restore, e as 3 skill_version_* moram em skills-history pelo carimbo de tools/core/index.ts:47-48). Custo: um spread carimbado a mais em core/index.ts e um ramo no teste.
- b) Aceitar o critério: prompt_version_get e prompt_version_restore em prompts-admin. Menos código, fiel ao critério, mas leitura mora em toolset de administração e não existe tela que ligue um -admin fora da conexão de administração (ADMIN_CONNECTION_TOOLSETS, lib/agentKeys.ts:73-79).
- c) Renomear as tools (prompt_versions_list etc.) ou mexer no ADMIN_TOOL_PATTERN: muda critério de produto já usado por skills, memórias e knowledge.
11 As 3 tools de vínculo com task (task_prompt_link/list/unlink) também não cabem no catálogo padrão. Entram em toolset opt-in junto com as de prompt, ou viram campo novo em task_get/task_context_bundle?
Prompts de agenteRecomendacao
Recomendação: (a). Medido: o trio equivalente (task_skill_link 1.051 B + task_skill_list 636 B + task_skill_unlink 815 B) leva o padrão a 15.532,75 tokens, acima do teto. Nenhuma tool de prompt volta ao padrão, então nenhum agente existente vê mudança no tools/list — e isso vira asserção por prefixo em mcp-toolsets.test.ts, não só uma frase no doc.
Ver as 3 opcoes
- a) Toolset opt-in: link/list carimbadas em prompts, unlink em tasks-admin pelo critério. Padrão continua em 57 tools e 14.907,25 tokens. Precedente: render, github, skills-history.
- b) Campo novo em task_get / task_context_bundle: mais barato em bytes, pior para o agente (campo polimórfico é mais difícil de usar do que tool).
- c) Subir o teto de 15.000 tokens: é política de produto e o doc diz que 'subir o teto é decisão humana'.
12 Onde arrumar os ~319 tokens que faltam no catálogo MCP? (MEDIDO: 14 907,25 de 15 000 hoje; a §5 inteira vai a 15 318,75 e o gate reprova)
RoadmapRecomendacao
B. É a única que preserva a §5 inteira, e não é exceção: 'corrigir decisão errada' é manutenção, não fluxo do dia a dia do agente, que é literalmente o critério documentado em mcp/toolsets.ts:108-125. C é mexer na regra do repo sem o dono pedir. Enquanto o dono não decidir, a implementação NÃO escreve a tool nova: o primeiro comando do passo 6 é o gate, e ele reprova.
Ver as 3 opcoes
- B) Mover task_decision_supersede para tasks-admin (recomendada): medido 14 308,25, folga 691,75, a §5 inteira preservada, uma linha em ADMIN_TOOL_NAMES
- A) Toolset opt-in roadmap: medido 15 046,75, NÃO cabe sozinho; só funciona junto com o movimento de B, ou entrando por task_update apenas
- C) Subir o teto de 15 000 tokens: regra do repo (MCP-08) e não é pedido do dono
13 Arrasto concorrente no Gantt: guard no cliente ou versão na task?
RoadmapRecomendacao
A agora, B como backlog. A crítica original acusou last-write-wins silencioso e está certa no diagnóstico, mas a correção que propôs (version + If-Match em Task) é mudança de contrato de escrita de TODA task: toca TaskUpdatePatch, task_events, o cliente gerado e todo agente que já chama PATCH /tasks/:id sem header. Num desenho de mudança mínima, isso introduz uma quebra maior do que a que evita. O residual (última-escrita-vence entre browser e agente) continua existindo e está escrito como risco, não escondido.
Ver as 2 opcoes
- A) Guard no cliente (recomendada): snapshot de query.dataUpdatedAt; se o cache mudou, não grava e mostra 'a task mudou na tela, atualize'
- B) version Int @default(1) com If-Match e 409 VERSION_CONFLICT
14 Como exportar a visão do roadmap?
RoadmapRecomendacao
A. Zero dependência, zero serviço, zero risco, e o link abre exatamente a visão que o dono viu. B degrada: o render-screenshot.ts já devolve a URL e o motivo em vez de falar quando o serviço não está. C é um renderizador novo com fontes e cores do tema dentro do container da API.
Ver as 3 opcoes
- A) Link + resumo em Markdown copiado (a URL já carrega período, zoom, agrupamento e filtros)
- B) PNG pelo serviço de captura (SHOT_SERVICE_URL)
- C) PDF gerado no servidor
15 Fuso: como gravar e mostrar o dia inteiro?
RoadmapRecomendacao
A. É o modelo all-day do Google Calendar: o dia inteiro é o mesmo dia em qualquer fuso. B faria a mesma task ter dias diferentes conforme quem olha — o bug clássico de agenda. O dono está em America/Sao_Paulo, então o horário aparece na hora dele e o dia inteiro não anda para trás em UTC-3.
Ver as 2 opcoes
- A) allDay gravado como 00:00:00.000Z e formatado com timeZone UTC; horário no fuso de quem vê
- B) Gravar o fuso de quem criou e converter na leitura
16 A task atrasada entra no filtro 'Precisa de atenção'?
RoadmapRecomendacao
A. As contagens do board e os KPIs do Dashboard continuam significando o que significam hoje, e a regra da catraca de contagens não mexe. B é decisão de produto à parte, com o número antigo à parte.
Ver as 2 opcoes
- A) Não: só o chip de prazo no card e a linha no detalhe
- B) Sim: passa a contar no board e no Dashboard
17 Onde fica a tela de configurações da visão?
RoadmapRecomendacao
A. As 4 preferências são por projeto (4 colunas em projects) e a tela fica ao lado da coisa que elas mudam. Settings.tsx está em 281/300 e configuração de projeto não é configuração do usuário.
Ver as 2 opcoes
- A) No projeto, em /projects/:projectId/roadmap/config
- B) Em /settings, com seletor de projeto
18 Sugestão automática de datas por dependência e prioridade entra nesta entrega?
RoadmapRecomendacao
A. O pedido diz que é opcional e que só propõe; isso é um serviço de sugestão, uma tela de revisão e uma ação em lote. Gravar direto sairia do combinado com o dono. O gancho já fica pronto: dependsOnIds[] vem na resposta da tool e da rota.
Ver as 2 opcoes
- A) Não (entra depois, só propondo, quem confirma é a pessoa)
- B) Entra agora com sugestão automática e gravação
19 Uma branch só ou duas (backend e frontend)?
RoadmapRecomendacao
A. Migration e backend primeiro (para o frontend ser escrito contra o schema novo), depois frontend de tasks, depois a feature nova, gates no fim. B dobra o trabalho de resolver conflito em schema.prisma, no CHANGELOG, no snapshot do registro e nos 4 arquivos gerados, que as duas frentes do workflow já vão disputar. Em todo caso: branch publicada, sem main e sem deploy.
Ver as 2 opcoes
- A) Uma branch feat/roadmap-agenda em 6 passos
- B) Duas branches para revisão separada