Communitygithub.com

Agent-Tool-Builder

Werkzeuge sind die Art und Weise, wie KI-Agenten mit der Welt interagieren. Ein gut gestaltetes Werkzeug ist der Unterschied zwischen einem funktionierenden Agenten und einem, der halluziniert, stillschweigend scheitert oder zehnmal mehr Tokens als nötig verbraucht. Diese Fähigkeit behandelt das Design von Werkzeugen vom Schema bis zur Fehlerbehandlung.

Was ist Agent-Tool-Builder?

Der 'Agent Tool Builder' ist eine umfassende Anleitung zum Design von KI-Agenten-Werkzeugen. Er betont, dass die Qualität der Tool-Beschreibungen wichtiger ist als die Implementierung, da das Sprachmodell (LLM) nur das Schema und die Beschreibung sieht, nie den Code. Die Fähigkeit behandelt Best Practices für JSON-Schema, detaillierte Parameterbeschreibungen, die Verwendung von Enums zur Einschränkung von Werten und explizite Fehlerbehandlung, um stillschweigende Fehler zu vermeiden, die Agenten vergiften. Sie unterstützt verschiedene Frameworks und Plattformen wie Anthropic SDK, OpenAI Functions, Vercel AI SDK, LangChain Tools und den aufkommenden MCP-Standard (Model Context Protocol) für plattformübergreifende Werkzeuge. Zu den wichtigsten Mustern gehören das Design von Tool-Schemata mit Beispielen, die Fehlerbehandlung mit informativen Rückgaben an das LLM, die Implementierung von MCP-Servern und die Verwendung von Tool-Runnern zur automatischen Verwaltung von Tool-Aufrufen und Konversationsstatus. Sie enthält auch Codebeispiele in Python und TypeScript sowie Strategien für die parallele Ausführung von Tools zur Latenzreduzierung.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SamuelChien/mega-skills-collection/tree/HEAD/agent-tool-builder

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Agent-Tool-Builder?

Werkzeuge sind die Art und Weise, wie KI-Agenten mit der Welt interagieren. Ein gut gestaltetes Werkzeug ist der Unterschied zwischen einem funktionierenden Agenten und einem, der halluziniert, stillschweigend scheitert oder zehnmal mehr Tokens als nötig verbraucht.

Diese Fähigkeit behandelt das Design von Werkzeugen vom Schema bis zur Fehlerbehandlung. Best Practices für JSON-Schema, Beschreibungen, die dem LLM tatsächlich helfen, Validierung und der aufkommende MCP-Standard, der zur Lingua Franca für KI-Werkzeuge wird.

Wichtige Erkenntnis: Tool-Beschreibungen sind wichtiger als Tool-Implementierungen. Das LLM sieht nie Ihren Code – es sieht nur das Schema und die Beschreibung.

Prinzipien

  • Beschreibungsqualität > Implementierungsqualität für die LLM-Genauigkeit
  • Streben Sie nach weniger als 20 Tools – mehr verursacht Verwirrung
  • Jedes Tool benötigt explizite Fehlerbehandlung – stille Fehler vergiften Agenten
  • Geben Sie Strings zurück, keine Objekte – LLMs verarbeiten Text
  • Validierung vor der Ausführung – ablehnen, korrigieren oder eskalieren, niemals stillschweigend scheitern
  • Testen Sie Tools mit dem LLM, nicht nur mit Unit-Tests

Fähigkeiten

  • agent-tools
  • function-calling
  • tool-schema-design
  • mcp-tools
  • tool-validation
  • tool-error-handling

Anwendungsbereich

  • multi-agent-coordination → multi-agent-orchestration
  • agent-memory → agent-memory-systems
  • api-design → api-designer
  • llm-prompting → prompt-engineering

Werkzeuge

Standards

  • JSON Schema - Wann: Alle Tool-Definitionen Hinweis: Das universelle Format für Tool-Schemata
  • MCP (Model Context Protocol) - Wann: Erstellung wiederverwendbarer, plattformübergreifender Tools Hinweis: Offener Standard von Anthropic, weit verbreitet

