1
0

优化skill提示词

This commit is contained in:
2026-02-25 17:36:42 +08:00
parent ae3b123eeb
commit cd40a58f33
22 changed files with 1264 additions and 889 deletions

View File

@@ -0,0 +1,83 @@
# 最佳实践和输出处理
## 最佳实践
1. **始终先检查 Bun 环境** - 所有场景第一步都执行 `bun --version`
2. **根据用户意图选择场景** - 查看快速参考选择合适的使用方式
3. **单独处理 stdout/stderr** - 以区分输出和错误
4. **检查退出码** - 以检测脚本失败
5. **使用 ESM imports** - 使用 `import from` 编写现代 JavaScript
6. **捕获并显示错误** - 以帮助用户调试问题
## 输出处理
### 标准输出
所有 `console.log()`, `console.info()`, `console.warn()` 输出都到 stdout
```bash
bun "$TEMP_FILE" # stdout 由调用代码捕获
```
### 错误输出
`console.error()` 输出到 stderr
```bash
bun "$TEMP_FILE" 2>error.log # 单独捕获 stderr
```
### 退出码
脚本可以设置自定义退出码:
```javascript
process.exit(1) // 错误
process.exit(0) // 成功
```
调用者接收这些退出码以确定执行状态。
## 临时文件管理
执行后 **不会主动删除** 临时文件。这是设计使然:
- 操作系统自动管理临时目录空间
- 文件可以保留用于调试目的
- 大多数操作系统定期清理旧的临时文件
## 辅助函数 API
### `get_temp_path.js`
为脚本执行生成唯一的临时文件路径。
**CLI 使用方式:**
```bash
bun skills/lyxy-runner-js/scripts/get_temp_path.js <extension>
```
**参数:**
- `extension` (可选): 文件扩展名。默认为 `js`。常用值: `js`, `ts`, `mjs`, `mts`
**输出:** 返回类似 `/var/folders/.../lyxy-runner-js-1234567890-abc123.js` 的路径
**路径格式:**
- 使用操作系统临时目录Unix 上为 `/tmp`Windows 上为 `%TEMP%`
- 前缀: `lyxy-runner-js-`
- 时间戳: 自纪元以来的毫秒数
- 随机字符串: 7 字符字母数字
- 扩展名: 参数中提供的值
**示例:**
```bash
$ bun skills/lyxy-runner-js/scripts/get_temp_path.js js
/var/folders/8m/0hm18pdd7ts2bwp0530drz500000gn/T/lyxy-runner-js-1770257905333-na6ujx.js
$ bun skills/lyxy-runner-js/scripts/get_temp_path.js ts
/var/folders/8m/0hm18pdd7ts2bwp0530drz500000gn/T/lyxy-runner-js-1770257905333-v8yzt.ts
```

View File

@@ -0,0 +1,71 @@
# 错误处理
## 未安装 Bun
**症状:** `bun --version` 失败或返回 "command not found: bun"
**错误处理:**
当检测到 Bun 未安装时,必须:
1. **停止执行** - 不进行任何后续操作
2. **输出明确错误信息** - 清晰说明 "Bun 运行时未安装" 或类似提示
3. **提供安装说明** - 参考下方安装命令
**安装 Bun**
**macOS/Linux:**
```bash
curl -fsSL https://bun.sh/install | bash
```
**Windows:**
```powershell
powershell -c "irm bun.sh/install.ps1 | iex"
```
**重要限制:**
-**禁止自动安装** - 不要尝试自动安装 Bun由用户自行决定
-**禁止使用其他工具** - 不要尝试使用 nodejs、npm、yarn、pnpm 等其他 JavaScript 运行时或包管理工具
-**禁止格式转换** - 不要建议用户将脚本转换为其他运行时格式
**正确做法:**
- ✅ 仅输出错误信息和安装说明
- ✅ 等待用户安装 Bun 后再继续
- ✅ 保持使用 Bun 作为唯一运行时
## 脚本语法错误
Bun 提供详细的语法错误信息:
```bash
$ bun "$TEMP_FILE"
error: Unexpected token
--> /var/folders/.../script.js:2:10
|
2 | const = 123;
| ^
```
错误信息包括:
- 文件路径和行号
- 错误的确切位置
- 问题描述
## 运行时错误
运行时错误包含完整的堆栈跟踪:
```bash
$ bun "$TEMP_FILE"
ReferenceError: foo is not defined
at script.js:3:5
at main (script.js:1:1)
```
## 其他错误
其他任何形式的错误都原样输出。

View File

@@ -0,0 +1,104 @@
# 示例
## 场景1执行已存在的脚本文件
```bash
# 步骤 1: 检查 Bun 是否已安装
bun --version
# 步骤 2: 直接执行已存在的脚本
bun ./scripts/my-script.js
# 脚本的输出将自动显示
```
**关键特点:**
-**无需生成临时文件** - 直接执行用户提供的脚本
-**保持脚本位置** - 脚本留在原位置,不会被移动或复制
-**简洁快速** - 跳过文件生成步骤,直接执行
## 场景2在指定路径创建并执行脚本
```bash
# 步骤 1: 检查 Bun 是否已安装
bun --version
# 步骤 2: 使用 Write 工具在指定路径创建脚本
# (以下步骤由大模型使用 Write 工具完成)
# write content to "./scripts/new-script.js"
const greeting = "Hello from custom path!";
console.log(greeting);
# 步骤 3: 执行脚本
bun ./scripts/new-script.js
```
**关键特点:**
-**自定义路径** - 脚本创建到用户指定的位置
-**持久化存储** - 脚本文件保存在指定位置,不会被自动清理
-**灵活控制** - 用户可以精确控制脚本位置和命名
## 场景3使用临时路径执行默认流程
### 基础示例
```bash
# 步骤 1: 检查 Bun 是否已安装
bun --version
# 步骤 2: 生成临时文件路径
TEMP_FILE=$(bun skills/lyxy-runner-js/scripts/get_temp_path.js js)
# 步骤 3: 将脚本内容写入临时文件
cat <<EOF > "$TEMP_FILE"
const greeting = "Hello from lyxy-runner-js!";
console.log(greeting);
EOF
# 步骤 4: 执行脚本
bun "$TEMP_FILE"
# 步骤 5: 输出已在上面捕获
# 临时文件将由系统自动清理
```
### TypeScript 示例
```bash
# 生成 TypeScript 临时文件
TEMP_TS=$(bun skills/lyxy-runner-js/scripts/get_temp_path.js ts)
# 写入 TypeScript 脚本
cat <<EOF > "$TEMP_TS"
const message: string = 'TypeScript execution';
console.log(message);
EOF
# 执行 - Bun 会自动转译 TypeScript
bun "$TEMP_TS"
```
## 依赖管理示例
### 导入外部包
```javascript
// ESM import推荐
import axios from 'axios'
import lodash from 'lodash'
// CommonJS import也支持
const axios = require('axios')
```
首次执行带有外部导入的脚本时Bun 会:
1. 分析导入
2. 从 npm 下载缺失的依赖
3. 全局缓存到 `~/.bun/install/cache`
4. 后续运行使用缓存版本
### 不需要 package.json
与 Node.js 不同,你无需创建 `package.json` 或单独运行 `bun install`。Bun 在运行时自动处理所有操作。