> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashcat.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Skill

> Skill 是可复用的能力包：一段 SKILL.md 说明加上允许使用的工具，供 AI SRE Agent 在对话中按需调用。从市场一键安装、上传自定义 Skill，或在对话中用 skill-creator 直接创建。

<Info>
  **内测功能**：AI SRE 目前处于内测阶段，仅对受邀账户开放。如需参与白名单测试，请联系 Flashduty 商务团队申请开通；内测期间功能与界面可能调整。
</Info>

## 概述

***

Skill 是一个**可复用的能力包**。一个 Skill 由两部分组成：

* 一段 **SKILL.md** 说明文档，告诉 Agent「什么场景下用、怎么用、按什么步骤做」；
* 该 Skill 声明的**允许使用的工具**，以及可选的参考资源文件（脚本、模板、子文档等）。

Skill 被打包成一个 `.zip` 归档上传到 AI SRE。归档的根目录必须包含一个 `SKILL.md` 文件，其余资源文件可放在归档内任意位置，Agent 可在执行时按需读取。

启用后，该 Skill 即在会话中对 Agent 可见、可被调用。Agent 既可以**自主判断**何时调用某个 Skill，您也可以在对话框里用 `/<skill-name>`（如 `/flashduty`）来**显式触发**它。

<Tip>
  Skill 与 MCP 的区别：MCP 提供**外部工具的接入能力**，Skill 提供**如何编排这些工具完成一类任务的方法论**。两者配合使用——Skill 在 SKILL.md 里声明它需要哪些工具，包括内置工具和 `mcp:服务名/工具名` 形式的 MCP 工具。
</Tip>

### SKILL.md 格式

`SKILL.md` 由 YAML frontmatter（元数据）和正文（Agent 可读的说明）两部分组成，以 `---` 分隔：

```markdown theme={null}
---
name: skill-name
description: USE FIRST for ... — 简明说明此 Skill 解决的问题与适用场景
version: "1.0.0"
tags:
  - tag1
  - tag2
author: author-name
license: MIT
allowed-tools: bash, read, task
---

## Instructions

Skill 正文写在这里：执行步骤、约束、注意事项……
```

frontmatter 字段如下：

| 字段              | 类型        | 是否必填 | 说明                                                                                     |
| --------------- | --------- | ---- | -------------------------------------------------------------------------------------- |
| `name`          | string    | 是    | Skill 名，kebab-case 格式（仅小写字母、数字、连字符，如 `my-skill-name`），长度 1–64。会作为 `/<skill-name>` 的触发词 |
| `description`   | string    | 否    | Skill 描述。这是 Agent 选择 Skill 的核心信号，建议写成「USE FIRST / prefer-over-X」式的祈使句，越精准越容易被正确调用      |
| `version`       | string    | 否    | 版本号，如 `1.0.0`                                                                          |
| `tags`          | string\[] | 否    | 标签列表                                                                                   |
| `author`        | string    | 否    | 作者                                                                                     |
| `license`       | string    | 否    | 许可证                                                                                    |
| `allowed-tools` | string\[] | 否    | 此 Skill 允许使用的工具清单，留空表示不额外限制                                                            |

工具的写法有两种：

* **内置工具**：直接写工具名。可用的内置工具包括 `read`、`write`、`edit`、`bash`、`grep`、`glob`、`skill`、`mcp`、`todo`、`time`、`webfetch`、`web_search` 等。
* **MCP 工具**：写成 `mcp:服务名/工具名`（如 `mcp:my-server/query`）。上传时只校验该 MCP 服务是否存在，具体工具名在会话中加载 MCP 时才会被验证。

<Note>
  内置的 `flashduty` Skill（随账户预置）就是一个范例：它通过 `fduty` 命令行覆盖整个 Flashduty API，让 Agent 可以排障故障、读取 AI 详情、查询告警、关联变更等。您可以参考它来编写自己的 Skill。
</Note>

## 从市场安装

***

进入 **插件 → Skill** 页面，点击 **浏览 Marketplace** 打开 Skill**目录**，可以浏览并一键安装 Flashduty 与 Anthropic 提供的 Skill 模板。

<Steps>
  <Step title="打开目录">
    在 Skill 列表页点击 **浏览 Marketplace**，弹出目录对话框，以卡片网格展示所有可用 Skill 模板。
  </Step>

  <Step title="检索与筛选">
    顶部搜索框按名称或描述检索；右上角的**筛选**可只看「已安装」或「未安装」，**排序**支持「已安装优先」或「名称 A–Z」。
  </Step>

  <Step title="一键安装">
    在未安装的卡片上点击 **+** 按钮即可安装。安装会把模板内容复制到您的账户，成为一个普通 Skill 行，并标记其来源模板（卡片上以 `v<版本>` 角标标识「来自 Marketplace」）。
  </Step>

  <Step title="管理已安装项">
    已安装的卡片右上角变为齿轮图标，点击进入该 Skill 的检视面板进行管理。
  </Step>
</Steps>

### 自动更新与手动更新

当市场中的模板发布了更高版本时，对应 Skill 行会出现 **有更新** 标记。是否自动更新取决于该 Skill 是否被本地改动过：

<CardGroup cols={2}>
  <Card title="纯净 Skill（未改动）" icon="rotate">
    安装后未做任何本地修改的 Skill，会在列表加载时**自动**拉取市场最新版本并覆盖，无需手动操作；更新成功后会有提示。
  </Card>

  <Card title="已改动 Skill" icon="pen">
    被本地编辑或重新上传过的 Skill，自动更新会**跳过**，避免覆盖您的改动。它会保留「有更新」标记，需您**手动**点击更新并确认覆盖。
  </Card>
</CardGroup>

<Warning>
  对已改动 Skill 执行更新，会用市场最新版本**覆盖您的本地改动且无法恢复**。界面会弹出「覆盖更新」确认框，请谨慎操作。重新安装市场版本后，本地改动标记会被清除，该 Skill 恢复为纯净状态、重新参与自动更新。
</Warning>

## 自定义 Skill

***

除了从市场安装，您也可以上传自己的 Skill 包。在 Skill 列表页点击 **上传 Skill**，在表单中填写：

| 字段     | 类型      | 是否必填 | 说明                                                         |
| ------ | ------- | ---- | ---------------------------------------------------------- |
| 归属     | 团队 / 账户 | 是    | 选择 Skill 的作用域：**账户**（账户内全局可见）或某个**团队**（仅该团队成员可见）。详见下文「作用域」 |
| Zip 文件 | 文件      | 是    | 包含 `SKILL.md`（必需）及可选资源文件的 `.zip` 归档；仅接受 `.zip` 后缀          |

上传时系统会自动校验：归档是合法 zip、根目录存在 `SKILL.md`、frontmatter 可解析、`name` 符合 kebab-case 命名、声明的工具有效（内置工具存在、MCP 服务存在）。同一账户内**Skill 名不能重复**，重名会被拒绝并提示换名。

<Note>
  Skill 名以外的元数据（描述、版本、标签、作者、工具等）都从 `SKILL.md` 的 frontmatter 解析得到，无需在表单中重复填写。
</Note>

### 在对话中创建（skill-creator）

除了上传 zip，您还可以**直接在 AI SRE 会话里创建和打磨 Skill**。`skill-creator` 是 Flashduty 在 Marketplace 提供、并默认预置到账户的一个 Skill，专门用来「造 Skill」。在任意会话里用 `/skill-creator` 触发，或直接用自然语言提出需求即可：

* **从零创建**：说「帮我创建一个用于排查 X 的 Skill」，或在一次排障结束后说「把刚才这套流程固化成一个 Skill」。skill-creator 会与您澄清意图、起草 `SKILL.md`、（可选）建立测试用例并据此迭代，满意后一键保存为账户里的 Skill。
* **改写与优化**：在某个 Skill 的检视面板点击 **「在聊天中编辑」**，会以 skill-creator 改写该 Skill；它也能帮您打磨 `description`，提升被正确触发的准确度。

Agent 完成起草后可一键把内容保存为 Skill；与已有 Skill 重名时，保存前会提示「替换」确认。

<Warning>
  Skill 归档大小有上限：通过对话中 Agent 打包保存的归档上限为 **10 MB**，通过网页表单或会话内呈现文件上传的归档上限为 **100 MB**。
