该技能是一份围绕 Windmill CLI 编写 PHP 脚本的操作说明,重点在于命令选择、元数据同步与 PHP 脚本结构规范。
用途方面,它用于指导在本地文件夹中编写 PHP 脚本,并决定在何种场景下使用哪一种 wmill 命令。
在命令选择上,技能给出了明确区分:wmill script preview <script_path> 是迭代本地脚本时的默认选择,它不部署即可运行本地文件;wmill script run <path> 用于运行已部署在工作区中的脚本,仅在用户明确要求测试已部署版本、而非本地改动时使用。本地有编辑且用户说“运行/试试/测试/能用吗”时,应使用 preview,而不是先推送再运行。部署(git push 或 wmill sync push,具体取决于仓库接线方式)只在用户明确要求部署、发布、推送时执行。
元数据同步方面,wmill-lock.yaml 会记录每个条目的内容哈希;编辑脚本内容(尤其是增删 import 或修改 main 参数)会使哈希失效,导致 .lock、.script.yaml 输入模式和哈希行过期。此时应运行 wmill generate-metadata(限定到改动范围),使解析后的锁文件、由 .script.yaml 驱动的自动生成参数 UI 与 wmill-lock.yaml 都匹配代码,避免 git-sync 和 CI 出现虚假差异。该命令只写本地文件,不是部署,但会重新解析依赖,可能提升未固定版本。它默认应由技能主动提出并在用户同意后运行,而非每次编辑后静默执行,除非项目的 AGENTS.md 选择自动运行。运行后应比对重新生成的 .lock / .script.lock 文件并告知用户哪些依赖版本发生变化。不指定路径时,generate-metadata 只重新生成内容哈希漂移的条目;由于导入会传播,修改被导入的脚本会使所有导入者过期,如范围超出预期,可用 --dry-run 查看每个过期条目的原因,再用路径参数或 --strict-folder-boundaries 收窄。若磁盘上的 .lock 与 .script.yaml 已正确、仅需刷新 wmill-lock.yaml 哈希,可用 wmill generate-metadata rehash。
测试提供方面,如果用户未要求运行,应以一句话提供运行建议;如果用户原本已要求测试/运行,则跳过询问,直接执行 wmill script preview <path> -d '<args>' 并从脚本参数中选取合理值。技能也提醒:preview 虽不部署,但仍会执行脚本代码并可能产生副作用;generate-metadata 不部署,只写本地文件;只有部署才会改变远程状态。若需要可视化地打开开发页面预览,可使用 preview 技能。
PHP 脚本结构规范方面,脚本必须以 <?php 开头并包含至少一个名为 main 的函数;凭据与配置通过资源类型作为参数传入 main,不得硬编码或从环境读取;需要的资源类型要在 main 函数前重新定义,并始终用 class_exists 检查类是否已存在,资源类型名称必须完全一致。库依赖以注释形式写在 main 函数前,每行一个依赖,无需手动 require autoload。