@clack/prompts
Opinionated, ready-to-use interactive prompt components for building beautiful command-line apps in Node.js.
Repository Health
Technical Analysis
@clack/prompts is a small, opinionated library of pre-styled interactive prompt components for Node.js command-line applications. It wraps the headless @clack/core primitives with a beautiful, minimal terminal UI and a simple, consistent API, giving you text, password, confirm, date, select, multiselect, autocomplete, path, spinner, and progress components out of the box.
At roughly 80% smaller than comparable prompt libraries, it is designed to be dropped into CLI tools, scaffolding generators, and setup wizards with minimal boilerplate. Every prompt follows the same option-object pattern, ships with first-class TypeScript types, and integrates cancellation handling, grouping, task runners, and streaming log output.
What You Get
- A complete set of prompt components: text, password, confirm, date, select, selectKey, multiselect, groupMultiselect, autocomplete, path, spinner, and progress.
- Utility helpers for intro/outro framing, cancellation guards (isCancel/cancel), prompt grouping, task runners, and streaming log output.
- First-class TypeScript types with a consistent option-object API across every component.
- Automatic Unicode and CI-environment fallbacks so prompts render correctly across terminals.
Common Use Cases
- Building create-* scaffolding CLIs and project generators that ask the user a series of configured questions.
- Adding interactive setup wizards or configuration flows to developer tooling and internal scripts.
- Surfacing long-running work with spinners, progress bars, and task lists during installs or builds.
Under The Hood
Architecture
@clack/prompts is the styled layer of a two-package monorepo: it re-exports headless interaction primitives from @clack/core (isCancel, settings, block, getColumns) and wraps them with terminal styling. Each prompt lives in its own module under packages/prompts/src (text.ts, select.ts, spinner.ts, autocomplete.ts, and so on), all barrel-exported from index.ts. Rendering is driven by ANSI escape sequences via sisteransi for cursor and erase control, Node’s built-in node:util styleText for color, and fast-wrap-ansi / fast-string-width for correct width-aware wrapping. Shared symbols and CI/Unicode fallbacks are centralized in common.ts, so components like spinner.ts degrade gracefully to ASCII frames when Unicode or a CI environment is detected.
Tech Stack
Written entirely in TypeScript (99.99% of the codebase) and shipped ESM-only, built with unbuild. Runtime dependencies are deliberately minimal: @clack/core (workspace peer), fast-string-width, fast-wrap-ansi, and sisteransi. The monorepo uses pnpm workspaces, Biome for lint/format, and requires Node >= 20.12. Versioning and changelogs are managed with Changesets.
Code Quality
Test coverage is strong: packages/prompts/test contains a dedicated Vitest spec for nearly every component (text, select, multi-select, autocomplete, date, password, spinner, path, and more), backed by snapshot fixtures and a vitest-ansi-serializer plus memfs mocks for filesystem-dependent prompts like path. Public options and results are expressed as exported TypeScript interfaces (e.g. SpinnerOptions, SpinnerResult), and default behavior is factored through option destructuring with sensible fallbacks.
API Design
The developer experience is the library’s standout trait. Every prompt is an async function taking a single option object with a shared vocabulary (message, validate, initialValue, options), so the mental model transfers across components. Cancellation is handled with one consistent pattern — the isCancel guard plus the cancel helper — and higher-level ergonomics (group, tasks, stream, log, intro/outro) reduce boilerplate for multi-step flows. Documentation in the README is example-first, and a StackBlitz demo lets users try it without installing.
Used by 37 apps in this directory
agentmemory
AI Agents
Persistent memory for AI coding agents — built on the iii engine, it works across Claude Code, GitHub Copilot CLI, Cursor, Gemini CLI, Codex CLI, and any MCP client, so agents stop needing everything re-explained every session.
Cap
Team Chat · Video Conferencing
Open source Loom alternative with GPU-accelerated recording, instant share links, AI summaries, and full self-hosting via Docker Compose.
claude-mem
AI Agents · AI Development
Give your AI coding agents persistent memory — claude-mem captures everything that happens during sessions, compresses it with AI, and surfaces the right context in every future session automatically.
Cline
AI Code Assistants
An open-source AI coding agent that lives in your editor and terminal — reads and edits your codebase, runs commands, browses the web, and requires human approval for every action by default.
codegraph
Developer Tools · AI Code Assistants
A pre-indexed code knowledge graph that cuts AI tool calls by 58% and token costs by 16% — auto-syncing, 100% local, works with Claude Code, Cursor, Codex, and more.
DenchClaw
CRM · AI Agents
An AI-native CRM you self-host on your own machine, built on the OpenClaw agent framework, with a DuckDB backend and pre-built agent skills for managing contacts, deals, reports, and 500+ outreach integrations from natural-language chat.
evidence
Analytics · Data Engineering
Turn SQL queries and markdown files into polished, interactive data apps and business intelligence reports — no drag-and-drop, no GUI, just code.
Formizee
Forms Surveys
An open-source form backend and builder platform — design forms, collect submissions, and get analytics without hosting your own server, positioned as an alternative to Formspree and Typeform.
HyperFrames
AI Development · AI Design Tools
Turn plain HTML and CSS into deterministic, pixel-perfect MP4 videos — authored by humans or AI agents, rendered by headless Chrome and FFmpeg.