Frameworks

  • Anthropic SDK - Wann: Claude-basierte Agenten Hinweis: Beta-Tool-Runner übernimmt die meiste Komplexität
  • OpenAI Functions - Wann: OpenAI-basierte Agenten Hinweis: Strict-Modus für garantierte Schema-Konformität verwenden
  • Vercel AI SDK - Wann: Multi-Provider-Tool-Handling Hinweis: Abstrahiert Unterschiede zwischen Anbietern
  • LangChain Tools - Wann: LangChain-basierte Agenten Hinweis: Konvertiert MCP-Tools in LangChain-Format

Muster

Tool-Schema-Design

Erstellen klarer, eindeutiger JSON-Schemata für Tools

Wann verwenden: Beim Definieren eines neuen Tools für einen Agenten

BEST PRACTICES FÜR TOOL-SCHEMATA:

1. Detaillierte Beschreibungen (Am Wichtigsten)

SCHLECHT - Zu vage:
{
  "name": "get_stock_price",
  "description": "Ruft Aktienkurs ab",
  "input_schema": {
    "type": "object",
    "properties": {
      "ticker": {"type": "string"}
    }
  }
}

GUT - Umfassend:
{
  "name": "get_stock_price",
  "description": "Ruft den aktuellen Aktienkurs für ein bestimmtes Ticker-Symbol ab. Das Ticker-Symbol muss ein gültiges Symbol für ein börsennotiertes Unternehmen an einer großen US-Börse wie NYSE oder NASDAQ sein. Gibt den letzten Handelskurs in USD zurück. Verwenden, wenn der Benutzer nach aktuellen oder kürzlichen Aktienkursen fragt. Stellt KEINE historischen Daten, Unternehmensinformationen oder Vorhersagen bereit.",
  "input_schema": {
    "type": "object",
    "properties": {
      "ticker": {
        "type": "string",
        "description": "Das Aktien-Ticker-Symbol, z.B. AAPL für Apple Inc."
      }
    },
    "required": ["ticker"]
  }
}

2. Parameterbeschreibungen

Jeder Parameter benötigt:
- Was es ist
- Erwartetes Format
- Beispielwert
- Randfälle/Einschränkungen

{
  "location": {
    "type": "string",
    "description": "Stadt und Bundesland/Land. Format: 'Stadt, Bundesland' für US (z.B. 'San Francisco, CA') oder 'Stadt, Land' für international (z.B. 'Tokyo, Japan'). Keine PLZ oder Koordinaten verwenden."
  },
  "unit": {
    "type": "string",
    "enum": ["celsius", "fahrenheit"],
    "description": "Temperatureinheit. Standardmäßig auf die Region des Benutzers, falls nicht angegeben. 'fahrenheit' für US-Benutzer, 'celsius' für andere."
  }
}

3. Enums nach Möglichkeit verwenden

Enums schränken das LLM auf gültige Werte ein:

"priority": {
  "type": "string",
  "enum": ["niedrig", "mittel", "hoch", "kritisch"],
  "description": "Aufgabenprioritätsstufe"
}

"action": {
  "type": "string",
  "enum": ["create", "read", "update", "delete"],
  "description": "Die auszuführende CRUD-Operation"
}

4. Erforderlich vs. Optional

Seien Sie explizit darüber, was erforderlich ist:

{
  "type": "object",
  "properties": {
    "query": {...},      // Erforderlich
    "limit": {...},      // Optional mit Standardwert
    "offset": {...}      // Optional
  },
  "required": ["query"],
  "additionalProperties": false  // Strict-Modus
}

Tool mit Eingabebeispielen

Verwendung von Beispielen zur Steuerung der LLM-Tool-Nutzung

Wann verwenden: Komplexe Tools mit verschachtelten Objekten oder formatempfindlichen Eingaben

BEISPIELE FÜR DIE TOOL-NUTZUNG (Anthropic Beta-Funktion):

Beispiele zeigen Claude konkrete Muster, die Schemata nicht ausdrücken können.
Verbessert die Genauigkeit von 72 % auf 90 % bei komplexen Operationen.

{ "name": "create_calendar_event", "description": "Erstellt ein Kalenderereignis mit optionalen Teilnehmern und Erinnerungen", "input_schema": { "type": "object", "properties": { "title": {"type": "string", "description": "Ereignistitel"}, "start_time": { "type": "string", "description": "ISO 8601 Datum/Uhrzeit, z.B. 2024-03-15T14:00:00Z" }, "duration_minutes": {"type": "integer", "description": "Ereignisdauer"}, "attendees": { "type": "array", "items": {"type": "string"}, "description": "E-Mail-Adressen der Teilnehmer" } }, "required": ["title", "start_time", "duration_minutes"] }, "input_examples": [ { "title": "Team Standup", "start_time": "2024-03-15T09:00:00Z", "duration_minutes": 30, "attendees": ["[email protected]", "[email protected]"] }, { "title": "Kurzer Chat", "start_time": "2024-03-15T14:00:00Z", "duration_minutes": 15 }, { "title": "Projektüberprüfung", "start_time": "2024-03-15T16:00:00-05:00", "duration_minutes": 60, "attendees": ["[email protected]"] } ] }

PRINZIPIEN FÜR DAS BEISPIELDESIGN:

- Verwenden Sie realistische Daten, keine Platzhalter

- Zeigen Sie minimale, partielle und vollständige Spezifikationsmuster

- Halten Sie es prägnant: 1-5 Beispiele pro Tool

- Konzentrieren Sie sich auf mehrdeutige Fälle

Tool-Fehlerbehandlung

Rückgabe von Fehlern, die dem LLM helfen, sich zu erholen

Wann verwenden: Jedes Tool, das fehlschlagen kann

BEST PRACTICES FÜR DIE FEHLERBEHANDLUNG:

Informative Fehler zurückgeben

SCHLECHT:
{"error": "Fehlgeschlagen"}
{"error": true}

GUT:
{
  "error": true,
  "error_type": "not_found",
  "message": "Standort 'Atlantis' nicht in der Wetterdatenbank gefunden. Bitte geben Sie einen echten Stadtnamen wie 'San Francisco, CA' an.",
  "suggestions": ["San Francisco, CA", "Los Angeles, CA"]
}

Anthropic Tool-Ergebnis mit Fehler

{
  "type": "tool_result",
  "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
  "content": "Fehler: Standort 'Atlantis' nicht in der Wetterdatenbank gefunden. Bitte geben Sie einen echten Stadtnamen wie 'San Francisco, CA' an.",
  "is_error": true
}

Fehlerkategorien, die behandelt werden müssen

1. Eingabevalidierungsfehler
   - Fehlende erforderliche Parameter
   - Ungültiges Format
   - Werte außerhalb des Bereichs

2. Externe Dienstfehler
   - API nicht verfügbar
   - Ratenbegrenzung erreicht
   - Zeitüberschreitung

3. Geschäftslogikfehler
   - Ressource nicht gefunden
   - Zugriff verweigert
   - Konflikt/Duplikat

4. Interne Fehler
   - Unerwartete Ausnahmen
   - Datenbeschädigung

Implementierungsmuster

from dataclasses import dataclass
from typing import Union

@dataclass
class ToolResult:
    success: bool
    content: str
    error_type: str = None
    suggestions: list[str] = None

    def to_response(self) -> dict:
        if self.success:
            return {"content": self.content}
        return {
            "content": f"Fehler ({self.error_type}): {self.content}",
            "is_error": True
        }

def get_weather(location: str) -> ToolResult:
    # Eingabe validieren
    if not location or len(location) < 2:
        return ToolResult(
            success=False,
            content="Der Standort muss mindestens 2 Zeichen lang sein",
            error_type="validation_error"
        )

    try:
        data = weather_api.fetch(location)
        return ToolResult(
            success=True,
            content=f"Temperatur: {data.temp}°F, Bedingungen: {data.conditions}"
        )
    except LocationNotFound:
        return ToolResult(
            success=False,
            content=f"Standort '{location}' nicht gefunden",
            error_type="not_found",
            suggestions=weather_api.suggest_locations(location)
        )
    except RateLimitError:
        return ToolResult(
            success=False,
            content="Ratenbegrenzung des Wetterdienstes überschritten. Versuchen Sie es in 60 Sekunden erneut.",
            error_type="rate_limit"
        )
    except Exception as e:
        return ToolResult(
            success=False,
            content=f"Unerwarteter Fehler: {str(e)}",
            error_type="internal_error"
        )

MCP-Tool-Muster

Erstellung von Tools mit dem Model Context Protocol

Wann verwenden: Erstellung wiederverwendbarer, plattformübergreifender Tools

MCP-TOOL-IMPLEMENTIERUNG:

MCP (Model Context Protocol) ist ein offener Standard von Anthropic zum
Verbinden von KI-Agenten mit externen Systemen. Einmal erstellen, überall verwenden.

Grundlegender MCP-Server (TypeScript)

import { Server } from "@modelcontextprotocol/sdk/server";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio";

const server = new Server({
  name: "weather-server",
  version: "1.0.0"
});

// Tools definieren
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "get_weather",
      description: "Ruft das aktuelle Wetter für einen Standort ab. Gibt Temperatur, Bedingungen und Luftfeuchtigkeit zurück. Für Wetteranfragen zu bestimmten Städten verwenden.",
      inputSchema: {
        type: "object",
        properties: {
          location: {
            type: "string",
            description: "Stadt und Bundesland, z.B. 'San Francisco, CA'"
          },
          unit: {
            type: "string",
            enum: ["celsius", "fahrenheit"],
            default: "fahrenheit"
          }
        },
        required: ["location"]
      }
    }
  ]
}));

// Tool-Aufrufe behandeln
server.setRequestHandler("tools/call", async (request) => {
  const { name, arguments: args } = request.params;

  if (name === "get_weather") {
    try {
      const weather = await fetchWeather(args.location, args.unit);
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(weather)
          }
        ]
      };
    } catch (error) {
      return {
        content: [
          {
            type: "text",
            text: `Fehler: ${error.message}`
          }
        ],
        isError: true
      };
    }
  }

  throw new Error(`Unbekanntes Tool: ${name}`);
});

// Server starten
const transport = new StdioServerTransport();
await server.connect(transport);

MCP-Vorteile

- Universelle Kompatibilität über LLM-Anbieter hinweg
- Wiederverwendbare Tool-Bibliotheken
- Unterstützung für Streaming- und SSE-Transport
- Integrierte Beobachtbarkeit
- Tool-Zugriffskontrollen

Tool-Runner-Muster

Verwendung von SDK-Tool-Runnern für die automatische Handhabung

Wann verwenden: Erstellung von Tool-Schleifen ohne manuelle Verwaltung

TOOL-RUNNER (Anthropic SDK Beta):

Der Tool-Runner handhabt die Tool-Aufruf-Schleife automatisch:
- Führt Tools aus, wenn Claude sie aufruft
- Verwaltet den Gesprächsstatus
- Behandelt Fehlerwiederholungen
- Bietet Streaming-Unterstützung

Python-Beispiel

import anthropic
from anthropic import beta_tool

client = anthropic.Anthropic()

@beta_tool
def get_weather(location: str, unit: str = "fahrenheit") -> str:
    '''Ruft das aktuelle Wetter an einem bestimmten Standort ab.

    Args:
        location: Die Stadt und das Bundesland, z.B. San Francisco, CA
        unit: Temperatureinheit, entweder 'celsius' oder 'fahrenheit'
    '''
    # Implementierung
    return json.dumps({"temperature": "72°F", "conditions": "Sonnig"})

@beta_tool
def search_web(query: str) -> str:
    '''Durchsucht das Web nach Informationen.

    Args:
        query: Die Suchanfrage
    '''
    # Implementierung
    return json.dumps({"results": [...]})

# Tool-Runner handhabt die Schleife
runner = client.beta.messages.tool_runner(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[get_weather, search_web],
    messages=[
        {"role": "user", "content": "Wie ist das Wetter in Paris?"}
    ]
)

# Jede Nachricht verarbeiten
for message in runner:
    print(message.content[0].text)

# Oder nur das Endergebnis abrufen
final = runner.until_done()

TypeScript mit Zod

import { Anthropic } from '@anthropic-ai/sdk';
import { betaZodTool } from '@anthropic-ai/sdk/helpers/beta/zod';
import { z } from 'zod';

const anthropic = new Anthropic();

const getWeatherTool = betaZodTool({
  name: 'get_weather',
  description: 'Ruft das aktuelle Wetter an einem bestimmten Standort ab',
  inputSchema: z.object({
    location: z.string().describe('Stadt und Bundesland, z.B. San Francisco, CA'),
    unit: z.enum(['celsius', 'fahrenheit']).default('fahrenheit')
  }),
  run: async (input) => {
    // Typsichere Eingabe!
    return JSON.stringify({temperature: '72°F'});
  }
});

const runner = anthropic.beta.messages.toolRunner({
  model: 'claude-sonnet-4-5',
  max_tokens: 1024,
  tools: [getWeatherTool],
  messages: [{ role: 'user', content: "Wie ist das Wetter in Paris?" }]
});

for await (const message of runner) {
  console.log(message.content[0].text);
}

Parallele Tool-Ausführung

Gleichzeitige Ausführung mehrerer Tools

Wann verwenden: Unabhängige Tool-Aufrufe, die parallel ausgeführt werden können

PARALLELE TOOL-AUSFÜHRUNG:

Standardmäßig kann Claude mehrere Tools in einer Antwort aufrufen.
Dies reduziert die Latenz für unabhängige Operationen drastisch.

Handhabung paralleler Ergebnisse

# Claude gibt mehrere tool_use-Blöcke zurück:
response.content = [
    {"type": "text", "text": "Ich überprüfe beide Standorte..."},
    {"type": "tool_use", "id": "toolu_01", "name": "get_weather",
     "input": {"location": "San Francisco, CA"}},
    {"type": "tool_use", "id": "toolu_02", "name": "get_weather",
     "input": {"location": "New York, NY"}},
    {"type": "tool_use", "id": "toolu_03", "name": "get_time",
     "input": {"timezone": "America/Los_Angeles"}},
    {"type": "tool_use", ...}
]

Individual skills in this repo

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

SamuelChien/mega-skills-collection

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

SamuelChien/mega-skills-collection

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

SamuelChien/mega-skills-collection

Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.

SamuelChien/mega-skills-collection

Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.

SamuelChien/mega-skills-collection

2D game development principles. Sprites, tilemaps, physics, camera.

SamuelChien/mega-skills-collection

3D game development principles. Rendering, shaders, physics, cameras.

SamuelChien/mega-skills-collection

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

SamuelChien/mega-skills-collection

Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases. Use when auditing accessibility, fixing a11y violations, checking color contrast, generating compliance reports, or integrating accessibility checks into CI/CD pipelines.

SamuelChien/mega-skills-collection

Ab Test Analyzer - Auto-activating skill for Data Analytics. Triggers on: ab test analyzer, ab test analyzer Part of the Data Analytics skill category.

SamuelChien/mega-skills-collection

A B Test Config Creator - Auto-activating skill for ML Deployment. Triggers on: a b test config creator, a b test config creator Part of the ML Deployment skill category.

SamuelChien/mega-skills-collection

When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "conversion experiment," "statistical significance," or "test this." For tracking implementation, see analytics-tracking.

SamuelChien/mega-skills-collection

Acceptance Criteria Creator - Auto-activating skill for Enterprise Workflows. Triggers on: acceptance criteria creator, acceptance criteria creator Part of the Enterprise Workflows skill category.

SamuelChien/mega-skills-collection

Use when a coding task should be driven end-to-end from issue intake through implementation, review, deployment, and acceptance verification with minimal human re-intervention.

SamuelChien/mega-skills-collection

Accessibility Audit Runner - Auto-activating skill for Frontend Development. Triggers on: accessibility audit runner, accessibility audit runner Part of the Frontend Development skill category.

SamuelChien/mega-skills-collection

You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.

SamuelChien/mega-skills-collection

Web accessibility patterns for WCAG 2.2 compliance including ARIA, keyboard navigation, screen readers, and testing

SamuelChien/mega-skills-collection

Manage Discord channel access — approve pairings, edit allowlists, set DM/group policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the Discord channel.

SamuelChien/mega-skills-collection

Create unified specification packages across Business, Development, and Design teams. Staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria) to build shared understanding. Does not write code.

SamuelChien/mega-skills-collection

Research a company or person and get actionable sales intel. Works standalone with web search, supercharged when you connect enrichment tools or your CRM. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]", or "tell me about [company]".

SamuelChien/mega-skills-collection

Validate messaging consistency across website, GitHub repos, and local documentation generating read-only discrepancy reports. Use when checking content alignment or finding mixed messaging. Trigger with phrases like "check consistency", "validate documentation", or "audit messaging".

Verwandte Skills