</Warning>

## 管理与检视

***

Skill 列表以表格展示每个 Skill 的**名称**（含来源模板角标与「有更新」标记）、**范围**（账户或团队）、**版本**、**启用**开关与**操作**列。

<AccordionGroup>
  <Accordion title="启用 / 禁用" icon="toggle-on">
    用列表或检视面板上的开关切换。只有**已启用**的 Skill 才会对 Agent 可见；禁用后 Agent 看不到、也无法调用它。
  </Accordion>

  <Accordion title="编辑" icon="pen-to-square">
    点击编辑按钮可更新**描述**与**归属**（作用域）。如需修改 Skill 内容，请下载 zip、编辑后**重新上传**（这会创建新版本，并把该 Skill 标记为已改动）。
  </Accordion>

  <Accordion title="替换 / 重新上传" icon="upload">
    在检视面板选择「替换」，用一个新的 zip 覆盖当前 Skill 内容；SkillID 保持不变，对它的引用（如 `/<skill-name>` 触发）依然有效。
  </Accordion>

  <Accordion title="下载" icon="download">
    下载完整 zip 包（含 `SKILL.md` 和所有资源文件），便于离线编辑或备份。
  </Accordion>

  <Accordion title="卸载 / 删除" icon="trash">
    将 Skill 从当前范围移除。正在使用它的活跃会话会持续失败，直到重新安装。此操作有确认提示。
  </Accordion>
</AccordionGroup>

### 检视面板

在列表中点击任意一行，打开 Skill**检视面板**：

* **左侧**：Skill 包的文件树（`SKILL.md`、`README.md` 等会优先作为默认预览文件）。
* **右侧**：选中文件的内容预览，顶部显示 Skill 描述。
* **标题区**：Skill 名（短引用形如 `skill-xxxxxx`）、范围标签（账户 / 团队名）、来源模板版本角标（鼠标悬停显示「来自 Marketplace — 模板名 v版本」）、**有更新**标记、作者、`version`、以及完整 SkillID。
* **操作**：在聊天中试用（向新会话注入 `/<skill-name>`）、更新到最新版本、在聊天中编辑、替换、下载、卸载。

<Tip>
  Skill 包**过大无法预览**时，检视面板会提示体积并建议改用「下载」查看。
</Tip>

## 作用域

***

Skill 与其他资源（知识库、MCP、Agent、运行环境）共用同一套**两级作用域**模型，分为账户级与团队级：

| 作用域 | 可见性       |
| --- | --------- |
| 账户级 | 账户内所有成员可见 |
| 团队级 | 仅该团队成员可见  |

**编辑权限**：账户所有者或账户管理员可编辑任意 Skill；团队成员可编辑**本团队**的团队级 Skill；没有「创建者保留权限」这一例外。无编辑权限时，列表对应行显示为**只读**。

**运行时可见性**：会话开始时，只会加载**账户级**Skill，以及**当前会话所绑定团队**的 Skill。当 Agent 在排障中读取另一个团队的知识后，该团队的 Skill 与 MCP 才会被按需挂载进当前会话。**账户是运行时唯一的安全边界，团队只是归属与编辑的标记。**

## 相关页面

***

<CardGroup cols={2}>
  <Card title="管理知识" icon="book" href="/zh/ai-sre/knowledge">
    用 DUTY.md 与知识包为 Agent 提供团队上下文与排障经验。
  </Card>

  <Card title="MCP（外部工具）" icon="plug" href="/zh/ai-sre/mcp">
    接入外部工具，让 Skill 在 SKILL.md 中以 `mcp:服务名/工具名` 调用它们。
  </Card>

  <Card title="Agent" icon="satellite-dish" href="/zh/ai-sre/agents">
    用 Agent 扩展 AI SRE 的协作与分工能力。
  </Card>

  <Card title="控制台" icon="comments" href="/zh/ai-sre/sessions">
    在会话中用 `/<skill-name>` 显式触发 Skill，或让 Agent 自主调用。
  </Card>

  <Card title="概述" icon="gauge-high" href="/zh/ai-sre/overview">
    了解 AI SRE 的整体能力与定位。
  </Card>
</CardGroup>
