Skip to content

Repository files navigation

knit

KNIT

A terminal UI for agent skills.

CI Go Report Card Release Go License Stars

Overview

knit is a keyboard-first terminal UI for managing npx skills skills.

It keeps the upstream CLI as the source of truth, then adds the part terminals are good at: fast browsing, focused detail views, visible actions, and no command memorization.

knit UI demo

Why knit?

npx skills is already good. It is simple, scriptable, and the right tool when you know the exact command to run.

knit exists for the other half of the workflow: browsing installed skills, discovering new ones, checking source metadata, and managing changes without repeatedly typing long commands. A TUI makes that loop faster because the current state stays on screen.

Features

  • Browse project and global skills in one place.
  • Search installed skills, discovered skills, and sources.
  • Inspect focused skill and source detail views with Esc back navigation.
  • Install, update, uninstall, and prune skills from the TUI.
  • Add, update, remove, and inspect skill sources.
  • Sync skills from a project or global skills lock file.
  • Review session action logs, including command output details.

Requirements

  • Go version matching go.mod.
  • Node.js/npm with npx available.
  • The upstream skills CLI runnable as npx skills ....

Install

From a release (Linux, macOS)

curl -fsSL https://github.com/ntk148v/knit/raw/master/scripts/install.sh | bash

From a release (Windows)

iex "& { $(Invoke-RestMethod https://github.com/ntk148v/knit/raw/master/scripts/install.ps1) }"

The script installs npx skills (first run caches it) then downloads the latest knit binary from GitHub releases to /usr/local/bin (Unix) or ~/.local/bin (Windows).

Override the install directory:

INSTALL_DIR=~/.local/bin curl -fsSL https://github.com/ntk148v/knit/raw/master/scripts/install.sh | bash
$InstallDir = "$env:USERPROFILE\bin"; iex "& { $(Invoke-RestMethod https://github.com/ntk148v/knit/raw/master/scripts/install.ps1) }"

From source

go install ./cmd/knit

Or run without installing:

go run ./cmd/knit

Usage

knit

knit opens with four tabs:

Tab Purpose
Installed View and manage installed skills.
Discover Search available skills and install them.
Sources Manage skill sources.
Logs Inspect actions run in this session.

Common keys

Key Action
Tab / Shift+Tab Switch tabs.
1-4 Jump to a tab.
/ Focus search.
j/k or arrows Move selection.
Enter View selected item or confirm selected action.
Esc Go back, close overlay, or clear search.
? Show help for the current tab.
q / Ctrl+C Quit.

Tab actions

Tab Keys
Installed u update, d uninstall, c actions.
Discover i install, s add source, c actions.
Sources a add, u update, d remove.
Logs Enter detail, c clear.

Sync mode

knit uses the upstream skills lock files directly:

Scope Lock file
Project ./skills-lock.json
Global ~/.agents/.skill-lock.json

Sync a lock file into the current project:

knit sync -f skills-lock.json

Sync a lock file globally:

knit sync -f ~/.agents/.skill-lock.json -g

Until upstream skills sync is implemented, knit sync is the boring bridge: it reads the lock file and installs each entry with npx skills add <source> --skill <name> -y.

Development

go test ./...
go run ./cmd/knit

Project layout:

  • cmd/knit — CLI entrypoint.
  • internal/app — Bubble Tea model, views, and key handling.
  • internal/skillsnpx skills adapter, parsers, and lock-file reader.

Keep changes boring: prefer small UI/state updates, no extra dependencies unless the standard library and current Charm stack cannot do it.

Recording a demo GIF

The project includes a VHS tape to record a UI demo GIF:

scripts/vhs/record.sh

Requires vhs from github.com/charmbracelet/vhs.

The recording uses a fake npx binary and isolated home directory fixtures so it's fully deterministic and independent of your local skills configuration.

About

manage skills with ease

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages