name: yy-create-python-script
description: >
创建基于当前技能 scripts/ 参考工程的 Python 脚本项目骨架,或按同一结构补齐空白/轻量脚本项目。
当用户需要快速落地命令行脚本、CSV/文件处理流水线、可选并发处理或 PyInstaller 打包脚本时触发,不用于 Web 服务、数据科学实验、单文件代码片段或成熟项目重构。
yy-create-python-script
描述
基于当前技能目录下 scripts/ 的权威参考工程,创建或补齐 Python 脚本项目。模板由真实 Python 脚本项目脱敏提炼而来,只保留通用脚本工程能力:命令行参数解析、运行路径解析、CSV 读写、可选并发处理、子进程清理、基础测试和 PyInstaller 打包配置。
使用场景
- 用户需要新建 Python 脚本项目
- 用户需要生成命令行脚本、批处理脚本或 CSV/文件处理流水线的标准目录结构
- 用户需要在空白或轻量项目中补齐 Python 脚本工程基础设施
- 用户需要脚本支持可选并发处理、外部命令调用或 PyInstaller 打包
- 用户希望复用当前技能
scripts/参考工程中的配置、源码骨架和测试结构
不应触发:
- 用户只需要单个 Python 代码片段
- 用户要创建 FastAPI、Django、Flask 等 Web 服务项目
- 用户要创建 Jupyter、机器学习实验或数据科学分析项目
- 用户要对成熟现有项目做大规模迁移、重构或架构改造
- 用户只是询问 Python、CSV、multiprocessing 或 PyInstaller 的概念和用法
指令
步骤 1. 确认任务边界与最小输入
收集完成任务所需的最小信息:
- 项目名称,使用英文短横线命名,如
my-python-script - 目标目录
- 脚本用途,用一句话描述输入、处理和输出
- 输入类型,默认使用 CSV 文件
- 是否需要并发处理,默认保留模板能力但不强制启用
- 是否需要调用外部命令,默认保留模板能力但不预置业务命令
- 是否需要 PyInstaller 打包,默认保留打包配置
- 是否执行依赖安装、测试或打包验证
- 目标目录是新目录、空目录还是已有项目目录
决策分支:
- 用户已提供关键信息:直接进入步骤 2
- 仅缺少少量必要信息:只追问缺失项,不重复确认已明确内容
- 目标目录已有内容但处理边界不明:先确认只做补齐或对齐,不默认覆盖、删除或清空现有文件
步骤 2. 判定生成模式
以当前技能目录下的 scripts/ 为唯一权威参考,以 templates/ 中的轻量说明为快速校准材料。
决策分支:
- 目标目录不存在或为空目录:按“新建项目”模式处理,复制参考工程的基础骨架,再做最小定制
- 目标目录已有少量工程文件,且用户明确要求对齐结构:按“补齐项目”模式处理,只新增缺失文件或修改与本次目标直接相关的文件
- 目标目录已有成熟工程内容:说明该技能只适合脚手架创建和轻量对齐,要求用户缩小范围后再继续
步骤 3. 复制参考工程并过滤无效产物
从 scripts/ 复制项目骨架时,只保留可作为脚手架的一次性源文件,不复制缓存、安装产物和敏感运行数据。
决策分支:
- 新建项目模式:复制
scripts/中的基础目录、配置文件、源码骨架、测试文件和打包脚本 - 补齐项目模式:逐项对照
scripts/,只补齐缺失的目录、配置和基础源码文件
禁止复制的内容:
.venv/venv/__pycache__/.pytest_cache/build/dist/htmlcov/.coverage.env*.pyc*.pyo*.pyd- 其他缓存、临时目录、本地安装产物和业务运行资源
建议处理方式:
package.json、pyproject.toml、requirements.txt、build.ps1、.gitignore、.editorconfig、README.md直接以scripts/同名文件为基准package.json必须包含npm run lint和npm run ready对应脚本,其中npm run lint用于格式化代码和执行测试用例,npm run ready用于安装依赖包*.spec保留为 PyInstaller 打包入口,并根据项目名称做最小重命名main.py保留为可冻结入口,确保 Windows 打包时执行multiprocessing.freeze_support()resources/只保留.gitkeep或用户明确需要的模板资源,不写入真实业务数据
步骤 4. 生成目录结构与基础配置
确保目标项目至少具备与参考工程一致的基础目录结构:
project-name/
├── main.py
├── package.json
├── pyproject.toml
├── requirements.txt
├── build.ps1
├── resources/
├── src/
│ └── python_script_template/
└── tests/
配置文件处理规则:
- 复制
scripts/pyproject.toml后,仅调整项目名称、描述、脚本入口和用户明确要求的元数据 - 复制
scripts/package.json后,仅调整包名,并保留lint与ready两个命令;lint必须执行代码格式化和测试用例,ready必须安装依赖包 - 项目名称使用 kebab-case,包目录和导入路径使用 snake_case
- 复制
scripts/requirements.txt,默认保留 PyInstaller 构建依赖 - 复制
scripts/build.ps1和scripts/*.spec后,同步替换可执行文件名称、入口路径和包目录名称 - 复制
.gitignore与.editorconfig,保持基础缓存和构建产物过滤规则 - 若用户需要环境变量文件,只创建
.env.example,不写入真实密钥、真实路径或真实业务参数
步骤 5. 生成脚本流水线源码
优先复制 scripts/src/ 和 scripts/tests/ 的基础文件,再围绕用户输入做最小定制。
必须保留的通用能力:
main.py作为冻结入口,负责插入src/到sys.path并调用包入口src/<package_name>/__main__.py作为统一业务入口,串联参数解析、输入读取、记录处理、输出写入和退出码控制read_csv()支持常见 CSV 编码回退,不默认假设单一编码run_rows_serial()与run_rows_parallel()同时保留,便于按任务规模启用并发build_parallel_batches()按工作目录键分批,避免同一工作目录的记录被并发处理run_process_with_cleanup()支持超时清理子进程,避免外部命令残留tests/保留运行路径、CSV 处理和批次分配的基础测试
源码定制规则:
- 将
python_script_template包名替换为项目名称对应的 snake_case 包名 - 将 README、CLI 描述、默认输出文件名和示例命令替换为用户提供的项目用途
- 若用户未提供具体处理逻辑,保留模板中的示例转换逻辑,不编造业务规则
- 若用户提供外部命令调用需求,只更新命令参数、环境变量和结果解析的最小必要部分
步骤 6. 安装依赖并执行验证
在目标项目根目录执行安装和验证,默认使用当前环境可用的 Python。
决策分支:
- 用户未禁止安装与验证:优先执行
npm run lint,用统一命令完成格式化和测试 - 用户要求安装依赖或准备环境:执行
npm run ready安装依赖包 - 用户要求验证打包能力:先执行依赖安装,再执行
./build.ps1或等价 PyInstaller 命令 - 用户明确要求跳过安装或当前环境不适合创建虚拟环境:跳过命令执行,并在结果中说明未验证项
验证时保持以下约束:
- 不默认执行真实业务输入文件
- 不默认运行外部命令、部署、发布或推送操作
- 不为验证而写入真实业务数据、真实密钥或机器专属路径
npm run lint是统一验证入口,必须包含格式化代码和执行测试用例;无法执行 npm 命令时,回退执行python -m unittest discover -s tests并说明原因
步骤 7. 补齐 lint 支持
在项目创建或补齐完成后,检测当前环境是否可用 yy-enable-lint 技能,并在可用时触发该技能为项目添加 npm run lint 支持。
决策分支:
- 当前环境可用
yy-enable-lint:在目标项目目录触发yy-enable-lint,使其按项目技术栈补齐 lint 支持 - 当前环境不可用
yy-enable-lint:不阻塞项目生成,跳过 lint 补齐 - 用户明确要求不补齐 lint 支持:跳过,仅在交付结果中说明
yy-enable-lint执行失败:记录失败原因,不扩大处理范围
步骤 8. 输出结果
输出以下内容:
- 项目结构,使用
tree或text代码块展示 - 本次创建或补齐的核心文件与目录
- 验证结果,区分已执行、跳过和失败项
- 关键注意事项,包括包名映射、入口文件、打包方式和后续替换示例处理逻辑的位置
安全边界
- 不修改当前技能目录下的
scripts/参考工程本身 - 不删除目标目录中的无关现有文件
- 未获用户明确授权时,不覆盖与本次目标无关的已有实现
- 不复制真实业务 CSV、日志、密钥、打包产物或机器专属路径
- 不执行部署、发布、推送或其他与脚手架创建无关的高影响操作
相关资源
templates/project-structure.md:Python 脚本项目结构轻量说明,权威来源为scripts/scripts/:完整参考工程,也是目录结构、配置、基础源码、测试和打包脚本的唯一权威来源