Skip to content

Enable skillscope workflows on Windows - #13

Merged
danielholanda merged 1 commit into
mainfrom
dholanda/portable-shells
Sep 8, 2026
Merged

Enable skillscope workflows on Windows#13
danielholanda merged 1 commit into
mainfrom
dholanda/portable-shells

Conversation

@danielholanda

@danielholanda danielholanda commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Every behavioral leg on a self-hosted Windows runner currently fails before it grades anything:

Run npm install -g @anthropic-ai/claude-code
Error: bash: command not found

The step is Install the claude CLI in action.yml, and the shell it names is the whole of the bug:

- name: Install the claude CLI
  if: inputs.install-claude == 'true'
  shell: bash
  run: npm install -g @anthropic-ai/claude-code

Why it regressed

The fix

Write the steps that can land on a caller's runner in Python: the only shell all three platforms are guaranteed to agree on.

A behavioral leg lands on whatever platform its skill asked for, so a step
that names bash is a bet that the runner has bash. Hosted Windows carries Git
Bash and wins that bet; a self-hosted Windows box need not, and there
`Install the claude CLI` fails as `bash: command not found` -- on a step whose
actual job is npm.

Before the harness moved into this repo, the same command was a workflow step
with no `shell:` at all, so it took the runner's default: bash on Linux,
PowerShell on Windows. A composite action cannot do that. GitHub requires a
shell on every `run:`, `bash` was the one named, and Windows support regressed
with it.

So write the steps that can reach a caller's runner in Python, the only shell
the three platforms are guaranteed to agree on -- which is what the launcher
beside it already does, and for this reason. That is the claude install in
action.yml, the four bash steps in reusable.yml, and the aggregate in
skill-evals.yml, whose `coordinator_runner` is an input like any other.
selftest.yml keeps its bash: that matrix is ours.

Add a test that reads the three files and fails on a `run:` step under any
other shell, because nothing else would. `install-claude` is set by no job in
selftest.yml, so that step has never executed in this repo's CI on any
platform -- and on hosted Windows it would have passed regardless.
@danielholanda danielholanda changed the title Run every graded step under a shell all three platforms have Run every graded step under a shell all three platforms Sep 8, 2026
@danielholanda danielholanda changed the title Run every graded step under a shell all three platforms Enable skillscope workflows on Windows Sep 8, 2026
@danielholanda
danielholanda merged commit bb48550 into main Sep 8, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant