myteam is a package for building agent systems where agents load their own roles and skills from files on disk.
The core model is simple:
- users define roles, skills, and tools inside
.myteam/ - agents assume a role by running
myteam get role <role> - agents load a skill by running
myteam get skill <skill> - each loaded role or skill reveals the next layer of discoverable roles, skills, and tools
This makes myteam useful for hierarchical multi-agent systems where instructions should be explicit, inspectable, and
versioned in Git.
myteam is primarily for agents, not humans.
A human author creates the role and skill structure. After that, the intended workflow is that agents load their own instructions.
Typical flow:
- A user or top-level agent sets up
.myteam/. - A sub-agent is assigned a role such as
developer. - That sub-agent runs
myteam get role developer. myteamprints the role instructions plus any immediately available child roles, child skills, and tools.- If the agent needs a skill, it runs
myteam get skill <skill>.
In other words, roles and skills are loaded by the agent that is assuming them.
When an agent runs:
myteam get role developermyteam executes that role's load.py, which:
- Prints the contents of
role.mdorROLE.md - Prints built-in guidance about roles, skills, and tools
- Lists the immediate child roles in that directory
- Lists the immediate child skills in that directory
- Lists Python tools in that directory
The same pattern applies to skills:
myteam get skill python/testingThis layered discovery is the main idea behind the package. An agent sees the instructions for its current node and the next available things it can assume or use.
myteam stores an agent system in plain files.
- A role is a team member with instructions.
- A skill is a reusable capability with instructions.
- A tool is a Python script colocated with a role or skill.
- A roster is a reusable bundle that can be downloaded into
.myteam/.
Roles and skills are identified by definition files:
- role directories contain
role.mdorROLE.md - skill directories contain
skill.mdorSKILL.md
Each loadable node also has a load.py that prints the node's instructions and its immediate discoverable children.
Initialize a new agent system:
myteam initThis creates:
AGENTS.md
.myteam/
.myteam-version
load.py
role.md
The root .myteam/ directory is the default root role.
The packaged builtins/ skill tree is available to load, but it is not created inside .myteam/.
Edit .myteam/role.md with the instructions that should be given to the default agent. Then that agent can load its
instructions with:
myteam get roleThe generated root role also tracks the myteam version that created the tree. If a newer installed
myteam release is available later, the root role can alert the agent to review
builtins/migration and builtins/changelog.
Create a sub-role and a skill:
myteam new role developer
myteam new skill python
myteam new skill python/testingThat agent system now supports commands like:
myteam get role
myteam get role developer
myteam get skill python/testingExample:
AGENTS.md
.myteam/
.myteam-version
load.py
role.md
developer/
load.py
role.md
python/
load.py
skill.md
testing/
load.py
skill.md
In this layout:
- the root agent runs
myteam get role - a developer agent runs
myteam get role developer - an agent needing the testing skill runs
myteam get skill python/testing
Discovery is local to the node being loaded. An agent sees only the next layer beneath its current role or skill.
For nested roles or skills to be discoverable, each parent layer must also be defined. For example,
python/testing is only visible if python itself exists as a loadable node.
Instruction files are Markdown.
Example role.md:
---
name: Developer
description: Implements product changes and fixes
---
You are responsible for writing and validating code changes.
Load relevant skills before implementing complex work.
Delegate frontend work to `frontend` if that role is available.Example skill.md:
---
name: Python Testing
description: Test-writing and debugging guidance
---
Prefer focused tests before broad suites.
Use the existing project test helpers where available.Behavior:
- YAML frontmatter is stripped before the instructions are printed to the agent
nameanddescriptionare used for listings when present- if frontmatter metadata is absent,
myteamfalls back toinfo.mdwhen available
Creates the root .myteam/ role and AGENTS.md in the current directory.
It also:
- stores the current
myteamversion in.myteam/.myteam-version - makes the packaged
builtins/maintenance skills available to load later
Creates a new role under .myteam/ with:
role.mdload.py
Examples:
myteam new role developer
myteam new role engineer/frontendCreates a new skill under .myteam/ with:
skill.mdload.py
The reserved builtins/ namespace is not available for project-defined skills.
Examples:
myteam new skill python
myteam new skill python/testing
myteam new skill research
myteam new skill research/literature-reviewLoads a role's instructions.
- omit
pathto load the root role at.myteam/ - use slash-delimited paths for nested roles
- when the root role was scaffolded by
myteam init, it may print an upgrade notice if the installedmyteamversion is newer than the tracked.myteamversion
Examples:
myteam get role
myteam get role developer
myteam get role engineer/frontendLoads a skill's instructions.
Paths under builtins/ resolve from the packaged built-in skill tree. All other skill paths resolve
from the project's .myteam/ tree.
Examples:
myteam get skill python/testing
myteam get skill research/literature-reviewDeletes a role or skill directory from .myteam/.
Lists available downloadable rosters from the default roster repository.
Downloads a roster into .myteam/ by default.
Useful when you want to seed an agent system from a reusable template instead of authoring it from scratch.
There is no dedicated myteam migrate CLI command.
For upgrade work:
- load
myteam get skill builtins/migrationto review packaged migration guidance - load
myteam get skill builtins/changelogto review newer release notes - apply approved project-specific edits manually, including any
.myteamversion-file update
- agents load their own instructions directly from the filesystem
- roles and skills are explicit, inspectable, and Git-friendly
- discovery is layered, which fits hierarchical agent systems
- tools can live next to the roles and skills that use them
- rosters let you reuse agent-system structures across projects
pip install myteam- Python 3.11+
MIT