关于 pipefy-html-interfaces
用于创建和维护由 Pipefy 管道或表格提供数据的 HTML 界面,指导 Agent 完成数据绑定与发布,并强调校验及修改会立即生效。
主要功能
- 01创建和编辑 HTML 界面
- 02绑定管道与表格数据源
- 03查看现有界面和 HTML
- 04按平台指南校验标记
适用场景
- 01根据 Pipefy 管道制作仪表板
- 02将表格添加为页面数据源
- 03查看或更新界面布局
MCP 相关
面向 MCP 客户端,技能提供单独的 MCP 使用指南,并介绍读取和修改界面的操作。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pipefy/ ai-toolkit --skill pipefy-html-interfaces安装后在 Claude Code 中输入/pipefy-html-interfaces确认已加载。
附带文件references/cli.mdreferences/mcp.md
详细介绍
HTML 界面
MCP 客户端:请阅读 references/mcp.md。CLI 用户:请阅读 references/cli.md。
HTML 界面是一个页面,其中唯一的元素是一个 customCode 元素,内含一份 HTML 文档。该元素可以声明数据源(管道或表格),供 HTML 按来源 ID 读取。写入 HTML 即会发布:没有草稿。
适用场景
- “构建一个显示我们未处理请求的页面”“用这个管道创建一个仪表板页面。”
- “更改我的 HTML 界面的布局/文案/颜色。”
- “将表格 X 添加为我页面的数据源。”
- “列出我的 HTML 界面”“显示页面 Y 的 HTML。”
如果用户提到“页面”,但不清楚他们指的是独立 HTML 页面还是主门户中的页面,请先询问再采取任何操作。
**不适用场景:**主门户、其中采用网格布局的页面和元素,以及子门户都由 pipefy-portal-setup 管理(list_portals 和 get_portal 可处理这些内容,而 get_interface_html 会拒绝处理)。管道、字段和卡片本身由 pipefy-pipes-and-cards 管理。切勿使用门户页面或元素工具更改 HTML 界面:这些工具虽然接受其 customCode 元素,但会替换其元数据和数据源,且不会执行此处工具所做的检查。
前提条件
- 组织已启用 HTML 界面。 Pipefy 按组织启用此功能;组织管理员无法自行启用。如果调用因未启用此功能而失败,请停止操作,并告知用户联系 Pipefy 为其组织启用 HTML 界面。没有任何工具可以启用此功能。
- 组织 ID。
list_interface_repos仅接受数字组织 ID;create_html_interface和list_interfaces接受数字 ID 或 UUID。用户通常会提供 UUID 或名称,因此请使用list_organizations查询数字 ID(其id字段),并在所有地方使用该 ID。 - 对页面所显示的管道和表格具有管理员访问权限。
list_interface_repos仅列出调用者有权管理的已发布管道和表格。
操作
| 操作 | 只读 | 用途 |
|---|---|---|
get_interface_html_guidelines | 是 | HTML 必须遵循的规则、用于绑定数据的 data-pfy-* 词汇,以及筛选器格式;使用 include_design_system 时,还会提供设计系统目录。 |
list_interface_repos | 是 | 可用作数据源的管道和表格。 |
get_interface_repo_fields | 是 | 管道或表格的自定义字段,用于选择来源的 fieldKeys。 |
list_interfaces | 是 | 组织的 HTML 界面及其 visibility。 |
get_interface_html | 是 | 单个界面的页面、元素、数据源和实时 HTML。 |
create_html_interface | 否 | 创建界面并编写其首个页面,可选择添加数据源。 |
set_interface_sources | 否 | 替换某个元素的数据源。 |
write_interface_html | 否 | 替换并发布某个元素的 HTML。 |
适用于所有流程的规则
- 先阅读指南。 编写任何 HTML 前,先调用
get_interface_html_guidelines,并遵循指南。本技能不会重复这些规则:指南是规则的唯一来源,且会随平台变化。默认情况下,指南会省略designSystem,因为组件目录的篇幅是规则的数倍。只有在为页面设置样式时,才通过include_design_system请求它。 - 严格按照
dataPfyVocabulary绑定数据。 它说明了每个data-pfy-*属性的作用、大多数属性应放在哪个元素上,以及属性应采用什么值。验证器只检查属性是否获准,因此即使绑定位置错误也会通过。 - 每次写入都会立即生效。
create_html_interface、write_interface_html和set_interface_sources会立即更改访客看到的内容。用户的具体请求(例如“将标题重命名为 X”)即表示用户批准了该更改。在进行超出请求范围的操作之前,例如重写用户未提及的标记,或移除用户仍在使用的数据源,请先向用户展示更改并取得批准。 - 确保线上页面只读取已声明的数据源。 如果 HTML 读取了元素未声明的数据源 ID,页面会空白显示,且不会报错。先添加数据源,再编写读取它的 HTML。只有在线 HTML 不再读取某个数据源后,才能移除或重命名该数据源。
- 再次写入前,修复所有违规项。 被拒绝的写入不会保存任何内容,并会列出所有违规项。一次性修复全部问题,再重新写入。如果 HTML 来自用户,请向用户展示违规项以及符合规则的版本,并且仅在用户同意后发布。
步骤——创建页面
-
阅读规则;如果要为页面设置样式,也要阅读设计系统目录:
get_interface_html_guidelines get_interface_html_guidelines include_design_system=true -
检查名称是否可用。 如果已存在同名界面,请询问用户是要更改它(见下一节)还是创建另一个界面。
list_interfaces organization_uuid=<org_id> search_term=<name> -
选择数据(无实时数据的页面可跳过此步)。列出候选 repo,然后列出每个所用 repo 的字段:
list_interface_repos organization_id=<org_id> repo_name=<name_fragment> get_interface_repo_fields repo_uuid=<repo_uuid>数据源的格式为
{"id", "name", "repoId", "fieldKeys", "filters"}。repoId是 repo 的uuid。fieldKeys包含 1 到 30 个键:自定义字段的uuid(而不是它的id),或者title这样的内置键(指南在filters.fixedColumnNames下列出了内置键)。filters是可选的,格式须符合指南中的筛选器格式。在同一个元素内,id和name必须唯一;HTML 通过id读取数据源。一个元素最多包含 10 个数据源。 -
编写 HTML,遵循指南,并使用
dataPfyVocabulary属性,通过各数据源的id进行绑定。 -
在一次调用中创建界面,同时传入其数据源和 HTML:
create_html_interface organization_uuid=<org_id> name="Open requests" html=<document> data_sources=[{"id": "requests", "name": "Open requests", "repoId": <repo_uuid>, "fieldKeys": ["title", <field_uuid>]}]返回结果中包含新界面的
uuid,以及其页面和元素的 ID。告知用户界面的名称和uuid。
步骤 — 更改现有页面
-
查找并阅读:
list_interfaces organization_uuid=<org_id> search_term=<name_fragment> get_interface_html interface_uuid=<interface_uuid>在用户所指的页面上使用
type为customCode的元素。如果界面有多个页面或customCode元素,请列出并询问用户要选哪一个。从pages[].uuid获取page_id,从pages[].elements[].uuid获取element_id,从元素的dataSources获取当前数据源,并记下其htmlDocument.contentHash。 -
如果新 HTML 需要更多数据,添加数据源。对于页面尚未读取的字段,使用该数据源的
repoId调用get_interface_repo_fields查找其 uuid。发送完整列表,即当前数据源加上新增数据源:这会替换元素的数据源;发送[]则会移除全部数据源。通过get_interface_html读取的数据源可以原样发送回去。保留所有要继续使用的数据源的id。set_interface_sources interface_uuid=<interface_uuid> page_id=<page_id> element_id=<element_id> data_sources=[...] -
编写新 HTML,以读取到的文档为基础。写入前,重新读取界面:如果
contentHash已更改,说明有人编辑了页面,请基于新文档重新开始,并向用户展示更改。write_interface_html page_id=<page_id> element_id=<element_id> content=<document> -
如果用户希望移除不再被新 HTML 读取的数据源,或为其重命名,请再调用一次
set_interface_sources并发送完整列表。
成功标准
- 创建或写入操作成功,且没有违规项。
get_interface_html显示新文档,以及元素上预期的dataSources。- HTML 读取的每个数据源 id 都包含在元素的
dataSources中。
失败情况
- 创建成功,但写入失败。 界面已创建,但页面为空;错误会提供其
uuid、page_id和element_id。解决错误(如果被拒绝,则修复 HTML),然后使用这些 id 调用write_interface_html。不要再次调用create_html_interface:这会创建第二个孤立界面。 - 创建操作未返回可写入的页面。 界面可能仍已创建,错误会提供其
uuid。先使用get_interface_html检查,不要盲目重试创建。 - 创建失败,且错误中没有
uuid。 界面可能仍已创建。重试前,按名称使用list_interfaces搜索;只有在没有出现同名新界面时,才重新创建。 - 写入时 HTML 被拒绝。 未存储任何内容。根据指南修复列出的所有违规项,然后重新写入。
- 写入失败,但未列出违规项。 使用
get_interface_html读取页面以检查已存储的内容,然后再写入一次。如果再次失败,请停止并告知用户。 - 页面呈现出空白区块。 HTML 读取了元素未声明的数据源 id,或者数据源已重命名或移除。将 HTML 与
get_interface_html返回的dataSources对比,然后修复数据源或 HTML。 - 存在重复界面。 向用户展示两个界面及其名称和 uuid。经用户批准后,使用
delete_portal删除多余界面;该工具将界面的 uuid 作为portal_uuid,并要求确认。 list_interface_repos中缺少某个 repo。 该 repo 尚未发布,或调用者不是其管理员。空列表也可能意味着组织 id 有误:该列表不会报告未知的组织或界面。get_interface_html拒绝访问该界面。 这是网格布局 portal 或子 portal;请使用pipefy-portal-setup。- 不确定数据源更新实际存储了什么。
set_interface_sources返回的是发送的数据源,而非实际存储的数据源。使用get_interface_html重新读取。
另请参阅
pipefy-portal-setup:主 portal、其网格布局页面和元素,以及子 portal。pipefy-pipes-and-cards:创建页面所读取的管道和字段。