trmnl
Generate content for TRMNL e-ink display devices using the TRMNL CSS framework. 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) and sends content via webhook API.
Install
mkdir -p .claude/skills/trmnl && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6414" && unzip -o skill.zip -d .claude/skills/trmnl && rm skill.zipInstalls to .claude/skills/trmnl
About this skill
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
| Tier | Payload Size | Rate Limit |
|---|---|---|
| Free | 2 KB (2,048 bytes) | 12 requests/hour |
| TRMNL+ | 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:
| File | When to Read |
|---|---|
references/patterns.md | Start here - Common plugin patterns |
references/framework-overview.md | Device specs, e-ink constraints |
references/css-utilities.md | Colors, typography, sizing, spacing |
references/layout-systems.md | Flexbox, grid, overflow engines |
references/components.md | Title bar, dividers, items, tables |
references/webhook-api.md | Payload format, troubleshooting |
assets/anti-patterns.md | Common 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 containergap--space-between= push sections to edgestitle_bar= always at bottom, outside layoutdivider= separate major sections- CRITICAL: Only ONE
.layoutelement per view
Quick Reference
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.
| Class | Usage |
|---|---|
value--xxxlarge | Hero KPIs |
value--xxlarge | Large prices |
value--xlarge | Secondary metrics |
value--tnums | Required for numbers |
Grayscale Classes
Use dithered classes, not inline colors:
bg--black,bg--gray-60,bg--gray-30,bg--gray-10,bg--whitetext--black,text--gray-50
Data Attributes
| Attribute | Purpose |
|---|---|
data-fit-value="true" | Auto-resize text to fit |
data-clamp="N" | Limit to N lines |
data-overflow="true" | Enable overflow management |
Best Practices
- Use
layout+title_barstructure - Always
value--tnumsfor numbers - Use
data-fit-valueon primary metrics - Use
bg--gray-*dithered classes - Keep payload under tier limit
- Minimal confirmations - just "Sent to TRMNL"
Troubleshooting
| Problem | Solution |
|---|---|
trmnl: command not found | Run npm install -g trmnl-cli@latest |
| No plugins configured | Run trmnl plugin add <name> <url> |
| Webhook fails | trmnl config - verify plugin URL |
| Payload too large | trmnl validate --file - check size |
| Numbers misaligned | Add value--tnums class |
| Send history | trmnl history --failed |
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversConnect Blender to Claude AI for seamless 3D modeling. Use AI 3D model generator tools for faster, intuitive, interactiv
Effortlessly create 25+ chart types with MCP Server Chart. Visualize complex datasets using TypeScript and AntV for powe
Supercharge AI tools with Kagi MCP: fast google web search API, powerful ai summarizer, and seamless ai summary tool int
Gemini Image Generator uses AI to create images with prompt enhancement, character consistency, and multi-image blending
Explore MCP-UI Widgets, a React UI library offering timers, stopwatches, and unit converters for dynamic, customizable R
Generate and edit images instantly using GPT Image Generator, an advanced AI image generator for creative visual content
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.