# Send TRMNL Display to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "trmnl",
    "name": "TRMNL Display",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/peetzweg/trmnl",
    "canonicalUrl": "https://clawhub.ai/peetzweg/trmnl",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/trmnl",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trmnl",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "assets/anti-patterns.md",
      "assets/good-examples/task-list.html",
      "assets/good-examples/table-data.html",
      "assets/good-examples/stats-dashboard.html",
      "assets/good-examples/two-column-image.html"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "trmnl",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-09T16:21:26.170Z",
      "expiresAt": "2026-05-16T16:21:26.170Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trmnl",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trmnl",
        "contentDisposition": "attachment; filename=\"trmnl-1.0.3.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "trmnl"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/trmnl"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/trmnl",
    "downloadUrl": "https://openagent3.xyz/downloads/trmnl",
    "agentUrl": "https://openagent3.xyz/skills/trmnl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/trmnl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/trmnl/agent.md"
  }
}
```
## Documentation

### TRMNL Content Generator

Generate HTML content for TRMNL e-ink display devices.

### Prerequisites

Install the trmnl CLI to the latest version:

npm install -g trmnl-cli@latest

Configure a webhook plugin (one-time setup):

# Add a plugin
trmnl plugin add home "https://trmnl.com/api/custom_plugins/{uuid}"

# Verify it's configured
trmnl plugin

### Quick Start Workflow

Install/update CLI: Run npm install -g trmnl-cli@latest
Check plugins: Run trmnl plugin - if none, prompt user to add one
Confirm device type (default: TRMNL OG, 2-bit, 800x480)
Read relevant reference docs based on content needs
Generate HTML using TRMNL framework classes
Write HTML to a temp file and send:
trmnl send --file /tmp/trmnl-content.html
# Or to a specific plugin:
trmnl send --file /tmp/trmnl-content.html --plugin office


Minimal confirmation only - Do NOT echo content back to chat

### Sending Content

From file (recommended):

# Write HTML content to file first
cat > /tmp/trmnl-content.html << 'EOF'
<div class="layout layout--col gap--space-between">
  <div class="item">
    <span class="value value--xlarge value--tnums">Hello TRMNL!</span>
  </div>
</div>
<div class="title_bar">
  <span class="title">My Plugin</span>
</div>
EOF

# Send to display
trmnl send --file /tmp/trmnl-content.html

Validate before sending:

trmnl validate --file /tmp/trmnl-content.html

View send history:

trmnl history
trmnl history --today
trmnl history --failed

### Webhook Limits

TierPayload SizeRate LimitFree2 KB (2,048 bytes)12 requests/hourTRMNL+5 KB (5,120 bytes)30 requests/hour

Set tier globally for accurate validation:

trmnl tier plus  # or "free"

### Reference Documentation

Read these files as needed:

FileWhen to Readreferences/patterns.mdStart here - Common plugin patternsreferences/framework-overview.mdDevice specs, e-ink constraintsreferences/css-utilities.mdColors, typography, sizing, spacingreferences/layout-systems.mdFlexbox, grid, overflow enginesreferences/components.mdTitle bar, dividers, items, tablesreferences/webhook-api.mdPayload format, troubleshootingassets/anti-patterns.mdCommon mistakes to avoid

### Standard Plugin Structure

Every plugin follows this pattern:

<div class="layout layout--col gap--space-between">
  <!-- Content sections separated by dividers -->
</div>
<div class="title_bar">
  <img class="image" src="icon.svg">
  <span class="title">Plugin Name</span>
  <span class="instance">Context</span>
</div>

layout + layout--col = vertical flex container
gap--space-between = push sections to edges
title_bar = always at bottom, outside layout
divider = separate major sections
CRITICAL: Only ONE .layout element per view

### Grid System (10-Column)

<div class="grid">
  <div class="col--span-3">30%</div>
  <div class="col--span-7">70%</div>
</div>

### Item Component

<div class="item">
  <div class="content">
    <span class="value value--xlarge value--tnums">$159,022</span>
    <span class="label">Total Sales</span>
  </div>
</div>

### Value Typography

Always use value--tnums for numbers.

ClassUsagevalue--xxxlargeHero KPIsvalue--xxlargeLarge pricesvalue--xlargeSecondary metricsvalue--tnumsRequired for numbers

### Grayscale Classes

Use dithered classes, not inline colors:

bg--black, bg--gray-60, bg--gray-30, bg--gray-10, bg--white
text--black, text--gray-50

### Data Attributes

AttributePurposedata-fit-value="true"Auto-resize text to fitdata-clamp="N"Limit to N linesdata-overflow="true"Enable overflow management

### Best Practices

Use layout + title_bar structure
Always value--tnums for numbers
Use data-fit-value on primary metrics
Use bg--gray-* dithered classes
Keep payload under tier limit
Minimal confirmations - just "Sent to TRMNL"

### Troubleshooting

ProblemSolutiontrmnl: command not foundRun npm install -g trmnl-cli@latestNo plugins configuredRun trmnl plugin add <name> <url>Webhook failstrmnl config - verify plugin URLPayload too largetrmnl validate --file - check sizeNumbers misalignedAdd value--tnums classSend historytrmnl history --failed
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: peetzweg
- Version: 1.0.3
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-09T16:21:26.170Z
- Expires at: 2026-05-16T16:21:26.170Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/trmnl)
- [Send to Agent page](https://openagent3.xyz/skills/trmnl/agent)
- [JSON manifest](https://openagent3.xyz/skills/trmnl/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/trmnl/agent.md)
- [Download page](https://openagent3.xyz/downloads/trmnl)