skills/oakoss/agent-skills/shell-integration

shell-integration

SKILL.md

Shell Integration

Overview

Shell integration covers the APIs and patterns for building tools that extend or interact with Unix shells. This includes completion systems, prompt hooks, key bindings, terminal control, and plugin distribution across Zsh, Bash, and Fish.

When to use: Building CLI tool completions, shell plugins, prompt customizations, terminal UI, dotfile managers, installation scripts, or native binary wrappers.

When NOT to use: General-purpose scripting unrelated to shell extension (use POSIX scripting reference for standalone scripts), GUI applications, or web server development.

Quick Reference

Pattern Shell Key Points
Completion function Zsh compdef, compadd, zstyle for matcher configuration
Completion function Bash complete, compgen, COMP_WORDS, COMP_CWORD, COMPREPLY
Completion function Fish complete -c cmd -a args, condition flags, subcommand patterns
ZLE widget Zsh zle -N widget func, bindkey to map keys
Prompt hook Zsh precmd, preexec, chpwd via add-zsh-hook
Prompt hook Bash PROMPT_COMMAND (string or array in Bash 5.1+)
Event handler Fish --on-event, --on-variable, --on-signal
Abbreviation Fish abbr -a name expansion, --function for dynamic
Parameter expansion Zsh ${(s.:.)var}, ${var:=default}, flags and modifiers
Terminal control All ANSI/CSI escape sequences, tput, stty
Signal handling All trap builtin, cleanup patterns, EXIT/INT/TERM
Process management All Job control (&, wait, bg, fg), subshells, coprocesses
Plugin installation All Sourcing strategies, version detection, ZDOTDIR loading order

Common Mistakes

Mistake Correct Pattern
Using echo -e for escape sequences portably Use printf or tput for portability across shells and OSes
Modifying PROMPT_COMMAND with = in Bash Append with += to avoid overwriting other tools
Defining Fish event handlers in lazy-loaded functions Place event handlers in config.fish or source them explicitly
Hardcoding terminal capabilities Query via tput which respects TERM and terminfo
Missing emulate -L zsh in Zsh functions Always set local options to avoid polluting caller environment
Using $COMP_LINE splitting instead of COMP_WORDS Use COMP_WORDS[$COMP_CWORD] for reliable word extraction
Not quoting $@ in wrapper scripts Always use "$@" to preserve argument boundaries
Assuming /bin/sh is Bash Target POSIX sh for portable scripts, test with dash
Using function keyword in POSIX scripts Use name() { ... } syntax for POSIX compatibility
Ignoring EXIT trap for cleanup Always set trap cleanup EXIT for temp files and state

Delegation

  • Completion testing: Use Explore agent to verify completions interactively
  • Script review: Use Task agent for cross-shell compatibility audits
  • Code review: Delegate to code-reviewer agent

If the rust skill is available, delegate native binary compilation patterns to it. Shell wrappers often invoke Rust-compiled binaries for performance-critical operations. If the cli-power-tools skill is available, delegate modern CLI utility patterns to it. Many shell plugins wrap tools like fd, ripgrep, and fzf.

References

Weekly Installs
21
GitHub Stars
4
First Seen
Feb 23, 2026
Installed on
opencode18
claude-code17
github-copilot17
codex17
kimi-cli17
gemini-cli17