shellcheck-fix · v1.0.0 · 2026-06-09 · sha256 cfdff200123a688b

shellcheck-fix v1.0.0A

Immutable. This exact content never changes and is served at /api/v1/blob/cfdff200123a688b.

---
name: shellcheck-fix
description: Run shellcheck on the shipped/installer shell scripts and fix findings while preserving bash 3.2 compatibility. Use after editing any .sh file.
version: "1.0.0"
documentation_url: https://deepworkplan.com
user-invocable: true
allowed-tools: Bash, Read, Grep, Glob, Edit
---

# Shellcheck Fix

## Goal

Keep `setup.sh`, `skills/deepworkplan/shared/context.sh`, and `scripts/*.sh`
shellcheck-clean and runnable on macOS's default bash 3.2.

## When to use

After editing any shell script, or when CI's shellcheck step fails.

## Steps

1. Run `shellcheck setup.sh skills/deepworkplan/shared/context.sh scripts/*.sh`.
2. Fix each finding. When resolving, keep the script **bash 3.2-safe**:
   - replace `mapfile`/`readarray` with `while IFS= read -r line; do …; done < <(cmd)`
   - replace `declare -A` with a restructured approach
   - replace `${var^^}`/`${var,,}` with `tr '[:lower:]' '[:upper:]'`
3. Confirm each script starts with `#!/usr/bin/env bash` then `set -euo pipefail`.
4. Re-run shellcheck until clean.
5. If `setup.sh` changed, smoke-test it: `HOME="$(mktemp -d)" ./setup.sh --host claude`.

## Validation

`shellcheck setup.sh skills/deepworkplan/shared/context.sh scripts/*.sh` exits 0,
and the installer smoke test still creates the expected symlinks.

## Notes

Do not change `setup.sh` public flags (`--host`, `--help`) or symlink names
without flagging a MAJOR bump. CI runs the smoke job on Ubuntu **and** macOS.