← 返回 Skills 市场
theashbhat

Dynamic UI

作者 Ash Bhat · GitHub ↗ · v1.2.0
cross-platform ✓ 安全检测通过
827
总下载
2
收藏
2
当前安装
7
版本数
在 OpenClaw 中安装
/install dynamic-ui
功能描述
Render tables, charts, stats, cards, and dashboards as images using HTML templates and wkhtmltoimage.
使用说明 (SKILL.md)

Dynamic UI Skill

Render dynamic visual content (tables, charts, stats, cards, dashboards) as images using HTML templates and wkhtmltoimage.

Triggers

  • "render", "visualize", "chart", "dashboard", "dynamic-ui"

Usage

# Basic usage
./scripts/render.sh \x3Ctemplate> --data '\x3Cjson>'

# With options
./scripts/render.sh table --data '{"columns":["A","B"],"rows":[["1","2"]]}' --style dark --output out.png

# From stdin
echo '{"labels":["Q1","Q2"],"values":[100,200]}' | ./scripts/render.sh chart-bar --style modern

Templates

Template Description Input Schema
table Data tables {"columns": [...], "rows": [[...], ...]}
chart-bar Bar charts {"labels": [...], "values": [...], "title": "..."}
stats KPI cards {"stats": [{"label": "...", "value": "...", "change": "..."}]}
card Info card {"title": "...", "subtitle": "...", "body": "...", "status": "green|yellow|red"}
dashboard Composite {"title": "...", "widgets": [{"type": "stat|table|chart", ...}]}

Options

Option Description Default
--data, --input JSON data (or use stdin) -
--style Theme: modern, dark, minimal modern
--output, -o Output path stdout (base64)
--width Image width in pixels 800

Themes

  • modern — Purple/blue gradients, shadows, rounded corners
  • dark — Dark background, light text, subtle borders
  • minimal — Clean white, thin borders

Examples

# Render a table
./scripts/render.sh table --data '{"columns":["Name","Score"],"rows":[["Alice","95"],["Bob","87"]]}' -o table.png

# Render a bar chart
./scripts/render.sh chart-bar --data '{"labels":["Jan","Feb","Mar"],"values":[120,150,180],"title":"Monthly Sales"}' --style dark -o chart.png

# Render stats
./scripts/render.sh stats --data '{"stats":[{"label":"Users","value":"12.5K","change":"+12%"},{"label":"Revenue","value":"$45K","change":"+8%"}]}' -o stats.png

💡 Sending Images to Users

After rendering an image, you'll typically want to send it to the user. Here's the recommended workflow:

Recommended Workflow:

# 1. Render to ~/.openclaw/media/ (recommended path)
./scripts/render.sh table --data '...' -o ~/.openclaw/media/my-table.png

# 2. Send inline via message tool
message(action=send, filePath=/home/ubuntu/.openclaw/media/my-table.png, caption="Caption", channel=telegram, to=\x3Cuser_id>)

Tips:

  • Save to ~/.openclaw/media/ — this path works reliably for inline sending
  • Use descriptive captions — helps users understand the visual
  • Consider the context — sometimes saving to disk is fine if the user requested it

Example (complete flow):

# Render
echo '{"title":"My Data","columns":["A","B"],"rows":[["1","2"]]}' | \
  ./scripts/render.sh table -o ~/.openclaw/media/data.png

# Send
message(action=send, filePath=/home/ubuntu/.openclaw/media/data.png, caption="Here's your data", channel=telegram, to=USER_ID)

Dependencies

  • /usr/bin/wkhtmltoimage — HTML to image conversion
  • jq — JSON parsing
安全使用建议
This skill appears to do exactly what it says: it runs a local shell script that uses jq to parse JSON and wkhtmltoimage to convert HTML templates into PNGs. Before installing, note: (1) you must install wkhtmltoimage and jq; (2) the renderer may fetch user-supplied image URLs over the network (http/https or data:image/* are allowed), so only provide trusted image URLs if you are concerned about external network requests; (3) the skill recommends saving outputs to ~/.openclaw/media/ (a normal place for agent media); (4) if you want extra assurance, review scripts/render.sh locally (it's included) — the code is shell-based and readable. Overall the skill is internally coherent and proportionate to its purpose.
功能分析
Type: OpenClaw Skill Name: dynamic-ui Version: 1.2.0 The skill bundle is classified as benign. The `scripts/render.sh` script demonstrates strong security practices, including comprehensive HTML entity escaping for all user-supplied data via the `escape_html` function, and robust validation of image URLs to prevent dangerous protocols like `file:` or `javascript:` from being loaded by `wkhtmltoimage`. All shell commands are properly quoted, preventing shell injection. The `SKILL.md` instructions are clear, align with the stated purpose, and contain no evidence of prompt injection attempts or malicious directives for the AI agent.
能力评估
Purpose & Capability
Name/description, required binaries (wkhtmltoimage, jq), templates, and a shell renderer script all align with a visual-rendering skill. No unrelated credentials, config paths, or binaries are requested.
Instruction Scope
SKILL.md instructs the agent to run scripts/render.sh with JSON input (stdin or --data), produce images, and optionally save to ~/.openclaw/media/ for messaging. The script reads only the provided JSON and internal templates. It does allow user-supplied image URLs (validated to block file:, javascript:, vbscript:, and non-image data:), which means wkhtmltoimage may fetch remote images — this is expected for image embedding but is the primary external-network behavior to be aware of.
Install Mechanism
Install spec uses standard package managers (apt/brew) to install wkhtmltopdf and jq. This is proportionate and expected for wkhtmltoimage usage; no downloads from arbitrary URLs or unusual extract steps are present.
Credentials
The skill declares no required environment variables or credentials. The runtime script does not reference hidden env vars or external credentials. It writes temporary files and (recommended) output under the user's home media directory, which is reasonable for generated images.
Persistence & Privilege
The skill is not always-on (always: false). It does not request elevated platform-wide privileges or modify other skills' configs. Autonomous invocation is permitted by default (disable-model-invocation: false) — this is the platform default and not by itself a red flag.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install dynamic-ui
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /dynamic-ui 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.2.0
Fix ampersand rendering bug — replaced awk template engine with perl to handle & correctly in HTML-escaped content
v1.1.0
Fix table headers wrapping on spaces (nowrap CSS); fix column splitting on spaces in jq iteration
v1.0.1
Fix column splitting on spaces in table headers (index-based jq iteration)
v1.0.4
v1.0.4: Security fixes - HTML escaping, removed CDN dependencies, safer instructions
v1.0.3
v1.0.3: Trimmed package size
v1.0.2
v1.0.2: Improved centering, emoji support, better install docs
v1.0.0
Initial release - tables, charts, stats, cards, dashboards with modern/dark/minimal themes
元数据
Slug dynamic-ui
版本 1.2.0
许可证
累计安装 2
当前安装数 2
历史版本数 7
常见问题

Dynamic UI 是什么?

Render tables, charts, stats, cards, and dashboards as images using HTML templates and wkhtmltoimage. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 827 次。

如何安装 Dynamic UI?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install dynamic-ui」即可一键安装,无需额外配置。

Dynamic UI 是免费的吗?

是的,Dynamic UI 完全免费(开源免费),可自由下载、安装和使用。

Dynamic UI 支持哪些平台?

Dynamic UI 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Dynamic UI?

由 Ash Bhat(@theashbhat)开发并维护,当前版本 v1.2.0。

💬 留言讨论