or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-api.mdcustom-prompts.mdform-survey-prompts.mdindex.mdselection-prompts.mdspecialized-prompts.mdtext-prompts.md
tile.json

specialized-prompts.mddocs/

Specialized Prompts

Specialized prompts provide unique functionality for specific use cases including confirmations, authentication, code snippets, toggles, and interactive quizzes.

Capabilities

Confirm Prompt

Simple yes/no confirmation prompt for boolean decisions.

/**
 * Boolean confirmation prompt
 * @param options - Confirm prompt options
 * @returns Promise resolving to boolean value
 */
function confirm(options);

interface ConfirmOptions extends BasePromptOptions {
  type: 'confirm';
  initial?: boolean;
}

Usage Examples:

const { prompt } = require('enquirer');

// Basic confirmation
const response = await prompt({
  type: 'confirm',
  name: 'continue',
  message: 'Do you want to continue?'
});

// With default value
const response = await prompt({
  type: 'confirm',
  name: 'agree',
  message: 'Do you agree to the terms?',
  initial: false
});

// Destructive action confirmation
const response = await prompt({
  type: 'confirm',
  name: 'delete',
  message: 'Are you sure you want to delete all files? This cannot be undone.',
  initial: false
});

Toggle Prompt

Toggle/switch prompt for binary choices with custom labels for enabled/disabled states.

/**
 * Toggle/switch prompt with custom labels
 * @param options - Toggle prompt options
 * @returns Promise resolving to boolean value
 */
function toggle(options);

interface ToggleOptions extends BasePromptOptions {
  type: 'toggle';
  initial?: boolean;
  enabled?: string;
  disabled?: string;
}

Usage Examples:

// Basic toggle
const response = await prompt({
  type: 'toggle',
  name: 'notifications',
  message: 'Enable notifications?',
  enabled: 'Yes',
  disabled: 'No'
});

// Custom toggle labels
const response = await prompt({
  type: 'toggle',
  name: 'mode',
  message: 'Development mode',
  enabled: 'Development',
  disabled: 'Production',
  initial: true
});

// Feature toggle
const response = await prompt({
  type: 'toggle',
  name: 'feature',
  message: 'Enable experimental features?',
  enabled: 'ON',
  disabled: 'OFF',
  initial: false
});

BasicAuth Prompt

Authentication prompt for collecting username and password credentials.

/**
 * Basic authentication prompt
 * @param options - BasicAuth prompt options
 * @returns Promise resolving to object with username and password
 */
function basicauth(options);

interface BasicAuthOptions extends BasePromptOptions {
  type: 'basicauth';
  username?: string;
  password?: string;
  showPassword?: boolean;
}

Usage Examples:

// Basic authentication
const response = await prompt({
  type: 'basicauth',
  name: 'credentials',
  message: 'Enter your credentials'
});
// Returns: { username: 'user', password: 'pass' }

// With default username
const response = await prompt({
  type: 'basicauth',
  name: 'login',
  message: 'Login to server',
  username: 'admin'
});

// Show password for debugging
const response = await prompt({
  type: 'basicauth',
  name: 'auth',
  message: 'Database credentials',
  showPassword: true
});

Snippet Prompt

Code snippet template prompt for generating code with placeholders that users can fill in.

/**
 * Code snippet template prompt
 * @param options - Snippet prompt options
 * @returns Promise resolving to completed snippet string
 */
function snippet(options);

interface SnippetOptions extends BasePromptOptions {
  type: 'snippet';
  newline?: string;
  template?: string;
}

Usage Examples:

// Function template
const response = await prompt({
  type: 'snippet',
  name: 'function',
  message: 'Fill out the function',
  template: `function \${name}(\${params}) {
  \${body}
  return \${return_value};
}`
});

// React component template
const response = await prompt({
  type: 'snippet',
  name: 'component',
  message: 'Create React component',
  template: `import React from 'react';

interface \${name}Props {
  \${props}
}

export const \${name}: React.FC<\${name}Props> = ({ \${destructured_props} }) => {
  return (
    <div>
      \${jsx_content}
    </div>
  );
};`
});

// Configuration template
const response = await prompt({
  type: 'snippet',
  name: 'config',
  message: 'Database configuration',
  template: `{
  "host": "\${host}",
  "port": \${port},
  "database": "\${database}",
  "username": "\${username}",
  "ssl": \${ssl_enabled}
}`
});

