Generate shell completion scripts for bash, zsh, and fish from CLI command definitions. Creates intelligent completions with argument suggestions, file completions, and dynamic values.
Generates shell completion scripts for bash, zsh, and fish from CLI command definitions.
npx claudepluginhub a5c-ai/babysitterThis skill is limited to using the following tools:
README.mdGenerate comprehensive shell completion scripts for bash, zsh, and fish shells from CLI command definitions.
Invoke this skill when you need to:
| Parameter | Type | Required | Description |
|---|---|---|---|
| cliName | string | Yes | Name of the CLI executable |
| commands | array | Yes | Command definitions with options |
| shells | array | No | Target shells (default: all) |
| outputDir | string | No | Output directory for scripts |
| dynamic | object | No | Dynamic completion configurations |
{
"commands": [
{
"name": "deploy",
"description": "Deploy application to environment",
"options": [
{
"flags": ["-e", "--env"],
"description": "Target environment",
"type": "choice",
"choices": ["dev", "staging", "prod"]
},
{
"flags": ["-c", "--config"],
"description": "Config file path",
"type": "file",
"extensions": [".json", ".yaml", ".yml"]
}
],
"arguments": [
{
"name": "service",
"description": "Service to deploy",
"type": "dynamic",
"source": "services-list"
}
],
"subcommands": [
{
"name": "status",
"description": "Check deployment status"
}
]
}
]
}
completions/
├── bash/
│ └── <cliName>.bash # Bash completion script
├── zsh/
│ └── _<cliName> # Zsh completion function
├── fish/
│ └── <cliName>.fish # Fish completion script
└── install.sh # Installation helper script
#!/bin/bash
# Completion script for mycli
_mycli_completions() {
local cur prev words cword
_init_completion || return
local commands="deploy rollback status config"
case "${prev}" in
mycli)
COMPREPLY=($(compgen -W "${commands}" -- "${cur}"))
return
;;
deploy)
COMPREPLY=($(compgen -W "--env --config --dry-run" -- "${cur}"))
return
;;
--env|-e)
COMPREPLY=($(compgen -W "dev staging prod" -- "${cur}"))
return
;;
--config|-c)
_filedir '@(json|yaml|yml)'
return
;;
esac
# Handle subcommands
if [[ ${words[1]} == "deploy" ]]; then
case "${prev}" in
status)
# Dynamic completion for services
local services=$(_mycli_get_services)
COMPREPLY=($(compgen -W "${services}" -- "${cur}"))
return
;;
esac
fi
COMPREPLY=($(compgen -W "${commands}" -- "${cur}"))
}
# Dynamic completion helper
_mycli_get_services() {
mycli services list --quiet 2>/dev/null
}
complete -F _mycli_completions mycli
#compdef mycli
_mycli() {
local -a commands
commands=(
'deploy:Deploy application to environment'
'rollback:Rollback to previous version'
'status:Check deployment status'
'config:Manage configuration'
)
local -a deploy_options
deploy_options=(
'(-e --env)'{-e,--env}'[Target environment]:environment:(dev staging prod)'
'(-c --config)'{-c,--config}'[Config file path]:config file:_files -g "*.{json,yaml,yml}"'
'--dry-run[Preview changes without applying]'
)
_arguments -C \
'1: :->command' \
'*:: :->args'
case $state in
command)
_describe -t commands 'mycli commands' commands
;;
args)
case $words[1] in
deploy)
_arguments $deploy_options \
'1:service:_mycli_services'
;;
rollback)
_arguments \
'(-v --version)'{-v,--version}'[Version to rollback]:version:_mycli_versions'
;;
esac
;;
esac
}
# Dynamic completion for services
_mycli_services() {
local -a services
services=(${(f)"$(mycli services list --quiet 2>/dev/null)"})
_describe -t services 'services' services
}
_mycli "$@"
# Completions for mycli
# Disable file completions by default
complete -c mycli -f
# Main commands
complete -c mycli -n __fish_use_subcommand -a deploy -d 'Deploy application to environment'
complete -c mycli -n __fish_use_subcommand -a rollback -d 'Rollback to previous version'
complete -c mycli -n __fish_use_subcommand -a status -d 'Check deployment status'
complete -c mycli -n __fish_use_subcommand -a config -d 'Manage configuration'
# Deploy options
complete -c mycli -n '__fish_seen_subcommand_from deploy' -s e -l env -d 'Target environment' -xa 'dev staging prod'
complete -c mycli -n '__fish_seen_subcommand_from deploy' -s c -l config -d 'Config file path' -r -F
complete -c mycli -n '__fish_seen_subcommand_from deploy' -l dry-run -d 'Preview changes'
# Deploy subcommands
complete -c mycli -n '__fish_seen_subcommand_from deploy' -a status -d 'Check deployment status'
# Dynamic service completion
function __mycli_services
mycli services list --quiet 2>/dev/null
end
complete -c mycli -n '__fish_seen_subcommand_from deploy; and not __fish_seen_subcommand_from status' -a '(__mycli_services)' -d 'Service'
| Type | Description | Example |
|---|---|---|
| choice | Fixed list of values | environments, formats |
| file | File path completion | config files |
| directory | Directory path completion | output paths |
| dynamic | Runtime-generated values | services, branches |
| command | Subcommand completion | nested commands |
| none | No completion | free-form text |
{
"dynamic": {
"services-list": {
"command": "mycli services list --quiet",
"cache": 60
},
"git-branches": {
"command": "git branch --format='%(refname:short)'",
"cache": 10
},
"docker-images": {
"command": "docker images --format '{{.Repository}}:{{.Tag}}'",
"cache": 30
}
}
}
#!/bin/bash
# install.sh - Install shell completions for mycli
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
install_bash() {
local dest="${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions"
mkdir -p "$dest"
cp "$SCRIPT_DIR/bash/mycli.bash" "$dest/mycli"
echo "Installed bash completion to $dest/mycli"
}
install_zsh() {
local dest="${ZDOTDIR:-$HOME}/.zfunc"
mkdir -p "$dest"
cp "$SCRIPT_DIR/zsh/_mycli" "$dest/_mycli"
echo "Add 'fpath=(~/.zfunc \$fpath)' to .zshrc if not present"
echo "Installed zsh completion to $dest/_mycli"
}
install_fish() {
local dest="${XDG_CONFIG_HOME:-$HOME/.config}/fish/completions"
mkdir -p "$dest"
cp "$SCRIPT_DIR/fish/mycli.fish" "$dest/mycli.fish"
echo "Installed fish completion to $dest/mycli.fish"
}
case "$1" in
bash) install_bash ;;
zsh) install_zsh ;;
fish) install_fish ;;
all|"")
install_bash
install_zsh
install_fish
;;
*)
echo "Usage: $0 [bash|zsh|fish|all]"
exit 1
;;
esac
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.