用途:创建或编辑 pflow 技能(skill),按现有模式生成 SKILL.md 与脚本,并对 frontmatter 和每行 120 字符的限制进行校验。
主要能力:
- 通过 skill-context.sh 收集上下文,得到 {skills_dir, skills:[{name,description,scripts}]},失败时打印 ⚠️ <error.message> 并停止。
- 澄清需求:新技能必须明确它做什么、何时触发,不明确时须询问而非假设,并提议 kebab-case 名称;编辑时若意图不清需确认变更。
- 构建或编辑 skills/<NAME>/,新建或改名时更新 README.md 的 Skills 表对应行,改名还需更新 allowed-tools 路径及旧名称的所有出现处。
- 通过 skill-finalize.sh --name "<NAME>" 校验,返回 {status:"ok",skill_dir,scripts_chmod,long_lines:["file:line:length"]},对每个 long_lines 条目重新换行并重复运行直至为空。
使用方式:技能采用三阶段结构,阶段 1 和阶段 3 可选。阶段 1 准备:只读脚本收集数据输出 JSON;阶段 2 智能体工作:由智能体做创作或判断决策,仅限判断步骤;阶段 3 收尾:动作脚本接收智能体输出并改变状态,输出 JSON。脚本约定使用 set -u,通过 SCRIPT_DIR、SKILL_DIR、ROOT_DIR 定位目录;stdout 输出一行 JSON,错误作为 JSON 的 error/status 字段而非 stderr;复用同级技能中的 json_escape、emit_error、load_dotenv 等辅助函数。同一技能脚本报错时打印 ⚠️ <error.message> 并停止;后续步骤若运行项目命令,其他失败命令应作为发现上报并继续。
限制:SKILL.md 行须在 120 字符内(表格、代码块和含 URL 的行除外);allowed-tools 使用已安装路径 .agents/skills/<name>/scripts/...;仅手动调用的技能须设 disable-model-invocation: true,仅靠描述文字无法阻止自动调用;frontmatter 中 description 用第三人称写明用途与触发条件,不超过 1024 字符。