Chalk Styling System

VerifiedSafe

Create consistent chalk-based color and styling system for CLI output with themes, semantic colors, and formatting utilities.

Sby Skills Guide Bot
DevelopmentIntermediate
7/23/2026
Claude Code
#cli-styling#chalk#theming#semantic-colors#typescript

Recommended for

Automated summary

This skill generates a chalk-based CLI styling system with themes, semantic colors, and formatting utilities.

Strengths

  • Provides a reusable theme abstraction with semantic color tokens.
  • Ships ready-to-use logging and text-formatting helpers.
  • Includes box and border utilities for structuring terminal output.
  • Can generate documentation for the styling system.

Limitations

  • Generated patterns are TypeScript/chalk-centric despite the language parameter.
  • Does not explicitly address accessibility, no-color output, or non-ANSI terminals.
  • The box utility appears not to account for ANSI escape sequence widths.
When to use it

Use it when a TypeScript/Node CLI needs a coherent palette and reusable semantic styling.

When not to use it

Avoid it for other target languages or when advanced accessibility and no-color terminal support are required.

Security analysis

Safe
Quality score74/100

The skill is a pure code-generation template for a chalk-based CLI styling system. It contains no shell execution, no network calls, no secret handling, and no destructive or obfuscated payloads. Although allowed-tools lists Write, Edit, and Bash, the instructions themselves only ask the agent to emit TypeScript styling utilities, so there is no meaningful execution risk beyond the inherent capability of those tools.

No concerns found

How this analysis is made

Examples

Create semantic CLI theme
Set up a chalk-based CLI styling system for my TypeScript project with semantic success, warning, error, and info helpers plus a custom theme.
Add themed logger and boxes
Create a reusable themed logger and box formatting utilities using chalk, with documentation for the color tokens.
Add multi-theme styling
Add a multi-theme chalk styling layer to my command-line tool and include conditional styling helpers.

name: chalk-styling-system description: Create consistent chalk-based color and styling system for CLI output with themes, semantic colors, and formatting utilities. allowed-tools: Read, Write, Edit, Bash, Glob, Grep

Chalk Styling System

Create consistent chalk-based styling for CLI output.

Capabilities

  • Create color theme systems
  • Define semantic color utilities
  • Set up text formatting helpers
  • Implement conditional styling
  • Create box and border utilities
  • Generate styling documentation

Usage

Invoke this skill when you need to:

  • Create consistent CLI color schemes
  • Define semantic output styling
  • Build formatting utilities
  • Support multiple themes

Inputs

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | language | string | Yes | Target language | | theme | object | No | Custom color theme | | utilities | array | No | Formatting utilities needed |

Generated Patterns

TypeScript Styling System

import chalk, { ChalkInstance } from 'chalk';

// Theme definition
export interface Theme {
  primary: string;
  secondary: string;
  success: string;
  warning: string;
  error: string;
  info: string;
  muted: string;
}

const defaultTheme: Theme = {
  primary: '#3498db',
  secondary: '#9b59b6',
  success: '#2ecc71',
  warning: '#f39c12',
  error: '#e74c3c',
  info: '#00bcd4',
  muted: '#95a5a6',
};

// Create themed chalk instance
export function createTheme(theme: Partial<Theme> = {}): {
  primary: ChalkInstance;
  secondary: ChalkInstance;
  success: ChalkInstance;
  warning: ChalkInstance;
  error: ChalkInstance;
  info: ChalkInstance;
  muted: ChalkInstance;
} {
  const t = { ...defaultTheme, ...theme };
  return {
    primary: chalk.hex(t.primary),
    secondary: chalk.hex(t.secondary),
    success: chalk.hex(t.success),
    warning: chalk.hex(t.warning),
    error: chalk.hex(t.error),
    info: chalk.hex(t.info),
    muted: chalk.hex(t.muted),
  };
}

// Default styled outputs
export const style = createTheme();

