yakit-ui-binding

Render logs, progress bars, tables, and charts from yak scripts in the Yakit UI.

10|1|Updated Jun 16, 2026
One-click install
npx skills add https://github.com/yaklang/yak-skills --skill yakit-ui-binding-yaklang
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: yakit-ui-binding
Source: https://github.com/yaklang/yak-skills/tree/main/skills/yakit-ui-binding
Command: npx skills add https://github.com/yaklang/yak-skills --skill yakit-ui-binding-yaklang

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Yak scripts running inside the Yakit engine need a way to display structured results in the desktop UI, but the mechanism connecting yakit.* library calls to frontend components via gRPC ExecResult streams is not obvious. This Skill explains the full pipeline so plugin authors can make the interface show logs, progress bars, tables, graphs, status cards, and website trees. ## Core Features & Use Cases - UI Output API Reference: Covers yakit.Info/Warn/Error/Success logging, yakit.SetProgress progress bars, yakit.NewTable/EnableTable/TableData for static and dynamic tables, NewLineGraph/NewBarGraph/NewPieGraph/NewWordCloud charts, StatusCard, EnableWebsiteTrees, and text tabs. - Message Protocol Internals: Documents the YakitMessage JSON structure, ExecResult streaming, and how the frontend useHoldGRPCStream hook routes messages by type and level to UI components. - Use Case: When writing a port-scan plugin, use yakit.EnableTable plus yakit.TableData to stream results into a live table, yakit.StatusCard for key metrics, and yakit.SetProgress for a progress bar, all updating in real time. ## Quick Start Ask the AI to write a yak plugin that displays scan results in a Yakit table with a progress bar and status card using the yakit library functions.

Frequently Asked Questions about yakit-ui-binding

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I display a table in Yakit from a yak script?▼

Use yakit.EnableTable(name, columns) to declare a dynamic table, then yakit.TableData(name, data) to write rows as maps keyed by column name. For one-shot output, build a static table with yakit.NewTable and table.Append, then send it via yakit.Output.

How do I show a progress bar in a Yakit plugin?▼

Call yakit.SetProgress(f) with a float between 0.0 and 1.0 to update the main progress bar. Use yakit.SetProgressEx(id, f) to maintain multiple independent progress bars identified by id.

Where does yakit.Info output go when running from the command line?▼

Outside the Yakit engine, yakit.* functions use a VirtualYakitClient whose send callback prints ExecResult messages to stdout via log.Info. So yakit.Info behaves like a normal log print and scripts remain testable with yak xxx.yak.

Why does yakit.Success not format my string with %d?▼

yakit.Success, yakit.Text, yakit.Code, and yakit.Markdown do not perform printf formatting. Build the string first with sprintf or an f-string, then pass the finished value; only yakit.Info, Warn, and Error accept format strings.

Why is my dynamic table empty after calling yakit.TableData?▼

TableData only works after the table has been declared with yakit.EnableTable using the same name. Also ensure row data values are flat primitives, since the frontend filters out rows containing nested objects or arrays.