zpl
Edit local zsh plugins at ~/.config/zsh/plugins/local. Use when the user wants to add, modify, or debug personal zsh functions, aliases, or plugin files.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Edit local zsh plugins at ~/.config/zsh/plugins/local. Use when the user wants to add, modify, or debug personal zsh functions, aliases, or plugin files.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when working with the NetBox inventory at netbox.brkn.lol, especially for device metadata, purchase data, product/support URLs, asset tags, device type synchronization, and radio or MAC-address modeling. Read `references/conventions.md` before making NetBox changes.
Use when working with the Home Assistant configuration for the `hv` VM, especially for YAML config changes, `config.d/` edits, MCP-backed inspection or control, hass-cli inspection, API calls, Lovelace dashboard editing (`.storage/lovelace.*`), and validation before or after changes. Read `AGENTS.md` in the repo before editing.
Unlock rbw (Bitwarden CLI) via a Home Assistant phone notification. Use when rbw commands fail with "not unlocked", before calling rbw::get/rbw::find, or whenever the vault needs to be unlocked.
Use for system-level changes to NixOS hosts and Home Manager configurations. Handles Nix code updates, host deployments, and repository-wide Nix standards. Refer to AGENTS.md for foundational environment and deployment rules.
Use for read-only lookup of invoices, order confirmations, and related email records on bichon.brkn.lol. Often used in conjunction with the NetBox skill for verifying purchase details.
Use when writing, editing, reviewing, or generating shell code in bash, sh, or zsh. Applies to scripts, sourced shell files, functions, and shell snippets. Enforces the repo shell style and safe entrypoint/error-handling patterns.
| name | zpl |
| description | Edit local zsh plugins at ~/.config/zsh/plugins/local. Use when the user wants to add, modify, or debug personal zsh functions, aliases, or plugin files. |
Plugin root: ~/.config/zsh/plugins/local
plugins/local/
<topic>.zsh # one file per topic, ~264 files (bat, cd, docker, http, …)
work/ # work-specific plugins (~47 files)
99-after/ # alias files that load after everything else (~12 files)
Files are sourced automatically by zinit on shell startup — no registration step needed. New .zsh files dropped in the root or subdirectories are picked up on the next shell start (or source).
namespace::verb style, e.g. http::serve, files::delete-sync-artifacts(( $+commands[tool] )) || returnFollow the shell skill for baseline shell conventions. ZPL-specific additions:
[[ not [then / do on their own linetrue/false booleans — use 1 / unset# vim: set ft=zsh et ts=2 sw=2 :zparseopts for argument parsing — not getopts, not manual while loops-h/--help and print usage to stderrAlways use these instead of bare echo or print. All write to stderr.
| Function | Colour | Prefix | When to use |
|---|---|---|---|
echo::error | red | ERR | fatal/unexpected errors |
echo::warning | yellow | WRN | non-fatal issues |
echo::info | blue | INF | general status messages |
echo::success | green | OK | operation succeeded |
echo::pending | teal | PND | operation in progress |
echo::debug | magenta | DBG | verbose/debug output |
echo::dryrun | cyan | DRY | dry-run mode messages |
echo::done | green | OK | shorthand for echo::success "Done!" |
echo::confirm | — | — | interactive yes/no prompt |
echo::debug is suppressed unless $DEBUG is set or $ECHO_LEVEL allows it.
Pass --debug-only / -d to make a message only appear when $DEBUG=1.
fancify <cmd> wraps a command showing pending → success/error output inline.
Aliases exist for convenience: echo::err, echo::warn, echo::ok, echo::i, echo::d, echo::p and the echo_* variants (e.g. echo_error).
Use tsvtool (~/bin/tsvtool) to render tables — never implement column
alignment by hand. Emit TSV to stdout and pipe through tsvtool pretty:
# basic table
printf "Name\tStatus\n"
printf "%s\t%s\n" "$name" "$status"
} | tsvtool pretty
# useful flags
tsvtool pretty -z # zebra striping
tsvtool pretty -H # no header row
tsvtool pretty -e "none" # custom empty message
tsvtool header Field1 Field2 # print a bold header line standalone
tsvtool pretty auto-detects TSV, JSON, YAML, and TOML input. Use
-o tsv/json/yaml/toml to convert between formats.
For human-facing output, use $fg[color] / $fg_bold[color] and
$reset_color (zsh color variables from colors). Prefer the echo::*
functions above over manual ANSI codes — they handle color, emoji, and level
filtering automatically.
yadm add,
yadm commit, etc.source ~/.config/zsh/plugins/local/<file>.zshexec zsh