Install
$ agentstack add skill-tsilva-claudeskillz-bash-output-styler ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Bash Output Styling
Style all user-facing shell script output using the bundled style.sh library.
Workflow
- Read [references/style.sh](references/style.sh) to understand available functions
- If
style.shdoesn't exist alongside the target script, copy from [references/style.sh](references/style.sh) into the same directory - Source
style.shin the target script:source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/style.sh" 2>/dev/null || true - Replace raw
echostatements with styled output function calls - Replace
read -pprompts withconfirm,input, orchooseas appropriate - Wrap long-running commands with
spinfor animated feedback - Use
tablefor structured multi-column data andprogressfor counted loops - Verify script still works when
style.shis 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.shwith fallback:source "$SCRIPT_DIR/style.sh" 2>/dev/null || true - NEVER import gum directly in scripts —
style.shhandles tool detection - NEVER hard-code ANSI codes in scripts — use
style.shfunctions exclusively confirmfunction setsREPLYvariable, compatible with existing[[ $REPLY =~ ^[Yy]$ ]]checksspinreturns the wrapped command's exit code — use in conditionals:if spin "Building..." make; then ...chooseandinputreturn 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.shis missing (plain echo fallback)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tsilva
- Source: tsilva/claudeskillz
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.