uivs is a pure HTTP CLI for Uiverse components.
It fetches component HTML/CSS and converts it into React, Vue, Svelte, or Lit code. No Playwright, no browser, no Chromium download.
English | 简体中文
- Fetch raw HTML or CSS from a Uiverse component
- Convert components to React, Vue, Svelte, or Lit
- Search by tag, style, or creator name
- Print JSON metadata or save code to a file
- Use a proxy when Uiverse is blocked in your network
Requires Node.js 18+, plus either uv or a Python
3.10+ interpreter that can import curl_cffi.
npm install -g @cissibot/uivsWith uv, that is the whole install. The Python helpers declare their dependency
inline (PEP 723), so uv run provisions curl_cffi on first use. Everything uv
writes goes to its own directories — uv cache dir and uv python dir, both
XDG paths by default — never into your project.
Or install from the repository:
npm install -g .An interpreter that already has curl_cffi is used directly, and uv is never
reached:
pip install curl_cffiSet UIVERSE_PYTHON when the interpreter to use is not the python3 on your
PATH — a virtualenv, say. It outranks every other runner:
export UIVERSE_PYTHON=/path/to/pythonuivs html NorthFishHasNa/soft-turtle-49
uivs css NorthFishHasNa/soft-turtle-49
uivs react NorthFishHasNa/soft-turtle-49
uivs vue NorthFishHasNa/soft-turtle-49
uivs svelte NorthFishHasNa/soft-turtle-49
uivs lit NorthFishHasNa/soft-turtle-49Search by tag or creator:
uivs search button --limit 10
uivs search rounded --limit 5
uivs search NorthFishHasNa --limit 10Full URLs are also accepted:
uivs react https://uiverse.io/NorthFishHasNa/soft-turtle-49Save code to a file:
uivs react NorthFishHasNa/soft-turtle-49 /tmp/button.jsx
uivs vue NorthFishHasNa/soft-turtle-49 /tmp/button.vueInspect metadata or tags:
uivs info NorthFishHasNa/soft-turtle-49
uivs tags NorthFishHasNa/soft-turtle-49| Command | Description |
|---|---|
uivs html <input> [output] |
Fetch raw HTML |
uivs css <input> [output] |
Fetch raw CSS |
uivs react|jsx|tsx <input> [output] |
React component (jsx / tsx aliases) |
uivs vue <input> [output] |
Vue SFC |
uivs svelte <input> [output] |
Svelte component |
uivs lit <input> [output] |
Lit component |
uivs search <query> [--limit N] |
Search by tag, style, or creator (N is 1-100, default 10) |
uivs info <input> |
Print metadata: type, title, description, author, and tags |
uivs tags <input> |
Print tag list only |
uivs --help / --version |
Show help or version |
Default output is JSON and includes the component type and tags.
{
"target": "react",
"language": "jsx",
"username": "NorthFishHasNa",
"slug": "soft-turtle-49",
"url": "https://uiverse.io/NorthFishHasNa/soft-turtle-49",
"type": "button",
"tags": ["button", "rounded", "button", "text", "rectangular", "click", "navy"],
"isTailwind": false,
"postId": "aa4a45a2-a962-4bdc-a4c9-a681aea46ee8",
"length": 894,
"code": "..."
}When an output file is passed, the code is written to the file and omitted from the printed JSON. The JSON always goes to stdout and status or error messages go to stderr, so uivs ... | jq stays clean.
Search results are JSON too, with query, count, results, page, and hasNextPage.
Invalid input fails with a message on stderr and exit code 1: an unsupported language, an unknown option, or a --limit outside 1-100.
If Uiverse is blocked in your network, pass a proxy:
uivs --proxy <proxy-url> react NorthFishHasNa/soft-turtle-49Or set one of the following environment variables:
UIVERSE_PROXY
HTTPS_PROXY
HTTP_PROXY
uivs runs the Python helpers through python3, then python, then uv run. Set UIVERSE_PYTHON to point at a specific interpreter.
The repository also ships a companion agent skill for coding agents. Install it globally:
npx skills add DevSissi/uiverse-tool --skill uivs-cli -g -yThe CLI is fully usable without the skill.
MIT