Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aws-samples avatar

Tool Creator

  • 3 installs
  • 48 repo stars
  • Updated August 5, 2026
  • aws-samples/sample-deep-insight

tool-creator is a Claude skill that guides creating new tools for a Strands SDK agent system, supporting both Agent-as-a-Tool and regular function-based tools.

About

Provides guidance for creating tools for a Strands SDK-based agent system. It supports two tool types, Agent-as-a-Tool (agents wrapped as tools) and Regular Tools (function-based), and walks type detection, naming, input parameters, implementation logic, and error handling. A developer uses it when adding a new tool to a Strands agent system.

  • Creates new tools for a Strands SDK agent system
  • Supports both Agent-as-a-Tool and regular function-based tools
  • Walks tool type detection, spec (TOOL_SPEC), input schema, and error handling

Tool Creator by the numbers

  • 3 all-time installs (skills.sh)
  • Ranked #13,657 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

tool-creator capabilities & compatibility

Free; guidance-only skill; the tools it produces target a Strands SDK agent system

Capabilities
tool creation · agent tooling · skill creation · system prompt writer
Use cases
orchestration
Pricing
Free
From the docs

What tool-creator says it does

It supports creating both agent-as-a-tool (complex agents wrapped as tools) and regular tools (simple function-based tools).
SKILL.md
This skill provides comprehensive guidance for creating effective tools for the Strands SDK-based agent system.
SKILL.md
npx skills add https://github.com/aws-samples/sample-deep-insight --skill tool-creator

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3
repo stars48
Last updatedAugust 5, 2026
Repositoryaws-samples/sample-deep-insight

What it does

Create a new Agent-as-a-Tool or regular function-based tool for a Strands SDK agent system.

Who is it for?

Adding a new tool to a Strands SDK agent, whether a wrapped sub-agent or a simple function tool

Skip if: Non-Strands agent frameworks or tool systems that do not use the TOOL_SPEC pattern

When should I use this skill?

A user requests to create, build, or add a new tool for a Strands SDK agent

What you get

A working Strands tool with a proper TOOL_SPEC, input schema, handler, and error handling, of the right type for the task

  • A Strands SDK tool (TOOL_SPEC, handler, and wrapper) of the chosen type

By the numbers

  • Supports 2 tool types: Agent-as-a-Tool and Regular Tools

Files

SKILL.mdMarkdownGitHub ↗

Tool Creator Skill

This skill provides comprehensive guidance for creating effective tools for the Strands SDK-based agent system. It supports two types of tools: Agent-as-a-Tool (agents wrapped as tools) and Regular Tools (function-based tools).

About Tools in This System

Tools extend agent capabilities by providing: 1. Agent-as-a-Tool: Specialized agents with their own prompts, models, and sub-tools 2. Regular Tools: Direct function execution for system operations, API calls, or data processing

Tool Anatomy

Every tool in src/tools/ consists of:

# Required components
TOOL_SPEC = {
    "name": "tool_name",
    "description": "What the tool does",
    "inputSchema": {"json": {...}}
}

def handle_tool_name(param: Annotated[type, "description"]):
    """Implementation logic"""
    pass

def tool_name(tool: ToolUse, **kwargs: Any) -> ToolResult:
    """Strands SDK tool wrapper"""
    pass

Tool Creation Process

Follow these steps to create a tool. The process supports both full specification upfront and interactive information gathering.

Step 1: Determine Tool Type

Automatic Detection:

  • If user mentions "agent tool", "agent-as-a-tool", or describes complex multi-step operations → Agent-as-a-Tool
  • If user mentions "simple tool", "regular tool", or describes direct operations → Regular Tool
  • If ambiguous → Ask user

Question to ask if ambiguous:

Which type of tool would you like to create?

1. **Agent-as-a-Tool**: A specialized agent with its own prompt, model, and sub-tools (e.g., coder_agent_tool, reporter_agent_tool)
   - Use when: Complex reasoning, multi-step operations, or domain expertise needed

2. **Regular Tool**: A simple function-based tool (e.g., bash_tool, python_repl_tool)
   - Use when: Direct operations like API calls, file operations, or system commands

Step 2: Gather Basic Tool Information

Collect the following information. If user provided some details already, only ask for missing information.

Required for Both Types:

1. Tool Name (if not provided)

  • Question: "What should the tool be named? (Use snake_case, e.g., 'data_analyzer_tool')"
  • Validation: Must end with '_tool', use snake_case

2. Tool Description (if not provided)

  • Question: "What does this tool do? Provide a clear description of its purpose and capabilities."
  • This becomes the tool's description field that helps other agents decide when to use it

3. Input Parameters (if not provided)

  • Question: "What input parameters does this tool need?"
  • For agent tools, typically: task (string describing what to do)
  • For regular tools: specific parameters (e.g., cmd for bash, code for python)

Step 3: Gather Type-Specific Information

For Regular Tools:

Collect these details (skip if already provided):

1. Implementation Logic

  • Question: "What operation should this tool perform? (e.g., execute subprocess, call API, read file)"
  • Common patterns: subprocess execution, HTTP requests, file operations, data transformations

2. Error Handling

  • Question: "What errors should be handled? (Default: try/except with error logging)"

3. External Dependencies (optional)

  • Question: "Does this tool require external libraries? If yes, which ones?"
For Agent-as-a-Tool:

Collect these details (skip if already provided):

1. Agent's Purpose and Role

  • Question: "What is the agent's primary purpose? What role does it play in the system?"
  • This informs the system prompt creation

2. Agent Model Type

  • Question: "Which LLM model should the agent use?"
  • Options:
  • claude-sonnet-3-7 (recommended for most tasks)
  • claude-sonnet-4 (advanced reasoning)
  • claude-sonnet-3-5-v-2 (legacy)

3. Reasoning Capability

  • Question: "Should this agent use extended thinking/reasoning? (True/False)"
  • Default: False
  • Use True for: complex analysis, planning, strategic decisions

4. Prompt Caching

  • Question: "Should prompt caching be enabled? (Recommended: True for agents called frequently)"
  • Default: (True, None)

5. Sub-tools (if not provided)

  • Question: "Which tools should this agent have access to?"
  • Common options: python_repl_tool, bash_tool, file_read
  • Reference existing tools in src/tools/

6. System Prompt Creation

  • IMPORTANT: For system prompt creation, refer to references/system-prompt-guidelines.md
  • If user hasn't provided a system prompt, ask: "Do you want to create a custom system prompt for this agent?"
  • If yes: Use system-prompt-writer guidelines from references to create an effective prompt
  • If no: Create a basic prompt based on the agent's purpose

Step 4: Create the Tool File

Generate the tool file in src/tools/ using the appropriate template:

  • Regular Tool: Use templates/regular_tool_template.py
  • Agent-as-a-Tool: Use templates/agent_tool_template.py

File Creation Steps:

1. Load the appropriate template 2. Replace template variables with gathered information 3. If creating system prompt:

  • Create prompt file in src/prompts/[tool_name_without_tool].md
  • Follow system-prompt-writer guidelines from references/system-prompt-guidelines.md
  • Use proper template variable escaping (double braces {{}} for code samples)

4. Write the tool file to src/tools/[tool_name].py 5. Inform user of file locations

Step 5: Validation and Next Steps

After creating the tool:

1. Verify File Creation

  • Confirm tool file exists at src/tools/[tool_name].py
  • If agent tool with prompt, confirm prompt file at src/prompts/[name].md

2. Integration Guidance

  • Inform user how to import and use the new tool:
     from src.tools.[tool_name] import [tool_name]

     # Use in agent
     agent = strands_utils.get_agent(
         agent_name="example",
         tools=[tool_name, other_tool],
         ...
     )

3. Testing Recommendations

  • Suggest testing the tool in isolation
  • For agent tools: Test with sample tasks
  • For regular tools: Test with sample inputs

Key Design Principles

For All Tools

1. Clear Naming: Tool names should be descriptive and end with _tool 2. Comprehensive Descriptions: Description should clearly state what the tool does and when to use it 3. Annotated Parameters: Use Annotated[type, "description"] for all parameters 4. Consistent Error Handling: Return error messages, don't raise exceptions 5. Logging: Use color-coded logging for visibility

For Agent-as-a-Tool

1. Global State Integration: Always access _global_node_states for shared context 2. Streaming Support: Use async streaming pattern with process_streaming_response_yield 3. State Updates: Update clues, history, and messages in shared state 4. Response Format: Use standard response format templates 5. Prompt Templates: Use apply_prompt_template() with proper context variables

For Regular Tools

1. Simplicity: Keep logic straightforward and focused 2. Decorator Usage: Use @log_io decorator for input/output logging 3. Subprocess Safety: Set timeouts and handle errors for subprocess calls 4. Result Formatting: Return results in consistent format (e.g., "cmd||output")

Common Patterns

Pattern 1: Agent Tool with Analysis Capabilities

# Agent for data analysis tasks
- Model: claude-sonnet-3-7
- Reasoning: False
- Tools: [python_repl_tool, bash_tool]
- Purpose: Execute data analysis and calculations

Pattern 2: Agent Tool for Report Generation

# Agent for creating reports
- Model: claude-sonnet-3-7
- Reasoning: False
- Tools: [python_repl_tool, bash_tool, file_read]
- Purpose: Generate formatted reports from analysis results

Pattern 3: Simple Execution Tool

# Tool for direct command execution
- Type: Regular Tool
- Operation: subprocess.run()
- Error Handling: Capture stderr, return error messages

References

  • System Prompt Creation: See references/system-prompt-guidelines.md for comprehensive prompt writing guidance
  • Template Files: See templates/ for tool code templates
  • Example Tools: See references/tool-examples.md for complete real-world examples

Iteration and Improvement

After creating the initial tool:

1. Test with Real Scenarios: Try the tool with actual use cases 2. Gather Feedback: Identify what works and what doesn't 3. Refine Prompts: For agent tools, improve system prompts based on behavior 4. Optimize Parameters: Adjust input schemas if needed 5. Update Documentation: Keep descriptions accurate

The goal is creating effective, reliable tools that seamlessly integrate with the Strands SDK agent system.

Related skills

FAQ

What two tool types does this skill support?

Agent-as-a-Tool (a specialized agent with its own prompt, model, and sub-tools) and Regular Tools (simple function-based tools for direct operations).

What does every Strands tool consist of?

A TOOL_SPEC (name, description, inputSchema), a handler function with the implementation logic, and a Strands SDK tool wrapper function.

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.