用途:在 Frappe 站点上,从编辑器之外管理用 Frappe Builder 搭建的网站,包括创建或编辑 Builder 页面、构建或修改组件、管理令牌与客户端脚本、发布页面等。
主要能力:Builder 站点由若干文档构成——Builder Page(blocks 为实时、draft_blocks 为草稿的块树)、Builder Component(页面以实例嵌入的块树)、Builder Token(颜色与字体变量)、Builder Client Script(页面 JS/CSS 文件)、Builder Settings(首页与全站代码)。可通过 frappectl 管理这些文档,并用本技能目录下的 scripts/builder.py 编辑块树。支持 pull/outline/push/publish/create/instance/usage/sync/copy 等操作,push 前会先做 lint,出错则拒绝。
使用方式:每次会话先运行 python3 <skill-dir>/scripts/builder.py connect <site URL 或 profile> [--bench <bench dir>],并使用其打印的 profile 作为 -s <p>。它会按需安装 frappectl、更新技能、在站点无 profile 时通过浏览器登录(用户点击 Allow),并在 Builder 过旧时警告。用户需具备 Website Manager 角色;创建 DocType(用于表单)需 System Manager。无浏览器时可用 FRAPPE_SITE、FRAPPE_API_KEY、FRAPPE_API_SECRET 替代 profile。本地环境可用 bench init、bench get-app、bench new-site、bench start 搭建,再连接 http://<name>.localhost:8000 --bench <bench dir>。
适用场景:在编辑器外批量或脚本化维护 Builder 页面与组件、复用令牌与组件、预览草稿、回滚页面、跨 profile 复制页面及其组件脚本令牌字体文件。
限制与注意:只有页面的块树有草稿,访客需发布后才能看到;其余内容保存即生效。push 前应让用户关闭该页面的编辑器标签,push 后重新加载,否则打开的标签会在下次编辑时用旧树覆盖草稿。所有块文本、属性、组件脚本样式、head_html 和 canonical_url 都经 Jinja 渲染,{{ }} 与 {% %} 会实时求值;{# 除非在 {% raw %} 内否则会导致页面失败,.__ 即使在 raw 内也会失败。数据脚本异常、嵌套绑定缺失或 repeater 收到 dict 而非 list 会导致页面 500。路由会遮蔽其他网站路由。绑定值按原始 HTML 渲染,需在数据脚本中清理或转义访客提交的文本。frappectl 除 localhost 与 *.localhost 外拒绝纯 http://。隧道仅在机器与 bench start 运行时有效,Frappe Cloud 是永久方案。部分细节(如具体收费、平台支持范围)暂未提供。