Comprehensive guidance for building and debugging JavaScript and TypeScript CLIs with @clack/core and @clack/prompts, backed by bundled upstream source and examples. Use when implementing clack prompt flows, deciding between core primitives and styled prompts, adapting clack examples, or validating clack API usage.
Use this skill to implement reliable interactive CLIs with @clack/core and @clack/prompts.
@clack/prompts or @clack/core.references/examples/.intro, outro, spinner, progress, tasks, log, taskLog, stream) when useful.references/docs/prompts-exports.ts and references/docs/core-exports.ts.Use @clack/prompts by default.
Use @clack/core when lower-level control is required.
TextPrompt, SelectPrompt, ConfirmPrompt, Prompt) or deep customization.Handle cancellation on every prompt result.
import * as p from '@clack/prompts';
const value = await p.text({ message: 'Your name?' });
if (p.isCancel(value)) {
p.cancel('Operation cancelled.');
process.exit(0);
}
Start and close sessions cleanly for user-facing CLIs.
p.intro('create-app');
// prompts
p.outro('Done');
Use these defaults unless the user asks otherwise.
text: provide validate for required or constrained input.confirm: use for binary decisions; avoid coercing free-form text.select: use for mutually exclusive choices.multiselect or groupMultiselect: use for multi-choice and hierarchical multi-choice flows.group: gather structured answers while preserving dependencies between steps.spinner and progress: wrap long-running tasks and update status clearly.tasks: execute sequential task blocks with spinner status.taskLog: stream subprocess output and finish with success/failure.stream: render async or tokenized output (for LLM-style streaming).references/examples/.references/docs/prompts-exports.tsreferences/docs/core-exports.tsreferences/source/prompts/references/source/core/Start with these files.
references/docs/prompts-readme.mdreferences/docs/core-readme.mdreferences/INDEX.mdLoad specific source files only as needed.
references/source/prompts/*.tsreferences/source/core/prompts/*.tsreferences/source/core/utils/*.tsUse this quick mapping to avoid re-inventing flows.
references/examples/basic/index.tsreferences/examples/basic/text-validation.tsreferences/examples/basic/autocomplete.tsreferences/examples/basic/autocomplete-multiselect.tsreferences/examples/basic/default-value.tsreferences/examples/basic/path.tsreferences/examples/basic/spinner.tsreferences/examples/basic/spinner-cancel.tsreferences/examples/basic/spinner-cancel-advanced.tsreferences/examples/basic/spinner-ci.tsreferences/examples/basic/spinner-timer.tsreferences/examples/basic/progress.tsreferences/examples/basic/task-log.tsreferences/examples/basic/stream.tsreferences/examples/changesets/index.tsBefore finalizing any clack implementation:
core vs prompts) matches customization needs.