// Semantic helpers
export const log = {
  success: (msg: string) => console.log(style.success('✓ ') + msg),
  error: (msg: string) => console.error(style.error('✗ ') + msg),
  warning: (msg: string) => console.log(style.warning('⚠ ') + msg),
  info: (msg: string) => console.log(style.info('ℹ ') + msg),
  debug: (msg: string) => console.log(style.muted('⋯ ') + msg),
};

// Text formatting
export const format = {
  bold: chalk.bold,
  dim: chalk.dim,
  italic: chalk.italic,
  underline: chalk.underline,
  strikethrough: chalk.strikethrough,
  code: (text: string) => chalk.bgGray.white(` ${text} `),
  link: (text: string, url: string) => chalk.blue.underline(text) + ` (${chalk.dim(url)})`,
};

// Box drawing
export function box(content: string, options?: {
  title?: string;
  padding?: number;
  borderColor?: string;
}): string {
  const lines = content.split('\n');
  const maxWidth = Math.max(...lines.map(l => l.length), options?.title?.length || 0);
  const padding = options?.padding || 1;
  const borderColor = options?.borderColor || '#888';
  const border = chalk.hex(borderColor);

  const horizontalBorder = border('─'.repeat(maxWidth + padding * 2 + 2));
  const emptyLine = border('│') + ' '.repeat(maxWidth + padding * 2) + border('│');

  const result: string[] = [];

  // Top border with optional title
  if (options?.title) {
    const titlePadding = Math.floor((maxWidth + padding * 2 - options.title.length) / 2);
    result.push(
      border('┌') +
      border('─'.repeat(titlePadding)) +
      ` ${options.title} ` +
      border('─'.repeat(maxWidth + padding * 2 - titlePadding - options.title.length - 2)) +
      border('┐')
    );
  } else {
    result.push(border('┌') + horizontalBorder.slice(1, -1) + border('┐'));
  }

  // Padding top
  for (let i = 0; i < padding; i++) {
    result.push(emptyLine);
  }

  // Content
  for (const line of lines) {
    result.push(
      border('│') +
      ' '.repeat(padding) +
      line.padEnd(maxWidth) +
      ' '.repeat(padding) +
      border('│')
    );
  }

  // Padding bottom
  for (let i = 0; i < padding; i++) {
    result.push(emptyLine);
  }

  // Bottom border
  result.push(border('└') + horizontalBorder.slice(1, -1) + border('┘'));

  return result.join('\n');
}

// Table formatting
export function table(
  headers: string[],
  rows: string[][],
  options?: { headerColor?: string }
): string {
  const headerColor = chalk.hex(options?.headerColor || '#3498db').bold;
  const colWidths = headers.map((h, i) =>
    Math.max(h.length, ...rows.map(r => (r[i] || '').length))
  );

  const headerRow = headers
    .map((h, i) => headerColor(h.padEnd(colWidths[i])))
    .join('  ');

  const separator = colWidths.map(w => '─'.repeat(w)).join('──');

  const dataRows = rows.map(row =>
    row.map((cell, i) => (cell || '').padEnd(colWidths[i])).join('  ')
  );

  return [headerRow, separator, ...dataRows].join('\n');
}

Dependencies

{
  "dependencies": {
    "chalk": "^5.0.0"
  }
}

Target Processes

  • cli-output-formatting
  • error-handling-user-feedback
  • cli-application-bootstrap

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/chalk-styling-system-mrx3xxsq' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/chalk-styling-system-mrx3xxsq/download' --output '.skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md.part' && mv '.skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md.part' '.skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read, Write, Edit, Bash, Glob, Grep

Original excerpt: Dependencies
{
  "dependencies": {
    "chalk": "^5.0.0"
  }
}

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md' && test -s '.skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/chalk-styling-system' && cp -R '.skill-downloads/chalk-styling-system-mrx3xxsq' '.claude/skills/chalk-styling-system'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/chalk-styling-system-mrx3xxsq'

openskills read 'chalk-styling-system-mrx3xxsq'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/chalk-styling-system-mrx3xxsq/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills