Design de Ferramentas para Agentes

Esta skill deve ser usada para a camada de interface de ferramentas de um sistema de agente, especificamente: escrever descrições de ferramentas nas quais os agentes possam rotear, projetar schemas e formatos de resposta, convenções de nomenclatura, mensagens de erro acionáveis para recuperação, design de servidor MCP, consolidação de conjunto de ferramentas e decidir quando adicionar ou remover uma ferramenta individual. Use esta skill quando a unidade de trabalho for uma única ferramenta ou um conjunto de ferramentas. Roteie decisões de formato do projeto, arquitetura de pipeline e adequação do modelo à tarefa para a skill project-development; roteie decisões sobre introduzir subagentes para a skill multi-agent-patterns.

O que é Design de Ferramentas para Agentes?

A skill 'tool-design' estabelece os princípios fundamentais para projetar ferramentas que agentes de IA não-determinísticos possam usar de forma confiável. Ela trata cada ferramenta como um contrato entre um sistema determinístico e um agente, onde a descrição deve ser inequívoca, pois os agentes inferem a intenção apenas a partir dela. A skill foca no Princípio de Consolidação, que defende a redução do número de ferramentas para um conjunto com propósitos não sobrepostos, evitando ambiguidades e falhas de seleção. Além disso, aborda tópicos como engenharia de descrições, formatação de respostas (concisa vs. detalhada), design de mensagens de erro acionáveis, nomenclatura consistente (verbo-substantivo) e o uso de namespacing MCP (Model Context Protocol) para organizar grandes catálogos. A skill se aplica a plataformas como Claude Code, Cursor e Codex, e fornece orientação prática, incluindo um checklist de auditoria para novas ferramentas e um padrão de teste onde as falhas observadas são realimentadas para otimizar as descrições. O documento também discute a Redução Arquitetônica, um caso extremo da consolidação que substitui ferramentas especializadas por capacidades primitivas de uso geral (como comandos Unix), citando evidências de produção de que essa abordagem pode superar arquiteturas complexas com múltiplas ferramentas. Em resumo, esta skill é o guia definitivo para criar a camada de interface que conecta código determinístico a agentes de IA, garantindo eficiência e precisão.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/tool-design

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Design de Ferramentas para Agentes faz?

Projete cada ferramenta como um contrato entre um sistema determinístico e um agente não-determinístico. Diferentemente de APIs voltadas para humanos, as ferramentas voltadas para agentes devem tornar o contrato inequívoco apenas por meio da descrição: os agentes inferem a intenção a partir das descrições e geram chamadas que devem corresponder aos formatos esperados. Toda ambiguidade se torna um modo de falha potencial que nenhuma engenharia de prompt pode corrigir.

A unidade de trabalho para esta skill é uma única ferramenta ou um catálogo de ferramentas. Decisões sobre o formato do projeto, arquitetura de pipeline, adequação do modelo à tarefa e custo no nível do projeto pertencem a project-development. Decidir se deve introduzir subagentes pertence a multi-agent-patterns. Esta skill é responsável pela camada de interface que conecta o código determinístico ao agente.

Quando Ativar

Ative esta skill quando a unidade de trabalho for uma ferramenta:

  • Escrever uma nova descrição, schema ou formato de resposta de ferramenta.
  • Depurar casos em que o agente escolheu a ferramenta errada ou gerou chamadas malformadas.
  • Consolidar um catálogo de ferramentas sobreposto (o clássico caso de "temos 17 ferramentas, o agente erra metade das vezes").
  • Projetar mensagens de erro acionáveis para que o agente possa se autocorrigir.
  • Nomear ferramentas e parâmetros de forma consistente em todo um catálogo (namespacing MCP, nomenclatura verbo-substantivo).
  • Avaliar uma ferramenta de terceiros em relação ao princípio de consolidação antes de adicioná-la.

