领域缩略语展开 Skill:按内置或外部词典将独立缩略语替换为全称,可选在全称后保留原缩写。 适用于技术文本、论文摘要和业务记录中的缩写清洗;不负责模糊缩写消歧或大小写无关替换。
日本語の概要は準備中です。原文の説明を表示しています。
PiFlow 技能生成器。
当用户完成了一次完整并成功的数据处理任务时调用,根据当前 skills/generated 的本地约定和 references/piflow_skill_template.md 通用模板创建、更新或校验 PiFlow-compatible skill,包括 UTF-8 编码的 SKILL.md、DAG 可读的 input_params/output_params、version/tag 元数据、skill.json、scripts/references/assets 资源目录,以及本地校验脚本。
仅在用户明确要求生成或保存 skill,或某次数据处理任务已经完成并需要把已验证成功的操作流程沉淀为 skill 时使用;默认不要因为“可能需要 skill”或“当前能力不足”而优先触发此 skill。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
本技能是一个模板驱动的 PiFlow skill 生成器。它的职责不是找一个相似 skill 来改改,而是基于统一模板,把用户明确提供的信息、已经验证成功的流程、已有脚本和必要资源,整理成一个结构清晰、参数契约稳定、可被 PiFlow 直接识别的技能目录。
生成目标始终是一次性产出完整、可靠、符合约定的 skill 目录,包括 UTF-8 编码的 SKILL.md、DAG 可读的 input_params / output_params、skill.json、scripts/、references/、assets/,以及必要的校验与注册结果。每个生成的 skill 必须包含一个可执行 Python 入口脚本:优先复用已验证实现;没有现成实现时也必须生成 scripts/run_<skill_name>.py,使其可解析参数并输出结构化运行结果,禁止只生成元数据文件。但它不是默认优先入口;只有在用户明确要“生成/保存为 skill”,或某个流程已经真实跑通并值得沉淀时,才进入这条链路。
所有文本文件必须使用 UTF-8 读写,尤其是中文内容;Python 读写文件时显式使用 encoding="utf-8",JSON 输出使用 ensure_ascii=False。
目录内容按职责分层:
SKILL.md:只放触发条件、处理流程、参数契约和必要说明;scripts/:放稳定、可执行、可测试的入口脚本或处理逻辑;references/:放长规则、字段字典、复杂 schema、补充说明;assets/:放图标、模板、示例素材或需要随技能一起交付的资源。本技能的实现指引遵循同一条主线:模板优先,参考次之,禁止默认整体仿写。
references/piflow_skill_template.md 作为 SKILL.md、skill.json、参数组织方式、脚本入口形状和资源分层的统一骨架;core_features、trigger_conditions、processing_logic、supported_formats、output_structure、output_examples 等字段时,将它们填入模板对应章节因此,无论是直接生成、基于已验证流程生成,还是生成后的再次改写,最终输出都必须回到模板定义的结构,而不是回到某个历史 skill 的结构。
本技能必须能在没有其他技能辅助的环境中独立生成可靠技能:只依赖当前技能目录内的 SKILL.md、references/piflow_skill_template.md、scripts/generate_piflow_skill.py、scripts/generate_skill_files.py、scripts/register_skill_artifacts.py、scripts/rewrite_piflow_skill.py 和 scripts/validate_piflow_skill.py。生成时不要假设另一个 skill 会补全文档、脚本或元数据。本技能负责 skill 化与沉淀,不负责代替用户完成所有真实处理任务本身。
本技能支持两种使用方式:
直接生成 当用户明确要求“生成 skill”“保存为 skill”“封装为 skill”“创建自定义技能”时,根据已确认的规格生成 skill。
基于已验证流程生成或改写 当用户提供已验证成功的流程、脚本或输入输出约定时,优先复用这些事实生成或最小改写 skill;改写时默认保留原 skill 名称和目录位置,避免生成含义重复的新 skill。
在涉及安装、环境准备或可执行脚本验证时,优先完成最小必要依赖,再运行一个简单冒烟测试确认关键入口可执行、基础参数可解析、输出路径可写。若安装或测试失败,允许自动重试,单个阶段最多重试 5 次;若 5 次后仍失败,停止流程并把失败原因、失败步骤和最后一次错误返回给用户。
安装依赖或配置前置环境时,若不明确安装的流程或操作,需要调用网络工具获取安装指南或官方文档,或者直接调用搜索查询安装步骤,不要假设已经知道如何安装或配置。
deepagent 的虚拟文件环境以 workspace 为根。生成的技能必须放在 skills/generated/<skill-name>(相对于 workspace 根),这样 PiFlow 才能发现。
output_root 使用 skills/generated,表示 <workspace>/skills/generated。write_file/read_file 等工具调用时使用相对于 workspace 根的虚拟路径(如 skills/generated/<skill_name>/),不要带 workspace/ 前缀。--output-root skills/generated。workspace/skills 或 flow-deepagents/workspace/skills,脚本会归一化为当前 deepagent workspace 下的 skills/generated。spec_path、icon、script.source、references[].source、assets[].source 可以使用相对路径;脚本会先按当前工作目录解析,再按 deepagent workspace 根解析。flow-deepagents/workspace/workspace/skills 或 workspace/skills/skills。每个技能目录至少包含:
skill-name/
├── SKILL.md
├── skill.json # 推荐,DAG 执行/画板读取的结构化元数据
├── scripts/ # 推荐,稳定可执行逻辑
├── references/ # 可选,按需读取的长文档
└── assets/
└── icon.png # 必须选定的主图标;若没有自定义图标,需明确兜底到分类图标
SKILL.md 由 YAML frontmatter 和 Markdown body 组成。
name:必须与目录名完全一致。description:主要触发入口。必须同时说明技能做什么、用户在什么表达或场景下应触发。触发信息写在这里,不要只写在正文。version:技能版本,默认 1.0.0。input_params:PiFlow DAG 面板读取的输入参数列表,必须保留。output_params:PiFlow DAG 面板读取的输出参数列表,必须保留。allowed-tools、compatibility、license、metadata:仅在确实需要时添加。tag:面向 DAG 面板的技能类型;当前入库逻辑会读取 tag 作为 skill_type。参数项使用:
- name: input_path
type: string
required: true
default: optional-default
description: 输入文件路径
SKILL.md frontmatter 的参数项禁止包含 role。role 是 DAG 专用元数据,只应写入 skill.json;生成器会依据参数的 type、name 和 description 在 JSON 中推断 input_data、output_data 或 data。
当 skill_json 未显式设为 false 时生成。该文件用于 DAG 执行链路和画板解析,包含:
name、version、descriptionlanguagescript_pathentrypointinput_params、output_params,其中参数保留 rolecommand_templatetag只在用户或 spec 明确提供时写入 dependencies 或 policy 等扩展字段。
scripts/:每个 skill 都必须包含一个确定性、可执行的 Python 入口脚本。优先复用已验证逻辑;若没有现成逻辑,生成 scripts/run_<skill_name>.py,它必须接受声明的输入参数并输出 JSON 运行摘要。脚本应可通过 python scripts/<name>.py ... 调用,并使用 UTF-8 读写。references/:放长规则、字段字典、API 说明、数据 schema、复杂示例。正文中必须说明何时读取哪个引用文件。assets/:放图标、模板、示例素材、字体或输出需要复制的资源。每个 skill 在生成阶段都应明确一个主图标方案:优先提供 assets/icon.png;若暂时没有自定义图标,也必须在设计与交付时明确兜底使用对应分类图标,不要让图标策略处于未定义状态。不要生成与执行无关的 README.md、安装指南、变更日志或重复说明文档;这些内容会稀释技能目录的信号。
scripts/;长规则进入 references/;图标和模板素材进入 assets/。这一阶段同时确定图标策略:选一个主图标来源,并明确一个兜底图标。QC3_NumericDataThresholdCheck、Pi_DataSorting;新通用技能优先使用 lowercase snake_case 或 hyphen-case;目录名必须等于 name。references/piflow_skill_template.md 搭骨架,再填内容。正文章节顺序、frontmatter 结构、skill.json 参数契约、脚本入口和资源目录都应先服从模板;随后再把用户确认的信息、成功流程信息、脚本信息和必要规则填入对应章节。不要先挑一个相似 skill 作为底稿整体改写。scripts/run_<skill_name>.py 或用户提供的等价 Python 脚本;脚本必须与 skill.json 的 script_path、entrypoint 和 command_template 一致。只有引用资料和素材可按需省略;图标必须有明确结论:若 spec 提供 icon,复制为 assets/icon.png 作为主图标;若未提供自定义图标,则记录并验证可兜底到分类图标。validate_piflow_skill.py,检查 UTF-8、YAML、参数契约、目录名、资源布局和 UI metadata。overwrite 做最小改写。当前实现按职责拆成三层,并保留一个一键封装入口:
生成层
负责把 spec 落成技能目录本身,包括 SKILL.md、skill.json、scripts/、references/、assets/ 等内容。
对应脚本:scripts/generate_skill_files.py
注册层
负责把已生成好的技能接入 PiFlow 可见索引,包括更新 docs/skill分类.txt,以及同步 storage/skills 下的技能图标与分类图标。
对应脚本:scripts/register_skill_artifacts.py
一键封装层
按顺序调用“生成层 -> 注册层”,适合默认使用。
对应脚本:scripts/generate_piflow_skill.py
当你需要“先生成草稿、再人工检查、最后再发布/注册”时:
先调用生成层,再调用 validate_piflow_skill.py --mode files-only,确认通过后再调用注册层。
当你需要“一次性生成并接入系统可见列表”时: 直接调用一键封装层。
当你只是想更新技能正文、脚本、资源,但暂时不希望污染全局分类列表或图标存储时: 只调用生成层,不调用注册层。
当技能目录已经存在,只是因为分类列表或图标丢失,需要补注册时: 只调用注册层。
当用户提供一次成功的真实处理流程时: 优先恢复流程草稿 spec,再补缺失字段,然后根据是否需要立即可见,选择“只生成”或“一键生成并注册”。
当用户为已生成 skill 提供新的流程指引时:
保留原 skill 名称并使用 overwrite 重建,避免从零生成同义 skill。
推荐使用 UTF-8 JSON spec:
name:必填,技能目录名和 frontmatter 名称。title:可选,正文标题和 UI 显示名的候选值。description:必填,技能能力说明。仅在用户明确要求生成/保存 skill,或任务完成后需要沉淀成功流程时描述 skill 生成能力;不要把宽泛的数据处理诉求直接写成触发词。description:必填,技能能力说明。描述用户如何显式触发此 skill,不要把宽泛的数据处理诉求写成默认优先入口。version:可选,默认 1.0.0。triggers:可选,触发短语列表,会并入 frontmatter description。触发短语应收敛为“生成 skill”“保存为 skill”“把这次流程沉淀成 skill”等手动或收尾场景,不要把“数据清洗”“数据分析”“处理文件”等本应先直接执行的任务写成优先触发短语。tag:可选,写入 frontmatter 和 skill.json,用于 DAG 技能类型。language:可选,写入 skill.json,默认按脚本推断为 python。script_path、entrypoint、command_template:必填,写入 skill.json;必须指向 skill 内存在的 Python 脚本,并与输入参数一致。input_params、output_params:PiFlow 参数契约。参数项可包含 role。input_params、output_params 在 SKILL.md frontmatter 和 skill.json 中都必须是“参数对象数组”,禁止写成 { params: {...} }、{input_path: {...}} 或任何对象映射形状;每个参数必须独立占一个数组元素。command:可选,显式命令;缺省时根据 script.path 和输入参数生成。script:必填对象,支持 path、content、source;也可用 scripts 列表生成多个脚本。未提供时生成器默认创建 scripts/run_<name>.py。若来自成功流程或旧实现,优先恢复其可执行事实,但最终脚本路径、入口命名、参数契约和目录组织仍要服从模板,而不是服从原始样例的偶然结构。script / scripts:优先从成功运行的脚本、流程文件或实现产物恢复,再将这些内容回填进模板约定的目录结构、参数契约和资源分层;不要因为参考了旧脚本或旧 skill,就偏离模板去整体复刻旧实现。references:可选列表,支持 path + content 或 source。assets:可选列表,支持 path + content 或 source;icon 会复制为 assets/icon.png。无论是否提供自定义 icon,都必须在生成时明确一个兜底图标方案,默认可回退到分类图标。dependencies:可选,正文依赖列表。examples:可选,正文示例列表。core_features、trigger_conditions、processing_logic、supported_formats、output_structure、output_examples:可选,填入通用模板对应章节。body_sections:可选,自定义正文段落。skill_json:可选,默认 true;设为 false 时不生成 skill.json。metadata:可选;可用于记录流程来源、验证摘要和沉淀时间。rewrite_followup_hint:可选;用于在生成结果中覆盖默认的改写 follow-up 提示语。一键生成并注册技能:
python scripts/generate_piflow_skill.py --spec path/to/spec.json --thread-id <thread_id>
前端预览生成结果时,传入当前 thread_id;生成器会将会话 ID、skill 名称和 workspace 相对目录写入 generating_skills。同一会话再次生成时会更新该记录。
也可以显式传 --output-root skills:
python scripts/generate_piflow_skill.py --spec path/to/spec.json --output-root skills
如果已有一次已经跑通的成功流程,也可以直接传流程摘要:
python scripts/generate_piflow_skill.py --flow path/to/flow-summary.json --restored-spec-out path/to/restored-spec.json --output-root skills
若 skill 已生成完成,且用户随后提供了新的流程作为改写指引:
python scripts/rewrite_piflow_skill.py --skill-dir skills/<skill-name> --flow path/to/new-flow-summary.json --restored-spec-out artifacts/rewrite-spec.json
改写链路的依赖说明与边界约束见:
references/rewrite_followup_internal.md
仅在明确要替换生成目录时使用:
python scripts/generate_piflow_skill.py --spec path/to/spec.json --overwrite
仅生成技能文件,不注册列表和图标:
python scripts/generate_skill_files.py --spec path/to/spec.json --output-root skills
若只想把成功流程恢复为 draft spec 再人工检查:
python scripts/restore_flow_to_spec.py --flow path/to/flow-summary.json --output path/to/restored-spec.json
若想直接从成功流程生成技能文件而不注册:
python scripts/generate_skill_files.py --flow path/to/flow-summary.json --restored-spec-out path/to/restored-spec.json --output-root skills
仅注册已有技能目录的列表和图标:
python scripts/register_skill_artifacts.py --spec path/to/spec.json --skill-dir skills/<skill-name>
若当前只有成功流程摘要,也可以直接在注册时恢复 spec:
python scripts/register_skill_artifacts.py --flow path/to/flow-summary.json --restored-spec-out path/to/restored-spec.json --skill-dir skills/<skill-name>
校验技能:
python scripts/validate_piflow_skill.py skills/<skill-name>
仅校验生成层产物:
python scripts/validate_piflow_skill.py skills/<skill-name> --mode files-only
{
"name": "clean_example_transformer",
"title": "Clean Example Transformer",
"description": "清理文本中的示例片段。",
"version": "1.0.0",
"triggers": ["清理示例", "删除示例片段"],
"tag": "数据清洗",
"language": "python",
"input_params": [
{"name": "input_path", "role": "input_data", "type": "string", "required": true, "description": "输入 JSON 文件路径"},
{"name": "output_path", "role": "output_data", "type": "string", "required": true, "description": "输出 JSON 文件路径"}
],
"output_params": [
{"name": "output_path", "role": "output_data", "type": "json_file", "description": "清理后的 JSON 文件"}
],
"script": {
"path": "scripts/run_clean_example_transformer.py",
"content": "import argparse\n\n# TODO: implement operator\n"
},
"command_template": ["python", "{script_path}", "--input_path", "{input_path}", "--output_path", "{output_path}"],
"references": [
{"path": "references/rules.md", "content": "# 清理规则\n\n- 删除示例片段。"}
],
"dependencies": ["Python 3.x"],
"examples": [
{
"title": "基本调用",
"command": "python scripts/run_clean_example_transformer.py --input_path input.json --output_path output.json"
}
]
}
完成前确认:
<workspace>/skills/<name>/SKILL.md 可被 PiFlow 发现;在 deepagent 环境中不要生成到其他根目录。name 与目录名一致,description 包含触发语义。version、tag、input_params 和 output_params。skill.json 包含 entrypoint、script_path、command_template 和带 role 的参数元数据。references/ 并在正文指明何时读取。skill.json 的入口元数据一致;禁止省略。references/piflow_skill_template.md 为主骨架;即使引用了旧脚本、旧 skill 或成功流程,也没有退化为对相似 skill 的整体复刻。validate_piflow_skill.py。复盘结论:对于会生成报告文件或其他结果工件的 skill,不能只设计成功路径;失败路径也必须可观测、可追溯。入口脚本应优先捕获异常、尽可能落盘最小失败摘要与问题清单,明确失败步骤、原因和上下文,再以非零状态码结束;不要在核心流程中未经兜底地直接抛出异常后退出。
生成此类 skill 时,额外遵守:
strict_mode 或其他失败条件触发时,不应在关键失败产物尚未落盘前直接中断。不要记录以下内容(这些会变成长期存在的自我约束,并在环境变化后反过来带来影响):
环境相关故障:缺失二进制文件、全新安装错误、迁移后路径不匹配、command not found、未配置凭据、未安装软件包等。用户可以修复这些问题,它们不是持久规则。 关于工具或功能的负面断言:如“浏览器工具无法工作”、“X 工具已损坏”、“远程资源不包含 Y”等。这些会固化成长期拒绝理由,即使实际问题早已被修复。 会话中已经解决的临时错误。如果重试后成功了,应记录重试模式,而不是原始失败。 一次性任务叙述。用户要求“总结今天的市场”或“分析这个 PR”,并不构成一个值得创建技能的工作类别。
除 validate_piflow_skill.py 外,生成中等及以上复杂度 skill 时,至少执行以下自测:
python -m py_compile ...,先排除最基础的语法问题。summary 与核心报告内容。skill.json 中声明的关键输出参数,在正常路径和失败路径下都能找到对应产物,或至少有明确的失败说明。strict_mode,必须额外做一次 strict_mode 实测,确认它改变的不只是退出码,还包括完整的失败可观测行为。まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
领域缩略语展开 Skill:按内置或外部词典将独立缩略语替换为全称,可选在全称后保留原缩写。 适用于技术文本、论文摘要和业务记录中的缩写清洗;不负责模糊缩写消歧或大小写无关替换。
日本語の概要は準備中です。原文の説明を表示しています。
字母数字比例过滤器。过滤文本中字母/数字比例不在指定范围内的样本。 当用户提到文本过滤、比例筛选、字母比例、数字比例、清理乱码文本等需求时使用此skill。 即使用户没有明确说出"过滤",只要任务涉及根据文本中字母或数字的比例来筛选数据, 就应该使用此skill。
日本語の概要は準備中です。原文の説明を表示しています。
平均行长度过滤器。过滤文本平均行长度不在指定范围内的样本。 当用户提到行长度过滤、平均行长度、文本行长度筛选、按行筛选等需求时使用此skill。 即使用户没有明确说出"平均行长度",只要任务涉及根据文本中每行的平均长度来筛选数据, 就应该使用此skill。
日本語の概要は準備中です。原文の説明を表示しています。
批量文件清单采集器。扫描一个或多个本地文件/目录,或从任务列表加载路径, 按支持的扩展名生成文件元信息清单,供后续文本、表格、文档、图像等采集流程继续处理。 当用户需要批量盘点待采集文件、生成本地文件 manifest、统计输入文件类型或为后续采集算子准备文件清单时使用此 skill。
日本語の概要は準備中です。原文の説明を表示しています。
批量数据均匀分片工具。读取json/jsonl/csv输入,按份数或固定条数切成多个子文件,输出一个清单JSON供下游节点消费。 当用户提到数据分割、批量拆分、数据分片、均匀分块等需求时使用此skill。 即使用户没有明确说出"分片",只要任务是把整份批量数据均匀拆成多个文件,就应该使用此skill。 不负责按字段分组导出或随机采样。
日本語の概要は準備中です。原文の説明を表示しています。
本skill是用于单细胞测序数据分析的专用技能,首先需要用户上传需要处理的单细胞测序数据,再对经过预处理的单细胞表达数据进行自动化细胞类型注释。它通过基因比对、数据标准化、降维等一系列流程,将细胞聚类结果与已知参考数据库进行匹配,从而为每个细胞分配生物学功能标签。
日本語の概要は準備中です。原文の説明を表示しています。