Skip to content

assign-to-workforce: host-environment portability fixes (macOS bash 3.2 + remove agex/workflow.sh references) #37

@OriNachum

Description

@OriNachum

While vendoring assign-to-workforce into a downstream repo (Tipalti data-askpm-agent, PR #230124 on internal TFS), 4 portability issues surfaced. Filing them upstream so future re-vendoring stays clean.

Findings + suggested fixes (each one validated against the downstream repo):

1. scripts/assign-to-workforce.sh:105 — empty-array expansion breaks macOS /bin/bash 3.2

The canonical happy-path assign-to-workforce.sh split-plan (no extra args) enters cmd_split_plan with extra_args=(), then this line:

waves_json="$("${DEVAGUE[@]}" plan waves --json "${extra_args[@]}" 2>"$tmp_err")"

aborts under set -euo pipefail with extra_args[@]: unbound variable on bash 3.2.57 (the stock macOS shell — #!/usr/bin/env bash resolves there on default installs). Bash 4+ relaxed this, but the operator environment is bash 3.2.

Fix: guard the expansion with the + parameter substitution form.

- waves_json="$("${DEVAGUE[@]}" plan waves --json "${extra_args[@]}" 2>"$tmp_err")"
+ waves_json="$("${DEVAGUE[@]}" plan waves --json "${extra_args[@]+"${extra_args[@]}"}" 2>"$tmp_err")"

Verified on GNU bash 3.2.57(1)-release (arm64-apple-darwin25).

2. SKILL.md:225 — dead workflow.sh open reference in the worked example

The end-to-end worked example tells the operator to open the final PR with:

bash .claude/skills/cicd/scripts/workflow.sh open

…but no workflow.sh ships in any downstream cicd skill (and agentculture/devague itself doesn't ship one either). Executing the example as written fails with bash: .../workflow.sh: No such file or directory.

Suggested fix: keep the example downstream-agnostic — either drop the literal command and just say "open the PR via your repo's cicd/PR-creation skill", or use a clearly-templated placeholder so it doesn't read as a real path.

3. SKILL.md:156agex pr open reference

a PR via the cicd skill (agex pr open).

agex is a sibling tool but it isn't documented as a hard dependency of assign-to-workforce, and downstream repos using this skill won't necessarily have it. Same as (2) — drop the concrete invocation or template it.

4. scripts/assign-to-workforce.sh:76 — same agex pr open in help text

The help text under Human gates mirrors the SKILL.md L156 reference.

3. The final PR (opened by the main agent via \`cicd\` / \`agex pr open\`).

Same fix as (3) — keep it agnostic so the help text matches whatever cicd-flavored skill the host repo actually ships.

Context

The downstream PR (#230124, internal TFS) applies all four fixes locally to unblock the vendoring. Filing here so the same fixes can land upstream — otherwise the next devague learn skills:all re-vendoring would re-introduce the bugs.

Happy to PR these upstream if useful — let me know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions