All free skills / Other majors
chalk 6.x
Use chalk@^6.0.0 correctly from Node.js 22+ ESM, including deterministic color levels, v6 underline styles/colors, Chalk instances, and exported capability metadata.
- For
chalk@6.0.0- Verified
- 2026-09-08, 6 examples executed
- Skill package
@modootoday/pmcp-chalk@6.0.0
Use this skill for free
No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.
Download SKILL.md · Download package archive
npm install --save-dev https://pmcp.build/skills/chalk/6/package.tgz
PMCP discovers the installed package's instructions. Connect your runtime after installation.
Archive integrity
sha512-dtVraZqdzYMDL9gc397itEwJsQyRFq/mlXBMEoyjzJs8Ws8sS2MHCpjKpV7ZOboEb+u3XzWBlm1n8hB2lqoh9Q==Complete instructions
Verified against chalk@6.0.0 on 2026-09-08. 6 of 6 examples executed.
chalk@^6.0.0
Runtime and package shape
- Chalk 6 is ESM-only and requires Node.js 22 or newer.
- Import the default export or named exports from
chalk. Do not userequire()or assume a CommonJS entry point. - Chalk formats strings; it is not a command-line runner. Direct scripts can use its formatting API, while command-line usage belongs to the separate
chalk-clipackage.
import assert from 'node:assert/strict';
import chalk, {Chalk} from 'chalk';
assert.equal(typeof chalk, 'function');
assert.equal(typeof Chalk, 'function');
const plain = new Chalk({level: 0});
assert.equal(plain.blue('hello'), 'hello');
assert.equal(plain.bold.red('error'), 'error');
Chaining styles and arguments
A style chain is callable: chalk.<style>[.<style>...](text, ...moreText). Multiple arguments are separated by spaces. A chain can be saved and reused because the chain itself is callable.
import assert from 'node:assert/strict';
import {Chalk} from 'chalk';
const color = new Chalk({level: 3});
const error = color.bold.red;
const warning = color.hex('#FFA500');
assert.equal(error('Error!'), '\u001b[1m\u001b[31mError!\u001b[39m\u001b[22m');
assert.equal(warning('Warning!'), '\u001b[38;2;255;165;0mWarning!\u001b[39m');
assert.equal(color.red('Hello', color.underline.bgBlue('world') + '!'), '\u001b[31mHello \u001b[4m\u001b[44mworld\u001b[49m\u001b[24m!\u001b[39m');
assert.equal(color.rgb(123, 45, 67).underline('Underlined reddish color'), '\u001b[38;2;123;45;67m\u001b[4mUnderlined reddish color\u001b[24m\u001b[39m');
Color levels and Chalk
Use new Chalk({level}) when output must be deterministic. Levels are 0 through 3; level 0 disables styling and level 3 enables truecolor. A Chalk instance is callable and its .level can be changed later.
Do not rely on the default instance's detected level in tests or examples: it depends on the environment. Numeric FORCE_COLOR selects that exact level; FORCE_COLOR=true enables color while retaining detection.
import assert from 'node:assert/strict';
import {Chalk} from 'chalk';
const customChalk = new Chalk({level: 0});
assert.equal(customChalk.red('not red'), 'not red');
customChalk.level = 3;
const truecolor = customChalk.rgb(15, 100, 204)('Truecolor');
assert.notEqual(truecolor, 'Truecolor');
assert.ok(truecolor.includes('15;100;204'));
v6 underline styles and underline colors
Version 6 adds underlineDouble, underlineCurly, underlineDotted, and underlineDashed. Underline colors use methods such as underlineHex, underlineRgb, and underlineAnsi256; an underline style must also be applied. There is no basic 16-color underline form.
import assert from 'node:assert/strict';
import {Chalk} from 'chalk';
const color = new Chalk({level: 3});
const typo = color.underlineHex('#DEADED').underlineCurly('typo');
const notice = color.underlineRgb(15, 100, 204).underlineDouble('Hello!');
const dotted = color.underlineDotted('dotted');
const dashed = color.underlineDashed('dashed');
for (const value of [typo, notice, dotted, dashed]) {
assert.notEqual(value, value.replace(/\u001b\[[0-9;]*m/g, ''));
}
assert.ok(typo.includes('222;173;237'));
assert.ok(notice.includes('15;100;204'));
Color models
The documented color-model methods include rgb, hex, and ansi256, with background equivalents bgRgb, bgHex, and bgAnsi256, and underline equivalents underlineRgb, underlineHex, and underlineAnsi256. At level 1, ansi256() and bgAnsi256() are downsampled to the 16-color range.
import assert from 'node:assert/strict';
import {Chalk} from 'chalk';
const color = new Chalk({level: 3});
assert.ok(color.rgb(1, 2, 3)('x').includes('1;2;3'));
assert.ok(color.hex('#010203')('x').includes('1;2;3'));
assert.ok(color.ansi256(100)('x').includes('38;5;100'));
assert.ok(color.bgRgb(1, 2, 3)('x').includes('48;2;1;2;3'));
assert.ok(color.bgHex('#010203')('x').includes('48;2;1;2;3'));
assert.ok(color.bgAnsi256(100)('x').includes('48;5;100'));
assert.ok(color.underlineRgb(1, 2, 3).underline('x').includes('58;2;1;2;3'));
assert.ok(color.underlineHex('#010203').underline('x').includes('58;2;1;2;3'));
assert.ok(color.underlineAnsi256(100).underline('x').includes('58;5;100'));
Named exports and stderr instance
The package exports chalkStderr, a separate instance configured using stderr color support, plus supportsColor and supportsColorStderr. It also exports style-name arrays:
modifierNamesforegroundColorNamesbackgroundColorNamesunderlineColorNamescolorNames
Aliases include modifiers, foregroundColors, backgroundColors, and colors.
import assert from 'node:assert/strict';
import {
chalkStderr,
modifierNames,
foregroundColorNames,
backgroundColorNames,
underlineColorNames,
colorNames,
modifiers,
foregroundColors,
backgroundColors,
colors,
supportsColor,
supportsColorStderr,
} from 'chalk';
assert.equal(typeof chalkStderr, 'function');
assert.ok(modifierNames.includes('bold'));
assert.ok(foregroundColorNames.includes('red'));
assert.ok(Array.isArray(backgroundColorNames));
assert.ok(Array.isArray(underlineColorNames));
assert.ok(Array.isArray(colorNames));
assert.equal(modifiers, modifierNames);
assert.equal(foregroundColors, foregroundColorNames);
assert.equal(backgroundColors, backgroundColorNames);
assert.equal(colors, colorNames);
assert.ok(typeof supportsColor === 'boolean' || typeof supportsColor === 'object');
assert.ok(typeof supportsColorStderr === 'boolean' || typeof supportsColorStderr === 'object');
assert.notEqual(chalkStderr, undefined);
Common mistakes
- Do not copy a CommonJS
require('chalk')shape from older examples; Chalk 6 is ESM-only. - Do not assume the older package metadata or older Node.js support applies. Chalk 6 requires Node.js 22+.
- Do not test the default
chalkoutput as colored without controlling the color level; terminal/environment detection may disable color. - Do not treat
underlineHex,underlineRgb, orunderlineAnsi256as complete underline styles by themselves. Combine them with an underline style such asunderline,underlineCurly, orunderlineDouble. - Do not expect a basic 16-color underline API; underline colors are exposed through the color-model methods.
- Do not assume that every intuitive color name is present in
foregroundColorNames; use the exported arrays to discover supported names rather than asserting an unsupported name such aspink. - Do not assume
ansi256()always emits a 256-color sequence: at level 1 it is downsampled to 16 colors. - Do not use
describe,it, orexpectin a directly executed script. Chalk does not provide test-runner globals. - Do not use Chalk as the CLI executable. The separately documented
chalk-clipackage provides command-line behavior.
Not covered
This skill does not cover Chalk's complete style-name list or every escape-sequence detail, terminal-specific color detection behavior, invalid color argument handling, TypeScript compiler configuration, or chalk-cli command syntax. It also does not cover framework or test-runner integration.