Quiz Prompt

Interactive quiz prompt for educational content or testing knowledge with correct/incorrect feedback.

/**
 * Quiz/trivia prompt with scoring
 * @param options - Quiz prompt options
 * @returns Promise resolving to quiz results object
 */
function quiz(options);

interface QuizOptions extends BasePromptOptions {
  type: 'quiz';
  choices: QuizChoice[];
  correctChoice?: number | string;
}

interface QuizChoice extends Choice {
  correct?: boolean;
}

Usage Examples:

// Simple quiz question
const response = await prompt({
  type: 'quiz',
  name: 'question1',
  message: 'What is the capital of France?',
  choices: [
    'London',
    'Berlin', 
    'Paris',
    'Madrid'
  ],
  correctChoice: 2 // Index of correct answer
});

// Quiz with choice objects
const response = await prompt({
  type: 'quiz',
  name: 'jsQuestion',
  message: 'Which method adds elements to the end of an array?',
  choices: [
    { name: 'push()', value: 'push', correct: true },
    { name: 'pop()', value: 'pop' },
    { name: 'shift()', value: 'shift' },
    { name: 'unshift()', value: 'unshift' }
  ]
});

// Multiple quiz questions
const questions = [
  {
    type: 'quiz',
    name: 'q1',
    message: 'What does HTML stand for?',
    choices: [
      'Hyper Text Markup Language',
      'Home Tool Markup Language', 
      'Hyperlinks and Text Markup Language'
    ],
    correctChoice: 0
  },
  {
    type: 'quiz', 
    name: 'q2',
    message: 'Which company developed JavaScript?',
    choices: ['Microsoft', 'Netscape', 'Oracle', 'Apple'],
    correctChoice: 1
  }
];

const results = await prompt(questions);

Advanced Specialized Prompt Features

Snippet Template Syntax

Snippet prompts use placeholder syntax for dynamic content:

const template = `
// Template with placeholders
class \${className} extends \${baseClass} {
  constructor(\${constructorParams}) {
    super(\${superParams});
    \${constructorBody:this.initializeProperties();}
  }
  
  \${method:getName}(\${methodParams}) {
    \${methodBody:return this.name;}
  }
}
`;

// Placeholders with default values use colon syntax:
// \${placeholder:default_value}

Quiz Scoring and Feedback

Quiz prompts can provide immediate feedback and scoring:

const quizConfig = {
  type: 'quiz',
  name: 'assessment',
  message: 'JavaScript Knowledge Check',
  choices: [
    { name: 'var', hint: 'Function-scoped' },
    { name: 'let', hint: 'Block-scoped', correct: true },
    { name: 'const', hint: 'Block-scoped, immutable binding' }
  ],
  onSubmit: (name, value, prompt) => {
    if (prompt.isCorrect) {
      console.log('✅ Correct!');
    } else {
      console.log('❌ Incorrect. The answer is "let"');
    }
  }
};

Conditional Logic

Use conditional prompts based on previous answers:

const responses = await prompt([
  {
    type: 'confirm',
    name: 'hasAccount',
    message: 'Do you have an existing account?'
  },
  {
    type: 'basicauth',
    name: 'login',
    message: 'Enter your credentials',
    skip: (state) => !state.answers.hasAccount
  },
  {
    type: 'form',
    name: 'registration',
    message: 'Create new account',
    choices: [
      { name: 'username', message: 'Username' },
      { name: 'email', message: 'Email' },
      { name: 'password', message: 'Password' }
    ],
    skip: (state) => state.answers.hasAccount
  }
]);

Custom Validation for Specialized Prompts

Add validation to specialized prompts:

// Confirm with validation
const response = await prompt({
  type: 'confirm',
  name: 'proceed',
  message: 'This will delete all data. Are you absolutely sure?',
  validate: (value) => {
    if (!value) {
      return 'You must confirm to proceed with deletion';
    }
    return true;
  }
});

// BasicAuth with credential validation
const response = await prompt({
  type: 'basicauth',
  name: 'auth',
  message: 'Login',
  validate: async (value) => {
    // Simulate credential check
    if (value.username === 'admin' && value.password === 'secret') {
      return true;
    }
    return 'Invalid credentials';
  }
});