# 001: Skill 架构设计

## 状态
已采纳 (Accepted)

## 上下文
需要为 QWEN_AGENT 模式的机器人提供可扩展的技能（插件/工具）支持，允许动态加载自定义功能。

## 决策

### 目录结构设计
```
skill-name/
├── SKILL.md                    # 核心指令文档（必需）
├── skill.yaml                  # 元数据配置（可选）
├── .claude-plugin/
│   └── plugin.json            # Hook 和 MCP 配置（可选）
└── scripts/                    # 可执行脚本（可选）
```

### Hook 系统
| Hook 类型 | 执行时机 | 用途 |
|-----------|---------|------|
| `PrePrompt` | system_prompt 加载时 | 动态注入用户上下文 |
| `PostAgent` | agent 执行后 | 处理响应结果 |
| `PreSave` | 保存消息前 | 内容过滤/修改 |

### 技能来源
1. **官方 skills**: `./skills/` 目录
2. **用户 skills**: `projects/uploads/{bot_id}/skills/`

## 结果

### 正面影响
- 渐进式加载，按需读取
- 支持多种元数据格式（优先级: plugin.json > SKILL.md）
- 完整的 Hook 扩展机制
- MCP 服���器配置支持

### 负面影响
- 需要管理文件系统权限
- 技能包格式验证复杂度增加

## 替代方案
1. 使用数据库存储（拒绝：文件更灵活）
2. 仅支持单一格式（拒绝：用户多样性需求）
