teammode
Codex-only team orchestration: run a named team of cooperating Codex workers with durable, script-managed state. MUST USE when the user asks Codex to create, run, coordinate, inspect, archive, or delete a team of agents/threads/sessions, or to work on something as a team in parallel.
Install / Use
npx skills add code-yeongyu/oh-my-openagent --skill teammodeInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Tags
Our assessment of teammode
teammode scores 90/100 on our quality scale, 29th of 111 Marketing skills we index (top 27%).
Its SKILL.md is 21 KB long, well organised into 13 sections with 1 code example: a thorough specification that gives an agent plenty to work with.
With 69,362 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so teammode is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
teammode compared with similar skills
All 4 of these similar skills score higher than teammode; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| teammode (this skill)by code-yeongyu | 90 | 69.4k | today | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 2d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 2d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 3d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 130.2k | 3d ago | SKILL.md |
Frequently asked questions
- How do I install teammode?
- Run
npx skills add code-yeongyu/oh-my-openagent --skill teammode. The install tabs above show the steps for each supported agent. - Which AI agents does teammode work with?
- It is written for OpenAI Codex, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is teammode safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is teammode still maintained?
- The repository was last updated today, so teammode is actively maintained.
Skill content
View source on GitHubname: teammode description: "Codex-only team orchestration: run a named team of cooperating Codex workers with durable, script-managed state. MUST USE when the user asks Codex to create, run, coordinate, inspect, archive, or delete a team of agents/threads/sessions, or to work on something as a team in parallel. FIRST inspects the active tool surface (checking tool_search for deferred tools) and tells the user the route: native MultiAgentV2 agents (flat spawn_agent with task_name) when available, Codex App threads as the fallback, or a plain-subagent split when neither set exists. The main session is always the leader; members are defined by a concrete part, ownership area, or perspective - never a vague job role; a bundled cross-platform script writes the .omo/teams state plus an auto-generated member field manual. Use a team when the work is not perfectly isolated but parallelizing helps; use plain subagents when scope is perfectly isolated or the goal is ambiguous. Triggers: team mode, teammode, make a team, run as a team, team of agents, coordinate threads, parallel Codex threads, archive the team."
Teammode
Run a named team of cooperating Codex workers under one leader, with durable state on disk. This is a Codex-only workflow. It never depends on an external terminal runner - it coordinates through Codex's own collaboration tools plus a bundled state script, on ONE of two transports chosen up front: native MultiAgentV2 agents, or Codex App threads as the fallback.
When to use a team (and when to use plain subagents instead)
Use a TEAM when EITHER holds:
- the work does NOT split into perfectly isolated pieces, but doing it in parallel is clearly more convenient - members will need to see and react to each other's findings; or
- one task still needs exploration, yet its GOAL is already clear - parallel investigation under a fixed objective.
Use plain fire-and-forget subagents ($ulw / one-off spawn_agent workers) - NOT a team - when
EITHER holds:
- the work IS perfectly isolated, so there is no coordination cost worth paying; or
- the GOAL is still ambiguous, where one mind should resolve direction before any fan-out.
A team buys cross-member coordination at a real overhead cost; only spend it when coordination is the thing you actually need.
Pick the transport FIRST - then tell the user
Before creating any team state, decide which transport this session can run. Inspect your active tool list and select:
- MultiAgentV2 (preferred) - select when the flat V2 collaboration tools are ALL active:
flat
spawn_agentwhose schema requirestask_name, plussend_message,followup_task,wait_agent,list_agents, andinterrupt_agent. Members are durable native agents addressed by task name / agent path (/root/<task_name>). The namespacedmulti_agent_v1.*surface never qualifies as a team transport. - Codex App threads (fallback) - select when flat V2 is not available but the
codex_app.*thread tools are (create_thread,read_thread,send_message_to_thread,set_thread_title,set_thread_archived). - Neither set visible - if a
tool_searchtool is active, search for the missing sets (e.g.spawn_agent,codex_app) before concluding: some environments defer tools behind tool search. A hit is only a lead: revalidate that the visible result is the COMPLETE, mutually compatible transport set from case 1 or 2 before selecting it. Do not combine partial hits from different transports. - Neither set exists - teammode cannot run here. Do NOT run
initor fake a team with partial tooling. If another visible plain-subagent mechanism can independently spawn, communicate with, and observe plain workers, announce that exact mechanism and use it for non-overlapping scopes. Otherwise continue serially and report the capability limitation; never promise or imply plain subagents that this session cannot create.
Then, BEFORE running init (or instead of it in case 4), tell the user in one line what this
environment provides and which route you picked:
Teammode transport: MultiAgentV2 (flat spawn_agent with task_name).Teammode transport: Codex App threads (flat V2 tools not present in this session).Teammode unavailable: neither MultiAgentV2 nor codex_app tools exist in this session - using <visible plain-subagent mechanism> for independent scopes.Teammode unavailable: neither MultiAgentV2 nor codex_app tools exist in this session, and no compatible plain-subagent mechanism is available - continuing serially.
Pass the choice to init as --transport multi_agent_v2 or --transport codex_app. The
transport is recorded in team.json and is IMMUTABLE for the team's lifetime: a V2 spawn
failure is a V2 blocker to report, never permission to mix Codex App threads into the same
team. Never probe by trial-calling tools; read your tool list, and search it with
tool_search only when a needed set is not visible.
You are the leader - orchestrate, do not implement
The main session is ALWAYS the team leader; you orchestrate directly and never spin up a separate leader worker. Your job is orchestration, NOT writing product code: split the work and assign each slice, hold live situational awareness of every member, verify and QA what they deliver, relay findings between members, instruct and unblock, and synthesize the result. DELEGATE every code edit to a member - if you catch yourself editing product files while the team runs, that work was a member's slice you should have handed off. You own direction, verification, and integration (the merge), not the keystrokes.
Compose by part, ownership, or perspective - not by job title
A team is ALWAYS two or more members - never a single-member team. One worker on an isolated job is a plain subagent, not a team; if you end up with a single member, either split off a second distinct slice or drop the team and use a subagent.
Compose the team from what you actually KNOW about the work. Ground the split in real knowledge
of the problem, then divide it into clear, non-overlapping responsibilities - one per aspect of
the work - and give each member exactly one. No two members may own the same thing. Define each
member by a concrete slice: a specific part of the codebase, an ownership area, or a distinct
perspective/lens. Assigning a vague role ("backend dev", "release analyst", "the tester") is an
anti-pattern - it gives the member no real boundary and invites overlap. Each member's focus
names what they own concretely; the lens is one of area, ownership, or perspective.
Give each member a short, distinct --name too - its role or what it watches (e.g.
app-server-lifecycle, mailbox-delivery) - it labels the member everywhere; never reuse
one name for two members. On MultiAgentV2 teams also give each member a unique
--task-name in lowercase_digits_underscores form - it becomes the member's permanent
agent path /root/<task_name>.
Run the script - never hand-write team state
A bundled, dependency-free Node script owns all team state so you never author team.json or
the member manual by hand. Run it with node (or bun); it works on macOS, Linux, and Windows.
Replace <skill-root> with this skill's own directory.
node "<skill-root>/scripts/team.mjs" init --name "<team>" --session-name "<session>" --transport multi_agent_v2|codex_app [--session <leader_thread_id>] [--worktree] [--base-branch dev]
node "<skill-root>/scripts/team.mjs" add-member --team <session_id> --id A --name "<short role>" [--task-name <v2_task_name>] --focus "<part/ownership/perspective>" --lens area|ownership|perspective --deliverable "<...>" [--branch <branch>]
node "<skill-root>/scripts/team.mjs" bind-agent --team <session_id> --id A --agent-path /root/<task_name> [--cwd <path>] # multi_agent_v2 teams
node "<skill-root>/scripts/team.mjs" bind-thread --team <session_id> --id A --thread <thread_id> [--cwd <path>] # codex_app teams
node "<skill-root>/scripts/team.mjs" member-prompt --team <session_id> --id A
node "<skill-root>/scripts/team.mjs" set-status --team <session_id> --id A --status reported|blocked|active|archived [--note "<...>"]
node "<skill-root>/scripts/team.mjs" worktree-add --team <session_id> --id A [--base-branch <branch>]
node "<skill-root>/scripts/team.mjs" worktree-remove --team <session_id> --id A [--force]
node "<skill-root>/scripts/team.mjs" integrate --team <session_id> [--id A]
node "<skill-root>/scripts/team.mjs" archive --team <session_id> [--id A] [--note "<...>"]
node "<skill-root>/scripts/team.mjs" delete --team <session_id> [--force]
node "<skill-root>/scripts/team.mjs" status --team <session_id>
init creates .omo/teams/{session_id}/ containing team.json (the single durable state file:
team id, transport, the main-session leader, the member roster, status, worktree config, and a
lifecycle log), guide.md (the auto-generated member field manual), and artifacts/ (a shared
exchange space). On codex_app teams {session_id} is the leader's Codex session id when you can
pass it via --session; otherwise the script generates a stable handle. Re-running init is a
safe no-op. Every mutating subcommand rewrites guide.md, so the manual always matches the
current team.
Mutating subcommands take a per-team state lock before reading and rewriting team.json. It is
safe to run independent add-member, bind-agent, bind-thread, set-status, archive,
delete, guide, and worktree mutation commands concurrently against the same team: they
serialize and each command reads the latest committed state before writing. If a command reports
that team state is locked, do not treat the intended mutation as complete; retry after the named
command finishes, or inspect .omo/teams/{session_id}/.team.lock/owner.json if the previous
command crashed. bind-agent refuses codex_app teams and bind-thread refuses multi_agent_v2
teams, and a refused command never changes team.json.
Create the team and its members
init the team, then add-member once per member. What happens next depends on the transport.
MultiAgentV2 teams:
- If a member needs an isolated worktree, run
worktree-addBEFORE spawning it - flatspawn_agenthas no cwd argument, so the path must ride in the bootstrap message. - Spawn each member with flat
spawn_agentusing only the V2 schema fields:task_nameis that member's--task-name,messageis the bootstrap printed byadd-member/member-prompt, andfork_turnsis"none"(members readguide.mdfor context; full parent history is not their context model). Put any role, priority, or task-specific routing instruction inmessage; V2 does not acceptagent_type,model,reasoning_effort, orservice_tier, so members inherit the session model. bind-agent --agent-pathwith the canonical task name the spawn returned (normally/root/<task_name>); binding confirms the runtime identity matches the roster and records the member's cwd. Members are durable: they persist as subagent threads, survive idling, and are re-tasked withfollowup_task- never respawned under a second name.- Members appear in
list_agentswith their task paths; inspect status there instead of deep links (V2 exposes no thread title orcodex://link surface to you).
Codex App teams:
- Create a durable thread per member with
codex_app.create_thread- ALWAYS this tool for every member - titled[team name] <member name>, using THAT member's own name, so no two threads share a title.add-memberprints the exact title to use. If the tool accepts a working directory / cwd argument, set it to that member's worktree; otherwise the member's manual tells it tocdthere first. Usecodex_app.set_thread_titleif the title did not land at creation. If
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
130.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
