Agent skill
crewai
Build multi-agent AI systems with CrewAI. Create autonomous agents with roles, tools, and collaborative workflows. Use for complex task automation, research teams, and orchestrated AI agent systems.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/crewai-housegarofalo-claude-code-base
SKILL.md
CrewAI
Expert guidance for building multi-agent AI systems.
Triggers
Use this skill when:
- Building multi-agent AI systems
- Creating autonomous agents with roles and tools
- Implementing collaborative AI workflows
- Working with research or analysis teams of AI agents
- Orchestrating complex task automation with multiple agents
- Keywords: crewai, multi-agent, crew, agent, task, autonomous, orchestration
Installation
pip install crewai crewai-tools
Basic Concepts
Agents
from crewai import Agent, LLM
# Define LLM
llm = LLM(
model="openai/gpt-4o",
temperature=0.7
)
# Create agent
researcher = Agent(
role="Senior Research Analyst",
goal="Uncover cutting-edge developments in AI and data science",
backstory="""You work at a leading tech think tank.
Your expertise lies in identifying emerging trends and technologies.
You have a knack for dissecting complex data and presenting
actionable insights.""",
verbose=True,
allow_delegation=False,
llm=llm,
tools=[search_tool, scrape_tool]
)
writer = Agent(
role="Tech Content Writer",
goal="Write compelling content about AI advancements",
backstory="""You are a renowned content writer specializing in
technology and AI. You transform complex concepts into engaging
narratives that educate and inspire.""",
verbose=True,
allow_delegation=True,
llm=llm
)
Tasks
from crewai import Task
research_task = Task(
description="""Conduct comprehensive research on the latest
developments in AI agents technology in 2024.
Focus on identifying key trends, breakthrough technologies,
and potential industry impacts.""",
expected_output="""A detailed 3-paragraph report covering:
1. Main AI agent frameworks and their capabilities
2. Key use cases and applications
3. Future predictions and challenges""",
agent=researcher,
tools=[search_tool]
)
write_task = Task(
description="""Using the research findings, write a blog post
about AI agents that is engaging and accessible to a technical
audience. The post should be informative yet engaging.""",
expected_output="A 4-paragraph blog post in markdown format",
agent=writer,
context=[research_task] # Depends on research task
)
Crew
from crewai import Crew, Process
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential, # or Process.hierarchical
verbose=True
)
# Run the crew
result = crew.kickoff()
print(result)
Tools
Built-in Tools
from crewai_tools import (
SerperDevTool,
ScrapeWebsiteTool,
FileReadTool,
DirectoryReadTool,
CodeInterpreterTool,
PDFSearchTool,
YoutubeVideoSearchTool
)
# Search tool
search_tool = SerperDevTool()
# Web scraping
scrape_tool = ScrapeWebsiteTool()
# File operations
file_tool = FileReadTool(file_path="data.txt")
dir_tool = DirectoryReadTool(directory="./documents")
# Code execution
code_tool = CodeInterpreterTool()
# PDF search
pdf_tool = PDFSearchTool(pdf="report.pdf")
Custom Tools
from crewai.tools import BaseTool
from pydantic import Field
class CalculatorTool(BaseTool):
name: str = "Calculator"
description: str = "Useful for performing mathematical calculations"
def _run(self, expression: str) -> str:
try:
result = eval(expression)
return str(result)
except Exception as e:
return f"Error: {str(e)}"
class DatabaseTool(BaseTool):
name: str = "Database Query"
description: str = "Query the database for information"
connection_string: str = Field(default="")
def _run(self, query: str) -> str:
# Execute database query
return execute_query(self.connection_string, query)
# Use tools
calculator = CalculatorTool()
db_tool = DatabaseTool(connection_string="postgresql://...")
Function-based Tools
from crewai.tools import tool
@tool("Weather Lookup")
def weather_tool(city: str) -> str:
"""Look up current weather for a city."""
# API call to weather service
return f"Weather in {city}: 72°F, Sunny"
@tool("Stock Price")
def stock_tool(symbol: str) -> str:
"""Get current stock price for a symbol."""
# API call to stock service
return f"{symbol}: $150.00"
Advanced Patterns
Hierarchical Process
from crewai import Crew, Process, Agent
manager = Agent(
role="Project Manager",
goal="Coordinate the team to deliver high-quality results",
backstory="Experienced manager who ensures efficient collaboration",
allow_delegation=True
)
crew = Crew(
agents=[researcher, writer, editor],
tasks=[research_task, write_task, edit_task],
process=Process.hierarchical,
manager_agent=manager, # Or use manager_llm
verbose=True
)
Task Callbacks
def task_callback(output):
print(f"Task completed with output: {output.raw}")
# Save to database, send notification, etc.
task = Task(
description="Research AI trends",
expected_output="Research report",
agent=researcher,
callback=task_callback
)
Memory
from crewai import Crew
crew = Crew(
agents=[agent1, agent2],
tasks=[task1, task2],
memory=True, # Enable memory
embedder={
"provider": "openai",
"config": {"model": "text-embedding-3-small"}
}
)
Async Execution
import asyncio
from crewai import Crew
async def run_crew():
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
verbose=True
)
result = await crew.kickoff_async()
return result
# Run
result = asyncio.run(run_crew())
Configuration
YAML Configuration
# agents.yaml
researcher:
role: "Senior Research Analyst"
goal: "Uncover cutting-edge developments"
backstory: "Expert at identifying trends"
tools:
- search_tool
- scrape_tool
writer:
role: "Tech Content Writer"
goal: "Write compelling content"
backstory: "Renowned content writer"
# tasks.yaml
research_task:
description: "Research latest AI developments"
expected_output: "Detailed research report"
agent: researcher
write_task:
description: "Write blog post from research"
expected_output: "Blog post in markdown"
agent: writer
context:
- research_task
from crewai import Crew
from crewai.project import CrewBase, agent, crew, task
@CrewBase
class MyCrew:
agents_config = "config/agents.yaml"
tasks_config = "config/tasks.yaml"
@agent
def researcher(self) -> Agent:
return Agent(config=self.agents_config["researcher"])
@task
def research_task(self) -> Task:
return Task(config=self.tasks_config["research_task"])
@crew
def crew(self) -> Crew:
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential
)
LLM Configuration
from crewai import LLM
# OpenAI
openai_llm = LLM(model="openai/gpt-4o", temperature=0.7)
# Anthropic
claude_llm = LLM(model="anthropic/claude-3-5-sonnet-20241022")
# Ollama (local)
ollama_llm = LLM(
model="ollama/llama3.1",
base_url="http://localhost:11434"
)
# Azure OpenAI
azure_llm = LLM(
model="azure/gpt-4o",
api_key="your-api-key",
base_url="https://your-resource.openai.azure.com"
)
Example: Research Team
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, ScrapeWebsiteTool
# Tools
search = SerperDevTool()
scrape = ScrapeWebsiteTool()
# Agents
researcher = Agent(
role="Research Analyst",
goal="Find and analyze information",
backstory="Expert researcher with attention to detail",
tools=[search, scrape],
verbose=True
)
analyst = Agent(
role="Data Analyst",
goal="Analyze data and extract insights",
backstory="Expert in data analysis and visualization",
verbose=True
)
writer = Agent(
role="Report Writer",
goal="Create comprehensive reports",
backstory="Skilled technical writer",
verbose=True
)
# Tasks
research = Task(
description="Research {topic} thoroughly",
expected_output="Comprehensive research notes",
agent=researcher
)
analyze = Task(
description="Analyze the research findings",
expected_output="Key insights and trends",
agent=analyst,
context=[research]
)
report = Task(
description="Write final report",
expected_output="Professional report document",
agent=writer,
context=[research, analyze]
)
# Crew
crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research, analyze, report],
process=Process.sequential,
verbose=True
)
# Execute
result = crew.kickoff(inputs={"topic": "AI Agents in 2024"})
Resources
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?