[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ADKJZV0MTW22PFXJ6MFCKV":3,"skill-same:01M6ADKJZV0MTW22PFXJ6MFCKV":119},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":71,"commitSha":72,"skillDirectory":73,"forksCount":74,"repositoryHtmlUrl":75,"repositoryHomepageUrl":76,"ownerHtmlUrl":77,"ownerBlogUrl":78,"ownerDescription":79,"updatedAt":80,"install":81,"resources":94},"01M6ADKJZV0MTW22PFXJ6MFCKV","agents-crewai",null,"Multi-agent orchestration framework for autonomous AI collaboration. Use when building teams of specialized agents working together on complex tasks, when you need role-based agent collaboration with memory, or for production workflows requiring sequential\u002Fhierarchical execution. Built without LangChain dependencies for lean, fast execution.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33332,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"agents crewai","crewai","Tools","when","for","orchestra","you","agent orchestration","langchain dependencies","lean","autonomous","specialized","langchain","multi-agent","orchestration framework","memory","fast","framework","teams","tasks","agent collaboration","collaboration","workflows","orchestration","research","2026-11-10 10:12:30",false,"---\nname: agents-crewai\ndescription: Multi-agent orchestration framework for autonomous AI collaboration. Use when building teams of specialized agents working together on complex tasks, when you need role-based agent collaboration with memory, or for production workflows requiring sequential\u002Fhierarchical execution. Built without LangChain dependencies for lean, fast execution.\nlicense: MIT\nmetadata:\n  version: 1.0.0\n  author: Orchestra Research\n  tags: [Agents, CrewAI, Multi-Agent, Orchestration, Collaboration, Role-Based, Autonomous, Workflows, Memory, Production]\n  dependencies: [crewai>=1.2.0, crewai-tools>=1.2.0]\n---\n\n# CrewAI - Multi-Agent Orchestration Framework\n\nBuild teams of autonomous AI agents that collaborate to solve complex tasks.\n\n## When to use CrewAI\n\n**Use CrewAI when:**\n- Building multi-agent systems with specialized roles\n- Need autonomous collaboration between agents\n- Want role-based task delegation (researcher, writer, analyst)\n- Require sequential or hierarchical process execution\n- Building production workflows with memory and observability\n- Need simpler setup than LangChain\u002FLangGraph\n\n**Key features:**\n- **Standalone**: No LangChain dependencies, lean footprint\n- **Role-based**: Agents have roles, goals, and backstories\n- **Dual paradigm**: Crews (autonomous) + Flows (event-driven)\n- **50+ tools**: Web scraping, search, databases, AI services\n- **Memory**: Short-term, long-term, and entity memory\n- **Production-ready**: Tracing, enterprise features\n\n**Use alternatives instead:**\n- **LangChain**: General-purpose LLM apps, RAG pipelines\n- **LangGraph**: Complex stateful workflows with cycles\n- **AutoGen**: Microsoft ecosystem, multi-agent conversations\n- **LlamaIndex**: Document Q&A, knowledge retrieval\n\n## Quick start\n\n### Installation\n\n```bash\n# Core framework\npip install crewai\n\n# With 50+ built-in tools\npip install 'crewai[tools]'\n```\n\n### Create project with CLI\n\n```bash\n# Create new crew project\ncrewai create crew my_project\ncd my_project\n\n# Install dependencies\ncrewai install\n\n# Run the crew\ncrewai run\n```\n\n### Simple crew (code-only)\n\n```python\nfrom crewai import Agent, Task, Crew, Process\n\n# 1. Define agents\nresearcher = Agent(\n    role=\"Senior Research Analyst\",\n    goal=\"Discover cutting-edge developments in AI\",\n    backstory=\"You are an expert analyst with a keen eye for emerging trends.\",\n    verbose=True\n)\n\nwriter = Agent(\n    role=\"Technical Writer\",\n    goal=\"Create clear, engaging content about technical topics\",\n    backstory=\"You excel at explaining complex concepts to general audiences.\",\n    verbose=True\n)\n\n# 2. Define tasks\nresearch_task = Task(\n    description=\"Research the latest developments in {topic}. Find 5 key trends.\",\n    expected_output=\"A detailed report with 5 bullet points on key trends.\",\n    agent=researcher\n)\n\nwrite_task = Task(\n    description=\"Write a blog post based on the research findings.\",\n    expected_output=\"A 500-word blog post in markdown format.\",\n    agent=writer,\n    context=[research_task]  # Uses research output\n)\n\n# 3. Create and run crew\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential,  # Tasks run in order\n    verbose=True\n)\n\n# 4. Execute\nresult = crew.kickoff(inputs={\"topic\": \"AI Agents\"})\nprint(result.raw)\n```\n\n## Core concepts\n\n### Agents - Autonomous workers\n\n```python\nfrom crewai import Agent\n\nagent = Agent(\n    role=\"Data Scientist\",                    # Job title\u002Frole\n    goal=\"Analyze data to find insights\",     # What they aim to achieve\n    backstory=\"PhD in statistics...\",         # Background context\n    llm=\"gpt-4o\",                             # LLM to use\n    tools=[],                                 # Tools available\n    memory=True,                              # Enable memory\n    verbose=True,                             # Show reasoning\n    allow_delegation=True,                    # Can delegate to others\n    max_iter=15,                              # Max reasoning iterations\n    max_rpm=10                                # Rate limit\n)\n```\n\n### Tasks - Units of work\n\n```python\nfrom crewai import Task\n\ntask = Task(\n    description=\"Analyze the sales data for Q4 2024. {context}\",\n    expected_output=\"A summary report with key metrics and trends.\",\n    agent=analyst,                            # Assigned agent\n    context=[previous_task],                  # Input from other tasks\n    output_file=\"report.md\",                  # Save to file\n    async_execution=False,                    # Run synchronously\n    human_input=False                         # No human approval needed\n)\n```\n\n### Crews - Teams of agents\n\n```python\nfrom crewai import Crew, Process\n\ncrew = Crew(\n    agents=[researcher, writer, editor],      # Team members\n    tasks=[research, write, edit],            # Tasks to complete\n    process=Process.sequential,               # Or Process.hierarchical\n    verbose=True,\n    memory=True,                              # Enable crew memory\n    cache=True,                               # Cache tool results\n    max_rpm=10,                               # Rate limit\n    share_crew=False                          # Opt-in telemetry\n)\n\n# Execute with inputs\nresult = crew.kickoff(inputs={\"topic\": \"AI trends\"})\n\n# Access results\nprint(result.raw)                             # Final output\nprint(result.tasks_output)                    # All task outputs\nprint(result.token_usage)                     # Token consumption\n```\n\n## Process types\n\n### Sequential (default)\n\nTasks execute in order, each agent completing their task before the next:\n\n```python\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential  # Task 1 → Task 2 → Task 3\n)\n```\n\n### Hierarchical\n\nAuto-creates a manager agent that delegates and coordinates:\n\n```python\ncrew = Crew(\n    agents=[researcher, writer, analyst],\n    tasks=[research_task, write_task, analyze_task],\n    process=Process.hierarchical,  # Manager delegates tasks\n    manager_llm=\"gpt-4o\"           # LLM for manager\n)\n```\n\n## Using tools\n\n### Built-in tools (50+)\n\n```bash\npip install 'crewai[tools]'\n```\n\n```python\nfrom crewai_tools import (\n    SerperDevTool,           # Web search\n    ScrapeWebsiteTool,       # Web scraping\n    FileReadTool,            # Read files\n    PDFSearchTool,           # Search PDFs\n    WebsiteSearchTool,       # Search websites\n    CodeDocsSearchTool,      # Search code docs\n    YoutubeVideoSearchTool,  # Search YouTube\n)\n\n# Assign tools to agent\nresearcher = Agent(\n    role=\"Researcher\",\n    goal=\"Find accurate information\",\n    backstory=\"Expert at finding data online.\",\n    tools=[SerperDevTool(), ScrapeWebsiteTool()]\n)\n```\n\n### Custom tools\n\n```python\nfrom crewai.tools import BaseTool\nfrom pydantic import Field\n\nclass CalculatorTool(BaseTool):\n    name: str = \"Calculator\"\n    description: str = \"Performs mathematical calculations. Input: expression\"\n\n    def _run(self, expression: str) -> str:\n        try:\n            result = eval(expression)\n            return f\"Result: {result}\"\n        except Exception as e:\n            return f\"Error: {str(e)}\"\n\n# Use custom tool\nagent = Agent(\n    role=\"Analyst\",\n    goal=\"Perform calculations\",\n    tools=[CalculatorTool()]\n)\n```\n\n## YAML configuration (recommended)\n\n### Project structure\n\n```\nmy_project\u002F\n├── src\u002Fmy_project\u002F\n│   ├── config\u002F\n│   │   ├── agents.yaml    # Agent definitions\n│   │   └── tasks.yaml     # Task definitions\n│   ├── crew.py            # Crew assembly\n│   └── main.py            # Entry point\n└── pyproject.toml\n```\n\n### agents.yaml\n\n```yaml\nresearcher:\n  role: \"{topic} Senior Data Researcher\"\n  goal: \"Uncover cutting-edge developments in {topic}\"\n  backstory: >\n    You're a seasoned researcher with a knack for uncovering\n    the latest developments in {topic}. Known for your ability\n    to find relevant information and present it clearly.\n\nreporting_analyst:\n  role: \"Reporting Analyst\"\n  goal: \"Create detailed reports based on research data\"\n  backstory: >\n    You're a meticulous analyst who transforms raw data into\n    actionable insights through well-structured reports.\n```\n\n### tasks.yaml\n\n```yaml\nresearch_task:\n  description: >\n    Conduct thorough research about {topic}.\n    Find the most relevant information for {year}.\n  expected_output: >\n    A list with 10 bullet points of the most relevant\n    information about {topic}.\n  agent: researcher\n\nreporting_task:\n  description: >\n    Review the research and create a comprehensive report.\n    Focus on key findings and recommendations.\n  expected_output: >\n    A detailed report in markdown format with executive\n    summary, findings, and recommendations.\n  agent: reporting_analyst\n  output_file: report.md\n```\n\n### crew.py\n\n```python\nfrom crewai import Agent, Crew, Process, Task\nfrom crewai.project import CrewBase, agent, crew, task\nfrom crewai_tools import SerperDevTool\n\n@CrewBase\nclass MyProjectCrew:\n    \"\"\"My Project crew\"\"\"\n\n    @agent\n    def researcher(self) -> Agent:\n        return Agent(\n            config=self.agents_config['researcher'],\n            tools=[SerperDevTool()],\n            verbose=True\n        )\n\n    @agent\n    def reporting_analyst(self) -> Agent:\n        return Agent(\n            config=self.agents_config['reporting_analyst'],\n            verbose=True\n        )\n\n    @task\n    def research_task(self) -> Task:\n        return Task(config=self.tasks_config['research_task'])\n\n    @task\n    def reporting_task(self) -> Task:\n        return Task(\n            config=self.tasks_config['reporting_task'],\n            output_file='report.md'\n        )\n\n    @crew\n    def crew(self) -> Crew:\n        return Crew(\n            agents=self.agents,\n            tasks=self.tasks,\n            process=Process.sequential,\n            verbose=True\n        )\n```\n\n### main.py\n\n```python\nfrom my_project.crew import MyProjectCrew\n\ndef run():\n    inputs = {\n        'topic': 'AI Agents',\n        'year': 2025\n    }\n    MyProjectCrew().crew().kickoff(inputs=inputs)\n\nif __name__ == \"__main__\":\n    run()\n```\n\n## Flows - Event-driven orchestration\n\nFor complex workflows with conditional logic, use Flows:\n\n```python\nfrom crewai.flow.flow import Flow, listen, start, router\nfrom pydantic import BaseModel\n\nclass MyState(BaseModel):\n    confidence: float = 0.0\n\nclass MyFlow(Flow[MyState]):\n    @start()\n    def gather_data(self):\n        return {\"data\": \"collected\"}\n\n    @listen(gather_data)\n    def analyze(self, data):\n        self.state.confidence = 0.85\n        return analysis_crew.kickoff(inputs=data)\n\n    @router(analyze)\n    def decide(self):\n        return \"high\" if self.state.confidence > 0.8 else \"low\"\n\n    @listen(\"high\")\n    def generate_report(self):\n        return report_crew.kickoff()\n\n# Run flow\nflow = MyFlow()\nresult = flow.kickoff()\n```\n\nSee [Flows Guide](references\u002Fflows.md) for complete documentation.\n\n## Memory system\n\n```python\n# Enable all memory types\ncrew = Crew(\n    agents=[researcher],\n    tasks=[research_task],\n    memory=True,           # Enable memory\n    embedder={             # Custom embeddings\n        \"provider\": \"openai\",\n        \"config\": {\"model\": \"text-embedding-3-small\"}\n    }\n)\n```\n\n**Memory types:** Short-term (ChromaDB), Long-term (SQLite), Entity (ChromaDB)\n\n## LLM providers\n\n```python\nfrom crewai import LLM\n\nllm = LLM(model=\"gpt-4o\")                              # OpenAI (default)\nllm = LLM(model=\"claude-sonnet-4-5-20250929\")                       # Anthropic\nllm = LLM(model=\"ollama\u002Fllama3.1\", base_url=\"http:\u002F\u002Flocalhost:11434\")  # Local\nllm = LLM(model=\"azure\u002Fgpt-4o\", base_url=\"https:\u002F\u002F...\")              # Azure\n\nagent = Agent(role=\"Analyst\", goal=\"Analyze data\", llm=llm)\n```\n\n## CrewAI vs alternatives\n\n| Feature | CrewAI | LangChain | LangGraph |\n|---------|--------|-----------|-----------|\n| **Best for** | Multi-agent teams | General LLM apps | Stateful workflows |\n| **Learning curve** | Low | Medium | Higher |\n| **Agent paradigm** | Role-based | Tool-based | Graph-based |\n| **Memory** | Built-in | Plugin-based | Custom |\n\n## Best practices\n\n1. **Clear roles** - Each agent should have a distinct specialty\n2. **YAML config** - Better organization for larger projects\n3. **Enable memory** - Improves context across tasks\n4. **Set max_iter** - Prevent infinite loops (default 15)\n5. **Limit tools** - 3-5 tools per agent max\n6. **Rate limiting** - Set max_rpm to avoid API limits\n\n## Common issues\n\n**Agent stuck in loop:**\n```python\nagent = Agent(\n    role=\"...\",\n    max_iter=10,           # Limit iterations\n    max_rpm=5              # Rate limit\n)\n```\n\n**Task not using context:**\n```python\ntask2 = Task(\n    description=\"...\",\n    context=[task1],       # Explicitly pass context\n    agent=writer\n)\n```\n\n**Memory errors:**\n```python\n# Use environment variable for storage\nimport os\nos.environ[\"CREWAI_STORAGE_DIR\"] = \".\u002Fmy_storage\"\n```\n\n## References\n\n- **[Flows Guide](references\u002Fflows.md)** - Event-driven workflows, state management\n- **[Tools Guide](references\u002Ftools.md)** - Built-in tools, custom tools, MCP\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues, debugging\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI (25k+ stars)\n- **Docs**: https:\u002F\u002Fdocs.crewai.com\n- **Tools**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI-tools\n- **Examples**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI-examples\n- **Version**: 1.2.0+\n- **License**: MIT\n","# CrewAI - Multi-Agent Orchestration Framework\n\nBuild teams of autonomous AI agents that collaborate to solve complex tasks.\n\n## When to use CrewAI\n\n**Use CrewAI when:**\n- Building multi-agent systems with specialized roles\n- Need autonomous collaboration between agents\n- Want role-based task delegation (researcher, writer, analyst)\n- Require sequential or hierarchical process execution\n- Building production workflows with memory and observability\n- Need simpler setup than LangChain\u002FLangGraph\n\n**Key features:**\n- **Standalone**: No LangChain dependencies, lean footprint\n- **Role-based**: Agents have roles, goals, and backstories\n- **Dual paradigm**: Crews (autonomous) + Flows (event-driven)\n- **50+ tools**: Web scraping, search, databases, AI services\n- **Memory**: Short-term, long-term, and entity memory\n- **Production-ready**: Tracing, enterprise features\n\n**Use alternatives instead:**\n- **LangChain**: General-purpose LLM apps, RAG pipelines\n- **LangGraph**: Complex stateful workflows with cycles\n- **AutoGen**: Microsoft ecosystem, multi-agent conversations\n- **LlamaIndex**: Document Q&A, knowledge retrieval\n\n## Quick start\n\n### Installation\n\n```bash\n# Core framework\npip install crewai\n\n# With 50+ built-in tools\npip install 'crewai[tools]'\n```\n\n### Create project with CLI\n\n```bash\n# Create new crew project\ncrewai create crew my_project\ncd my_project\n\n# Install dependencies\ncrewai install\n\n# Run the crew\ncrewai run\n```\n\n### Simple crew (code-only)\n\n```python\nfrom crewai import Agent, Task, Crew, Process\n\n# 1. Define agents\nresearcher = Agent(\n    role=\"Senior Research Analyst\",\n    goal=\"Discover cutting-edge developments in AI\",\n    backstory=\"You are an expert analyst with a keen eye for emerging trends.\",\n    verbose=True\n)\n\nwriter = Agent(\n    role=\"Technical Writer\",\n    goal=\"Create clear, engaging content about technical topics\",\n    backstory=\"You excel at explaining complex concepts to general audiences.\",\n    verbose=True\n)\n\n# 2. Define tasks\nresearch_task = Task(\n    description=\"Research the latest developments in {topic}. Find 5 key trends.\",\n    expected_output=\"A detailed report with 5 bullet points on key trends.\",\n    agent=researcher\n)\n\nwrite_task = Task(\n    description=\"Write a blog post based on the research findings.\",\n    expected_output=\"A 500-word blog post in markdown format.\",\n    agent=writer,\n    context=[research_task]  # Uses research output\n)\n\n# 3. Create and run crew\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential,  # Tasks run in order\n    verbose=True\n)\n\n# 4. Execute\nresult = crew.kickoff(inputs={\"topic\": \"AI Agents\"})\nprint(result.raw)\n```\n\n## Core concepts\n\n### Agents - Autonomous workers\n\n```python\nfrom crewai import Agent\n\nagent = Agent(\n    role=\"Data Scientist\",                    # Job title\u002Frole\n    goal=\"Analyze data to find insights\",     # What they aim to achieve\n    backstory=\"PhD in statistics...\",         # Background context\n    llm=\"gpt-4o\",                             # LLM to use\n    tools=[],                                 # Tools available\n    memory=True,                              # Enable memory\n    verbose=True,                             # Show reasoning\n    allow_delegation=True,                    # Can delegate to others\n    max_iter=15,                              # Max reasoning iterations\n    max_rpm=10                                # Rate limit\n)\n```\n\n### Tasks - Units of work\n\n```python\nfrom crewai import Task\n\ntask = Task(\n    description=\"Analyze the sales data for Q4 2024. {context}\",\n    expected_output=\"A summary report with key metrics and trends.\",\n    agent=analyst,                            # Assigned agent\n    context=[previous_task],                  # Input from other tasks\n    output_file=\"report.md\",                  # Save to file\n    async_execution=False,                    # Run synchronously\n    human_input=False                         # No human approval needed\n)\n```\n\n### Crews - Teams of agents\n\n```python\nfrom crewai import Crew, Process\n\ncrew = Crew(\n    agents=[researcher, writer, editor],      # Team members\n    tasks=[research, write, edit],            # Tasks to complete\n    process=Process.sequential,               # Or Process.hierarchical\n    verbose=True,\n    memory=True,                              # Enable crew memory\n    cache=True,                               # Cache tool results\n    max_rpm=10,                               # Rate limit\n    share_crew=False                          # Opt-in telemetry\n)\n\n# Execute with inputs\nresult = crew.kickoff(inputs={\"topic\": \"AI trends\"})\n\n# Access results\nprint(result.raw)                             # Final output\nprint(result.tasks_output)                    # All task outputs\nprint(result.token_usage)                     # Token consumption\n```\n\n## Process types\n\n### Sequential (default)\n\nTasks execute in order, each agent completing their task before the next:\n\n```python\ncrew = Crew(\n    agents=[researcher, writer],\n    tasks=[research_task, write_task],\n    process=Process.sequential  # Task 1 → Task 2 → Task 3\n)\n```\n\n### Hierarchical\n\nAuto-creates a manager agent that delegates and coordinates:\n\n```python\ncrew = Crew(\n    agents=[researcher, writer, analyst],\n    tasks=[research_task, write_task, analyze_task],\n    process=Process.hierarchical,  # Manager delegates tasks\n    manager_llm=\"gpt-4o\"           # LLM for manager\n)\n```\n\n## Using tools\n\n### Built-in tools (50+)\n\n```bash\npip install 'crewai[tools]'\n```\n\n```python\nfrom crewai_tools import (\n    SerperDevTool,           # Web search\n    ScrapeWebsiteTool,       # Web scraping\n    FileReadTool,            # Read files\n    PDFSearchTool,           # Search PDFs\n    WebsiteSearchTool,       # Search websites\n    CodeDocsSearchTool,      # Search code docs\n    YoutubeVideoSearchTool,  # Search YouTube\n)\n\n# Assign tools to agent\nresearcher = Agent(\n    role=\"Researcher\",\n    goal=\"Find accurate information\",\n    backstory=\"Expert at finding data online.\",\n    tools=[SerperDevTool(), ScrapeWebsiteTool()]\n)\n```\n\n### Custom tools\n\n```python\nfrom crewai.tools import BaseTool\nfrom pydantic import Field\n\nclass CalculatorTool(BaseTool):\n    name: str = \"Calculator\"\n    description: str = \"Performs mathematical calculations. Input: expression\"\n\n    def _run(self, expression: str) -> str:\n        try:\n            result = eval(expression)\n            return f\"Result: {result}\"\n        except Exception as e:\n            return f\"Error: {str(e)}\"\n\n# Use custom tool\nagent = Agent(\n    role=\"Analyst\",\n    goal=\"Perform calculations\",\n    tools=[CalculatorTool()]\n)\n```\n\n## YAML configuration (recommended)\n\n### Project structure\n\n```\nmy_project\u002F\n├── src\u002Fmy_project\u002F\n│   ├── config\u002F\n│   │   ├── agents.yaml    # Agent definitions\n│   │   └── tasks.yaml     # Task definitions\n│   ├── crew.py            # Crew assembly\n│   └── main.py            # Entry point\n└── pyproject.toml\n```\n\n### agents.yaml\n\n```yaml\nresearcher:\n  role: \"{topic} Senior Data Researcher\"\n  goal: \"Uncover cutting-edge developments in {topic}\"\n  backstory: >\n    You're a seasoned researcher with a knack for uncovering\n    the latest developments in {topic}. Known for your ability\n    to find relevant information and present it clearly.\n\nreporting_analyst:\n  role: \"Reporting Analyst\"\n  goal: \"Create detailed reports based on research data\"\n  backstory: >\n    You're a meticulous analyst who transforms raw data into\n    actionable insights through well-structured reports.\n```\n\n### tasks.yaml\n\n```yaml\nresearch_task:\n  description: >\n    Conduct thorough research about {topic}.\n    Find the most relevant information for {year}.\n  expected_output: >\n    A list with 10 bullet points of the most relevant\n    information about {topic}.\n  agent: researcher\n\nreporting_task:\n  description: >\n    Review the research and create a comprehensive report.\n    Focus on key findings and recommendations.\n  expected_output: >\n    A detailed report in markdown format with executive\n    summary, findings, and recommendations.\n  agent: reporting_analyst\n  output_file: report.md\n```\n\n### crew.py\n\n```python\nfrom crewai import Agent, Crew, Process, Task\nfrom crewai.project import CrewBase, agent, crew, task\nfrom crewai_tools import SerperDevTool\n\n@CrewBase\nclass MyProjectCrew:\n    \"\"\"My Project crew\"\"\"\n\n    @agent\n    def researcher(self) -> Agent:\n        return Agent(\n            config=self.agents_config['researcher'],\n            tools=[SerperDevTool()],\n            verbose=True\n        )\n\n    @agent\n    def reporting_analyst(self) -> Agent:\n        return Agent(\n            config=self.agents_config['reporting_analyst'],\n            verbose=True\n        )\n\n    @task\n    def research_task(self) -> Task:\n        return Task(config=self.tasks_config['research_task'])\n\n    @task\n    def reporting_task(self) -> Task:\n        return Task(\n            config=self.tasks_config['reporting_task'],\n            output_file='report.md'\n        )\n\n    @crew\n    def crew(self) -> Crew:\n        return Crew(\n            agents=self.agents,\n            tasks=self.tasks,\n            process=Process.sequential,\n            verbose=True\n        )\n```\n\n### main.py\n\n```python\nfrom my_project.crew import MyProjectCrew\n\ndef run():\n    inputs = {\n        'topic': 'AI Agents',\n        'year': 2025\n    }\n    MyProjectCrew().crew().kickoff(inputs=inputs)\n\nif __name__ == \"__main__\":\n    run()\n```\n\n## Flows - Event-driven orchestration\n\nFor complex workflows with conditional logic, use Flows:\n\n```python\nfrom crewai.flow.flow import Flow, listen, start, router\nfrom pydantic import BaseModel\n\nclass MyState(BaseModel):\n    confidence: float = 0.0\n\nclass MyFlow(Flow[MyState]):\n    @start()\n    def gather_data(self):\n        return {\"data\": \"collected\"}\n\n    @listen(gather_data)\n    def analyze(self, data):\n        self.state.confidence = 0.85\n        return analysis_crew.kickoff(inputs=data)\n\n    @router(analyze)\n    def decide(self):\n        return \"high\" if self.state.confidence > 0.8 else \"low\"\n\n    @listen(\"high\")\n    def generate_report(self):\n        return report_crew.kickoff()\n\n# Run flow\nflow = MyFlow()\nresult = flow.kickoff()\n```\n\nSee [Flows Guide](references\u002Fflows.md) for complete documentation.\n\n## Memory system\n\n```python\n# Enable all memory types\ncrew = Crew(\n    agents=[researcher],\n    tasks=[research_task],\n    memory=True,           # Enable memory\n    embedder={             # Custom embeddings\n        \"provider\": \"openai\",\n        \"config\": {\"model\": \"text-embedding-3-small\"}\n    }\n)\n```\n\n**Memory types:** Short-term (ChromaDB), Long-term (SQLite), Entity (ChromaDB)\n\n## LLM providers\n\n```python\nfrom crewai import LLM\n\nllm = LLM(model=\"gpt-4o\")                              # OpenAI (default)\nllm = LLM(model=\"claude-sonnet-4-5-20250929\")                       # Anthropic\nllm = LLM(model=\"ollama\u002Fllama3.1\", base_url=\"http:\u002F\u002Flocalhost:11434\")  # Local\nllm = LLM(model=\"azure\u002Fgpt-4o\", base_url=\"https:\u002F\u002F...\")              # Azure\n\nagent = Agent(role=\"Analyst\", goal=\"Analyze data\", llm=llm)\n```\n\n## CrewAI vs alternatives\n\n| Feature | CrewAI | LangChain | LangGraph |\n|---------|--------|-----------|-----------|\n| **Best for** | Multi-agent teams | General LLM apps | Stateful workflows |\n| **Learning curve** | Low | Medium | Higher |\n| **Agent paradigm** | Role-based | Tool-based | Graph-based |\n| **Memory** | Built-in | Plugin-based | Custom |\n\n## Best practices\n\n1. **Clear roles** - Each agent should have a distinct specialty\n2. **YAML config** - Better organization for larger projects\n3. **Enable memory** - Improves context across tasks\n4. **Set max_iter** - Prevent infinite loops (default 15)\n5. **Limit tools** - 3-5 tools per agent max\n6. **Rate limiting** - Set max_rpm to avoid API limits\n\n## Common issues\n\n**Agent stuck in loop:**\n```python\nagent = Agent(\n    role=\"...\",\n    max_iter=10,           # Limit iterations\n    max_rpm=5              # Rate limit\n)\n```\n\n**Task not using context:**\n```python\ntask2 = Task(\n    description=\"...\",\n    context=[task1],       # Explicitly pass context\n    agent=writer\n)\n```\n\n**Memory errors:**\n```python\n# Use environment variable for storage\nimport os\nos.environ[\"CREWAI_STORAGE_DIR\"] = \".\u002Fmy_storage\"\n```\n\n## References\n\n- **[Flows Guide](references\u002Fflows.md)** - Event-driven workflows, state management\n- **[Tools Guide](references\u002Ftools.md)** - Built-in tools, custom tools, MCP\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues, debugging\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI (25k+ stars)\n- **Docs**: https:\u002F\u002Fdocs.crewai.com\n- **Tools**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI-tools\n- **Examples**: https:\u002F\u002Fgithub.com\u002FcrewAIInc\u002FcrewAI-examples\n- **Version**: 1.2.0+\n- **License**: MIT\n",{"name":5,"license":15,"metadata":54,"description":7},{"tags":55,"author":66,"version":67,"dependencies":68},[56,57,58,59,60,61,62,63,64,65],"Agents","CrewAI","Multi-Agent","Orchestration","Collaboration","Role-Based","Autonomous","Workflows","Memory","Production","Orchestra Research","1.0.0",[69,70],"crewai>=1.2.0","crewai-tools>=1.2.0","main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai",3911,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-11 21:38:31",{"source":8,"skillName":5,"commands":82,"prompt":92,"zipAvailable":93},[83,86,89],{"tool":84,"command":85},"npx","npx skills add davila7\u002Fclaude-code-templates --skill agents-crewai",{"tool":87,"command":88},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill agents-crewai",{"tool":90,"command":91},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill agents-crewai","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai\u002FSKILL.md",true,[95,101,105,109,113],{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},"agents\u002Fopenai.yaml","REFERENCE","参考文档",103,"https:\u002F\u002Fgithub.com\u002FHasarAli\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot-agents\u002Fskills\u002Fdiagnosing-bugs\u002Fagents\u002Fopenai.yaml",{"path":102,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fflows.md",9846,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai\u002Freferences\u002Fflows.md",{"path":106,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Ftools.md",10283,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai\u002Freferences\u002Ftools.md",{"path":110,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ftroubleshooting.md",8933,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Fagents-crewai\u002Freferences\u002Ftroubleshooting.md",{"path":114,"resourceType":115,"resourceTypeDesc":116,"sizeBytes":117,"sourceHtmlUrl":118},"scripts\u002Fhitl-loop.template.sh","SCRIPT","脚本",1316,"https:\u002F\u002Fgithub.com\u002FHasarAli\u002Fdotfiles\u002Fblob\u002Fmain\u002Fdot-agents\u002Fskills\u002Fdiagnosing-bugs\u002Fscripts\u002Fhitl-loop.template.sh",[120,146,173,206,240,264],{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":49},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[126],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[128,129,130,131,132,28,133,134,135,27,136,137,138,139,140,141,142,143,144,145],"scoring","pool","wealthville pool scoring","liquidity","which","exit","now","use","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":49},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[152],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[154,155,156,157,158,159,160,161,162,163,164,27,165,166,167,168,169,170,171,172],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":188,"publishedAt":49},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[179,182,183],{"categoryNo":180,"categoryName":181,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":184,"categoryName":185,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[189,190,191,192,193,194,195,28,196,197,198,199,200,201,202,135,203,204,27,205],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","tool","calls","only","MCP","access","database","query",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":210,"licenseFileUrl":211,"sourceHtmlUrl":212,"categories":213,"keywords":217,"publishedAt":49},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[214],{"categoryNo":215,"categoryName":216,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[218,219,220,221,222,223,224,225,226,227,228,229,26,230,231,232,233,234,235,236,237,238,28,239],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":241,"name":242,"nameZh":6,"description":243,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":210,"licenseFileUrl":244,"sourceHtmlUrl":245,"categories":246,"keywords":251,"publishedAt":49},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[247,250],{"categoryNo":248,"categoryName":249,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":215,"categoryName":216,"taxonomyType":21,"taxonomyTypeDesc":22},[252,253,254,255,256,219,257,228,229,258,259,260,261,28,262,137,263],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":265,"name":266,"nameZh":6,"description":267,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":210,"licenseFileUrl":268,"sourceHtmlUrl":269,"categories":270,"keywords":278,"publishedAt":49},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[271,274,275],{"categoryNo":272,"categoryName":273,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":276,"categoryName":277,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000036","内容创作者",[279,280,281,282,283,284,285,286,221,287,230,165,288,289,290,291,292,201,293,27,30,294,295,296,297,143,298],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","analysis","claims","argument","assemble","recommendations"]