Team Skills

Give the team leader direct access to skills without delegating to a member agent.

Pass a Skills instance to the skills parameter on Team. The team leader gets skill tools and system prompt snippets directly.

Setup

In an activated virtual environment, install Agno and the model client:

uv pip install -U agno openai
export OPENAI_API_KEY="your_openai_api_key"

Save this as create_skill.py and run python create_skill.py. It creates a small skill beside the script:

create_skill.py
from pathlib import Path

skill_dir = Path(__file__).parent / "skills" / "code-review"
skill_dir.mkdir(parents=True, exist_ok=True)
skill_file = skill_dir / "SKILL.md"
if not skill_file.exists():
    skill_file.write_text(
        "---\n"
        "name: code-review\n"
        "description: Review small Python functions for clear names and correct behavior.\n"
        "---\n\n"
        "# Code review\n\n"
        "Read the supplied code. Identify concrete correctness issues, explain them, "
        "and propose a minimal improvement. State when additional context is needed.\n"
    )
print(skill_file)

Save the agent or team script in the same directory. Its skills/code-review/SKILL.md now exists before LocalSkills loads it.

from pathlib import Path

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.skills import Skills, LocalSkills
from agno.team import Team

implementer = Agent(
    name="Implementer",
    role="Write code based on review feedback",
    model=OpenAIResponses(id="gpt-5.4-mini"),
)

team = Team(
    name="Code Review Team",
    model=OpenAIResponses(id="gpt-5.4-mini"),
    members=[implementer],
    skills=Skills(loaders=[LocalSkills(str(Path(__file__).parent / "skills"))]),
    instructions=[
        "Use your skills to review code, then delegate implementation to the Implementer.",
    ],
)

team.print_response("Review and improve this Python function: def add(x,y): return x+y", stream=True)

The leader model receives:

  • Skill summaries in its system prompt (via get_system_prompt_snippet())
  • Skill tools: get_skill_instructions, get_skill_reference, get_skill_script

Leader skills are not automatically inherited by members. Set skills on a member explicitly when it needs access.

Team-Level vs. Member-Level Skills

ApproachWhen to use
Team(skills=...)The leader needs domain expertise to coordinate (e.g., review standards, routing rules)
Agent(skills=...) on a memberA specialist agent needs the expertise to do its own work
BothThe leader needs context to delegate, and members need context to execute

How It Works

Skills on a team follow the same pattern as knowledge, memory, and tools:

  1. skills.get_tools() adds skill tools to the leader's tool list
  2. skills.get_system_prompt_snippet() injects skill metadata into the leader's system prompt
  3. The leader discovers, loads, and uses skills on demand during the run

Complete Example

from pathlib import Path

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.skills import Skills, LocalSkills
from agno.team import Team

skills_dir = Path(__file__).parent / "skills"

implementer = Agent(
    name="Implementer",
    role="Write code based on the review feedback",
    model=OpenAIResponses(id="gpt-5.4-mini"),
    instructions=[
        "You write clean, well-tested Python code.",
        "When given review feedback, produce an improved version of the code.",
    ],
)

review_team = Team(
    name="Code Review Team",
    model=OpenAIResponses(id="gpt-5.4-mini"),
    members=[implementer],
    skills=Skills(loaders=[LocalSkills(str(skills_dir))]),
    instructions=[
        "You are a team leader with access to code review skills.",
        "Use your skills to review code, then delegate implementation work to the Implementer.",
    ],
    markdown=True,
    show_members_responses=True,
)

if __name__ == "__main__":
    review_team.print_response(
        "Review this Python code and suggest improvements, "
        "then have the Implementer write the improved version:\n\n"
        "```python\n"
        "def calculate_total(items):\n"
        "    total = 0\n"
        "    for i in range(len(items)):\n"
        "        total = total + items[i]['price'] * items[i]['quantity']\n"
        "    return total\n"
        "```",
        stream=True,
    )

Next Steps

TaskGuide
Create skillsCreating Skills
Load skills into agentsLoading Skills
Build teamsBuilding Teams

Developer Resources