Não ative esta skill para trabalhos adjacentes de outras skills:

  • Decidir se o projeto deve usar LLMs ou quais devem ser os estágios do pipeline: project-development.
  • Decidir se deve dividir o trabalho entre subagentes ou executar um único agente com mais ferramentas: multi-agent-patterns.
  • Reduzir o peso de tokens das saídas das ferramentas no nível da trajetória (mascaramento de observação, escolha de formato em escala): context-optimization.

Conceitos Principais

Projete ferramentas em torno do princípio de consolidação: se um engenheiro humano não consegue dizer definitivamente qual ferramenta deve ser usada em uma determinada situação, um agente não pode fazer melhor. Reduza o conjunto de ferramentas até que cada uma tenha um propósito inequívoco, porque os agentes selecionam ferramentas comparando descrições, e qualquer sobreposição introduz erros de seleção.

Trate toda descrição de ferramenta como engenharia de prompt que molda o comportamento do agente. A descrição não é documentação para humanos — ela é injetada no contexto do agente e direciona diretamente o raciocínio. Escreva descrições que respondam o que a ferramenta faz, quando usá-la e o que ela retorna, porque essas três perguntas são exatamente o que os agentes avaliam durante a seleção de ferramentas.

Tópicos Detalhados

A Interface Ferramenta-Agente

Ferramentas como Contratos Projete cada ferramenta como um contrato autocontido. Quando humanos chamam APIs, eles leem a documentação, entendem as convenções e fazem solicitações apropriadas. Os agentes devem inferir o contrato inteiro a partir de um único bloco de descrição. Torne o contrato inequívoco incluindo exemplos de formato, padrões esperados e restrições explícitas. Não omita nada que um chamador precise saber, porque os agentes não podem fazer perguntas esclarecedoras antes de fazer uma chamada.

Descrição da Ferramenta como Prompt Escreva descrições de ferramentas sabendo que elas carregam diretamente no contexto do agente e, coletivamente, orientam o comportamento. Uma descrição vaga como "Pesquisar no banco de dados" com nomes de parâmetros enigmáticos força o agente a adivinhar — e adivinhar produz chamadas incorretas. Em vez disso, inclua contexto de uso, exemplos de formato de parâmetros e padrões sensatos. Cada palavra na descrição ajuda ou atrapalha a precisão da seleção de ferramentas.

Namespacing e Organização Atribua namespaces a ferramentas sob prefixos comuns à medida que a coleção cresce, porque os agentes se beneficiam do agrupamento hierárquico. Quando um agente precisa de operações de banco de dados, ele roteia para o namespace db_*; quando precisa de interações web, roteia para web_*. Sem namespacing, os agentes devem avaliar todas as ferramentas em uma lista plana, o que degrada a precisão da seleção à medida que o número cresce.

O Princípio de Consolidação

Ferramentas Únicas e Abrangentes Construa ferramentas únicas e abrangentes em vez de várias ferramentas estreitas que se sobrepõem. Em vez de implementar listar_usuarios, listar_eventos e criar_evento separadamente, implemente agendar_evento que encontra disponibilidade e agenda em uma única chamada. A ferramenta abrangente lida com o fluxo de trabalho completo internamente, removendo o fardo do agente de encadear chamadas na ordem correta.

Por que a Consolidação Funciona Aplique a consolidação porque os agentes têm contexto e atenção limitados. Cada ferramenta na coleção compete por atenção durante a seleção, cada descrição consome tokens do orçamento de contexto e a funcionalidade sobreposta cria ambiguidade. A consolidação elimina descrições redundantes, remove a ambiguidade de seleção e reduz o conjunto efetivo de ferramentas. O estudo de caso d0 da Vercel é um exemplo concreto de redução de ferramentas especializadas em um conjunto menor de ferramentas primitivas com melhores resultados medidos (claim-tool-design-vercel-d0-reduction).

Quando Não Consolidar Mantenha as ferramentas separadas quando elas têm comportamentos fundamentalmente diferentes, servem a contextos diferentes ou devem ser chamáveis independentemente. A consolidação excessiva cria um problema diferente: uma única ferramenta com muitos parâmetros e modos se torna difícil para os agentes parametrizarem corretamente.

