## 中文 补齐已有 owner 与已锁定上游内容可证明的许可证、技能类型和收录版本。保留 Anthropic Source Available 和其他附加条件,不把所有内容统一标为 MIT,不提升 listing-only 的安装准入。 README 保留最新的双语结构及以 manifest 为准的数量口径,增加静态目录不存访问量、下载量、评分或 Stars 的边界。 发布兼容性:**本 PR 不包含**两支团队新增的本地化字段,也不包含微信支付 `latestVersion: 1.0`;旧客户端会拒绝这些新字段,另以待发布 PR 保留,等匹配客户端发布后再合并。 验证:47 项目录校验测试、19 项 i18n 测试、5 项合集生成测试通过;完整目录/i18n/翻译新鲜度检查通过,6 个固定来源合集的生成检查通过,2 个浮动来源按既有规则明确跳过。发现并修复了生成器在 Windows 使用反斜杠造成的误报:输出改为 POSIX 路径,比较规则不放宽、不重写合集数据。 ## English Fill only license, type and listed-release facts supported by existing owners or pinned upstream content. Preserve custom license restrictions and acquisition eligibility. Keep the current bilingual README and manifest-derived inventory; do not author usage analytics. This PR deliberately excludes localized team fields and the two-part WeChat Pay version that older clients reject. Those changes remain pending a compatible client release. Validation passes: 47 catalog-validator tests, 19 i18n tests, five collection-generator tests, complete catalog and translation checks, and generated inventory checks for six pinned collections. Two mutable sources remain explicitly skipped. Fix Windows-generated path separators without weakening comparison or changing declared children.
12 KiB
license, name, description, version, type, risk_level, status, disable-model-invocation, tags, metadata, market
| license | name | description | version | type | risk_level | status | disable-model-invocation | tags | metadata | market | |||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MIT | manage-teams | 创建和管理 Agent 团队,组织多 Agent 协作。Use when 需要多个 Agent 持续协作、建立组织架构,或发布、安装和同步团队仓库时。 | 1.3.0 | procedural | medium | enabled | true |
|
|
|
manage-teams Skill
L0: One-line Summary
Use ManageTeam to inspect, create, and govern Agent teams, with the required checks before organizational changes or remote synchronization.
L1: When to Use
Use a team when:
- multiple Agents need sustained collaboration around one task and a shared team workdir;
- a stable supervisor, membership, or parent-child organizational structure is required;
- a team repository must be published, installed, or synchronized.
Do not create a team when:
- one expert is needed once: use
Delegate(mode="sync" | "async"); - several experts only need to provide one-off opinions: use
Delegate(mode="fan-out"); - the work is temporary file exploration: use a Worker instead of creating a lasting organization.
A team defines organization, shared directories, and governance. Actual work is still dispatched to members with Delegate.
L2: Execution Specification
1. Inspect Before Mutating
- If
teamIdis unknown, callManageTeam(action="list")first. - Before modifying, disbanding, or synchronizing a team, call
ManageTeam(action="get", teamId=...)and verify its name, type, supervisor, members, local repository directory, and remote state. - Never guess a path under
~/.desirecore; use only the absolute repository path returned byget. listcan filter byparentTeamId. Withtree=true,teamIdselects the subtree root andparentTeamIdis ignored.
2. Action Reference
| action | Purpose | Key parameters and notes |
|---|---|---|
list |
List teams or an organization tree | parentTeamId?, tree?, teamId? |
get |
Inspect one team and its repository path | teamId |
create |
Create an ephemeral team | name or task; supervisor?, members?, memberRouting?, parentTeamId?, workdirMode? |
add_member |
Add one member | teamId, agentId |
add_members |
Add members in a batch | teamId, members |
remove_member |
Remove one member | teamId, agentId |
remove_members |
Remove members in a batch | teamId, members |
set_supervisor |
Replace the supervisor | teamId, agentId |
set_member_source |
Declare where a member Agent comes from | teamId, agentId, memberSource; git needs url (https, will be cloned) and ref (defaults to main), registry needs id+version, core/local need nothing else |
update |
Partially update team configuration | teamId; supports name/type/isolation/parentTeamId/description/avatar/avatarImage |
promote |
Promote an ephemeral team to persistent | teamId; one-way and never implicit |
disband |
Disband a team | teamId; explain impact and confirm unless explicitly requested |
fork_team |
Install a team from a remote repository | url; name?, installMembers?; enters approval |
push |
Push a local team to its connected remote | teamId; enters approval |
pull |
Pull and validate a team from its connected remote | teamId; enters approval |
3. Create a Team
Before creation:
- Every Agent in
supervisorandmembersmust already exist. Verify IDs withManageAgent(action="list" | "get"); create or install a missing Agent through its corresponding Agent Skill before creating the team. - The DesireCore core Agent,
desirecore, cannot be a supervisor. When the core Agent initiates creation, it must explicitly choose a regular Agent assupervisor. - Normally do not add
desirecoreas a member. Reach core capabilities throughDelegateinstead. - One Agent may supervise only one team. If the intended supervisor already leads another team, assign a successor there first.
Choose the workdir mode deliberately:
merged(default): the shared team directory is primary while member and global workdirs remain available;team_only: exposes only the shared team directory, for high-reliability work where every member must operate on the same project. It does not delete member workdir configuration.
Use memberRouting to express routing intent without pinning a Provider or model:
{
"supervisor-agent": {
"tier": "flagship",
"requiredCapabilities": ["reasoning"],
"reasoning": "high"
},
"member-agent": {
"tier": "balanced"
}
}
- keys must belong to the selected
supervisorormembers; - Agents using a fixed model must not appear in
memberRouting; - omitted Smart members retain their current routing profile; the concrete Provider/model is resolved when that member executes work.
Example:
{
"action": "create",
"name": "Contract Review Project",
"supervisor": "legal-lead",
"members": ["contract-reviewer", "risk-analyst"],
"task": "Review contracts continuously and consolidate risks",
"workdirMode": "team_only"
}
4. Change Organization and Configuration
- Prefer batch member actions to avoid observable intermediate states.
set_supervisorusesagentId; first verify that the Agent does not already supervise another team.set_member_sourcedeclares provenance, it does not move files. A team whose roster still contains alocalmember is not distributable —members.lock.jsoncannot pin an ID that exists only on this machine, so a fork elsewhere would silently come up short a member. Switch each member togitorregistrybefore publishing, thenresolveto write the lock. It cannot change a member'srole; useset_supervisorfor that.updateis a patch: omitted fields remain unchanged.parentTeamId: nulldetaches the team and makes it top-level; an empty string is invalid.typeonly allowsephemeral → persistent. Repeating the current value is idempotent; usepromotefor an explicit upgrade.isolation:softuses shared session isolation;harduses independent Agent copies.descriptionis the marketplace-facing team description, not thetasksupplied at creation.
Use a declared avatar with:
{
"action": "update",
"teamId": "team-id",
"avatar": { "char": "CR", "color": "purple" }
}
For an image avatar, use avatarImage.source with dc-media://<mediaId>, a bare mediaId, or an image path inside the workdir. PNG/JPEG/WebP are supported. Do not pass an HTTP(S) URL or base64. Remove the image with { "remove": true }; remove and source are mutually exclusive.
5. Team Lifecycle
- Disband an ephemeral team after its project is complete so the organization does not accumulate stale teams.
- Use
promoteonly for an explicit long-term collaboration requirement; promotion is one-way. disbandremoves the team organization and repository. Execute directly when the user explicitly requested it; otherwise show thegetresult and confirm the intended target first.
6. Team Repository and Remote Synchronization
The team directory is a Git repository containing governance data such as team.json, member locks, and shared/rules.md.
For local Git work:
- obtain the absolute repository path with
get; - run
status/log/diff/add/commit/tagwith Bash in that directory; - after the local commit is complete, call
ManageTeam(action="push").
Remote fork_team/push/pull must go through ManageTeam because it enforces team Schema validation, roster consistency, the core-Agent supervisor prohibition, workspace types, out-of-bounds symlink checks, and approval. Do not bypass those controls with raw git push/pull. This rule is not based on an assumption that Agents can never access credentials.
push/pullrequire a remote connected through the client. If none is configured, ask the user to connect or publish the team in team settings.- Locally created and forked teams do not inherit a directly pushable remote configuration by default.
fork_teamdefaults toinstallMembers=true; a same-ID local Agent that has diverged from its lock is protected and skipped rather than overwritten.pullmay replace local team configuration. Inspect local state first and identify the target remote in the approval card.
7. Dispatch and Finish
After team creation, dispatch work to the supervisor or members with Delegate:
- one member:
Delegate(target=..., mode="sync" | "async", teamId=...); - several members:
Delegate(targets=[...], mode="fan-out", teamId=...); - prefer team members for sustained collaboration; a one-off outside opinion does not require membership.
Report the team name and ID, type, supervisor and members, workdir mode, organizational changes, and whether remote operations completed. Never expose credentials or a remote URL containing a token.
8. Failure Recovery
Agent does not exist: verify the ID; create or install the Agent, then retry.Core Agent cannot supervise: explicitly choose a regular Agent assupervisor.Supervisor already leads another team: runset_supervisoron the existing team before retrying.Remote not configured: ask the user to connect a remote in client team settings; do not guess a hidden API.- Local content changed or conflicts exist: obtain the directory with
get, inspect Git state, preserve user changes, and only then decide whether to commit, pull, or retry. - If this Skill is missing or disabled, the minimal operation may still be executed from the
ManageTeamaction/parameter Schema and tool error messages. Never bypass the tool by editing AgentFS directly.