From agents
Shell script generation, review, and dialect conversion. Makefile and justfile generation. ShellCheck rules. Use for shell work. NOT for Python (python-conventions) or CI/CD (devops-engineer).
npx claudepluginhub wyattowalsh/agents --plugin agentsThis skill uses the workspace's default tool permissions.
Generate, review, convert, and lint shell scripts. Makefile and justfile generation. References ShellCheck rule IDs with explanations but does NOT run ShellCheck.
evals/convert-dialect.jsonevals/create-script.jsonevals/implicit-trigger.jsonevals/negative-control.jsonevals/review-script.jsonreferences/common-pitfalls.mdreferences/dialect-differences.mdreferences/makefile-justfile.mdreferences/posix-compatibility.mdreferences/shellcheck-rules.mdscripts/dialect-converter.pyscripts/script-analyzer.pyCreates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Generate, review, convert, and lint shell scripts. Makefile and justfile generation. References ShellCheck rule IDs with explanations but does NOT run ShellCheck.
Scope: Shell scripts (bash, zsh, fish, sh/POSIX), Makefiles, justfiles. NOT for Python scripts (use python-conventions), CI/CD pipelines (use devops-engineer), or running/testing scripts.
| $ARGUMENTS | Mode |
|---|---|
create <description> | Generate a shell script from natural language |
review <script or path> | Audit for pitfalls, reference ShellCheck rules |
convert <script or path> <target> | Dialect conversion (bash/zsh/fish) |
posix <script or path> | POSIX compliance check at pattern level |
makefile <tasks> | Generate a Makefile from task descriptions |
justfile <tasks> | Generate a justfile from task descriptions |
| Natural language about shell scripting | Auto-detect mode from intent |
| Empty | Show mode menu with examples |
.sh/.bash/.zsh/.fish file + modification verb (review, check, fix, audit, lint) -> review.sh file + "to zsh/fish/bash" -> convert.sh file + "posix" or "portable" -> posixGenerate a shell script from a natural language description.
uv run python skills/shell-scripter/scripts/dialect-converter.py --list-features <dialect> to confirm available featuresenv bash, not hardcoded interpreter paths)set -euo pipefail for bash (equivalent for other dialects)uv run python skills/shell-scripter/scripts/script-analyzer.py --stdin <<< "$SCRIPT" on the generated scriptAudit a shell script for common pitfalls. Reference ShellCheck rule IDs.
uv run python skills/shell-scripter/scripts/script-analyzer.py <path>{shebang, dialect, issues, posix_compatible, complexity_estimate}references/shellcheck-rules.md to explain the rule IDSeverity mapping:
| Severity | Examples |
|---|---|
| error | Unquoted variables in conditionals, syntax errors, command injection |
| warning | Missing error handling, unquoted glob expansions, deprecated syntax |
| info | Suboptimal patterns, unnecessary subshells, redundant commands |
| style | Inconsistent quoting, missing shellcheck directives, naming |
Convert shell syntax between bash, zsh, and fish.
--from flag)uv run python skills/shell-scripter/scripts/dialect-converter.py <path> --from <source> --to <target>{converted_script, changes, warnings}Check a script for POSIX compliance at the pattern level.
uv run python skills/shell-scripter/scripts/script-analyzer.py <path> --posix[[ ]], (( )), arrays, local, source, process substitution, {a..z}, $'...'references/posix-compatibility.mdGenerate a Makefile from task descriptions.
$ARGUMENTS.PHONY declarations for non-file targets.DEFAULT_GOALhelp target using self-documenting pattern (## comments)UPPER_SNAKE_CASE).ONESHELL when multi-line recipes need shared statereferences/makefile-justfile.mdGenerate a justfile from task descriptions.
$ARGUMENTSdefault alias)set shell directive if non-default shell neededset dotenv-load if environment variables are referencedreferences/makefile-justfile.mdUse these terms exactly throughout:
| Term | Definition |
|---|---|
| dialect | Shell language variant: bash, zsh, fish, sh (POSIX) |
| bash-ism | Syntax or feature not in POSIX sh (e.g., arrays, [[ ]]) |
| shebang | #! line specifying the interpreter |
| SC rule | A ShellCheck rule ID (e.g., SC2086 = unquoted variable) |
| recipe | A justfile target (not "task" or "rule") |
| target | A Makefile target (not "task" or "recipe") |
| portable | Works across bash/zsh/sh without modification |
Load ONE reference at a time. Do not preload all references into context.
| File | Content | Read When |
|---|---|---|
references/shellcheck-rules.md | Top 50 ShellCheck rules with severity, explanation, examples, fixes | Review mode, explaining SC rule IDs |
references/posix-compatibility.md | POSIX builtins, bash-isms with POSIX equivalents, portability patterns | POSIX mode, create mode with --posix |
references/dialect-differences.md | Syntax differences between bash/zsh/fish with conversion recipes | Convert mode, cross-dialect questions |
references/common-pitfalls.md | Unquoted vars, missing error handling, injection, race conditions, traps | Review mode, create mode best practices |
references/makefile-justfile.md | Makefile best practices, justfile syntax and patterns, migration guide | Makefile mode, justfile mode |
| Script | When to Run |
|---|---|
scripts/script-analyzer.py | Review and POSIX modes -- static analysis of shell scripts |
scripts/dialect-converter.py | Convert mode -- syntax conversion between dialects |
env bash), never hardcoded interpreter pathsset -euo pipefail in generated bash scripts -- omit only with explicit justificationeval unless no alternative exists -- explain the risk.PHONY declaration and a help target