mcpField
S
sealos-canvas

sealos-canvas

github.com/labring云与 DevOps83149 次安装4 周前更新
代码仓库

关于 sealos-canvas

sealos-canvas 是只读技能,可将已部署的 Sealos 和 Kubernetes 资源呈现为本地 HTML 拓扑画布。它面向已通过 Sealos 部署的项目,并会清理敏感资源数据。

主要功能

  1. 01读取已部署资源元数据
  2. 02生成本地 HTML 拓扑画布
  3. 03展示资源关系与事件
  4. 04清理 Secret 和 ConfigMap 数据
  5. 05运行临时回环服务器

适用场景

  1. 01检查已部署 Sealos 应用的资源拓扑
  2. 02查看相关 Kubernetes 事件和资源状态
  3. 03生成供本地查看的脱敏画布

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/labring/sealos-skills --skill sealos-canvas

安装后在 Claude Code 中输入/sealos-canvas确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
canvas-template.html
evals/
evals.json
scripts/
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。

硬性规则

  1. 不要部署、更新、重启、修补、删除或应用资源。
  2. 仅使用 kubectl get 和 kubectl config view 等读取命令。
  3. 使用 Sealos kubeconfig:~/.sealos/kubeconfig。
  4. 不要显示 Secret 数据或完整的 ConfigMap 内容。
  5. 如果项目没有包含 last_deploy 的 .sealos/state.json,请停止并告知用户先使用 /sealos-deploy 进行部署。
  6. 如果 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 应呈现为拓扑画布,而不是表格:

  1. 顶栏显示应用名称、命名空间、已部署应用 URL、生成时间和本地 UI 状态。
  2. 深色点阵网格画布,资源卡片布局保持确定性。
  3. 显示应用、入口、服务、Pod、配置、密钥和卷的资源卡片。
  4. 使用虚线或实线 SVG 连接相关资源。
  5. 尽可能将 PVC/卷引用作为条带附加到相关卡片上。
  6. 显示所选资源的详情面板。
  7. 事件面板显示近期相关 Kubernetes 事件。
  8. 使用状态颜色区分就绪、休眠、警告和失败状态。
  9. 提供轻量级的平移、缩放、适应画布和重置控件。

主题提取尽力而为。若能轻松检测到用户仓库的强调色、字体和圆角,则予以复用,同时确保操作信息清晰易读。

脚本

scripts/generate-canvas.mjs 是确定性入口。它会:

  1. 读取 .sealos/state.json。
  2. 验证 ~/.sealos/kubeconfig 和 kubectl。
  3. 使用 kubectl get 读取实时命名空间资源。
  4. 构建经过净化的 canvasModel,其中包含 app、nodes、edges、events 和 theme。
  5. 将 assets/canvas-template.html 渲染到内部缓存 .sealos/canvas/index.html。
  6. 启动临时本地 HTTP 服务并输出 local_url。

仅在测试或 CI 检查中使用 --no-serve,以便生成 HTML 而不让服务进程持续运行。

评论

支持 Markdown