zentable

Render structured table data as high-quality PNG images using Headless Chrome. Use when: need to visualize tabular data for chat interfaces, reports, or social media. NOT for: simple text tables that don't need visualization.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "zentable" with this command: npx skills add con2000us/zentable

ZenTable Skill

Render structured table data into high-quality PNG images.

TL;DR

ZenTable turns messy table-like content into readable, decision-ready table outputs for both mobile (Discord-first) and desktop.

Accepted inputs

  • text-based content (raw text tables, long agent responses)
  • structured JSON
  • screenshots / real-world photos (via OCR-assisted extraction when needed)

Core capabilities

  • CSS + PIL rendering
  • sorting / filtering / pagination
  • threshold-based highlighting
  • optional PNG + TXT dual output (--both)

Runtime & security note

This skill runs local scripts and depends on local runtime binaries (python3, google-chrome). Review code and dependencies before running in sensitive environments.

Naming convention

  • Canonical code name: zentable (lowercase)
  • UI / brand label: ZenTable
  • zeble* / zenble* are legacy compatibility aliases
  • Reference: NAMING_MIGRATION.md (repository document)

When to use

✅ Use this skill when:

  • You need a visual table image instead of plain text
  • You need polished output for chat/report/social sharing
  • The dataset is large enough that plain text is hard to read
  • You need a specific visual theme (iOS-like, dark, compact, etc.)

❌ Do not use this skill when:

  • The table is tiny and plain text is enough
  • The user explicitly asks for no image output
  • The user needs an editable spreadsheet format (CSV/Excel)

Capability matrix (SkillHub release)

CapabilityStatusNotes
CSS output✅ StablePrimary release path; default minimal_ios_mobile + width=450
PIL output✅ StableSafe fallback when Chrome is unavailable
ASCII output⚠️ Beta / ExperimentalWorks, but alignment can drift cross-platform due to font and whitespace behavior

Known limitations

  • ASCII output is sensitive to platform font fallback and whitespace handling.
  • Create separate calibration profiles per platform; do not share blindly.
  • --both already includes text-theme fallback to default when no text theme exists.
  • Discord plain text collapses repeated normal spaces; Unicode spacing characters may be required for spacing preservation.
  • This beta was validated primarily on Discord; other chat platforms may require agent-side output adaptation (image/message formatting differences).

Zx shorthand policy (project rule)

When user input is Zx, treat it as a strong render intent:

  1. Execute rendering directly by default (no preliminary Q&A).
  2. Default path: CSS + minimal_ios_mobile + width=450.
  3. Ask follow-up only under high uncertainty:
    • no usable source data in current/previous context,
    • intent does not look like table rendering,
    • critical fields are missing and output would likely be wrong.
  4. If platform supports images, return the image directly (not link-only).

Data source priority for Zx:

  1. current message image OCR
  2. current message text-to-table
  3. previous message image OCR
  4. previous message text-to-table

Syntax sugar → canonical mapping

SugarCanonical keyNormalizationFinal renderer args
--width N / --w Nwidthpositive int--width N
--transpose / --cctransposeboolean--transpose
--ttkeep_theme_alphaboolean--tt
--per-page N / --pp Nper_pagepositive int--per-page N
--page ... / --p ...page_specN / A-B / A- / allexpanded by table_renderer.py
--allpage_specequivalent to allexpanded by table_renderer.py
--text-scale V / --ts Vtext_scaleenum/ratio--text-scale V
--sort SPECsort_specsingle/multi-key--sort SPEC
--asc / --descsort_default_dirdefault direction--asc / --desc
--f SPEC / --filter SPECfiltersrepeatable filter--f SPEC
--smart-wrapsmart_wraptrue--smart-wrap
--no-smart-wrap / --noswsmart_wrapfalse--no-smart-wrap
--theme NAME / -t NAMEthemetheme id--theme NAME
--both / --booutput_bothboolean--both
--pin KEYSpin_keyspersist defaults--pin
--pin-resetpin_resetreset pinned defaults--pin-reset

Pinned default baseline:

  • theme=minimal_ios_mobile
  • width=450
  • smart_wrap=true
  • per_page=15

page_spec rules

  • N: page N only
  • A-B: inclusive range A..B
  • A-: from A to last page
  • all: all pages
  • if omitted: default preview pages 1-3

Canonical payload example

{
  "theme": "minimal_ios_mobile",
  "width": 900,
  "transpose": false,
  "keep_theme_alpha": false,
  "per_page": 15,
  "page_spec": "2-",
  "sort_spec": "score:desc,name:asc",
  "sort_default_dir": "asc",
  "filters": ["col:!note,attachment", "row:status!=disabled;score>=60"],
  "text_scale": "auto",
  "smart_wrap": true,
  "output_both": false
}

Command examples

# run from repository root

# basic CSS output
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme minimal_ios_mobile --width 900 --text-scale large --page 1

# transpose + disable smart wrap
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme compact_clean --transpose --no-smart-wrap --page 1

# page range expansion (2-4)
python3 skills/zentable/table_renderer.py - /tmp/out.p2.png --per-page 12 --page 2
python3 skills/zentable/table_renderer.py - /tmp/out.p3.png --per-page 12 --page 3
python3 skills/zentable/table_renderer.py - /tmp/out.p4.png --per-page 12 --page 4

# PNG + ASCII side output
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme mobile_chat --both

Validation checklist (minimum)

  • python3 -m py_compile scripts/zentable_render.py
  • CSS smoke output succeeds
  • PIL smoke output succeeds
  • --pin, --pin-reset, --both verified
  • Golden tests pass when relevant

Release positioning

Current channel: beta. ASCII remains beta/experimental for SkillHub release.

Support / Contact

  • GitHub Issues: https://github.com/con2000us/zenTable/issues
  • Maintainer: @con2000us (Discord)
  • Bug report checklist:
    • input type (text / screenshot / photo / json)
    • expected vs actual output
    • platform (Discord/mobile/desktop)
    • command/options used

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Gougoubi Activate Conditions

Activate all CREATED conditions under a Gougoubi proposal by voting from a BNB address, with deterministic checks for committee membership and auto-staking m...

Registry SourceRecently Updated
06
Profile unavailable
Automation

Gougoubi Create Condition

Create Gougoubi proposal conditions from minimal input (proposalId + conditionName) with deterministic defaults for deadline/tradeDeadline, validation, and t...

Registry SourceRecently Updated
011
Profile unavailable
Automation

Gougoubi Create Prediction

Create public prediction proposals on Gougoubi with deterministic validation, approval, and transaction submission. Use when creating/publishing prediction m...

Registry SourceRecently Updated
152
Profile unavailable