[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XG24YT6CMNXR1J149WR4PV":3,"skill-same:01M6XG24YT6CMNXR1J149WR4PV":99},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":65,"commitSha":66,"skillDirectory":67,"forksCount":14,"repositoryHtmlUrl":68,"repositoryHomepageUrl":6,"ownerHtmlUrl":69,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":70,"install":71,"resources":84},"01M6XG24YT6CMNXR1J149WR4PV","crewai-multi-agent",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.","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai\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],"crewai multi agent","crewai","multi","multi agent","specialized","Synthetic Sciencestion","when","you","synthetic","agent orchestration","lean","autonomous","langchain","multi-agent","orchestration framework","Tools","tasks","workflows","orchestration","memory","2026-11-10 10:12:30",false,"---\nname: crewai-multi-agent\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.\ncategory: llm-tools\nversion: 1.0.0\nauthor: Synthetic Sciences\nlicense: MIT\ntags: [Agents, CrewAI, Multi-Agent, Synthetic Sciencestion, Collaboration, Role-Based, Autonomous, Workflows, Memory, Production]\ndependencies: [crewai>=1.2.0, crewai-tools>=1.2.0]\n---\n\n# CrewAI - Multi-Agent Synthetic Sciencestion 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 Synthetic Sciencestion 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,"tags":49,"author":59,"license":15,"version":60,"category":61,"description":7,"dependencies":62},[50,51,52,29,53,54,55,56,57,58],"Agents","CrewAI","Multi-Agent","Collaboration","Role-Based","Autonomous","Workflows","Memory","Production","Synthetic Sciences","1.0.0","llm-tools",[63,64],"crewai>=1.2.0","crewai-tools>=1.2.0","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add fadrienne\u002FMyGitHub --skill crewai-multi-agent",{"tool":77,"command":78},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill crewai-multi-agent",{"tool":80,"command":81},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill crewai-multi-agent","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai\u002FSKILL.md",true,[85,91,95],{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fflows.md","REFERENCE","参考文档",9846,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai\u002Freferences\u002Fflows.md",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Ftools.md",10283,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai\u002Freferences\u002Ftools.md",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Ftroubleshooting.md",8933,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Fcrewai\u002Freferences\u002Ftroubleshooting.md",[100,127,153,187,214,240],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":44},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[106],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[108,109,110,111,112,113,114,115,30,116,117,118,119,120,121,122,123,124,125,126],"power","statistical power","effect","scipy","regression","choose","design","uv","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":136,"publishedAt":44},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[133],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[118,137,108,138,139,140,30,31,141,142,143,144,145,146,147,148,149,150,151,152],"statistical analysis","academic research","implementing","selection","reporting","data","for","tests","use","with","test","research","results","statsmodels","models","help",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":168,"publishedAt":44},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[159,162,163],{"categoryNo":160,"categoryName":161,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":164,"categoryName":165,"taxonomyType":166,"taxonomyTypeDesc":167},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[169,170,171,172,173,174,175,176,177,178,116,179,180,181,182,183,184,185,141,186],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","structure","openrouter","Outlines","core skill","read","features",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":197,"publishedAt":44},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[193,196],{"categoryNo":194,"categoryName":195,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[198,170,199,200,201,202,203,204,205,177,30,206,207,208,209,210,211,212,143,213],"visualization","scientific visualization","error","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":226,"publishedAt":44},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[220,223],{"categoryNo":221,"categoryName":222,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":224,"categoryName":225,"taxonomyType":166,"taxonomyTypeDesc":167},"01JBSEEDCAT000000000000030","开发工程师",[227,228,148,229,43,230,231,115,232,30,116,118,233,234,235,236,237,238,185,239],"code","research code","which","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"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":244,"licenseFileUrl":6,"sourceHtmlUrl":245,"categories":246,"keywords":253,"publishedAt":44},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[247,250,251,252],{"categoryNo":248,"categoryName":249,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":160,"categoryName":161,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":164,"categoryName":165,"taxonomyType":166,"taxonomyTypeDesc":167},[169,254,255,256,257,258,198,259,260,30,116,118,261,262,263,264,265,266,170,185],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]