# caique > Prompts that are flags first: an agent passes the answer up front, and a non-TTY caller gets an error naming the flag, never a prompt that waits. No dependency outside the burgee family. Drop-in path for @inquirer/core. ## Documentation - [caique/ask](https://caique.interlace.tools/docs/api/ask): Every export of caique/ask, with its signature and doc comment: ask, projection, plus 6 types. - [caique/binding](https://caique.interlace.tools/docs/api/binding): Every export of caique/binding, with its signature and doc comment: resolvePrompts, localise, plus 4 types. - [caique/clack](https://caique.interlace.tools/docs/api/clack): Every export of caique/clack, with its signature and doc comment: CANCEL_SYMBOL, formatInstructionFooter, isCancel, isCI, isTTY, MULTISELECT_INSTRUCTIONS and 54 more, plus 26 types. - [caique/decide](https://caique.interlace.tools/docs/api/decide): Every export of caique/decide, with its signature and doc comment: decide, plus 4 types. - [caique/editor](https://caique.interlace.tools/docs/api/editor): Every export of caique/editor, with its signature and doc comment: editor, submissions, EDITOR_KEYS, plus 8 types. - [caique](https://caique.interlace.tools/docs/api): Every export of caique, with its signature and doc comment: processRuntime, ask, projection, resolvePrompts, localise, decide and 17 more, plus 27 types. - [caique/inquirer](https://caique.interlace.tools/docs/api/inquirer): Every export of caique/inquirer, with its signature and doc comment: usePrefix, useKeypress, createPrompt, Separator, AbortPromptError, CancelPromptError and 19 more, plus 10 types. - [caique/inquirer/prompts](https://caique.interlace.tools/docs/api/inquirer/prompts): Every export of caique/inquirer/prompts, with its signature and doc comment: Separator, checkbox, editor, confirm, input, number and 5 more, plus 25 types. - [caique/keys](https://caique.interlace.tools/docs/api/keys): Every export of caique/keys, with its signature and doc comment: decode, canonical, specOf, bindings, match, canReadKeys and 2 more, plus 5 types. - [caique/locale](https://caique.interlace.tools/docs/api/locale): Every export of caique/locale, with its signature and doc comment: checkLocales, render, sayFor, plus 2 types. - [caique/plugin](https://caique.interlace.tools/docs/api/plugin): Every export of caique/plugin, with its signature and doc comment: validate, register, reset, registered, widgets, widgetFor and 4 more, plus 5 types. - [caique/prompt-for](https://caique.interlace.tools/docs/api/prompt-for): Every export of caique/prompt-for, with its signature and doc comment: promptFor, PromptRefusal, plus 5 types. - [caique/raw](https://caique.interlace.tools/docs/api/raw): Every export of caique/raw, with its signature and doc comment: keyOf, canRender, renderList, askList, plus 3 types. - [caique/spec](https://caique.interlace.tools/docs/api/spec): Every export of caique/spec, with its signature and doc comment: flagOf, problemWith, BUILT_IN_KINDS, plus 4 types. - [caique/terminal](https://caique.interlace.tools/docs/api/terminal): Every export of caique/terminal, with its signature and doc comment: createIo, streamsOf, plus 1 type. - [Changelog](https://caique.interlace.tools/docs/changelog): Every release of caique, newest first, from its CHANGELOG.md — what changed and the pull request it came from. - [Coming from clack](https://caique.interlace.tools/docs/coming-from/clack): A clack (@clack/prompts) alternative with two ways across: caique/clack, clack's prompts under clack's names on caique's own engine, graded by clack's own suite; or caique's flag-first prompts, where a non-TTY caller gets an error naming the flag instead of a hang. - [Coming from inquirer](https://caique.interlace.tools/docs/coming-from/inquirer): An inquirer alternative for prompts that never hang: caique/inquirer carries @inquirer/core's surface, graded 46 / 46 by its own suite — and caique's prompts are flags first, so a non-TTY caller gets an error naming the flag instead of a hang. - [Compatibility](https://caique.interlace.tools/docs/drop-ins): How caique's drop-ins are graded — @inquirer/core's own suite at 46 / 46, @inquirer/prompts' at 222 / 222, and @clack/prompts' behavioural cases at 16 / 16 — and the differences that remain. - [FAQ](https://caique.interlace.tools/docs/faq): Short answers about caique — why it refused, --yes, --interactive, CI, closed stdin, passwords, raw mode, the drop-ins and CommonJS — each with where to read more. - [Getting started](https://caique.interlace.tools/docs/getting-started): Install caique, bind two prompts to flags, and see the same program ask a person on a terminal and refuse — naming the flag — when nobody is there. - [Asking](https://caique.interlace.tools/docs/guides/asking): ask() is the six kinds — text, confirm, select, multiselect, password and path — each a question written and a line read back, with no raw mode and no escape sequence: the accessible rendering is the only one. - [Binding prompts to a CLI](https://caique.interlace.tools/docs/guides/binding): resolvePrompts() is the pass a framework runs once flags, environment and config have had their turn: it asks in declaration order, only what is missing, and stops at the first refusal. - [Never hangs](https://caique.interlace.tools/docs/guides/never-hangs): decide() is the rule: a supplied value is never asked for, --json, CI and agents never prompt, --yes answers a confirm, and with nobody on stdin a missing value is an error naming the flag. - [Widget plugins](https://caique.interlace.tools/docs/guides/plugins): A plugin adds a prompt kind beyond the six as a widget with a required static projection; register() validates it, projectionOf() draws any kind, and npx caique check validates a plugin before it ships. - [The terminal](https://caique.interlace.tools/docs/guides/terminal): createIo() reads lines from a real terminal and hides a password without turning echo off; askList() adds arrow keys where there is a terminal, and puts raw mode back exactly as it found it. - [caique](https://caique.interlace.tools/docs): Prompts that are flags first: an agent passes the answer up front, and a non-TTY caller gets an error naming the flag, never a prompt that waits. No dependency outside the burgee family. Drop-in path for @inquirer/core. - [Prompts an agent can answer](https://caique.interlace.tools/docs/recipes/answers-for-agents): Declare each prompt on the option it fills, so an agent answers on the command line, --json refuses instead of asking, and the refusal tells the agent exactly what to pass. - [Confirmations in CI](https://caique.interlace.tools/docs/recipes/confirm-in-ci): Let --yes answer a destructive confirm in CI and scripts, while a required text or select with no value still refuses — --yes never invents an answer to a question with more than two. - [Incremental migration](https://caique.interlace.tools/docs/recipes/incremental-migration): Move from @inquirer/core with one import, from @clack/prompts with one import or a prompt at a time, and then to flag-first prompts where an agent or CI runs the command. - [Testing prompts](https://caique.interlace.tools/docs/recipes/testing-prompts): Drive ask() and resolvePrompts() with a scripted reader and writer — no PTY, no fake stdin — and assert both the answers and exactly what was written. - [Why caique](https://caique.interlace.tools/docs/why-caique): caique against inquirer and clack, one capability per row, every cell linked to the test, grade or source that proves it. ## Family - [burgee](https://burgee.interlace.tools): the family front door - [Compatibility](https://burgee.interlace.tools/docs/compatibility): Every drop-in path in the family, graded by the incumbent’s own test suite. - [Gallery](https://burgee.interlace.tools/docs/gallery): Every glyph, spinner and border the family has registered, rendered. - [Comparison](https://burgee.interlace.tools/docs/comparison): The family against its incumbents: weight, speed and surface.