Redução Arquitetônica

Leve o princípio de consolidação ao seu extremo lógico, removendo a maioria das ferramentas especializadas em favor de capacidades primitivas e de uso geral. Evidências de produção mostram que essa abordagem pode superar arquiteturas sofisticadas com múltiplas ferramentas.

O Padrão de Agente de Sistema de Arquivos Forneça acesso direto ao sistema de arquivos por meio de uma única ferramenta de execução de comando em vez de construir ferramentas personalizadas para exploração de dados, consulta de schema e validação de consultas. O agente usa utilitários Unix padrão (grep, cat, find, ls) para explorar e operar no sistema. Isso funciona porque sistemas de arquivos são uma abstração comprovada que os modelos entendem profundamente, ferramentas padrão têm comportamento previsível, os agentes podem encadear primitivas de forma flexível em vez de serem limitados a fluxos de trabalho predefinidos, e boa documentação em arquivos substitui ferramentas de sumarização.

Quando a Redução Supera a Complexidade Escolha a redução quando a camada de dados for bem documentada e consistentemente estruturada, o modelo tiver capacidade de raciocínio suficiente, ferramentas especializadas estiverem restringindo em vez de permitir o modelo, ou mais tempo for gasto mantendo a estrutura de suporte do que melhorando os resultados. Evite a redução quando os dados subjacentes forem confusos ou mal documentados, o domínio exigir conhecimento especializado que o modelo não possui, restrições de segurança devem limitar as ações do agente, ou as operações se beneficiarem genuinamente de fluxos de trabalho estruturados.

Construa para Modelos Futuros Projete arquiteturas mínimas que se beneficiem das melhorias do modelo, em vez de arquiteturas sofisticadas que travam as limitações atuais. Pergunte se cada ferramenta permite novas capacidades ou restringe o raciocínio que o modelo poderia realizar sozinho — ferramentas construídas como "guardrails" frequentemente se tornam passivos à medida que os modelos melhoram.

Veja Estudo de Caso de Redução Arquitetônica para evidências de produção.

Engenharia de Descrição de Ferramentas

Estrutura da Descrição Estruture toda descrição de ferramenta para responder a quatro perguntas:

  1. O que a ferramenta faz? Declare exatamente o que a ferramenta realiza — evite linguagem vaga como "ajuda com" ou "pode ser usada para."
  2. Quando deve ser usada? Especifique gatilhos diretos ("O usuário pergunta sobre preços") e sinais indiretos ("Precisa de taxas de mercado atuais").
  3. Que entradas ela aceita? Descreva cada parâmetro com tipos, restrições, padrões e exemplos de formato.
  4. O que ela retorna? Documente o formato de saída, estrutura, exemplos de resposta bem-sucedida e condições de erro.

Seleção de Parâmetros Padrão Defina padrões para refletir casos de uso comuns. Os padrões reduzem o fardo do agente, eliminando a especificação desnecessária de parâmetros e prevenindo erros de parâmetros omitidos. Escolha padrões que produzam resultados úteis sem exigir que o agente entenda todas as opções.

Otimização do Formato de Resposta

Ofereça opções de formato de resposta (concisa vs. detalhada) porque o tamanho da resposta da ferramenta impacta significativamente o uso do contexto. O formato conciso retorna apenas campos essenciais, adequado para confirmações. O formato detalhado retorna objetos completos, adequado quando o contexto completo impulsiona decisões. Documente quando usar cada formato na descrição da ferramenta para que os agentes aprendam a selecionar apropriadamente.

Design de Mensagens de Erro

Projete mensagens de erro para dois públicos: desenvolvedores depurando problemas e agentes se recuperando de falhas. Para agentes, toda mensagem de erro deve ser acionável — ela deve declarar o que deu errado e como corrigi-lo. Inclua orientação de nova tentativa para erros que podem ser repetidos, exemplos de formato corrigido para erros de entrada e campos específicos ausentes para solicitações incompletas. Um erro que diz apenas "falhou" fornece sinal de recuperação zero.

