---
name: import-dependabot
description: "导入 Dependabot 安全告警并创建修复任务"
---

# 导入 Dependabot 安全告警

导入指定的 Dependabot 安全告警并创建修复任务。

## 行为边界 / 关键规则

- 本技能仅负责导入告警并创建任务骨架 —— 不直接修改业务代码或关闭告警
- 不要自动提交。绝不自动执行 `git commit` 或 `git add`
- 执行本技能后，你**必须**立即更新 task.md 中的任务状态

## 执行流程

### 1. 获取告警信息

执行前先读取 `.agents/rules/security-alerts.md`，并按其中的 Dependabot 告警读取命令获取告警详情。

提取关键信息：
- `number`：告警编号
- `state`：状态（open/dismissed/fixed）
- `security_advisory`：安全公告详情（ghsa_id、cve_id、severity、summary、description）
- `dependency`：受影响的依赖（包名、生态系统、清单路径）
- `security_vulnerability`：受影响版本范围、首个修复版本

### 2. 创建任务目录和文件

检查 `.agents/workspace/active/` 中是否已存在该告警的任务。
- 如果找到，询问用户是否重新导入
- 如果未找到，创建新任务

创建目录：`.agents/workspace/active/TASK-{yyyyMMdd-HHmmss}/`

任务元数据需包含：
```yaml
id: TASK-{yyyyMMdd-HHmmss}
security_alert_number: <alert-number>
severity: <critical/high/medium/low>
cve_id: <CVE-ID>
ghsa_id: <GHSA-ID>
```

### 3. 更新任务状态

获取当前时间：

```bash
date "+%Y-%m-%d %H:%M:%S%:z"
```

更新 task.md：`current_step` -> `requirement-analysis`。
- **追加**到 `## Activity Log`（不要覆盖之前的记录）：
  ```
  - {YYYY-MM-DD HH:mm:ss±HH:MM} — **Import Dependabot Alert** by {agent} — Dependabot alert #{alert-number} imported
  ```

### 4. 完成校验

运行完成校验，确认任务产物和同步状态符合规范：

```bash
node .agents/scripts/validate-artifact.js gate import-dependabot .agents/workspace/active/{task-id} --format text
```

处理结果：
- 退出码 0（全部通过）-> 继续到「告知用户」步骤
- 退出码 1（校验失败）-> 根据输出修复问题后重新运行校验
- 退出码 2（网络中断）-> 停止执行并告知用户需要人工介入

将校验输出保留在回复中作为当次验证输出。没有当次校验输出，不得声明完成。

### 5. 告知用户

> 仅在校验通过后执行本步骤。

> **重要**：以下「下一步」中列出的所有 TUI 命令格式必须完整输出，不要只展示当前 AI 代理对应的格式。如果 `.agents/.airc.json` 中配置了自定义 TUI（`customTUIs`），读取每个工具的 `name` 和 `invoke`，按同样格式补充对应命令行（`${skillName}` 替换为技能名，`${projectName}` 替换为项目名）。

```
安全告警 #{alert-number} 已导入。

漏洞信息：
- 严重程度：{severity}
- CVE/GHSA：{cve-id} / {ghsa-id}
- 受影响包：{package-name}

任务信息：
- 任务 ID：{task-id}

产出文件：
- 任务文件：.agents/workspace/active/{task-id}/task.md

下一步：
  - Claude Code / OpenCode：/analyze-task {task-id}
  - Gemini CLI：/agent-infra:analyze-task {task-id}
  - Codex CLI：$analyze-task {task-id}
```

## 完成检查清单

- [ ] 获取并记录了告警关键信息
- [ ] 创建或确认了对应的任务目录与任务文件
- [ ] 更新了 task.md 中的 `current_step` 为 requirement-analysis
- [ ] 更新了 task.md 中的 `updated_at` 为当前时间
- [ ] 追加了 Activity Log 条目到 task.md
- [ ] 告知了用户下一步（必须展示所有 TUI 的命令格式，含自定义 TUI，不要筛选）

## 错误处理

- 告警未找到：提示 "Security alert #{number} not found"
- 告警已关闭：询问用户是否继续分析
- 网络/权限错误：提示相应信息
