by vuejs-ai
The Vue framework for terminal UIs. SFC & JSX, Yoga flexbox, HMR, and testing out of the box.
# Add to your Claude Code skills
git clone https://github.com/vuejs-ai/vue-tuiLast scanned: 6/20/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-20T07:50:19.838Z",
"npmAuditRan": false,
"pipAuditRan": true,
"promptInjectionRan": true
}vue-tui is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by vuejs-ai. The Vue framework for terminal UIs. SFC & JSX, Yoga flexbox, HMR, and testing out of the box. It has 319 GitHub stars.
Yes. vue-tui passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/vuejs-ai/vue-tui" and add it to your Claude Code skills directory (see the Installation section above).
vue-tui is primarily written in TypeScript. It is open-source under vuejs-ai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh vue-tui against similar tools.
No comments yet. Be the first to share your thoughts!
Public beta — the
@vue-tui/runtimeAPI is stabilizing toward 1.0; dev-mode HMR is still experimental. Bug reports welcome.
vue-tui is a Vue-native application framework for interactive terminal UIs. Build with components, develop with HMR, test with confidence.
<template>, TSX, or both@vue-tui/vite plugin (npm run dev)There are two ways to use vue-tui — scaffold a full project, or drop the runtime into an existing one.
A ready-to-develop setup: Vue SFCs and a terminal HMR dev server via the @vue-tui/vite plugin.
npx tiged vuejs-ai/vue-tui-starter/vite my-app
cd my-app
npm install
npm run dev # in-process terminal dev server with HMR
Edit src/app.vue and watch the terminal update instantly.
@vue-tui/runtime is a standalone Vue renderer, independent of the @vue-tui/vite plugin. Author components as SFCs and mount them with createApp, using your own build:
<!-- app.vue -->
<script setup lang="ts">
import { shallowRef } from "vue";
import { Box, Text, useInput } from "@vue-tui/runtime";
const count = shallowRef(0);
useInput((input) => {
// "+" is Shift+"=" on most keyboards, so accept the bare "=" too.
if (input === "+" || input === "=") count.value++;
if (input === "-") count.value--;
});
</script>
<template>
<Box>
<Text>Count: </Text>
<Text bold color="green">{{ count }}</Text>
<Text dimColor> (+/= and - to change)</Text>
</Box>
</template>
// main.ts
import { createApp } from "@vue-tui/runtime";
import App from "./app.vue";
createApp(App).mount();
@vitejs/plugin-vue, or use JSX with @vitejs/plugin-vue-jsx.@vue-tui/vite plugin: plugins: [vue(), vueTui()].| Package | Description |
|---|---|
@vue-tui/runtime |
The core framework — Vue 3 renderer for the terminal with components (Box, Text, Static, etc.), composables (useInput, useFocus, useApp, etc.), and yoga-based flexbox layout. API stabilizing. |
@vue-tui/vite |
Vite plugin — add vueTui() to vite.config.ts for an in-process terminal dev server with HMR (npm run dev). Dev only; the production build is a plain tsdown config that bundles the app into one self-contained Node file (see the starter and examples/*/tsdown.config.ts). Experimental; may change. |
@vue-tui/testing |
Deterministic test host — model terminal or stream conditions, inspect resolved session facts and content commits, and assert the terminal-emulated screen |
@vue-tui/components |
High-level components built on the runtime primitives — currently <ScrollBox> and <Spinner>. |
| Example | Description |
|---|---|
basic-template |
Vue SFC with <template> syntax |
basic-jsx |
Same app in TSX |
coding-agent |
AI coding agent with LLM streaming and interactive UI |
flappy-bird |
Physics-based terminal game with reactive state and borders |
mouse |
Full-screen targeted mouse events and dragging |
scroll-box |
Bounded viewport with app-controlled scrolling |
| Component | Description |
|---|---|
<Box> |
Flexbox container — direction, wrap, align, justify, gap, padding, margin, borders, background |
<Text> |
Styled text — color, bold, italic, underline, strikethrough, dimColor, wrap/truncate modes |
<Spacer> |
Expands to fill available space (flex-grow: 1) |
<Newline> |
Inserts line breaks (configurable count) |
<Static> |
Renders inline items once above the redrawn region; fullscreen does not retain them |
<Transform> |
Applies a string transform function to each rendered line |
<Box> and <Text> also support targeted @mousedown, @mouseup, @click, and @wheel handlers in full-screen mode.
The @vue-tui/components package adds higher-level components composed from the runtime primitives — published separately from the core.
| Component | Description |
|---|---|
<ScrollBox> |
Bounded sticky-bottom viewport; the app controls scrolling through its imperative handle |
<Spinner> |
Animated loading spinner — built-in dots/line presets or custom frames, optional label |
| Composable | Description |
|---|---|
useInput(handler, opts?) |
Handle keyboard input — receives (input, key) with modifier and arrow key detection |