Schema de Definição de Ferramenta

Estabeleça um schema consistente em todas as ferramentas. Use o padrão verbo-substantivo para nomes de ferramentas (get_customer, create_order), nomes de parâmetros consistentes entre ferramentas (sempre customer_id, nunca às vezes id e às vezes identifier) e nomes de campos de retorno consistentes. A consistência reduz a carga cognitiva sobre os agentes e melhora a generalização entre ferramentas.

Design de Coleção de Ferramentas

Limite as coleções de ferramentas ao menor conjunto com propósitos não sobrepostos, porque a sobreposição de descrições causa confusão no modelo e mais ferramentas nem sempre levam a melhores resultados. Quando mais ferramentas são genuinamente necessárias, use namespacing para criar agrupamentos lógicos. Implemente mecanismos de seleção: agrupamento de ferramentas por domínio, dicas de seleção baseadas em exemplos e ferramentas guarda-chuva que roteiam para subferramentas especializadas.

Requisitos de Nomenclatura de Ferramentas MCP

Use sempre nomes de ferramentas totalmente qualificados com o MCP (Model Context Protocol) para evitar erros de "ferramenta não encontrada".

Formato: NomeDoServidor:nome_da_ferramenta

# Correto: Nomes totalmente qualificados
"Use a ferramenta BigQuery:bigquery_schema para recuperar schemas de tabelas."
"Use a ferramenta GitHub:create_issue para criar issues."

# Incorreto: Nomes não qualificados
"Use a ferramenta bigquery_schema..."  # Pode falhar com vários servidores

Sem o prefixo do servidor, os agentes podem falhar ao localizar ferramentas quando vários servidores MCP estão disponíveis. Estabeleça convenções de nomenclatura que incluam o contexto do servidor em todas as referências de ferramentas.

Usando Agentes para Otimizar Ferramentas

Alimente falhas observadas de ferramentas de volta para um agente diagnosticar problemas e melhorar descrições. Trate ganhos de eficiência relatados como específicos da carga de trabalho até serem reproduzidos no catálogo de ferramentas alvo.

O Padrão de Agente de Teste de Ferramentas:

def optimize_tool_description(tool_spec, failure_examples):
    """
    Use um agente para analisar falhas de ferramentas e melhorar descrições.

    Processo:
    1. O agente tenta usar a ferramenta em diversas tarefas
    2. Colete modos de falha e pontos de atrito
    3. O agente analisa falhas e propõe melhorias
    4. Teste descrições melhoradas nas mesmas tarefas
    """
    prompt = f"""
    Analise esta especificação de ferramenta e as falhas observadas.

    Ferramenta: {tool_spec}

    Falhas observadas:
    {failure_examples}

    Identifique:
    1. Por que os agentes estão falhando com esta ferramenta
    2. Que informações estão faltando na descrição
    3. Que ambiguidades causam uso incorreto

    Proponha uma descrição de ferramenta melhorada que resolva esses problemas.
    """

    return get_agent_response(prompt)

Isso cria um ciclo de feedback: agentes usando ferramentas geram dados de falha, que os agentes então usam para melhorar as descrições das ferramentas, o que reduz falhas futuras.

Testando o Design de Ferramentas

Avalie os designs de ferramentas contra cinco critérios: ausência de ambiguidade, completude, capacidade de recuperação, eficiência e consistência. Teste apresentando solicitações de agente representativas e avaliando as chamadas de ferramenta resultantes em relação ao comportamento esperado.

Orientação Prática

Estrutura de Seleção de Ferramentas

Ao projetar coleções de ferramentas:

  1. Identifique fluxos de trabalho distintos que os agentes devem realizar
  2. Agrupe ações relacionadas em ferramentas abrangentes
  3. Garanta que cada ferramenta tenha um propósito claro e inequívoco
  4. Documente casos de erro e caminhos de recuperação
  5. Teste com interações reais de agente

