# 学习新技能标准流程

## 概述

当用户需要 agent 掌握一项新的通用技能（非可投递工具），如数据库查询方法、云存储操作、流程编排、新的数据查找方式等，agent 应按照本流程引导用户提供信息，学习并记录为新的 skill。

**适用范围**：基础设施操作、数据查询、流程编排、环境配置等非投递类技能。
**不适用**：需要通过 annoeva/annotask 投递的分析工具（请使用 learning-new-tool.md）。

## 流程

### 第一步：识别技能需求

当以下情况出现时，触发本流程：
- 用户描述了一种 agent 尚未掌握的操作方法
- 现有 skill 中的命令模板为 TODO 状态，需要用户填写
- 用户提供了新的内部系统访问方式

告知用户："该技能尚未收录，需要了解具体操作方式后才能使用。"

### 第二步：收集信息

请用户提供以下材料（至少一项）：

1. **命令示例** — 一条或多条完整的操作命令
2. **工具路径** — 相关工具/脚本的安装位置
3. **配置信息** — 连接地址、认证方式、配置文件路径等
4. **文档/说明** — 操作手册、README 或内部 wiki 链接
5. **输入输出说明** — 输入什么参数，期望什么结果

### 第三步：分析与理解

Agent 阅读用户提供的材料：
- 理解技能的用途和使用场景
- 分析命令格式、参数含义
- 识别前置条件（需要哪些工具、配置、权限）
- 明确输入输出格式

### 第四步：确认关键信息

向用户确认：

- **技能分类**：属于哪一类？
  - 数据库查询（项目元数据、样本信息等）
  - 云存储操作（上传、下载、列表）
  - 流程编排（多步骤协调、条件分支）
  - 环境/配置（软件安装、环境变量、路径设置）
  - 其他

- **使用场景**：在什么情况下需要用到？
- **命令模板**：确认命令格式是否正确
- **安全事项**：是否包含敏感信息（密码、内部地址）需要 gitignore

### 第五步：生成 skill 文件

根据收集到的信息，生成新的 skill 文件：

```
actflare/skills/<skill-name>.md
```

文件模板：

```markdown
# <技能名称>

## 概述

<技能功能描述及使用场景>

## 前置条件

<需要的工具、配置、权限等>

## 命令模板

```bash
<完整命令示例，敏感信息用占位符>
```

## 常用场景

### 场景一：<场景描述>
```bash
<该场景下的具体命令>
```

### 场景二：<场景描述>
```bash
<该场景下的具体命令>
```

## 输出格式

<命令输出的格式说明，关键字段含义>

## 配置说明

<如含敏感信息：请在首次使用时填写实际配置。此文件包含公司内部信息，已被 gitignore。>
```

### 第六步：用户确认

将生成的 skill 内容展示给用户确认：
- 命令模板是否正确？
- 使用场景是否完整？
- 是否需要补充其他场景？
- 敏感信息是否已用占位符替代？

用户确认后，保存 skill 文件到 `~/.config/actflare/skills/` 目录。

### 第七步：执行当前任务

学习完成后，立即使用新 skill 执行用户最初的请求。

## 注意事项

- 含敏感信息（数据库地址、密码、内部路径）的 skill 应保存在全局 skills 目录（已 gitignore）
- 通用性强、不含敏感信息的 skill 可保存在包内 `actflare/skills/` 目录
- agent 可在后续实践中通过自改进指令优化 skill 内容
- 一个 skill 文件应专注一项技能，避免内容过杂
