关于 sealos-canvas
sealos-canvas 是只读技能,可将已部署的 Sealos 和 Kubernetes 资源呈现为本地 HTML 拓扑画布。它面向已通过 Sealos 部署的项目,并会清理敏感资源数据。
主要功能
- 01读取已部署资源元数据
- 02生成本地 HTML 拓扑画布
- 03展示资源关系与事件
- 04清理 Secret 和 ConfigMap 数据
- 05运行临时回环服务器
适用场景
- 01检查已部署 Sealos 应用的资源拓扑
- 02查看相关 Kubernetes 事件和资源状态
- 03生成供本地查看的脱敏画布
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ labring/ sealos-skills --skill sealos-canvas安装后在 Claude Code 中输入/sealos-canvas确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/canvas-template.htmlevals/evals.jsonscripts/generate-canvas.mjs详细介绍
Sealos Canvas
身份与发现
- 归属:
sealos-canvas(适用于/sealos-canvas以及已部署资源视图、检查、可视化、拓扑或本地 Canvas 请求)。 - 类别:
read-only-observation,不移交给下游执行变更。 - 检测标记:
CANVAS-DEPLOYED、CANVAS-READONLY、CANVAS-REDACT和CANVAS-SERVER-LIFETIME。
范围与边界
要求存在 .sealos/state.json(含 last_deploy)、~/.sealos/kubeconfig,并且具备实时读取权限。仅使用 kubectl get 和 kubectl config view 等读取命令;绝不部署、更新、重启、修补、删除或应用资源。将经过脱敏的资源元数据渲染到 .sealos/canvas/index.html,并返回确切的本地 URL、缓存信息和服务器生命周期约定。
风险与确认
在介绍生成器细节之前,明确展示只读边界、Sealos kubeconfig 范围以及 Secret/ConfigMap 的脱敏要求。所有结果中均省略 Secret.data 和 ConfigMap.data。缺少状态文件或 kubeconfig 时,停止请求,不进行备用生成。绝不泄露 Secret 数据、完整的 ConfigMap 内容、kubeconfig 内容或凭据。
生命周期工作流
每次请求都解析项目,检查已部署状态和 kubeconfig,运行唯一的生成器,打开 loopback UI,并报告经过脱敏的计数。临时 127.0.0.1 服务器仅在当前进程期间运行,在进程结束或收到 SIGINT/SIGTERM 时停止;关闭请求前先停止服务器。
渐进式披露
只有通过已部署状态和只读检测标记后,才加载 scripts/generate-canvas.mjs 及其负责的模板和参考路径。不要从此入口加载或调用部署变更辅助程序。
输出、停止和错误状态
success:local_url、html_path、应用 URL、节点数、边数、经过脱敏的 HTML/模型以及服务器生命周期证明。stopped:not_deployed、kubeconfig_missing、kubectl_missing或读取权限不可用;提供确切且安全的后续操作、server_lifetime.status: not_started,且不提供 HTML/服务器备用方案。error:生成或服务器启动路径、经过脱敏的诊断类别、server_lifetime,以及已对机密和 kubeconfig 脱敏的恢复操作。
使用 --no-serve 成功时,返回 local_url: null 和 server_lifetime.status: not_started;常规成功时,返回 local_url 和 server_lifetime.status: running,关闭方式为进程退出或收到 SIGINT/SIGTERM。
移交
Canvas 接收带类型的直接结果元组,其中包含 target: none、inputArtifact: .sealos/state.json last_deploy plus sanitized live summaries、allowedAction: serve a temporary read-only loopback view、failureReturn: sanitized read-only generation/server diagnostic 和 responseOwner: sealos-canvas。部署响应可以包含返回的链接,但不会因此授予 Canvas 变更权限。
验证
使用 generate-canvas.mjs --no-serve、Canvas 合约测试、Canvas 评估,以及基准用例 canvas-positive-read-only-local-url 和 canvas-violating-missing-state-or-mutation。验证 127.0.0.1、local_url、html_path、server_lifetime、只读命令、脱敏输出以及明确的“停止服务器”行为。
概述
将当前代码库中已部署的 Sealos 资源渲染为本地托管的 HTML Canvas。此技能仅用于查看:它会读取 .sealos/state.json 和 Kubernetes 资源,启动临时的 127.0.0.1 UI 服务器,并向用户返回本地 URL。
硬性规则
- 不要部署、更新、重启、修补、删除或应用资源。
- 仅使用
kubectl get和kubectl config view等读取命令。 - 使用 Sealos kubeconfig:
~/.sealos/kubeconfig。 - 不要显示 Secret 数据或完整的 ConfigMap 内容。
- 如果项目没有包含
last_deploy的.sealos/state.json,请停止并告知用户先使用/sealos-deploy进行部署。 - 如果 kubeconfig 或实时资源访问不可用,请报告脚本消息并停止。
工作流
1. 解析项目
除非用户提供本地路径,否则使用当前工作目录:
WORK_DIR="$(pwd)"
生成输出前,确认这是目标仓库。
2. 启动本地画布 UI
运行:
node "<SKILL_DIR>/scripts/generate-canvas.mjs" --work-dir "$WORK_DIR"
用户查看画布期间,保持此进程运行。本地服务启动后,脚本会将 JSON 写入 stdout。
如果 ok 为 false,向用户显示 message 并结束流程。不要运行备用发现流程,不要部署,也不要创建任何其他产物。
如果 ok 为 true,将 local_url 作为主要输出。
3. 打开本地 URL
使用浏览器打开返回的 URL:
http://127.0.0.1:<port>/index.html
然后总结:
- 本地 UI URL
- 应用 URL
- 节点数量
- 边数量
用户看完页面后,或当前任务结束时,停止服务进程。
输出约定
成功:
{
"ok": true,
"local_url": "http://127.0.0.1:63220/index.html",
"html_path": "/abs/path/.sealos/canvas/index.html",
"node_count": 5,
"edge_count": 4,
"app_url": "https://example.sealos.run"
}
停止条件:
{
"ok": false,
"reason": "not_deployed",
"message": "This project has not been deployed by Sealos Skills yet. Run /sealos-deploy first, then run /sealos-canvas again."
}
视觉目标
本地托管的 UI 应呈现为拓扑画布,而不是表格:
- 顶栏显示应用名称、命名空间、已部署应用 URL、生成时间和本地 UI 状态。
- 深色点阵网格画布,资源卡片布局保持确定性。
- 显示应用、入口、服务、Pod、配置、密钥和卷的资源卡片。
- 使用虚线或实线 SVG 连接相关资源。
- 尽可能将 PVC/卷引用作为条带附加到相关卡片上。
- 显示所选资源的详情面板。
- 事件面板显示近期相关 Kubernetes 事件。
- 使用状态颜色区分就绪、休眠、警告和失败状态。
- 提供轻量级的平移、缩放、适应画布和重置控件。
主题提取尽力而为。若能轻松检测到用户仓库的强调色、字体和圆角,则予以复用,同时确保操作信息清晰易读。
脚本
scripts/generate-canvas.mjs 是确定性入口。它会:
- 读取
.sealos/state.json。 - 验证
~/.sealos/kubeconfig和kubectl。 - 使用
kubectl get读取实时命名空间资源。 - 构建经过净化的
canvasModel,其中包含app、nodes、edges、events和theme。 - 将
assets/canvas-template.html渲染到内部缓存.sealos/canvas/index.html。 - 启动临时本地 HTTP 服务并输出
local_url。
仅在测试或 CI 检查中使用 --no-serve,以便生成 HTML 而不让服务进程持续运行。