implementing-cli-patterns
Enhances CLI user experience with formatted output, progress indicators, and interactive prompts using chalk, ora, and inquirer.
Install this skill
Security score
The implementing-cli-patterns skill was audited on Feb 12, 2026 and we found 31 security issues across 3 threat categories, including 1 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Template literal with variable interpolation in command context
| 54 | console.log(chalk.red(`✖ ${message}`)); |
Template literal with variable interpolation in command context
| 59 | console.log(chalk.green(`✔ ${message}`)); |
Template literal with variable interpolation in command context
| 64 | console.log(chalk.yellow(`⚠ ${message}`)); |
Template literal with variable interpolation in command context
| 69 | console.log(chalk.cyan(`💡 ${message}`)); |
Template literal with variable interpolation in command context
| 79 | console.log(chalk.bgGray.white(` ${code} `)); |
Template literal with variable interpolation in command context
| 84 | console.log(chalk.blue(`ℹ ${message}`)); |
Template literal with variable interpolation in command context
| 98 | console.error(`Failed to create category: ${error.message}`); |
Template literal with variable interpolation in command context
| 121 | spinner.succeed(`Fetched ${categories.length} categories`); |
Template literal with variable interpolation in command context
| 153 | process.stdout.write(`\r${this.label}: ${bar} ${percent}% (${this.completed}/${this.total})`); |
Template literal with variable interpolation in command context
| 159 | return `[${'█'.repeat(filled)}${'░'.repeat(empty)}]`; |
Template literal with variable interpolation in command context
| 165 | console.warning(`Completed with ${this.failed} failures`); |
Template literal with variable interpolation in command context
| 167 | console.success(`All ${this.completed} items processed`); |
Template literal with variable interpolation in command context
| 299 | `${result.duration}ms`, |
Template literal with variable interpolation in command context
| 317 | console.warning(`Completed with ${totals.failed} failures`); |
Template literal with variable interpolation in command context
| 331 | console.log(chalk.green(`+ ${diff.entity}: ${diff.identifier}`)); |
Template literal with variable interpolation in command context
| 334 | console.log(chalk.blue(`~ ${diff.entity}: ${diff.identifier}`)); |
Template literal with variable interpolation in command context
| 336 | console.log(chalk.gray(` ${change.field}: ${change.from} → ${change.to}`)); |
Template literal with variable interpolation in command context
| 340 | console.log(chalk.red(`- ${diff.entity}: ${diff.identifier}`)); |
Template literal with variable interpolation in command context
| 346 | console.info(`Total: ${diffs.filter(d => d.action === 'create').length} to create, ` + |
Template literal with variable interpolation in command context
| 347 | `${diffs.filter(d => d.action === 'update').length} to update, ` + |
Template literal with variable interpolation in command context
| 348 | `${diffs.filter(d => d.action === 'delete').length} to delete`); |
Template literal with variable interpolation in command context
| 363 | console.log(chalk.yellow(` ${dup.entityType}: "${dup.identifier}"`)); |
Template literal with variable interpolation in command context
| 364 | console.log(chalk.gray(` Found at: ${dup.locations.join(', ')}`)); |
Template literal with variable interpolation in command context
| 382 | console.log(chalk.gray(` Error code: ${error.code}`)); |
Template literal with variable interpolation in command context
| 386 | console.log(chalk.gray(` Context: ${JSON.stringify(error.context)}`)); |
Template literal with variable interpolation in command context
| 394 | console.log(chalk.cyan(` • ${suggestion}`)); |
Template literal with variable interpolation in command context
| 404 | console.error(`GraphQL operation failed: ${error.operationName}`); |
Template literal with variable interpolation in command context
| 408 | console.log(chalk.red(` • ${gqlError.message}`)); |
Template literal with variable interpolation in command context
| 410 | console.log(chalk.gray(` Path: ${gqlError.path.join('.')}`)); |
Prompting for password/secret input
| 257 | ### Password Prompt |
External URL reference
| 247 | default: 'https://your-store.saleor.cloud/graphql/', |