File contents Bash Output Styling
Style all user-facing shell script output using the bundled style.sh library.
Workflow
Read references/style.sh to understand available functions
If style.sh doesn't exist alongside the target script, copy from references/style.sh into the same directory
Source style.sh in the target script: source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/style.sh" 2>/dev/null || true
Replace raw echo statements with styled output function calls
Replace read -p prompts with confirm, input, or choose as appropriate
Wrap long-running commands with spin for animated feedback
Use table for structured multi-column data and progress for counted loops
Verify script still works when style.sh is missing (graceful degradation)
Color Palette
Name
Hex
ANSI 256
Use
Brand
#AF87FF
141
Headers, emphasis
Success
#87D787
114
Checkmarks, completion
Error
#FF5F5F
203
Errors, failures
Warning
#FFD75F
221
Warnings, caution
Info
#87CEEB
117
Info messages, tips
Muted
#808080
244
Paths, secondary text
Output Functions
Function
Symbol
Color
Purpose
header "brand" "subtitle"
box
Brand
Bordered header
section "text"
━━
Brand
Horizontal rule divider (fills terminal width)
success "text"
✓
Success
Completed actions
error "text"
✗
Error
Error messages
warn "text"
⚠
Warning
Warnings
info "text"
●
Info
Informational
step "text"
→
Muted
Action log (suppressed when quiet)
note "text"
—
Muted
"Note:" prefixed
banner "text"
box
Success
Completion banner
error_block "lines..."
│
Error
Multi-line error box
list_item "label" "value"
•
Brand+Muted
Key-value display
dim "text"
—
Muted
De-emphasized text (suppressed when quiet)
table "h1,h2" "v1,v2" ...
box
Brand+Muted
Formatted table with headers
progress cur total [label]
████░░
Brand
Inline progress bar
Interactive Functions
Function
Returns
Purpose
confirm "prompt" [timeout] [affirm] [neg]
Sets REPLY
y/n prompt (backward-compatible)
spin "title" command [args...]
Exit code
Animated spinner wrapping a command
choose "header" "opt1" "opt2" ...
stdout
Interactive selection menu
input "prompt" [placeholder] [--password]
stdout
Styled text input
Pattern Mapping
Old Pattern
New Pattern
echo "Title" + echo "====="
header "Title" "Subtitle"
echo "✓ done"
success "done"
echo "Error: ..."
error "..."
echo "Warning: ..."
warn "..."
echo " - Label: value"
list_item "Label" "value"
read -p "Continue? (y/n) "
confirm "Continue?"
echo "Section..." between blocks
section "Section"
echo "Note: ..."
note "..."
Multi-line error block
error_block "line1" "line2"
select opt in ... / numbered menu
choose "Pick one:" "A" "B" "C"
read -p "Name: "
input "Name:" "placeholder"
Long command with no feedback
spin "Installing..." brew install pkg
Aligned columns / status tables
table "Name,Status" "jq,installed"
Counter loop with echo progress
progress $i $total "Processing"
Environment Variables
Variable
Default
Effect
NO_COLOR
unset
Disables all color output when set to any value
STYLE_VERBOSE
1
0=quiet (suppresses step/dim), 1=default, 2=verbose
COLORTERM
unset
Set to truecolor or 24bit to enable RGB color palette
Rules
ALWAYS source style.sh with fallback: source "$SCRIPT_DIR/style.sh" 2>/dev/null || true
NEVER import gum directly in scripts — style.sh handles tool detection
NEVER hard-code ANSI codes in scripts — use style.sh functions exclusively
confirm function sets REPLY variable, compatible with existing [[ $REPLY =~ ^[Yy]$ ]] checks
spin returns the wrapped command's exit code — use in conditionals: if spin "Building..." make; then ...
choose and input return values via stdout — capture with: result=$(choose "Pick:" "A" "B")
Do NOT wrap instant operations with spin — only use for commands that take noticeable time
Interactive functions (choose, input, confirm) require a TTY — they read from /dev/tty
Preserve all existing logic — only change output formatting, never behavior
Scripts must work identically when style.sh is missing (plain echo fallback)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1 --- 2 name: tsilva-claude-skills-bash-output-styler 3 description: Bash Output Styling 4 --- 5 6 # Bash Output Styling 7 8 Style all user-facing shell script output using the bundled `style.sh` library. 9 10 ## Workflow 11 12 1. Read [references/style.sh](references/style.sh) to understand available functions 13 2. If `style.sh` doesn't exist alongside the target script, copy from [references/style.sh](references/style.sh) into the same directory 14 3. Source `style.sh` in the target script: `source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/style.sh" 2>/dev/null || true` 15 4. Replace raw `echo` statements with styled output function calls 16 5. Replace `read -p` prompts with `confirm`, `input`, or `choose` as appropriate 17 6. Wrap long-running commands with `spin` for animated feedback 18 7. Use `table` for structured multi-column data and `progress` for counted loops 19 8. Verify script still works when `style.sh` is missing (graceful degradation) 20 21 ## Color Palette 22 23 | Name | Hex | ANSI 256 | Use | 24 |---------|-----------|----------|------------------------------| 25 | Brand | `#AF87FF` | 141 | Headers, emphasis | 26 | Success | `#87D787` | 114 | Checkmarks, completion | 27 | Error | `#FF5F5F` | 203 | Errors, failures | 28 | Warning | `#FFD75F` | 221 | Warnings, caution | 29 | Info | `#87CEEB` | 117 | Info messages, tips | 30 | Muted | `#808080` | 244 | Paths, secondary text | 31 32 ## Output Functions 33 34 | Function | Symbol | Color | Purpose | 35 |----------|--------|-------|---------| 36 | `header "brand" "subtitle"` | box | Brand | Bordered header | 37 | `section "text"` | `━━` | Brand | Horizontal rule divider (fills terminal width) | 38 | `success "text"` | `✓` | Success | Completed actions | 39 | `error "text"` | `✗` | Error | Error messages | 40 | `warn "text"` | `⚠` | Warning | Warnings | 41 | `info "text"` | `●` | Info | Informational | 42 | `step "text"` | `→` | Muted | Action log (suppressed when quiet) | 43 | `note "text"` | — | Muted | "Note:" prefixed | 44 | `banner "text"` | box | Success | Completion banner | 45 | `error_block "lines..."` | `│` | Error | Multi-line error box | 46 | `list_item "label" "value"` | `•` | Brand+Muted | Key-value display | 47 | `dim "text"` | — | Muted | De-emphasized text (suppressed when quiet) | 48 | `table "h1,h2" "v1,v2" ...` | box | Brand+Muted | Formatted table with headers | 49 | `progress cur total [label]` | `████░░` | Brand | Inline progress bar | 50 51 ## Interactive Functions 52 53 | Function | Returns | Purpose | 54 |----------|---------|---------| 55 | `confirm "prompt" [timeout] [affirm] [neg]` | Sets `REPLY` | y/n prompt (backward-compatible) | 56 | `spin "title" command [args...]` | Exit code | Animated spinner wrapping a command | 57 | `choose "header" "opt1" "opt2" ...` | stdout | Interactive selection menu | 58 | `input "prompt" [placeholder] [--password]` | stdout | Styled text input | 59 60 ## Pattern Mapping 61 62 | Old Pattern | New Pattern | 63 |-------------|-------------| 64 | `echo "Title"` + `echo "====="` | `header "Title" "Subtitle"` | 65 | `echo "✓ done"` | `success "done"` | 66 | `echo "Error: ..."` | `error "..."` | 67 | `echo "Warning: ..."` | `warn "..."` | 68 | `echo " - Label: value"` | `list_item "Label" "value"` | 69 | `read -p "Continue? (y/n) "` | `confirm "Continue?"` | 70 | `echo "Section..."` between blocks | `section "Section"` | 71 | `echo "Note: ..."` | `note "..."` | 72 | Multi-line error block | `error_block "line1" "line2"` | 73 | `select opt in ...` / numbered menu | `choose "Pick one:" "A" "B" "C"` | 74 | `read -p "Name: "` | `input "Name:" "placeholder"` | 75 | Long command with no feedback | `spin "Installing..." brew install pkg` | 76 | Aligned columns / status tables | `table "Name,Status" "jq,installed"` | 77 | Counter loop with echo progress | `progress $i $total "Processing"` | 78 79 ## Environment Variables 80 81 | Variable | Default | Effect | 82 |----------|---------|--------| 83 | `NO_COLOR` | unset | Disables all color output when set to any value | 84 | `STYLE_VERBOSE` | `1` | `0`=quiet (suppresses `step`/`dim`), `1`=default, `2`=verbose | 85 | `COLORTERM` | unset | Set to `truecolor` or `24bit` to enable RGB color palette | 86 87 ## Rules 88 89 - ALWAYS source `style.sh` with fallback: `source "$SCRIPT_DIR/style.sh" 2>/dev/null || true` 90 - NEVER import gum directly in scripts — `style.sh` handles tool detection 91 - NEVER hard-code ANSI codes in scripts — use `style.sh` functions exclusively 92 - `confirm` function sets `REPLY` variable, compatible with existing `[[ $REPLY =~ ^[Yy]$ ]]` checks 93 - `spin` returns the wrapped command's exit code — use in conditionals: `if spin "Building..." make; then ...` 94 - `choose` and `input` return values via stdout — capture with: `result=$(choose "Pick:" "A" "B")` 95 - Do NOT wrap instant operations with `spin` — only use for commands that take noticeable time 96 - Interactive functions (`choose`, `input`, `confirm`) require a TTY — they read from `/dev/tty` 97 - Preserve all existing logic — only change output formatting, never behavior 98 - Scripts must work identically when `style.sh` is missing (plain echo fallback) 99 100 --- 101 > Converted and distributed by [TomeVault](https://tomevault.io/claim/tsilva) — claim your Tome and manage your conversions. 102 <!-- tomevault:4.0:skill_md:2026-04-14 -->
tomevault-io/skills-registry/tree/main/tsilva--claude-skills--bash-output-styler commit cf057fe2c5
Frequently asked questions How do I install the Tsilva Claude Skills Bash Output Styler skill? Run npx skillmds@latest add tomevault-io/tsilva-claude-skills-bash-output-styler in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Tsilva Claude Skills Bash Output Styler skill do? Bash Output Styling It is listed under Coding & Dev Tools on SkillMD.
Is Tsilva Claude Skills Bash Output Styler safe to use? This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Tsilva Claude Skills Bash Output Styler? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Tsilva Claude Skills Bash Output Styler free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Tsilva Claude Skills Bash Output Styler? tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.