# OS/Architecture Requirements for Cross-Platform CI in reverse-skill: Windows and Ubuntu Support

> Discover OS architecture requirements for cross-platform CI with Windows and Ubuntu support. Learn about x86-64, Windows Server 2022, and Ubuntu 22.04 runner configurations.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: architecture
- Published: 2026-08-28

---

**The reverse-skill CI pipeline enforces strict OS/architecture requirements for cross-platform CI by running exclusively on x86-64 (AMD64) architecture across Windows Server 2022 and Ubuntu 22.04 GitHub-hosted runners, utilizing PowerShell 5.1 on Windows and PowerShell Core with a command shim on Ubuntu.**

The zhaoxuya520/reverse-skill repository validates its automation scripts and tooling through a GitHub Actions workflow designed for cross-platform compatibility. Understanding these specific platform constraints ensures contributors can replicate CI behavior locally and troubleshoot architecture-specific failures effectively.

## Platform Matrix and Architecture Constraints

The CI workflow defines a **build matrix** that targets two specific GitHub-hosted runners. According to the configuration in [`.github/workflows/ci.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/ci.yml) (lines 14-17), the pipeline executes on:

- **windows-latest**: Running Windows Server 2022 on **x86-64** (AMD64) architecture with native Windows PowerShell 5.1
- **ubuntu-latest**: Running Ubuntu 22.04 on **x86-64** (AMD64) architecture with PowerShell Core

Because GitHub’s hosted runners currently provide only x86-64 architecture, the reverse-skill CI implicitly requires all native dependencies—Java runtimes, Node.js, and Python interpreters—to be available for AMD64. The configuration does not exercise ARM64, ARM32, or alternative architectures.

## PowerShell Implementation Strategy

The repository handles PowerShell invocation differently across platforms to maintain cross-platform compatibility while accommodating runner-specific constraints.

### Windows PowerShell 5.1

On the `windows-latest` runner, the CI uses the native **Windows PowerShell 5.1** installation. This provides full compatibility with legacy Windows-specific modules and execution policies required by the repository’s automation scripts, as documented in [`docs/PLATFORMS.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/PLATFORMS.md).

### Ubuntu PowerShell Core with Shim

The `ubuntu-latest` runner ships with PowerShell Core (`pwsh`) only, omitting the legacy `powershell` command. To ensure scripts referencing the `powershell` executable function correctly, the CI workflow creates a **symbolic link shim**. As defined in [`.github/workflows/ci.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/ci.yml) (lines 21-26):

```yaml
- name: powershell shim (linux)
  if: runner.os == 'Linux'
  shell: bash
  run: sudo ln -sf "$(command -v pwsh)" /usr/local/bin/powershell

```

This shim redirects calls to `powershell` to the `pwsh` binary, allowing unified script execution across both platforms without modification.

## Supporting Files and Platform Documentation

The OS/architecture requirements for cross-platform CI are formally documented and enforced through several key files:

- **[`.github/workflows/ci.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/ci.yml)**: Defines the OS matrix and PowerShell shim logic for cross-platform execution
- **[`docs/PLATFORMS.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/PLATFORMS.md)** (lines 11-17): Documents the supported platform matrix, confirming Windows as the primary path and Ubuntu as the supported generic Linux path
- **[`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh)**: Serves as the entry point for Linux/Ubuntu CI jobs, initializing the environment on Ubuntu runners
- **[`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh)**: Refreshes the tool index after bootstrapping, executing on both Windows and Ubuntu runners to maintain synchronized state

## Summary

- The reverse-skill CI requires **x86-64 architecture exclusively** for both Windows and Ubuntu runners
- **Windows Server 2022** runners use native **PowerShell 5.1**, while **Ubuntu 22.04** runners use **PowerShell Core** with a command shim
- The matrix strategy in [`.github/workflows/ci.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/ci.yml) enforces these platform constraints at the workflow level
- No ARM or alternative architectures are currently supported in the CI configuration
- Platform documentation in [`docs/PLATFORMS.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/PLATFORMS.md) mirrors the CI matrix configuration for consistency

## Frequently Asked Questions

### Does reverse-skill CI support ARM64 or Apple Silicon runners?

No. The current CI configuration targets only GitHub-hosted `windows-latest` and `ubuntu-latest` runners, which exclusively provide x86-64 (AMD64) architecture. The workflow matrices in [`.github/workflows/ci.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/ci.yml) do not include ARM64, ARM32, or macOS runners, meaning contributors must rely on cross-compilation or emulation for ARM-specific testing.

### Why does the Ubuntu CI use a PowerShell shim instead of calling pwsh directly?

The shim ensures backward compatibility with scripts and tooling that invoke the `powershell` command explicitly. Since Ubuntu runners ship only with PowerShell Core (`pwsh`), the symbolic link at `/usr/local/bin/powershell` allows existing automation to function without platform-specific modifications, maintaining consistency with Windows execution patterns where `powershell` is the standard command.

### Which PowerShell version executes on the Windows CI runner?

The `windows-latest` runner utilizes native **Windows PowerShell 5.1**, not PowerShell Core. This distinction matters for execution policy settings and module compatibility, as documented in [`docs/PLATFORMS.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/PLATFORMS.md) (lines 11-17) and implemented in the CI workflow logic. Scripts relying on PowerShell 7+ features will fail on Windows runners unless specifically invoked through an alternative method.

### Can I run the CI pipeline on self-hosted runners with different OS versions?

While the repository defines requirements for GitHub-hosted runners, self-hosted runners must replicate the same architecture (x86-64) and PowerShell environments (5.1 for Windows, Core for Linux with shim) to ensure compatibility with the bootstrap scripts referenced in [`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh) and the refresh tooling in [`skills/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh). Deviations from these versions may cause the bootstrapping logic to fail or produce inconsistent tool indices.