---
name: create-agent
description: >-
  通过多轮对话收集需求，调用 ManageAgent 内置工具创建新的 AgentFS v2 智能体，支持自定义 persona 和 principles。Use when 用户要求创建新智能体、培养某领域助手、或快速基于模板生成可治理 Agent。
version: 2.6.1
type: meta
risk_level: low
status: enabled
disable-model-invocation: true
tags:
  - agent
  - creation
  - meta
metadata:
  author: desirecore
  updated_at: '2026-08-25'
  i18n:
    default_locale: en-US
    source_locale: zh-CN
    locales:
      - zh-CN
      - en-US
    zh-CN:
      name: 创建智能体
      short_desc: 通过自然语言对话收集需求，一键创建专业化数字智能体
      description: >-
        通过多轮对话收集需求，调用 ManageAgent 内置工具创建新的 AgentFS v2 智能体，支持自定义 persona 和 principles。Use when 用户要求创建新智能体、培养某领域助手、或快速基于模板生成可治理 Agent。
      body: ./SKILL.zh-CN.md
      source_hash: sha256:14e8755703784086
      translated_by: human
    en-US:
      name: Create Agent
      short_desc: Collect requirements through natural-language conversation and create a specialized digital Agent in one step
      description: >-
        Collect requirements through multi-turn conversation and call the ManageAgent builtin tool to create a new AgentFS v2 Agent, with customizable persona and principles. Use when the user asks to create a new Agent, raise a domain assistant, or quickly produce a governable Agent from a template.
      body: ./SKILL.md
      source_hash: sha256:14e8755703784086
      translated_by: human
market:
  icon: >-
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0
    24 24" fill="none"><defs><linearGradient id="ca-a" x1="2" y1="7" x2="16"
    y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#34C759"/><stop
    offset="1" stop-color="#007AFF"/></linearGradient></defs><circle cx="9"
    cy="7" r="4" fill="url(#ca-a)" fill-opacity="0.15" stroke="url(#ca-a)"
    stroke-width="1.5"/><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"
    fill="url(#ca-a)" fill-opacity="0.1" stroke="url(#ca-a)"
    stroke-width="1.5"/><circle cx="19" cy="11" r="4" fill="#34C759"
    fill-opacity="0.15"/><line x1="19" y1="8.5" x2="19" y2="13.5"
    stroke="#34C759" stroke-width="2" stroke-linecap="round"/><line x1="16.5"
    y1="11" x2="21.5" y2="11" stroke="#34C759" stroke-width="2"
    stroke-linecap="round"/></svg>
  category: productivity
  maintainer:
    name: DesireCore Official
    verified: true
  compatible_agents: []
  channel: latest
  required_client_version: 10.0.108
---

# create-agent skill

## L0: One-Sentence Summary

Collect requirements through natural-language conversation and call the ManageAgent builtin tool to create a specialized digital Agent.

## L1: Overview

Meta-skill: gather requirements over multi-turn conversation → generate persona/principles → land via `ManageAgent(action='create')`. Use it to raise a domain specialist (legal advisor, financial analyst), deploy a customized business Agent quickly, or produce a prototype from a template. The created repo conforms to the AgentFS v2 spec and is version-managed by git (governable, traceable). Its value is what the tool can't give: domain-tailored persona/principles generation + a pre-create preview confirmation.

## L2: Detailed Spec

Flow: intent recognition → requirement gathering → content generation → user confirmation → creation → receipt.

### Stage 1: Intent Recognition

Trigger (any): user explicitly says "create an Agent / make me an assistant"; describes a domain-specific need the current Agent lacks; asks "can you raise a …". Confirm intent, then move to requirement gathering.

### Stage 2: Requirement Gathering

- Required (parenthesized = example prompt question): `name` ("what to name it?"), `role` ("what does it mainly do?"), `target_users` ("who will use it?"), `domain` ("what expertise does it need?").
- Optional: `style` (communication tone), `boundaries` (red lines), `language` (default Chinese) — defaults derived from the domain template.
- Strategy: prefer inferring from the user's natural description; only ask for missing required fields; you decide how many to ask and the pacing.

### Stage 3: Content Generation

Organize persona and principles as structured fields (do not emit raw markdown; present field-by-field). Leave uncollected fields empty for the system to fill with defaults:

- **persona**: L0 one-sentence core identity; L1 `role` / `personality` (array of trait tags) / `communication_style`; L2 specialty, values, decision preferences (free-form).
- **principles**: L0 one-sentence top principle; L1 `must_do` / `must_not` (safety red lines) / `priority`; L2 governance principles, escalation rules (free-form).

**Domain matching reference** (recommend personality and red lines by domain):

