1
0

统一skill命名

This commit is contained in:
2026-02-12 17:57:05 +08:00
parent 53707efaf0
commit 86308675ea
40 changed files with 191 additions and 193 deletions

View File

@@ -0,0 +1,113 @@
# UV Python Runner Spec (Delta)
## Purpose
This is a delta spec documenting changes to the existing uv-lyxy-runner-python capability to support `uv run --with` syntax and smart project detection.
## REMOVED Requirements
### 需求生成符合PEP 723规范的Python脚本
**Reason**: 已迁移至使用`uv run --with`语法和自动依赖解析不再需要PEP 723内联元数据。用户可以直接运行标准Python脚本无需修改脚本内容。
**Migration**: 现有包含PEP 723元数据的脚本仍可正常运行但不再要求使用该格式。新的工作流使用自动依赖解析和`--with`语法。
## MODIFIED Requirements
### 需求在隔离的uv环境中执行脚本
Skill SHALL指导LLM使用`uv run`命令执行Python脚本并根据脚本位置和项目类型选择执行策略。Skill SHALL支持临时文件和用户指定路径两种模式。Skill SHALL使用`--with`语法传递依赖或利用项目现有依赖配置。
#### 场景成功执行独立脚本无uv项目
- **WHEN** LLM生成有效的Python脚本且当前目录不是uv项目
- **THEN** skill SHALL解析脚本内容获取依赖列表
- **THEN** skill SHALL在用户指定路径或临时目录创建/使用脚本文件
- **THEN** skill SHALL使用`uv run --with package1 --with package2 <script_path>`执行脚本
- **THEN** uv SHALL自动创建隔离的虚拟环境安装依赖并执行脚本
- **THEN** skill SHALL捕获并返回stdout/stderr输出
#### 场景成功执行uv项目内的脚本
- **WHEN** LLM执行位于uv项目内的脚本存在pyproject.toml
- **THEN** skill SHALL识别为uv项目
- **THEN** skill SHALL使用`uv run <script_path>`执行脚本(相对路径)
- **THEN** uv SHALL使用项目的虚拟环境和依赖配置
- **THEN** skill SHALL捕获并返回stdout/stderr输出
#### 场景:脚本执行失败
- **WHEN** 脚本执行失败(运行时错误、依赖解析失败等)
- **THEN** skill SHALL保留脚本文件用于调试临时或指定路径
- **THEN** skill SHALL显示包含traceback的完整错误消息
- **THEN** skill SHALL显示脚本文件路径
- **THEN** skill SHALL停止任务严格错误处理模式
### 需求:跨平台路径支持
Skill SHALL支持Windows、macOS、Linux三个平台的路径处理包括临时文件和用户指定路径。Skill SHALL在需要时使用辅助脚本获取平台特定的临时目录。
#### 场景:创建临时脚本文件
- **WHEN** LLM需要创建临时Python脚本且用户未指定路径
- **THEN** skill SHALL指导LLM调用辅助脚本获取临时目录
- **THEN** skill SHALL在临时目录创建唯一的Python文件
- **THEN** 辅助脚本SHALL使用`tempfile.gettempdir()`自动返回平台特定的路径
#### 场景:使用用户指定路径
- **WHEN** 用户明确指定脚本存储或执行路径
- **THEN** skill SHALL使用用户指定的完整路径或相对路径
- **THEN** skill SHALL不创建临时文件
- **THEN** skill SHALL确保路径在不同平台Windows/macOS/Linux上的有效性
#### 场景Windows平台路径处理
- **WHEN** 在Windows平台创建或执行脚本
- **THEN** skill SHALL正确处理Windows路径分隔符`\`
- **THEN** 辅助脚本SHALL返回Windows临时目录例如`C:\Users\<username>\AppData\Local\Temp`
- **THEN** skill SHALL确保大模型不需要硬编码Windows路径
#### 场景macOS/Linux平台路径处理
- **WHEN** 在macOS或Linux平台创建或执行脚本
- **THEN** skill SHALL正确处理Unix路径分隔符`/`
- **THEN** 辅助脚本SHALL返回`/tmp`路径
- **THEN** skill SHALL确保大模型不需要硬编码Unix路径
## ADDED Requirements
### 需求:自动依赖解析
Skill SHALL自动分析Python脚本内容以识别所需的Python包排除Python标准库模块。
#### 场景解析import语句提取依赖
- **WHEN** Skill分析Python脚本的import语句
- **THEN** Skill SHALL提取外部包名
- **THEN** Skill SHALL排除Python标准库模块
- **THEN** Skill SHALL生成用于`--with`参数的依赖列表
### 需求:智能项目检测
Skill SHALL检测当前工作目录是否为uv项目存在pyproject.toml并据此选择执行策略。
#### 场景检测到uv项目
- **WHEN** 当前工作目录包含`pyproject.toml`文件
- **THEN** Skill SHALL使用项目依赖配置执行脚本
- **THEN** Skill SHALL不添加`--with`参数
#### 场景非uv项目环境
- **WHEN** 当前工作目录不包含`pyproject.toml`文件
- **THEN** Skill SHALL使用`--with`语法传递解析的依赖
### 需求:灵活脚本路径处理
Skill SHALL支持用户指定脚本路径、现有脚本文件和临时脚本三种模式。
#### 场景:用户指定脚本存储路径
- **WHEN** 用户明确指定脚本存储路径
- **THEN** Skill SHALL将脚本写入用户指定的路径
- **THEN** Skill SHALL不使用临时文件
#### 场景:用户指定现有脚本路径
- **WHEN** 用户指定要运行的现有Python脚本
- **THEN** Skill SHALL直接在指定路径执行
- **THEN** Skill SHALL不修改用户脚本内容
#### 场景:自主生成脚本且未指定路径
- **WHEN** 大模型自主生成脚本且用户未指定存储路径
- **THEN** Skill SHALL使用临时文件路径
- **THEN** Skill SHALL允许系统自动清理临时文件

View File

@@ -0,0 +1,111 @@
# UV Run With Syntax Spec
## Purpose
Define requirements for using `uv run --with` syntax to execute Python scripts with automatic dependency parsing, smart project detection, and flexible path handling.
## Requirements
### 需求:自动解析脚本依赖
Skill SHALL自动分析Python脚本内容以识别所需的Python包。Skill SHALL解析import语句并提取外部包名排除Python标准库模块。
#### 场景:解析包含外部依赖的脚本
- **WHEN** Skill分析包含import语句的Python脚本例如`import pandas as pd`
- **THEN** Skill SHALL提取包名pandas
- **THEN** Skill SHALL排除Python标准库模块os、sys、json等
- **THEN** Skill SHALL生成依赖列表用于`--with`参数
#### 场景解析多个import来源
- **WHEN** 脚本包含多种import语句`import pandas`, `from numpy import array`, `import requests as req`
- **THEN** Skill SHALL正确提取所有外部包名pandas, numpy, requests
- **THEN** Skill SHALL处理`import ... as``from ... import`语法
- **THEN** Skill SHALL去重依赖列表
#### 场景:仅使用标准库的脚本
- **WHEN** 脚本只使用Python标准库os、sys、json、pathlib等
- **THEN** Skill SHALL生成空的依赖列表
- **THEN** Skill SHALL不添加任何`--with`参数到执行命令中
### 需求:智能项目检测
Skill SHALL检测当前工作目录是否为uv项目并据此选择执行策略。
#### 场景检测到uv项目
- **WHEN** 当前工作目录包含`pyproject.toml`文件
- **THEN** Skill SHALL识别为uv项目
- **THEN** Skill SHALL对当前目录下的脚本使用`uv run script.py`直接执行
- **THEN** Skill SHALL不添加`--with`参数依赖由项目pyproject.toml管理
#### 场景非uv项目环境
- **WHEN** 当前工作目录不包含`pyproject.toml`文件
- **THEN** Skill SHALL识别为非uv项目
- **THEN** Skill SHALL对脚本使用`uv run --with package1 --with package2 script.py`执行
- **THEN** Skill SHALL根据解析的依赖列表动态构建`--with`参数
#### 场景:脚本位于工作目录外
- **WHEN** 用户指定的脚本路径不在当前工作目录下
- **THEN** Skill SHALL按独立脚本处理
- **THEN** Skill SHALL使用`uv run --with package1 --with package2 <script_path>`执行
- **THEN** Skill SHALL解析脚本内容以获取依赖列表
### 需求:灵活路径处理
Skill SHALL根据用户指定和上下文灵活处理脚本路径支持用户指定路径、现有脚本文件和临时脚本。
#### 场景:用户指定脚本存储路径
- **WHEN** 用户明确指定脚本存储路径(例如:"在scripts/data_processing.py中写入脚本"
- **THEN** Skill SHALL将脚本内容写入用户指定的路径
- **THEN** Skill SHALL不使用临时文件
- **THEN** Skill SHALL在指定路径执行脚本
#### 场景:用户指定现有脚本路径
- **WHEN** 用户指定要运行的现有Python脚本例如"运行scripts/my_script.py"
- **THEN** Skill SHALL读取该脚本内容如需解析依赖
- **THEN** Skill SHALL直接在指定路径执行脚本
- **THEN** Skill SHALL不修改用户脚本内容
#### 场景:大模型自主生成脚本且未指定路径
- **WHEN** 大模型自主生成Python脚本且用户未指定存储路径
- **THEN** Skill SHALL使用辅助脚本获取临时文件路径
- **THEN** Skill SHALL将脚本内容写入临时文件
- **THEN** Skill SHALL在临时路径执行脚本
- **THEN** Skill SHALL允许系统自动清理临时文件
### 需求:使用--with语法执行
Skill SHALL使用`uv run --with`语法将依赖传递给uv替代PEP 723内联元数据方式。
#### 场景:有外部依赖的脚本执行
- **WHEN** 脚本解析结果包含依赖列表[package1, package2]
- **THEN** Skill SHALL构造命令`uv run --with package1 --with package2 <script_path>`
- **THEN** uv SHALL为每个`--with`指定的包创建隔离环境
- **THEN** Skill SHALL捕获并返回脚本输出
#### 场景:无外部依赖的脚本执行
- **WHEN** 脚本解析结果为空依赖列表
- **THEN** Skill SHALL构造命令`uv run <script_path>`
- **THEN** Skill SHALL不包含任何`--with`参数
- **THEN** uv SHALL使用隔离的Python标准库环境执行
#### 场景uv项目内的脚本执行
- **WHEN** 脚本位于检测到的uv项目内
- **THEN** Skill SHALL构造命令`uv run <script_path>`(相对路径)
- **THEN** Skill SHALL不包含`--with`参数
- **THEN** uv SHALL使用项目的虚拟环境和依赖配置
### 需求:向后兼容性
Skill SHALL保持对包含PEP 723元数据的旧脚本的兼容性但不再要求使用该格式。
#### 场景执行包含PEP 723元数据的脚本
- **WHEN** 用户提供的脚本顶部包含PEP 723元数据块
- **THEN** Skill SHALL正常执行脚本PEP 723元数据将被uv忽略
- **THEN** Skill SHALL仍使用`--with`语法传递解析出的依赖
- **THEN** 脚本SHALL成功执行
#### 场景新工作流执行标准Python脚本
- **WHEN** 用户提供的标准Python脚本无任何元数据
- **THEN** Skill SHALL自动解析import语句
- **THEN** Skill SHALL使用`--with`语法传递依赖
- **THEN** 脚本SHALL在不修改的情况下成功执行