---
name: manage-skills
description: >-
管理 Agent 的技能生命周期:通过 HTTP API 导入、安装、更新、删除技能,
或通过 AgentFS 文件系统直接编写符合规范的 SKILL.md。Use when 用户要求
安装技能、从 URL/Git 导入技能、编写新技能、或管理已有技能。
version: 1.0.2
type: meta
risk_level: low
status: enabled
disable-model-invocation: true
tags:
- skill
- import
- management
- meta
- agentfs
metadata:
author: desirecore
updated_at: '2026-03-03'
i18n:
default_locale: en-US
source_locale: zh-CN
locales:
- zh-CN
- en-US
zh-CN:
name: 管理技能
short_desc: 导入、编写、安装与管理 Agent 技能的完整工具箱
description: >-
管理 Agent 的技能生命周期:通过 HTTP API 导入、安装、更新、删除技能, 或通过 AgentFS 文件系统直接编写符合规范的 SKILL.md。Use when 用户要求 安装技能、从 URL/Git 导入技能、编写新技能、或管理已有技能。
body: ./SKILL.zh-CN.md
source_hash: sha256:7f116cc5de352822
translated_by: human
en-US:
name: Manage Skills
short_desc: Complete toolbox for importing, authoring, installing, and managing Agent Skills
description: >-
Manage the Skill lifecycle of an Agent: import, install, update, and delete Skills via HTTP API, or directly author standards-compliant SKILL.md files via the AgentFS filesystem. Use when the user requests to install Skills, import Skills from URL/Git, author new Skills, or manage existing Skills.
body: ./SKILL.md
source_hash: sha256:7f116cc5de352822
translated_by: ai:claude-opus-4-7
translated_at: '2026-05-03'
market:
icon: >-
category: productivity
maintainer:
name: DesireCore Official
verified: true
compatible_agents: []
channel: latest
---
# manage-skills Skill
## L0: One-line Summary
Manage the full lifecycle of Skills—import, author, install, update, and delete.
## L1: Overview and Use Cases
### Capability
manage-skills is a **Meta-Skill** that gives DesireCore the ability to manage the Skill system. It covers five core operations:
1. **Import a Skill from a URL** — supply a remote SKILL.md URL, fetch the content, and create
2. **Bulk import from a Git repository** — clone a Git repo, scan all SKILL.md files, and selectively import
3. **Manage existing Skills via API** — list, read, update, delete, enable/disable Skills
4. **Author SKILL.md directly via AgentFS** — use the Write/Edit tools to create Skills on the filesystem
5. **Bulk operations and cross-Agent copying** — bulk enable/disable/delete, plus copy Skills to other Agents
### Use Cases
- The user wants to import community-shared Skills from platforms like GitHub
- The user wants to install a new Skill on an Agent to enhance its capabilities
- The user needs to author a custom Skill to teach the Agent a new workflow
- The user wants to bulk-manage existing Skills (enable/disable/delete)
- The user wants to copy one Agent's Skill to another Agent
- The user needs to view or edit the contents of a Skill
### Core Value
- **Self-extension**: an Agent can autonomously expand its capability boundary by importing or authoring Skills
- **Governable**: every Skill change goes through the API or filesystem operations and is traceable and auditable
- **Flexibility**: supports both API import and direct filesystem authoring to fit different scenarios
## L2: Detailed Specification
### 1. Import a Single Skill from a URL
For importing a single SKILL.md file (e.g. a GitHub raw link).
**Step 1: Fetch the remote content**
```bash
POST /api/skills/fetch-url
Content-Type: application/json
{
"url": "https://raw.githubusercontent.com/user/repo/main/my-skill/SKILL.md"
}
```
**Success response** (`200 OK`):
```json
{
"content": "---\nname: My Skill\ndescription: ...\n---\n\n# Skill content..."
}
```
**Security limits**:
- HTTPS URLs only
- 20MB file size limit
- 30-second request timeout
**Step 2: Create the Skill**
After a successful fetch, choose the creation endpoint based on scope:
**Create a global Skill** (visible to all Agents):
```bash
POST /api/skills
Content-Type: application/json
{
"skillId": "my-skill",
"content": ""
}
```
**Create an Agent-scoped Skill** (visible only to the specified Agent):
```bash
POST /api/agents/{agentId}/skills
Content-Type: application/json
{
"id": "my-skill",
"fullContent": ""
}
```
**Success response** (`201 Created`):
```json
{
"success": true,
"skill": { "id": "my-skill", "name": "My Skill", "description": "..." }
}
```
### 2. Bulk Import from a Git Repository
For importing a Git repository that contains multiple Skills.
**Step 1: Scan the repository**
```bash
POST /api/skills/fetch-git
Content-Type: application/json
{
"url": "https://github.com/user/skill-collection.git"
}
```
**Success response** (`200 OK`):
```json
{
"skills": [
{
"id": "data-analysis",
"path": "data-analysis",
"content": "---\nname: Data Analysis\n...",
"sidecarFiles": [{ "name": "examples.md", "content": "..." }]
},
{
"id": "report-writing",
"path": "report-writing",
"content": "---\nname: Report Writing\n..."
}
]
}
```
The API automatically:
- Uses `--depth=1` shallow clone to reduce download size
- Recursively scans for SKILL.md files in directories
- Derives skillId from the directory name (falls back to a slug from the frontmatter name)
- Collects sidecar files in the same directory (e.g. examples.md, references/)
- Cleans up the temporary directory once finished
**Step 2: Import the chosen Skills one by one**
Show the scan results to the user and let them choose which Skills to import, then call the create API for each:
```bash
# Global Skill
POST /api/skills
{ "skillId": "data-analysis", "content": "" }
# Or Agent-scoped Skill
POST /api/agents/{agentId}/skills
{ "id": "data-analysis", "fullContent": "" }
```
**Handling sidecarFiles**: if the scan result contains sidecarFiles, after creating the Skill write them to the corresponding directory:
```bash
# Sidecar file path for a global Skill
~/.desirecore/skills/{skillId}/{filename}
# Sidecar file path for an Agent-scoped Skill
~/.desirecore/agents/{agentId}/skills/{skillId}/{filename}
```
### 3. Manage Existing Skills via API
#### List All Skills
```bash
GET /api/skills/list
GET /api/skills/list?agentId={agentId}
GET /api/skills/list?includeDisabled=true
```
Returns a Skill list covering all three scopes: project, agent, and global.
#### List Skills for a Specific Agent
```bash
GET /api/agents/{agentId}/skills
```
#### Read Skill Content
```bash
# Resolved automatically by scope priority
GET /api/skills/{skillId}/content
GET /api/skills/{skillId}/content?agentId={agentId}
# Read a specific Agent's Skill
GET /api/agents/{agentId}/skills/{skillId}
```
#### Update Skill Content
**Update a global Skill**:
```bash
PUT /api/skills/{skillId}/content
Content-Type: application/json
{
"content": "---\nname: Updated Skill\n...\n---\n\n# New content..."
}
```
**Update an Agent-scoped Skill**:
```bash
PUT /api/agents/{agentId}/skills/{skillId}
Content-Type: application/json
{
"content": "---\nname: Updated Skill\n...\n---\n\n# New content...",
"bumpVersion": "minor"
}
```
`bumpVersion` accepts: `major` | `minor` | `patch`; when specified, the version number is auto-incremented. The system automatically updates `metadata.updated_at` whenever the content changes.
#### Delete a Skill
```bash
# Delete a global Skill
DELETE /api/skills/{skillId}
# Delete an Agent-scoped Skill
DELETE /api/agents/{agentId}/skills/{skillId}
```
#### Enable/Disable a Skill
```bash
# Global Skill
PATCH /api/skills/{skillId}/status
Content-Type: application/json
{ "enabled": false }
# Agent-scoped Skill
PATCH /api/agents/{agentId}/skills/{skillId}/status
Content-Type: application/json
{ "enabled": true }
```
#### Bulk Operations
```bash
POST /api/agents/{agentId}/skills/batch
Content-Type: application/json
{
"action": "enable",
"ids": ["skill-a", "skill-b", "skill-c"]
}
```
`action` accepts: `enable` | `disable` | `delete`
#### Copy a Skill to Another Agent
```bash
POST /api/agents/{targetAgentId}/skills/copy
Content-Type: application/json
{
"sourceSkillId": "data-analysis",
"sourceAgentId": "analyst",
"targetSkillId": "data-analysis-v2"
}
```
Optional parameters:
- `sourceAgentId` — source Agent ID (required when copying from agent scope)
- `sourceSource` — source scope: `project` | `agent` | `global`
- `sourceWorkDir` — source project workDir (used when copying from project scope)
- `targetSkillId` — target Skill ID (defaults to sourceSkillId if omitted)
### 4. Author SKILL.md Directly via AgentFS
When you need to create a Skill from scratch or the API approach is not flexible enough, you can author SKILL.md directly on the filesystem.
#### Directory Structure
**Global Skill** (visible to all Agents):
```
~/.desirecore/skills/
└── my-new-skill/
├── SKILL.md # required: skill definition file
├── examples/ # optional: example files
├── scripts/ # optional: helper scripts
└── references/ # optional: reference material
```
**Agent-scoped Skill** (visible only to the specified Agent):
```
~/.desirecore/agents/{agentId}/
└── skills/
└── my-new-skill/
├── SKILL.md
└── ...
```
#### Full SKILL.md Format
```markdown
---
# === Required fields ===
description: >-
Full description of the Skill's purpose. Should include a "Use when" trigger hint
to help the AI decide when to use this Skill.
# === Recommended fields ===
name: Skill display name
version: 1.0.0
type: procedural
risk_level: low
status: enabled
tags:
- tag1
- tag2
metadata:
author: your-name
updated_at: '2026-03-03'
# === Optional fields ===
disable-model-invocation: true
requires:
tools:
- Bash
- Read
optional_tools:
- Edit
---
# skill-id Skill
## L0: One-line Summary
Describe in one sentence what this Skill does.
## L1: Overview and Use Cases
### Capability
Detailed description of the Skill's core capability.
### Use Cases
- Scenario 1
- Scenario 2
### Core Value
- Value 1
- Value 2
## L2: Detailed Specification
### Concrete Steps
Describe the execution flow, API calls, and input/output formats stage by stage / step by step.
### Error Handling
| Error scenario | Handling |
| -------- | -------- |
| ... | ... |
```
#### Example: Create a Skill with the Write Tool
The following example shows how to create a global Skill with the Write tool:
```
Target path: ~/.desirecore/skills/daily-summary/SKILL.md
```
Content to write:
```markdown
---
name: Daily Summary
description: >-
Aggregates today's conversation records and produces a structured daily work summary.
Use when the user asks for a summary of today's work, generation of a daily report, or a recap of conversation content.
version: 1.0.0
type: procedural
risk_level: low
status: enabled
tags:
- summary
- daily
- productivity
metadata:
author: user
updated_at: '2026-03-03'
---
# daily-summary Skill
## L0: One-line Summary
Aggregates today's conversation records and automatically produces a structured work summary.
## L1: Overview and Use Cases
### Capability
Extracts key information from conversation history, organizes it by project/topic, and produces a daily summary
covering completed items, to-dos, and important decisions.
### Use Cases
- The user asks for a summary at the end of a workday
- The user needs material for a daily or weekly report
- The user wants to recap a particular day's conversation and decisions
## L2: Detailed Specification
### Summary Structure
1. Items completed today
2. Items in progress
3. Important decisions and conclusions
4. Suggested to-dos for tomorrow
```
### 5. SKILL.md Format Reference
#### Frontmatter Field Table
| Field | Required | Type | Description |
| -------------------------- | -------- | -------- | -------------------------------------------------- |
| `description` | **Required** | string | Skill purpose description; including a "Use when" trigger hint is recommended |
| `name` | Recommended | string | Skill display name |
| `version` | Recommended | string | Semantic version (e.g. `1.0.0`) |
| `type` | Recommended | enum | `procedural` / `conversational` / `meta` |
| `risk_level` | Recommended | enum | `low` / `medium` / `high` |
| `status` | Recommended | enum | `enabled` / `disabled` |
| `tags` | Optional | string[] | List of tags, used for search and categorization |
| `disable-model-invocation` | Optional | boolean | `true` = L0+L1 auto-injected into the system prompt; `false` = full L0+L1+L2 content injected; default `true` |
| `requires` | Optional | object | Dependency declaration: `tools`, `optional_tools`, `connections` |
| `metadata` | Optional | object | Meta information: `author`, `updated_at` |
| `market` | Optional | object | Market display metadata (only required for Skills published to the Market) |
#### type Description
| Type | Meaning | Examples |
| ---------------- | ------------------------ | ---------------------- |
| `procedural` | Procedural; executed step by step | Data analysis flow, approval flow |
| `conversational` | Conversational; completed through multi-turn dialogue | Requirements gathering, brainstorming |
| `meta` | Meta-Skill that manages other resources | Creating Agents, managing Skills |
#### Markdown Body Structure (L0 / L1 / L2)
| Tier | Content | Purpose |
| ---- | ----------------------------------- | ------------------ |
| L0 | One-line summary | Quickly understand what the Skill does |
| L1 | Capability + Use Cases + Core Value | Decide whether it applies |
| L2 | Detailed specification: steps, APIs, formats, error handling | Concrete execution guide |
### 6. Scope Notes
Skills exist at three scope levels, listed from highest priority to lowest:
| Priority | Scope | Path | Visibility |
| ------ | ---------- | ---------------------------------------- | ------------------ |
| Highest | Project | `.claude/skills/` (project root) | All Agents in the current project |
| Medium | Agent | `~/.desirecore/agents/{agentId}/skills/` | Only that Agent |
| Lowest | Global | `~/.desirecore/skills/` | All Agents |
**Same-name override rule**: a Skill in a higher-priority scope overrides a same-named Skill in a lower-priority scope. For example, an Agent-scoped `data-analysis` Skill will shadow a global Skill of the same name.
### 7. Error Handling
| Error code | Scenario | Handling |
| ------ | ----------------------------- | -------------------------------------- |
| 400 | Missing required fields or invalid format | Prompt the user to check the input and explain which field is problematic |
| 400 | SKILL.md frontmatter validation failed | Show validation error details and guide the user to fix |
| 404 | Skill does not exist | Note the Skill ID may be misspelled, list available Skills |
| 404 | No SKILL.md in the Git repo | Note the repository's format does not match the Skill spec |
| 409 | Skill already exists (write conflict) | Suggest using PUT to update instead of POST to create |
| 413 | Remote file exceeds 20MB | Note the file is too large; suggest trimming the content |
| 504 | URL fetch timeout | Note the network timed out; suggest checking the URL or retrying later |
| 500 | Server internal error | Tell the user to retry later |
### 8. Permission Notes
- It is recommended to use the `Bash` tool to call the Agent Service HTTP API via curl
- The API base address is already injected into the system prompt's "Local API" section; you can reference it directly
- For import and create operations, show the user a preview first and proceed only after confirmation
- Deletions require explicit user confirmation
- When authoring Skills via AgentFS, simply use the Write tool to create the file
### Background Knowledge
> AgentFS repository structure, troubleshooting tips, and protected paths are detailed in `_agentfs-background.md` and `_protected-paths.yaml`.
### Dependencies
- Agent Service HTTP API (Skills route group)
- The local API address declaration in the system prompt
- Write / Edit tools (for the AgentFS direct-authoring scenario)