← Back to Skills Marketplace
peetzweg

TRMNL Display

by peetzweg/ · GitHub ↗ · v1.0.3
cross-platform ⚠ suspicious
2761
Downloads
2
Stars
0
Active Installs
4
Versions
Install in OpenClaw
/install trmnl
Description
Generate content for TRMNL e-ink display devices using the TRMNL CSS framework and send via the trmnl CLI. Use when the user wants to display information on their TRMNL device, send messages to an e-ink display, create dashboard content, show notifications, or update their terminal display. Supports rich layouts with the TRMNL framework (flexbox, grid, tables, progress bars, typography utilities).
Usage Guidance
Key things to check before installing/using this skill: 1) Provenance: the registry entry has no homepage and the source is listed as unknown. Verify the origin of trmnl-cli (npm package) and prefer installing it manually after reviewing the package on npmjs.com or its repository. Do not run global installs blindly. 2) Declared requirements mismatch: the skill metadata lists no required binaries, but SKILL.md instructs using npm and the trmnl CLI. Treat that as an omission — expect to need npm/node and the trmnl-cli executable. 3) External webhooks: the workflow sends HTML to plugin webhook URLs (https://trmnl.com/api/custom_plugins/{uuid} or similar). Only add/send to plugin URLs you control and trust. Any content you send will be visible to the receiving endpoint and (per docs) HTML is NOT auto-escaped on the server side. 4) Sensitive data: do not include passwords, API keys, personal data, or secrets in HTML payloads. The docs show Liquid templates can access user data on the TRMNL side, so avoid embedding anything sensitive in merge_variables.content. 5) Validate locally: use 'trmnl validate --file' locally and inspect the payload before sending. If possible, test with a benign plugin endpoint you control (a simple server you run) to confirm behavior. 6) Package safety: audit the npm package (trmnl-cli) before global installation — check the publisher, recent release notes, and the package contents for unexpected network or filesystem operations. 7) If you need higher assurance: ask the skill publisher for repo/homepage and a signed release or source link; without that information, treat this skill as unvetted. These issues make the skill coherent with its stated function but raise enough provenance and metadata mismatches to avoid a 'benign' verdict without further verification.
Capability Analysis
Type: OpenClaw Skill Name: trmnl Version: 1.0.3 The skill is classified as suspicious due to two main indicators. Firstly, it instructs the AI agent to install a global npm package (`trmnl-cli@latest`) in `SKILL.md`, which introduces a supply chain risk if the package itself were compromised. Secondly, `SKILL.md` contains a prompt injection instruction to the agent: 'Minimal confirmation only - Do NOT echo content back to chat'. While a plausible benign reason is provided (avoiding verbose HTML output), this instruction attempts to control the agent's communication, which is a risky capability that could be leveraged to hide malicious actions. The skill's core functionality involves sending user-generated HTML to `trmnl.com`, which is aligned with its stated purpose.
Capability Assessment
Purpose & Capability
SKILL.md is a focused TRMNL content generator and send workflow — that aligns with the skill description. However the manifest declares no required binaries or credentials while the runtime instructions tell the agent to run npm and the trmnl CLI (npm install -g trmnl-cli; trmnl send, trmnl plugin add). The metadata omission (no required binaries listed) is an inconsistency the publisher should have declared. Also the package source/homepage is unknown (registry metadata shows no homepage and 'Source: unknown'), so provenance is unclear.
Instruction Scope
The SKILL.md stays within the stated purpose: generate HTML using the TRMNL framework and POST it to configured TRMNL webhook plugins. It does instruct writing files to /tmp and sending them to plugin webhook URLs (e.g., https://trmnl.com/api/custom_plugins/{uuid}). This is expected for the stated function but means the skill will transfer user-generated HTML to external endpoints; ensure those endpoints (plugin URLs) are trusted and under the user's control. The doc also explicitly warns not to echo content back to chat — a sign the payload may be sensitive.
Install Mechanism
There is no formal install spec in the registry (instruction-only skill), which is lower risk than an automated installer. However SKILL.md tells the operator to run 'npm install -g trmnl-cli@latest' — installing a global npm package executes third-party code from the npm registry. Because the skill metadata does not declare this requirement or provide a trusted upstream/homepage, that step increases risk and should be performed only after verifying the package and its publisher.
Credentials
The skill requests no environment variables, credentials, or config paths in the manifest. The instructions use plugin webhook URLs (UUID-based) but do not ask for unrelated secrets. Still, the webhook API docs show that HTML in payloads is not auto-escaped and that Liquid templates can access user fields (email, name) on the TRMNL side, so users should avoid sending sensitive data in content.
Persistence & Privilege
The skill does not request always:true, does not declare system-wide changes, and has no install-time persistence or config writes defined in the registry. Autonomous invocation is allowed by default but not combined with other high-risk factors here.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install trmnl
  3. After installation, invoke the skill by name or use /trmnl
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.3
- Major update: Now uses the trmnl CLI for sending content, replacing previous curl/script-based workflow. - Updated setup instructions: Install and configure `trmnl-cli` with plugin management commands and device validation. - Removed references to scripts/check_payload.py and the environment variable-based workflow. - Simplified content sending steps and validation using `trmnl send` and `trmnl validate`. - Documentation reorganized for clarity, including new troubleshooting and best practice sections. - SKILL.md content now reflects all current CLI commands and omits obsolete script references.
v1.0.2
- Added guidance for mashup layouts (multi-plugin dashboards) and described common mashup layout classes. - Clarified that only one `.layout` element is allowed per view, and flagged this as a critical requirement. - Expanded data attributes section with new attributes such as `data-value-format`, `data-overflow-max-cols`, and `data-table-limit`. - Updated troubleshooting with solutions for multiple layouts/nested content errors. - Synced references to layout systems documentation for mashup and complex layouts.
v1.0.1
**This release introduces setup verification and size checking improvements.** - Added instructions to verify that TRMNL display markup is set to `<div>{{content}}</div>`. - Introduced the temp file method for safe payload delivery with cURL. - Added guidance for checking payload size using the new `scripts/check_payload.py` script. - Included a concise "minimal confirmation only" rule—do not echo submitted content back to chat. - Expanded anti-patterns, best practices, and reference documentation sections. - Added new reference and script files: `references/patterns.md` and `scripts/check_payload.py`.
v1.0.0
Initial release of the trmnl skill: generates HTML content for TRMNL e-ink displays using the TRMNL CSS framework and webhook API. - Supports device-specific layouts for TRMNL OG (800x480, 2-bit) e-ink screens. - Environment variable or direct URL support for content webhook configuration. - Includes guidelines and references for optimized HTML, responsive frameworks, and payload management. - Provides best practices and troubleshooting for e-ink constraints, webhook payloads, and TRMNL CSS utility/class usage. - Example layouts and patterns included for common message, grid, dashboard, and list display scenarios.
Metadata
Slug trmnl
Version 1.0.3
License
All-time Installs 0
Active Installs 0
Total Versions 4
Frequently Asked Questions

What is TRMNL Display?

Generate content for TRMNL e-ink display devices using the TRMNL CSS framework and send via the trmnl CLI. Use when the user wants to display information on their TRMNL device, send messages to an e-ink display, create dashboard content, show notifications, or update their terminal display. Supports rich layouts with the TRMNL framework (flexbox, grid, tables, progress bars, typography utilities). It is an AI Agent Skill for Claude Code / OpenClaw, with 2761 downloads so far.

How do I install TRMNL Display?

Run "/install trmnl" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is TRMNL Display free?

Yes, TRMNL Display is completely free (open-source). You can download, install and use it at no cost.

Which platforms does TRMNL Display support?

TRMNL Display is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created TRMNL Display?

It is built and maintained by peetzweg/ (@peetzweg); the current version is v1.0.3.

💬 Comments