Files
english/.opencode/skills/context-engineering/references/tool-design.md
2026-04-12 01:06:31 +07:00

2.0 KiB

Tool Design

Design effective tools for agent systems.

Consolidation Principle

Single comprehensive tools > multiple narrow tools. Target: 10-20 tools max.

Architectural Reduction Evidence

Metric 17 Tools 2 Tools Improvement
Time 274.8s 77.4s 3.5x faster
Success 80% 100% +20%
Tokens 102k 61k 37% fewer

Key: Good documentation replaces tool sophistication.

When Reduction Works

Prerequisites: High docs quality, capable model, navigable problem Avoid when: Messy systems, specialized domain, safety-critical

Description Engineering

Answer four questions:

  1. What does the tool do?
  2. When should it be used?
  3. What inputs does it accept?
  4. What does it return?

Good Example

{
  "name": "get_customer",
  "description": "Retrieve customer profile by ID. Use for order processing, support. Returns 404 if not found.",
  "parameters": {
    "customer_id": {"type": "string", "pattern": "^CUST-[0-9]{6}$"},
    "format": {"enum": ["concise", "detailed"]}
  }
}

Poor Example

{"name": "search", "description": "Search for things", "parameters": {"q": {}}}

Error Messages

def format_error(code, message, resolution):
    return {
        "error": {"code": code, "message": message,
                  "resolution": resolution, "retryable": code in RETRYABLE}
    }
# "Use YYYY-MM-DD format, e.g., '2024-01-05'"

Response Formats

Offer concise vs detailed:

def get_data(id, format="concise"):
    if format == "concise":
        return {"name": data.name}
    return data.full()  # Detailed

Guidelines

  1. Consolidate tools (target 10-20)
  2. Answer all four questions
  3. Use full parameter names
  4. Design errors for recovery
  5. Offer concise/detailed formats
  6. Test with agents before deploy
  7. Start minimal, add when proven