Checklist de Auditoria de Ferramentas

Use este checklist para toda ferramenta antes de adicioná-la a um agente:

  1. Nome: verbo-substantivo, com namespacing se o catálogo tiver vários domínios.
  2. Descrição: declara o que a ferramenta faz, quando usá-la e o que ela retorna.
  3. Schema: todo parâmetro tem tipo, restrições, padrões e valores de exemplo.
  4. Formato de retorno: payloads de sucesso e erro são documentados e legíveis por máquina.
  5. Recuperação: cada erro diz ao agente o que mudar antes de tentar novamente.
  6. Sobreposição: nenhuma outra ferramenta tem o mesmo cenário de ativação.
  7. Decisão de consolidação: ferramentas estreitas adjacentes são mescladas, a menos que chamadas independentes sejam necessárias.
  8. Impacto de token: respostas grandes suportam modo conciso ou modo de referência de arquivo.

Exemplos

Exemplo 1: Ferramenta Bem Projetada

def get_customer(customer_id: str, format: str = "concise"):
    """
    Recupera informações do cliente pelo ID.

    Use quando:
    - O usuário pergunta sobre detalhes específicos do cliente
    - Precisa de contexto do cliente para tomada de decisão
    - Verificando a identidade do cliente

    Args:
        customer_id: Formato "CUST-######" (ex.: "CUST-000001")
        format: "concise" para campos principais, "detailed" para registro completo

    Retorna:
        Objeto Cliente com os campos solicitados

    Erros:
        NOT_FOUND: ID do cliente não encontrado
        INVALID_FORMAT: ID deve corresponder ao padrão CUST-######
    """

Exemplo 2: Design de Ferramenta Ruim

Este exemplo demonstra várias antipadrões de design de ferramentas:

def search(query):
    """Pesquisar no banco de dados."""
    pass

Problemas com este design:

  1. Nome vago: "search" é ambíguo — pesquisar o quê, para que propósito?
  2. Parâmetros ausentes: Qual banco de dados? Que formato o query deve ter?
  3. Nenhuma descrição de retorno: O que esta função retorna? Estrutura? Casos de erro?
  4. Nenhum contexto de uso: Quando usar esta ferramenta vs. outras operações?
  5. Nenhum padrão: O departamento de suporte tem schema diferente?

Referências

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

advanced-evaluation

This skill should be used for advanced LLM evaluation: LLM-as-judge systems, direct scoring, pairwise comparison, rubric calibration, evaluator bias mitigation, confidence scoring, and automated quality assessment.

bdi-mental-states

This skill should be used when modeling agent mental states with BDI concepts: beliefs, desires, intentions, RDF-to-belief transformations, rational agency traces, cognitive agents, BDI ontologies, and neuro-symbolic AI integration.

book-sft-pipeline

This skill should be used for book-to-SFT pipelines: ePub extraction, literary segmentation, author-voice dataset construction, style-transfer training, LoRA workflows, and model evaluation for voice replication.

comprehensive-research-agent

Ensure thorough validation, error recovery, and transparent reasoning in research tasks with multiple tool calls

context-compression

This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve decisions, files, risks, and next actions.

context-degradation

This skill should be used for diagnosing and mitigating context degradation: lost-in-middle failures, context poisoning, context clash, context confusion, attention-pattern issues, and agent performance degradation caused by accumulated or conflicting context.

context-fundamentals

This skill should be used to explain or reason about the foundational concepts of context engineering: what context is, the anatomy of a context window, how attention mechanics work, the U-shaped attention curve, why context quality matters more than quantity, and the mental models needed to interpret every other context-engineering decision. Use this for conceptual explanation, onboarding, and background reading. Route operational work to the specialized skills: debugging attention failures goes to context-degradation, token-efficiency work goes to context-optimization, conversation summarization goes to context-compression, and project-shape decisions go to project-development.

context-optimization

This skill should be used for improving context efficiency: context budgeting, observation masking, prefix or KV-cache strategy, partitioning, token-cost reduction, retrieval scoping, and extending effective context capacity without lowering answer quality.

