CrewAI Tools Expert
Purpose
Enable expert-level tool decisions in CrewAI projects by prioritizing built-in tools first and creating custom tools only when a capability gap is explicit.
When To Use
- Select tools for a new or existing agent
- Convert requirements into a minimal and reliable tool stack
- Decide between built-in tools,
@tool, BaseTool, or RagTool patterns
- Implement custom tools with robust validation, error handling, and async support
- Integrate external APIs, MCP servers, and enterprise systems
Operating Principles
- Prefer built-in tools before writing custom code
- Minimize tool count per agent to reduce tool-selection ambiguity
- Match tool outputs to task contracts and downstream consumers
- Validate credentials, dependencies, and failure modes early
- Keep tool outputs concise, deterministic, and directly usable by agents
Execution Workflow
1) Profile the Request
- Extract inputs, expected outputs, latency constraints, security constraints, and external systems
- Classify the dominant tool domain using
references/tools-landscape.md
- Record hard constraints such as offline execution, strict schemas, or approved vendors
2) Attempt Built-In Coverage
- Identify candidate tools by category from
references/tools-landscape.md
- Confirm setup requirements (API keys, package extras, authentication)
- Compose the smallest viable built-in stack to satisfy requirements
- Cap noisy tools with
max_usage_count when repeated calls add little value
3) Choose Build Path
- Use
references/selection-and-architecture.md to choose among:
- Built-in only
- Hybrid (built-in + one custom tool)
- Fully custom (rare; use only when required)
- Choose custom style:
- Use
@tool for lightweight, stateless transforms
- Use
BaseTool for configurable/stateful tools with env vars or dependencies
- Use
RagTool or adapter patterns for retrieval-oriented sources
4) Scaffold and Implement Custom Tool
- Generate starter files with
scripts/scaffold_custom_tool.py
- Use templates in
assets/templates/ for manual edits or fast bootstrap
- Apply standards in
references/custom-tool-playbook.md
- Enforce:
- Explicit
args_schema with Pydantic Field descriptions
- Clear
name and action-oriented description
- Deterministic
_run output
- Optional
_arun for true async I/O
- Actionable errors without stack-trace leakage
5) Validate Quality
- Run the implementation checklist in
references/custom-tool-playbook.md
- Verify tests cover:
- Missing/invalid environment variables
- Input validation boundaries
- Happy path output shape
- External failures (timeouts, HTTP errors, empty payloads)
- Confirm docs include usage, env vars, install extras, and examples
6) Integrate Into Agent Design
- Attach tools by role specialization, not by convenience
- Keep each agent toolset domain-coherent
- Document why each tool exists and when to call it
- Prefer orchestration with specialized worker tools for complex crews
YAML Agent Example
# agents.yaml
research_tools_agent:
role: Tooling Research Analyst
goal: Select the smallest reliable built-in CrewAI tool stack for each request.
backstory: Expert in built-in tools, API setup constraints, and capability-gap detection.
verbose: true
tools:
- SerperDevTool
- WebsiteSearchTool
- FileReadTool
tool_engineer_agent:
role: CrewAI Tool Engineer
goal: Define production-ready custom tool specs only when built-ins do not satisfy requirements.
backstory: Specialist in BaseTool patterns, input schema design, and failure-safe integration rules.
verbose: true
tools:
- DirectoryReadTool
- FileReadTool
YAML Task Example
# tasks.yaml
tool_gap_analysis_task:
description: >
Evaluate whether built-in CrewAI tools can satisfy the request.
Produce a capability matrix and justify every selected built-in tool.
expected_output: >
Markdown table listing selected tools, required credentials,
setup notes, and explicit capability gaps.
agent: research_tools_agent
custom_tool_spec_task:
description: >
If a capability gap exists, define a custom tool specification
with args_schema fields, env vars, package dependencies,
caching policy, async policy, and error-handling strategy.
expected_output: >
Structured spec and acceptance checklist for implementation and tests.
agent: tool_engineer_agent
context:
- tool_gap_analysis_task
Custom Tool Scaffolding
- Use
scripts/scaffold_custom_tool.py when implementation boilerplate is needed.
Resource Map
references/tools-landscape.md: Built-in tool categories, quick picks, and coverage map
references/selection-and-architecture.md: Built-in vs custom decision framework
references/custom-tool-playbook.md: Production implementation standards
references/repo-notes.md: zread findings from CrewAI tools repository and maintenance notes
scripts/scaffold_custom_tool.py: Deterministic custom-tool starter generator
assets/templates/agents-tools-expert.yaml: Agent template for built-in tool strategy
assets/templates/tasks-tools-selection.yaml: Task template for built-in selection and gap analysis
assets/templates/agents-custom-tooling.yaml: Agent template for custom-tool specification work
assets/templates/tasks-custom-tooling.yaml: Task template for custom-tool implementation planning
Source-of-Truth Notes
- Treat CrewAI docs as primary guidance, especially
https://docs.crewai.com/en/tools/overview
- Use
references/repo-notes.md for repository conventions validated via zread MCP
- Recheck upstream changes regularly because the historical
crewAI-tools repository is marked deprecated and points to a maintained monorepo location
1---2name: tools-expert3description: This skill should be used when selecting CrewAI built-in tools, composing agent toolchains, or creating production-ready custom tools with BaseTool or @tool, including schema validation, dependency management, caching, async support, and testing.4---56# CrewAI Tools Expert78## Purpose910Enable expert-level tool decisions in CrewAI projects by prioritizing built-in tools first and creating custom tools only when a capability gap is explicit.1112## When To Use1314- Select tools for a new or existing agent15- Convert requirements into a minimal and reliable tool stack16- Decide between built-in tools, `@tool`, `BaseTool`, or `RagTool` patterns17- Implement custom tools with robust validation, error handling, and async support18- Integrate external APIs, MCP servers, and enterprise systems1920## Operating Principles2122- Prefer built-in tools before writing custom code23- Minimize tool count per agent to reduce tool-selection ambiguity24- Match tool outputs to task contracts and downstream consumers25- Validate credentials, dependencies, and failure modes early26- Keep tool outputs concise, deterministic, and directly usable by agents2728## Execution Workflow2930### 1) Profile the Request3132- Extract inputs, expected outputs, latency constraints, security constraints, and external systems33- Classify the dominant tool domain using `references/tools-landscape.md`34- Record hard constraints such as offline execution, strict schemas, or approved vendors3536### 2) Attempt Built-In Coverage3738- Identify candidate tools by category from `references/tools-landscape.md`39- Confirm setup requirements (API keys, package extras, authentication)40- Compose the smallest viable built-in stack to satisfy requirements41- Cap noisy tools with `max_usage_count` when repeated calls add little value4243### 3) Choose Build Path4445- Use `references/selection-and-architecture.md` to choose among:46 - Built-in only47 - Hybrid (built-in + one custom tool)48 - Fully custom (rare; use only when required)49- Choose custom style:50 - Use `@tool` for lightweight, stateless transforms51 - Use `BaseTool` for configurable/stateful tools with env vars or dependencies52 - Use `RagTool` or adapter patterns for retrieval-oriented sources5354### 4) Scaffold and Implement Custom Tool5556- Generate starter files with `scripts/scaffold_custom_tool.py`57- Use templates in `assets/templates/` for manual edits or fast bootstrap58- Apply standards in `references/custom-tool-playbook.md`59- Enforce:60 - Explicit `args_schema` with Pydantic `Field` descriptions61 - Clear `name` and action-oriented `description`62 - Deterministic `_run` output63 - Optional `_arun` for true async I/O64 - Actionable errors without stack-trace leakage6566### 5) Validate Quality6768- Run the implementation checklist in `references/custom-tool-playbook.md`69- Verify tests cover:70 - Missing/invalid environment variables71 - Input validation boundaries72 - Happy path output shape73 - External failures (timeouts, HTTP errors, empty payloads)74- Confirm docs include usage, env vars, install extras, and examples7576### 6) Integrate Into Agent Design7778- Attach tools by role specialization, not by convenience79- Keep each agent toolset domain-coherent80- Document why each tool exists and when to call it81- Prefer orchestration with specialized worker tools for complex crews8283## YAML Agent Example8485```yaml86# agents.yaml87research_tools_agent:88 role: Tooling Research Analyst89 goal: Select the smallest reliable built-in CrewAI tool stack for each request.90 backstory: Expert in built-in tools, API setup constraints, and capability-gap detection.91 verbose: true92 tools:93 - SerperDevTool94 - WebsiteSearchTool95 - FileReadTool9697tool_engineer_agent:98 role: CrewAI Tool Engineer99 goal: Define production-ready custom tool specs only when built-ins do not satisfy requirements.100 backstory: Specialist in BaseTool patterns, input schema design, and failure-safe integration rules.101 verbose: true102 tools:103 - DirectoryReadTool104 - FileReadTool105```106107## YAML Task Example108109```yaml110# tasks.yaml111tool_gap_analysis_task:112 description: >113 Evaluate whether built-in CrewAI tools can satisfy the request.114 Produce a capability matrix and justify every selected built-in tool.115 expected_output: >116 Markdown table listing selected tools, required credentials,117 setup notes, and explicit capability gaps.118 agent: research_tools_agent119120custom_tool_spec_task:121 description: >122 If a capability gap exists, define a custom tool specification123 with args_schema fields, env vars, package dependencies,124 caching policy, async policy, and error-handling strategy.125 expected_output: >126 Structured spec and acceptance checklist for implementation and tests.127 agent: tool_engineer_agent128 context:129 - tool_gap_analysis_task130```131132## Custom Tool Scaffolding133134- Use `scripts/scaffold_custom_tool.py` when implementation boilerplate is needed.135136## Resource Map137138- `references/tools-landscape.md`: Built-in tool categories, quick picks, and coverage map139- `references/selection-and-architecture.md`: Built-in vs custom decision framework140- `references/custom-tool-playbook.md`: Production implementation standards141- `references/repo-notes.md`: zread findings from CrewAI tools repository and maintenance notes142- `scripts/scaffold_custom_tool.py`: Deterministic custom-tool starter generator143- `assets/templates/agents-tools-expert.yaml`: Agent template for built-in tool strategy144- `assets/templates/tasks-tools-selection.yaml`: Task template for built-in selection and gap analysis145- `assets/templates/agents-custom-tooling.yaml`: Agent template for custom-tool specification work146- `assets/templates/tasks-custom-tooling.yaml`: Task template for custom-tool implementation planning147148## Source-of-Truth Notes149150- Treat CrewAI docs as primary guidance, especially `https://docs.crewai.com/en/tools/overview`151- Use `references/repo-notes.md` for repository conventions validated via zread MCP152- Recheck upstream changes regularly because the historical `crewAI-tools` repository is marked deprecated and points to a maintained monorepo location