--- name: ascii-ansi-colorizer description: "Add an ANSI color layer to existing ASCII/plain-text output (gradient/rainbow/highlights) with alignment-safe rules and a required no-color fallback. Use when the user wants to colorize terminal output, add rainbow effects to CLI text, or style ASCII art with ANSI colors." license: Complete terms in LICENSE.txt dependencies: - python>=3.8 --- ## When to use this skill **CRITICAL TRIGGER RULE** - Use this skill ONLY when the user explicitly mentions the exact skill name: `ascii-ansi-colorizer`. **Trigger phrases include:** - "ascii-ansi-colorizer" - "use ascii-ansi-colorizer" - "用 ascii-ansi-colorizer 给 ASCII 上色" - "使用 ascii-ansi-colorizer 做 ANSI 渐变/彩虹" ## Boundary - This skill only adds color to existing text. It does not generate the ASCII art itself (pair with `ascii-cli-logo-banner` if needed). - Required outputs: `coloredText` + `plainTextFallback`. - ANSI must not break alignment: do not colorize spaces by default; colorize visible characters only. ## How to use this skill ### Inputs - textOrAscii (required) - palette (rainbow | gradient | brandColors) - direction (leftToRight | topToBottom, default leftToRight) - colorDepth (ansi16 | ansi256 | truecolor, default ansi256) - scope (logoOnly | highlightsOnly | fullText, default logoOnly) ### Outputs (required) - coloredText: ANSI-colored output - plainTextFallback: no-color fallback (identical content, no ANSI) - compatNotes: copy/paste and redirection guidance (NO_COLOR / --no-color suggestions) ### Steps 1. Pick `colorDepth` (default: ansi256). 2. Choose a stable coloring strategy: - Column-wise gradients (leftToRight) are usually the safest - Colorize non-space characters only 3. Output both `coloredText` and `plainTextFallback`. 4. Provide no-color guidance (semantic suggestions): `NO_COLOR` / `--no-color`. ### Output Format Outputs should be structured as three distinct text blocks: ``` coloredText: \033[38;5;33mH\033[38;5;34me\033[38;5;35ml\033[38;5;36ml\033[38;5;37mo\033[0m plainTextFallback: Hello compatNotes: - Respect NO_COLOR env var: if set, output plainTextFallback only - Support --no-color flag for CLI tools - Pipe/redirect: detect non-TTY and fall back to plain text ``` ### Workflow 1. Receive text input and validate it is non-empty 2. Select `colorDepth` (default ansi256) and `palette` 3. Apply coloring to visible characters only (skip spaces to preserve alignment) 4. Generate both `coloredText` and `plainTextFallback` 5. **Validate**: Strip ANSI codes from `coloredText` and compare with `plainTextFallback` — they must match ## Script - `scripts/colorize.py`: apply ANSI 256 gradient or rainbow to stdin ## Examples - `examples/gradient.md` ## Quality checklist 1. Removing ANSI keeps the same readable content (`plainTextFallback`). 2. Alignment does not change after coloring. 3. Colors should not overpower the informational lines. ## Keywords **English:** ascii-ansi-colorizer, ansi, color, gradient, rainbow, terminal, no-color, plain text, ascii **中文:** ascii-ansi-colorizer, ANSI, 上色, 渐变, 彩虹, 终端, 无色回退, 纯文本, ASCII