# bombshell-dev/clack

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/bombshell-dev-clack).**

7,418 stars · 172 forks · TypeScript · other

## Links

- GitHub: https://github.com/bombshell-dev/clack
- Homepage: https://bomb.sh/docs/clack/basics/getting-started/
- awesome-repositories: https://awesome-repositories.com/repository/bombshell-dev-clack.md

## Topics

`cli` `command-line` `command-line-app` `node` `prompt` `prompts`

## Description

Clack is a Node.js CLI framework and prompt library designed for building stylized, interactive command-line user interfaces. It provides a toolkit for creating terminal applications that collect structured user input and display formatted information.

The library includes a set of interactive terminal UI components, such as validated input fields for text and passwords, searchable selection menus with autocomplete, and grouped options for user choice. It also provides mechanisms for process visualization, including loading spinners, progress bars, and sequential task lists to communicate background activity.

The framework covers terminal user interface design through the use of boxed text, notes, and structured layouts to improve readability. These capabilities are supported by an architecture that handles ANSI-based rendering and asynchronous input collection.

## Tags

### Development Tools & Productivity

- [Interactive CLI Prompts](https://awesome-repositories.com/f/development-tools-productivity/interactive-cli-prompts.md) — Provides a comprehensive library of interactive CLI prompts for collecting structured user input. ([source](https://cdn.jsdelivr.net/gh/bombshell-dev/clack@main/README.md))
- [Interactive Menus](https://awesome-repositories.com/f/development-tools-productivity/interactive-menus.md) — Ships interactive selection menus featuring searchable autocomplete and grouped options for user choice. ([source](https://bomb.sh/docs/clack/basics/getting-started/))
- [Interactive Terminal Menus](https://awesome-repositories.com/f/development-tools-productivity/interactive-terminal-menus.md) — Implements searchable selection menus and autocomplete lists for choosing options in terminal applications.
- [Screen Buffers](https://awesome-repositories.com/f/development-tools-productivity/memory-buffering-utilities/memory-buffering-pipelines/direct-buffer-processing/formatted-output-buffers/screen-buffers.md) — Uses screen buffers to accumulate UI changes in memory and prevent flickering during terminal updates.
- [Interactive CLI Tooling](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/interactive-cli-tooling.md) — Offers a framework for building command-line tools with stylized interfaces and real-time updates.
- [Visual Layout Formatters](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/cli-tooling/data-io-transformation/cli-output-formatters/visual-layout-formatters.md) — Renders structured information using boxed text, notes, and streamed multi-line output for improved readability. ([source](https://bomb.sh/docs/clack/basics/getting-started/))

### Graphics & Multimedia

- [Terminal Interaction](https://awesome-repositories.com/f/graphics-multimedia/immersive-interactive-systems/user-interaction/terminal-interaction.md) — Provides a kit of terminal interaction components including spinners, progress bars, and structured text blocks.

### Operating Systems & Systems Programming

- [Input Event Loops](https://awesome-repositories.com/f/operating-systems-systems-programming/input-event-loops.md) — Employs a non-blocking input event loop to capture raw keystrokes for immediate UI responsiveness.
- [Interactive Input Collection](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/interactive-input-collection.md) — Provides validated forms and interactive prompts for collecting text, passwords, and file paths.
- [ANSI Escape Sequence Renderers](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-management/output-rendering-engines/ansi-escape-sequence-renderers.md) — Implements ANSI escape sequences to control text styling, colors, and cursor positioning in the terminal.

### System Administration & Monitoring

- [CLI Process Visualizations](https://awesome-repositories.com/f/system-administration-monitoring/activity-monitors/activity-progress-monitors/task-progress-monitors/visual-progress-indicators/cli-process-visualizations.md) — Communicating background activity to users through loading spinners, progress bars, and sequential task lists.

### User Interface & Experience

- [State-Driven UI Rendering](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers/ui-state-recomposition/state-driven-ui-rendering.md) — Updates the terminal display by reconciling current and desired screen states to overwrite specific lines.
- [Input Collection Components](https://awesome-repositories.com/f/user-interface-experience/input-collection-components.md) — Provides validated input fields and masks for collecting text, passwords, dates, and file paths. ([source](https://bomb.sh/docs/clack/basics/getting-started/))
- [Status Indicators](https://awesome-repositories.com/f/user-interface-experience/status-indicators.md) — Includes loading spinners, progress bars, and sequential task lists to indicate background process status. ([source](https://bomb.sh/docs/clack/basics/getting-started/))
- [Terminal User Interfaces](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces.md) — Provides tools to build, style, and manage structured layouts and interactive text-based interfaces.

### Web Development

- [Node.js Terminal Frameworks](https://awesome-repositories.com/f/web-development/terminal-layout-engines/node-js-terminal-frameworks.md) — A comprehensive Node.js framework for creating stylized, interactive terminal user interfaces.

### Programming Languages & Runtimes

- [Promise-Based Flow Control](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtimes/asynchronous-execution-engines/asynchronous-control-flows/promise-based-flow-control.md) — Wraps synchronous terminal interactions in promises to enable asynchronous control flow during user input.

### Software Engineering & Architecture

- [Extensible Component Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/modular-design-patterns/extensible-component-architectures.md) — Decouples visual prompt and spinner presentation from the underlying input collection and validation logic.
