Skip to content

PromptPlus

Interactive command-line toolkit for .Net core with powerful controls and commands to create professional console applications.

Install

$git clone https://github.com/FRACerqueira/PromptPlus

Install command taken from the project's README or registry entry. Always review code before running it.

PromptPlus

PromptPlus transforms your console apps with a modern .NET library that delivers polished, interactive experiences — from text input with history and searchable lists to masked fields, date/time pickers, file browsers, progress bars, charts, and more — all streamlined through one sleek fluent API.

🤖 New: pick the right ConsolePlus/PromptPlus layer and control conversationally with the ConsolePlus + PromptPlus Plugin — works with Claude Code or GitHub Copilot to choose the layer, check whether an interactive control can run in your context, pick the right one of PromptPlus's 21 controls, implement it, and audit existing usage. Learn more ↓


Highlights

  • 20+ interactive controls — from a simple key-press to multi-column tables and tree browsers
  • 6 output-only widgets — render sliders, calendars, banners, charts and more without blocking
  • Fluent API — every control is configured with readable method chains
  • Two-layer config — set defaults once with PromptPlus.Config, override per control with .Options()
  • Abort anywhere — Esc aborts any control; result carries an IsAborted flag
  • History persistence — last confirmed value saved and pre-loaded automatically
  • Terminal-safe — auto-detects size, re-renders on resize, enforces 80×10 minimum gracefully
  • Cross-platform — Windows, Linux, macOS; .NET 8, 9 and 10
  • Demo Mode — script keyboard input to auto-record GIFs of your controls, no human needed (AutoDemoSamples)

Installation

dotnet add package PromptPlus

Or via the Package Manager Console:

Install-Package PromptPlus

Quick Start

using PromptPlusLibrary;

// Ask for a name
var nameResult = PromptPlus.Controls.Input("Your name").Run();
if (nameResult.IsAborted) return;

// Choose a color
var colorResult = PromptPlus.Controls
    .Select<string>("Favorite color")
    .AddItems(["Red", "Green", "Blue"])
    .Run();

// Deconstruct result
var (color, aborted) = colorResult;
if (!aborted)
    PromptPlus.Console.WriteLine($"Hello {nameResult.Content}, you chose {color}!");

💡 Tip: Every control returns ResultPrompt<T>. Use .Content for the value, .IsAborted to detect Esc, or deconstruct with var (value, aborted) = result.


Two-Layer Configuration

Layer 1 — Global defaults (applied to all controls)

using PromptPlusLibrary;

PromptPlus.Config.PageSize = 8;
PromptPlus.Config.HideAfterFinish = true;

Layer 2 — Per-control override (.Options() fluent method)

PromptPlus.Controls
    .Input("Notes")
    .Options(o => o
        .HideAfterFinish(false)
        .ShowTooltip(false))
    .Run();

Per-control settings always win over global config. See docs/global-behaviors.md for the full property reference.

Persist config to disk

// Write PromptPlus.config to the current directory
PromptPlus.Config.ToFile(".");

On next run, PromptPlus automatically reads PromptPlus.config from the working directory.


Global Behaviors

Similar plugs

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local…

Why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.

The 1st Collaborative AI Design Agent Workspace. Local-first and open source. Create prototypes, websites, apps, dashboards, presentations, images, and videos with your team…