github-action-authoringlisted
Install: claude install-skill Ortus-Solutions/skills
# GitHub Action Authoring — setup-boxlang
## When to Use
- Adding or fixing Windows, Linux, or macOS support in `action.yml`
- Writing or debugging PowerShell (`shell: powershell`) steps
- Adding new inputs, outputs, or conditional steps
- Updating `tests.yml` with new platform/feature coverage
- Debugging PATH issues on GitHub Actions Windows runners
- Installing third-party tools (BoxLang, CommandBox) in CI
---
## Architecture
`action.yml` is a **composite action** with platform-specific parallel step pairs:
| Step | Unix/Linux/macOS | Windows |
|------|-----------------|---------|
| Setup BoxLang | `shell: bash` + `install-boxlang.sh` | `shell: powershell` + `install-boxlang.ps1` |
| Install CommandBox | `shell: bash` + `curl` + `unzip` | `shell: powershell` + dedicated step |
| Install modules | `shell: bash` + `install-bx-module` | skipped (not available on Windows) |
| ForgeBox API Key | `shell: bash` | `shell: powershell` |
Every step pair uses `if: runner.os != 'Windows'` / `if: runner.os == 'Windows'` conditions.
---
## Critical Rules
### Platform conditionals
Always use **both** sides for every platform-specific step:
```yaml
- name: My Step (Unix/Linux/macOS)
if: runner.os != 'Windows'
shell: bash
run: |
...
- name: My Step (Windows)
if: runner.os == 'Windows'
shell: powershell
run: |
...
```
### Environment variables in PowerShell steps
`${{ env.SOME_VAR }}` does **NOT** expand inside composite action PowerShell step bodies — it reso