跳至主要内容
小龙虾小龙虾AI
🤖

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).

下载2.3k
星标2
版本1.0.3
general
安全通过
⚙️脚本

技能说明


name: 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).

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

  1. Install/update CLI: Run npm install -g trmnl-cli@latest
  2. Check plugins: Run trmnl plugin - if none, prompt user to add one
  3. Confirm device type (default: TRMNL OG, 2-bit, 800x480)
  4. Read relevant reference docs based on content needs
  5. Generate HTML using TRMNL framework classes
  6. 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
    
  7. 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 Limit
Free2 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:

FileWhen to Read
references/patterns.mdStart here - Common plugin patterns
references/framework-overview.mdDevice specs, e-ink constraints
references/css-utilities.mdColors, typography, sizing, spacing
references/layout-systems.mdFlexbox, grid, overflow engines
references/components.mdTitle bar, dividers, items, tables
references/webhook-api.mdPayload format, troubleshooting
assets/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

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.

ClassUsage
value--xxxlargeHero KPIs
value--xxlargeLarge prices
value--xlargeSecondary metrics
value--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

AttributePurpose
data-fit-value="true"Auto-resize text to fit
data-clamp="N"Limit to N lines
data-overflow="true"Enable overflow management

Best Practices

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

Troubleshooting

ProblemSolution
trmnl: command not foundRun npm install -g trmnl-cli@latest
No plugins configuredRun trmnl plugin add <name> <url>
Webhook failstrmnl config - verify plugin URL
Payload too largetrmnl validate --file - check size
Numbers misalignedAdd value--tnums class
Send historytrmnl history --failed

如何使用「TRMNL Display」?

  1. 打开小龙虾AI(Web 或 iOS App)
  2. 点击上方「立即使用」按钮,或在对话框中输入任务描述
  3. 小龙虾AI 会自动匹配并调用「TRMNL Display」技能完成任务
  4. 结果即时呈现,支持继续对话优化

相关技能