4.0 KiB
4.0 KiB
name, description
| name | description |
|---|---|
| pre-check-existing-resources | 前置检查现有资源 - 在创建/修改前确认目标资源是否已存在,避免重复创建 |
触发方式
Claude 原触发:创建新项目、修改现有代码、添加功能模块前自动执行。在 Codex 中,用户提到该命令、技能名或相关任务时,先读取并遵循本 skill。
前置检查现有资源 (Pre-check Existing Resources)
角色
你是前置检查员,在每次执行创建或修改操作前,负责确认目标资源是否已经存在。
描述
在进行任何创建、修改操作前,必须先确认目标资源是否已经存在。避免因工具失效或假设错误导致重复创建或冲突。
输入
用户要求创建或修改任何资源时,自动触发本skill。
工具使用
- 必须使用 Glob 进行多路径搜索
- 必须使用 Read 尝试读取关键文件确认
- 可选使用 Bash 进行目录列表
执行步骤
Step 1: 多路径确认现有资源
禁止直接假设资源不存在。
必须使用至少两种方式确认:
-
Glob搜索(基础)
Glob: {"pattern": "**/目标名称/**/*"} Glob: {"pattern": "目标名称/**"} -
直接读取尝试(验证)
- 尝试读取
目标路径/package.json或目标路径/README.md - 尝试读取
目标路径/index.html或目标路径/main.js
- 尝试读取
-
目录列表(备选)
Bash: ls -la 目标路径/
Step 2: 分析搜索结果
| 情况 | 处理方式 |
|---|---|
| 找到现有资源 | 读取并理解现有结构,在此基础上修改 |
| 工具返回错误 | 不要假设不存在,换另一种方式确认 |
| 确认不存在 | 继续创建,但记录创建原因 |
| 不确定 | 询问用户确认 |
Step 3: 决策流程
用户要求创建X
│
▼
尝试读取X/package.json ──→ 成功 → 读取并理解现有X
│ │
失败 ▼
│ 在X基础上修改
▼
尝试读取X/README.md ────→ 成功 → 读取现有X
│ │
失败 ▼
│ 在X基础上修改
▼
Bash: ls -la X/ ────────→ 有内容 → 读取现有X
│ │
失败/空 ▼
│ 在X基础上修改
▼
确认X不存在
│
▼
可以创建新的X
输出规范
每次执行操作前,必须输出确认结果:
现有资源检查:
- 搜索方式1 (Glob): [结果]
- 搜索方式2 (Read): [结果]
- 搜索方式3 (Bash): [结果]
- 结论: [资源已存在/资源不存在/需要用户确认]
注意事项
-
工具失效不等于资源不存在
- Glob 返回 ENOENT 错误时,可能是 ripgrep 工具问题
- 必须换 Read 或 Bash 再次确认
-
用户指令可能有歧义
- "在 Dashboard 添加功能" ≠ "创建新的 Dashboard"
- 先找现有 Dashboard,找不到再询问
-
记录决策过程
- 如果决定创建新资源,说明为什么确认不存在
- 如果修改现有资源,说明找到了什么
错误示例(反面教材)
❌ 错误做法:
Glob搜索失败(ENOENT) → 假设不存在 → 直接创建新资源
❌ 错误做法:
用户说"在Dashboard添加功能" → 不去找现有Dashboard → 在错误位置创建新Dashboard
正确示例
✅ 正确做法:
用户: "在Dashboard添加功能"
1. Glob: {"pattern": "dashboard/**/*"} → 失败
2. Glob: {"pattern": "**/dashboard/**/*"} → 失败
3. Read: {"file_path": "dashboard/package.json"} → 成功!
4. 读取现有Dashboard结构
5. 在正确位置添加功能
✅ 正确做法:
工具全部失败时 → 直接询问用户:"请告诉我现有Dashboard的路径"
关联
- 与
file-ops配合:确定是修改还是创建 - 与
codebase-analysis配合:理解现有代码结构