| Domain | Recommended personality | Default must_not |
| --- | --- | --- |
| Legal / contract | Professional, rigorous, prudent | No litigation representation; not a substitute for formal legal advice |
| Finance / accounting / investment | Precise, analytical, conservative | No investment advice; no real transactions |
| Code / development / architecture | Logical, pragmatic, direct | No direct production access; no credential storage |
| General / other | Friendly, helpful | Standard safety norms |

### Stage 4: User Confirmation

Present the preview in natural language / tables (name, description, persona, principles; **no raw markdown source**), e.g.:

> About to create "Legal Advisor Assistant" — focused on contract review and legal risk assessment.
> **Persona**: digital legal advisor; professional, rigorous, prudent; uses legal terms accurately with plain-language explanations.
> **Principles**: user interest first, not a substitute for formal legal advice; must — cite statutes / mark uncertainty / recommend consulting a lawyer; must not — litigation representation / leaking consultations; priority: user safety > accuracy > efficiency.
> Confirm creation? (Confirm / Modify / Cancel)

If the user picks "Modify": ask which field → re-collect that field → update the preview → show and confirm again.

### Stage 5: Create via ManageAgent

Structured call (persona/principles also accept markdown strings; unprovided fields are auto-filled):

```
ManageAgent({
  "action": "create",
  "name": "Legal Advisor Assistant",
  "description": "A digital Agent focused on contract review and legal risk assessment",
  "persona": { "L0": "…", "L1": { "role": "…", "personality": ["professional","rigorous","prudent"], "communication_style": "…" } },
  "principles": { "L0": "…", "L1": { "must_do": ["…"], "must_not": ["…"], "priority": "user safety > accuracy > efficiency" } }
})
```

- Minimal create needs only `{ "action": "create", "name": "My Assistant" }` (everything else auto-generated).
- Basic create `{ "action": "create", "name": "Legal Advisor", "description": "contract review" }` — with just name + description, the description auto-fills persona's L0.
- Optional `id` (kebab-case slug; `core` / `desirecore` are reserved core identifiers and cannot be used, including when the slug auto-generated from `name` collides), `config`, `smartRouting`, and `avatarImage`. See the contracts below. Sensitive fields such as `mcp_servers` and `tool_permissions` are rejected and must be adjusted through the UI after creation.
- The Agent is registered and usable immediately; the returned ID works directly with ManageTeam / Delegate. If the tool errors (already exists / reserved identifier / non-whitelisted config field, etc.), explain the reason and retry after adjusting per the hint.

#### Creation Parameter Guide

**Smart routing**: new Agents default to the Smart flagship tier. When responsibilities require an explicit tier, pass `smartRouting`:

```json
{
  "tier": "balanced",
  "requiredCapabilities": ["vision", "tool_use"],
  "reasoning": "high"
}
```

- `tier` accepts `lightweight`, `balanced`, or `flagship`; `reasoning` accepts `auto`, `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, or `max`.
- Omitting `tier` defaults to `flagship`. This expresses workload and capability intent, not a concrete Provider or model.
- Fixed model, Provider, and Smart/fixed selection are governed by the human model selector and cannot be changed through ManageAgent.
- Natural-language requests such as "deepest/highest/max it out" normally map to `xhigh`; use `max` only when the user explicitly names it and the model supports it.

**Configuration patch**: `config` supports only `llm` and declarative avatar settings. It is normally unnecessary during creation; use it only when the Agent needs a different default reasoning behavior:

```json
{
  "llm": {
    "reasoning": "high",
    "maxRetryDelayMs": 30000
  },
  "avatar": {
    "char": "L",
    "color": "purple"
  }
}
```

`config.llm` currently exposes only `reasoning`, `thinkingBudgets`, and `maxRetryDelayMs`. Do not pass `model`, `provider`, `providerId`, or `routingMode`.

**Image avatar**: use the separate `avatarImage` parameter; do not place image data in `config`:

```json
{ "source": "dc-media://<mediaId>" }
```

`source` may be a media ID from the current turn or a PNG/JPEG/WebP file inside the working directory. URLs and base64 are rejected. The service crops to 512×512 WebP and removes EXIF automatically. Avatar failure does not roll back an otherwise successful Agent creation; retry only the avatar operation according to the receipt.

### Stage 6: Receipt

Present in a user-friendly way (no internal paths / technical details): confirm success and suggest next steps — start chatting, add skills, adjust persona or rules.

### Background and Constraints

- AgentFS structure, troubleshooting, and protected paths: see `_agentfs-background.md` and `_protected-paths.yaml`.
- Always create via `ManageAgent`; never use curl / HTTP or write AgentFS directories directly. Requires client ≥ 10.0.90.