evaluation

This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and outcome measurement for agent pipelines.

filesystem-context

This skill should be used when agent work needs file-backed context: durable scratchpads, tool-output offloading, just-in-time discovery, cross-agent handoff files, filesystem memory, or cleanup policies for context stored outside the prompt.

harness-engineering

This skill should be used when designing autonomous agent harnesses: research loops, evaluation scaffolds, locked and editable surfaces, durable logs, novelty gates, pruning, rollback, PR preparation, and human approval boundaries.

hosted-agents

This skill should be used when designing hosted or background agent infrastructure: sandboxed execution, remote coding environments, warm pools, session persistence, multiplayer collaboration, self-spawning agents, or Modal-style sandboxes.

latent-briefing

This skill should be used when the user asks to "share memory between agents", "KV cache compaction for multi-agent", "orchestrator worker context", "latent briefing", "reduce worker tokens", "cross-agent memory without summarization", or discusses Attention Matching compaction, recursive language models with workers, or token explosion in hierarchical agents.

long-horizon-prompting

This skill should be used when writing, enhancing, or evaluating the launch prompt for a long-running autonomous agent or a parallel multi-agent orchestration attacking a hard problem: pseudo-formal task briefs that define terms and an exact success predicate linguistically, enumerate non-counting outcomes, set persistence rules with explicit stop and return conditions and effort floors, manage a diverse portfolio of parallel approaches with an approach registry and blocked-route bookkeeping, and gate the return on adversarial audit. Route agent topology and coordination protocols to multi-agent-patterns, runtime control surfaces and loop governance to harness-engineering, evaluator and quality-gate construction to evaluation, judge design to advanced-evaluation, and compaction or memory mechanics to context-compression and memory-systems.

memory-systems

This skill should be used for persistent semantic memory in agent systems: cross-session knowledge retention, entity tracking, temporal validity, graph or vector retrieval, memory consolidation, and memory benchmark selection. Route file-backed scratchpads to filesystem-context, handoff summaries to context-compression, and token-efficiency tactics to context-optimization.

multi-agent-patterns

This skill should be used when designing multi-agent systems that need context isolation, supervisor or swarm coordination, explicit handoffs, parallel execution, or a decision on whether multiple agents are justified.

project-development

This skill should be used for project-level decisions about LLM-powered systems: whether an LLM is the right primitive for the task at hand, the shape of a multi-stage batch or agent pipeline, token and cost estimation, choosing between single-agent and multi-agent at the project level, structured output design for downstream parsing, and structuring agent-assisted iteration. Use this when the unit of work is a whole project or a multi-stage pipeline. Route individual tool design to tool-design and individual skill-loading or context-budget tactics to context-optimization.

self-improvement-loops

This skill should be used when the harness, scaffold, workflow, or optimizer itself is the optimization target: recursive self-improvement (RSI) loops, meta-harnesses, self-improving harnesses that mine their own failures and propose bounded edits, evolutionary or population-based search over agent scaffolds, acceptance gates for self-modifying systems, and agentic context evolution where the mechanism that produces context is versioned and evolved. Route governance of a single autonomous loop (locked surfaces, durable logs, rollback, novelty gates, approval boundaries) to harness-engineering, measurement and quality-gate design to evaluation, judge design to advanced-evaluation, and remote sandbox infrastructure to hosted-agents.

self-managed-context

This skill should be used when a model gets read-write control over its own live context window instead of a harness-scheduled compaction policy: the context exposed as an editable file the model rewrites with code tools, model-driven eviction and in-place updates, the harness invariants that keep self-editing safe (pinned prefix, edit gate, edit receipts, budget readouts, rollback on overflow), the prefix-cache cost of mid-context edits, and steering or training the model's own context-editing strategy. Route note content and fixed-threshold summarization to context-compression, cache-stable layout under harness control to context-optimization, file offloading to filesystem-context, and loop governance to self-improvement-loops.

Habilidades Relacionadas