Agent skill

Limoni Zest

by thebanri in thebanri/limoni

zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do.

Apache-2.0Auto-check passedAgent Workflows

Install Limoni Zest

skills CLI
$ npx skills add thebanri/limoni --skill limoni-zest -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install thebanri/limoni limoni-zest --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/thebanri/limoni.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/limoni-zest .claude/skills/limoni-zest && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
limoni-zest
GitHub stars
152
Token cost
~877 tokens
SKILL.md length
470 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do.

  • Works in 4 steps: In process: internal/zestapp/ui_test.go… → A real terminal: run it in kitty with… → Over MCP: build with -tags limoni_debug,… → …
  • Tasks that involve MCP servers
  • SKILL.md covers The shape, Verification, in four places, Deliberate limits and Assets
  • Calls go

What it does

Limoni Zest is an agent skill from thebanri/limoni. zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do. Load before changing cmd/zest, internal/zestapp or widgets/logview.go.

Its SKILL.md is about 880 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol and WebAssembly. The repository describes itself as: Terminal UI engine for Go that tests can click and AI agents can drive (MCP). Zero-allocation rendering, immediate mode + Elm architecture, 3D, images, charts, accessibility… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve MCP servers

Example prompts

  • “/limoni-zest”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. In process: internal/zestapp/ui_test.go and follow_test.go drive the
  2. A real terminal: run it in kitty with --listen-on, then
  3. Over MCP: build with -tags limoni_debug, run with -socket, and drive
  4. In the browser: scripts/verify-wasm.mjs (which Pages runs before

What it can do on your machine

Read from SKILL.md and the folder at commit 025c5d5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Limoni Zest loads about 877 tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 470 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~877

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from thebanri/limoni at commit 025c5d5, republished under its Apache-2.0 licence (© thebanri). 470 words, ~877 tokens.

Download SKILL.mdSave it as .claude/skills/limoni-zest/SKILL.md (or your agent's skills folder).
name
limoni-zest
description
zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do. Load before changing cmd/zest, internal/zestapp or widgets/logview.go.

zest: the flagship log viewer

cmd/zest is the command, internal/zestapp the code (so the WebAssembly playground can run the same viewer), widgets.LogView the pane itself.

The shape

readLines / generateDemo  →  store  →  view (filter)  →  widgets.LogView
        (goroutine)          chunks     idx []int32        draws what fits
  • store appends line text into fixed 1 MiB chunks that are never modified afterwards, so Line(i) hands out unsafe.String over those bytes. Nothing is copied per line or per frame; that is what keeps drawing a million-line log allocation-free. A line bigger than a chunk gets a chunk of its own. Memory is the text plus 16 bytes per line.
  • detectLevel reads the level from JSON ("level", "lvl", "severity"), logfmt (level=warn) and plain text, looking at the first 200 bytes only. An indented line with no level of its own inherits the previous line's, so filtering to errors keeps a stack trace whole.
  • view is the filter. Scanning runs in a goroutine in batches of 200,000 lines and calls wake after each, so a keystroke is never blocked; a filter change bumps gen and an in-flight scan of the old filter discards its batch. Without a filter it is a pass-through and costs nothing.
  • LogView draws only the rows on screen, follows new lines (tail -f), and stops following when the reader scrolls or clicks a line — a click sets Selected directly, and without that check the chosen line scrolled away. LineNumberSource is how a filtered view shows original line numbers.
Show full SKILL.md (242 more words)Show less

Verification, in four places

  1. In process: internal/zestapp/ui_test.go and follow_test.go drive the whole viewer through its semantic tree with uitest.
  2. A real terminal: run it in kitty with --listen-on, then kitty @ get-text reads the rendered screen back and kitty @ send-text types. This is how the load times were measured (1,000,000 lines, 67 MiB, 0.54 s to screen, 123 MB RSS).
  3. Over MCP: build with -tags limoni_debug, run with -socket, and drive it with the real limoni-mcp binary or a headless agent. Drain the PTY on a thread or the app blocks writing and looks hung.
  4. In the browser: scripts/verify-wasm.mjs (which Pages runs before deploying) opens the "Logs · zest" scene under Node, filters to errors, and checks the emitted bytes. Look for fragments, not whole lines: at 100 columns the terminal cuts them off.

ZEST_MEASURE=1 go test ./internal/zestapp -run TestPreloadSpeed -v prints the generate-and-store time for a million lines (0.62 s here).

Deliberate limits

  • One input at a time; several files are not merged by timestamp.
  • The filter is a substring, not a regular expression.
  • No pipe on Windows: keys need /dev/tty. Pass a file.
  • The demo generator is seeded, so its content is reproducible — that is what makes it usable as ground truth for agent runs.

Assets

assets/zest.gif is recorded by scripts/record_zest.py (runs zest in a PTY, types at a human pace, writes an asciicast) and rendered with agg. Record with LIMONI_REP=0: agg's terminal emulator does not implement REP.

© thebanri, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/limoni-zest of thebanri/limoni.

Open the folder on GitHubat commit 025c5d5

Compare with similar skills

Limoni Zest next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Limoni Zest compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Limoni Zest this skillthebanri/limoni152—~877Automated safety check: PassApache-2.0
Meridian MCPMeridiona/meridian396—~967Automated safety check: NotesCustom licence
Build And Profilingpikax/verter113—~4.3kAutomated safety check: PassMIT
Creating Zed Extensionspr-pm/prpm122—~3.1kAutomated safety check: NotesMIT
Chrome Devtools MCPmanagedcode/dotnet-skills486—~2.2kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0

Similar skills

  • Meridian MCP

    Meridiona/meridian

    Build, configure, and debug the Meridian MCP server. An agent skill from Meridiona/meridian.

    396 GitHub stars~967 tokensUpdated 4 days ago
    Agent WorkflowsAuto-check: notes
  • Build dependency chains, rebuild sequences, profiling with MCP, and Analysis MCP server setup for Verter

    113 GitHub stars~4.3k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • A skill your agent uses when creating Zed extensions with custom slash commands, language support, themes, or MCP servers - provides Rust/WASM extension structure, slash command API…

    122 GitHub stars~3.1k tokensUpdated 4 days ago
    Agent WorkflowsAuto-check: notes
  • Chrome Devtools MCP

    managedcode/dotnet-skills

    Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client.

    486 GitHub stars~2.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed

More from thebanri/limoni

  • Limoni Agent Surface

    thebanri/limoni

    How Limoni exposes applications to AI agents and tests — the semantic tree, the automation socket, cmd/limoni-mcp, and the uitest package.

    152 GitHub stars~2.8k tokensUpdated 5 days ago
    Auto-check passed
  • Limoni Performance

    thebanri/limoni

    Where allocations hide in a Limoni frame, how to find them, how to compare benchmarks honestly, and the release and CI checks that catch what one machine cannot.

    152 GitHub stars~1.4k tokensUpdated 5 days ago
    Auto-check passed
  • Limoni Text Rendering

    thebanri/limoni

    How Limoni measures and stores text — UAX. An agent skill from thebanri/limoni.

    152 GitHub stars~1.9k tokensUpdated 5 days ago
    Auto-check passed

Categories

Questions about Limoni Zest

What does Limoni Zest do?

zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do. Limoni Zest is an agent skill from thebanri/limoni. zest, the log viewer built on Limoni — how its store, filtering and LogView fit together, how it is verified (in-process, in kitty, over MCP, in the browser), and what it deliberately does not do.

When should I use Limoni Zest?

Limoni Zest fits situations like: tasks that involve MCP servers.

How do I install Limoni Zest in Claude Code?

Run `npx skills add thebanri/limoni --skill limoni-zest -a claude-code`. Or copy the skill folder (.claude/skills/limoni-zest in thebanri/limoni) into .claude/skills/limoni-zest in your project. Claude Code loads it when a task matches its description.

How do I install Limoni Zest in Codex?

Run `npx skills add thebanri/limoni --skill limoni-zest -a codex`. Or copy the skill folder (.claude/skills/limoni-zest in thebanri/limoni) into .agents/skills/limoni-zest in your project. Codex loads it when a task matches its description.

Can I use Limoni Zest in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add thebanri/limoni --skill limoni-zest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/limoni-zest, .gemini/skills/limoni-zest, .github/skills/limoni-zest and .opencode/skills/limoni-zest in your project.

What does Limoni Zest need to run?

Going by SKILL.md and its folder, Limoni Zest needs the command-line tools its instructions call (go).

Does Limoni Zest access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Limoni Zest safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Limoni Zest use?

Limoni Zest is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Limoni Zest use?

About 877 tokens (SKILL.md is roughly 3.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Limoni Zest?

Skills that share tags, products or a category with Limoni Zest: Meridian MCP (Meridiona/meridian, 396 stars), Build And Profiling (pikax/verter, 113 stars), Creating Zed Extensions (pr-pm/prpm, 122 stars) and Chrome Devtools MCP (managedcode/dotnet-skills, 486 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Limoni Zest?

thebanri (a GitHub user) maintains it in thebanri/limoni, which has 152 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 5, 2026.

Source: thebanri/limoni on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.