Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
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).
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).
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
Generate HTML content for TRMNL e-ink display devices.
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
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
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
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"
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
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
<div class="grid"> <div class="col--span-3">30%</div> <div class="col--span-7">70%</div> </div>
<div class="item"> <div class="content"> <span class="value value--xlarge value--tnums">$159,022</span> <span class="label">Total Sales</span> </div> </div>
Always use value--tnums for numbers. ClassUsagevalue--xxxlargeHero KPIsvalue--xxlargeLarge pricesvalue--xlargeSecondary metricsvalue--tnumsRequired for numbers
Use dithered classes, not inline colors: bg--black, bg--gray-60, bg--gray-30, bg--gray-10, bg--white text--black, text--gray-50
AttributePurposedata-fit-value="true"Auto-resize text to fitdata-clamp="N"Limit to N linesdata-overflow="true"Enable overflow management
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"
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
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.