# How to Run the Tests for reverse-skill: Complete PowerShell Test Suite Guide

> Run the complete reverse-skill PowerShell test suite easily. Execute test-p0-friction.ps1 from the repository root for comprehensive testing on Windows or cross-platform.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: how-to-guide
- Published: 2026-08-04

---

**Execute `skills/scripts/test-p0-friction.ps1` from the repository root using PowerShell 5.1+ (Windows) or PowerShell 7 (cross-platform) to run the full test suite for reverse-skill.**

The reverse-skill repository by zhaoxuya520 ships a self-contained, end-to-end test harness written entirely in PowerShell. Whether you are validating local changes or verifying CI pipeline integrity, this guide walks you through how to run the tests for reverse-skill with precision.

## Prerequisites for Running reverse-skill Tests

Before executing any test scripts, ensure your environment meets the following requirements:

- **PowerShell 5.1 or later** on Windows, or **PowerShell 7** on Linux/macOS
- **External utilities** referenced by the skill set—such as `nmap` and `nuclei`—should be available on your `$PATH`
- **No special environment variables** are required; scripts automatically create temporary directories under `$env:TEMP`

The test harness tolerates missing tools. If an external utility is absent, only the relevant checks are skipped rather than failing the entire suite.

## Main Test Entry Point: test-p0-friction.ps1

The primary test driver is located at `skills/scripts/test-p0-friction.ps1`. This script orchestrates a comprehensive sequence of end-to-end checks covering core reverse-skill workflows.

### How to Execute the Full Test Suite

```powershell

# From the repository root

powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/test-p0-friction.ps1

```

This command creates a temporary scratch folder, runs all validation steps, and prints `[OK]` or `[FAIL]` messages for each check. The script returns a non-zero exit code if any failures occur.

### What test-p0-friction.ps1 Validates

| Test Component | Purpose | Source Location |
|----------------|---------|---------------|
| **Smoke test** | Runs `smoke.ps1` and confirms routing and verification stages complete cleanly | Lines 29-38 |
| **Case-init (granted)** | Creates a ready-to-act case with `AuthGranted` and validates [`scope.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/scope.md) generation | Lines 39-60 |
| **Bare case-init** | Runs `case-init.ps1` without auth to ensure defaults remain `pending` | Lines 63-71 |
| **Append-evidence** | Exercises `append-evidence.ps1` and verifies evidence file creation | Lines 73-96 |
| **Recon-pipeline sanity** | Confirms key notes (Origin/Referer, network hints) exist in [`pentest-tools/references/recon-pipeline.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/pentest-tools/references/recon-pipeline.md) | Lines 99-107 |
| **Routing coherence** | Runs `verify-routing-coherence.ps1` and expects exit code 0 | Lines 14-19 |
| **Chinese routing samples** | Tests `master-route.ps1` with Chinese-language hints for correct skill selection | Lines 20-30 |
| **Case-guard** | Validates `case-guard.ps1` exit codes: 0 for ready, 2 for pending, 0 with `-Force` | Lines 33-41 |
| **Lab case with AuthGranted** | Ensures lab-only cases retain `granted` status and correct network mode | Lines 43-65 |
| **Junk AuthStatus handling** | Verifies stray `AuthStatus` does not override prior `AuthGranted` | Lines 66-83 |
| **Special-char evidence** | Checks that `-RawExcerptFile` transports arbitrary Unicode safely | Lines 85-100 |

Each verification step in `test-p0-friction.ps1` corresponds to a critical operational path in the reverse-skill system.

## Secondary Test: Workflow Title Safety

For CI pipeline validation, use `skills/scripts/test-workflow-title-safety.ps1` to inspect the GitHub Actions workflow at [`.github/workflows/auto-merge-journal.yml`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.github/workflows/auto-merge-journal.yml).

### Execute the Workflow Safety Check

```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File skills/scripts/test-workflow-title-safety.ps1

```

This script confirms that PR numbers and titles are handled as plain data, preventing shell injection vulnerabilities when you modify CI workflows.

## Quick Validation Examples

### Run Specific Components

```powershell

# Quick smoke test only

powershell -NoProfile -ExecutionPolicy Bypass -File .\skills\scripts\smoke.ps1 -LogDir .\tmp\smoke-logs

# Validate routing coherence in isolation

powershell -NoProfile -ExecutionPolicy Bypass -File .\skills\scripts\verify-routing-coherence.ps1

```

### Interpret Test Output

- **`[OK]`** — The component behaved as expected
- **`[FAIL]`** — Listed in the final summary; investigate the specific check
- **Exit code `1`** — One or more failures occurred

## Key Test Files in reverse-skill

| File Path | Role |
|-----------|------|
| `skills/scripts/test-p0-friction.ps1` | Main end-to-end test harness |
| `skills/scripts/smoke.ps1` | Minimal sanity check for routing and verification |
| `skills/scripts/case-init.ps1` | Case folder creation and [`scope.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/scope.md) generation |
| `skills/scripts/append-evidence.ps1` | Evidence markdown file addition |
| `skills/scripts/verify-routing-coherence.ps1` | Skill-routing matrix validation against [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) |
| `skills/scripts/master-route.ps1` | Natural-language hint to skill mapping |
| `skills/scripts/test-workflow-title-safety.ps1` | CI workflow PR title handling verification |

## Summary

- The reverse-skill test suite is PowerShell-based and requires no complex setup beyond PowerShell itself
- **`test-p0-friction.ps1`** is the comprehensive entry point covering 11 distinct validation areas
- **`test-workflow-title-safety.ps1`** provides CI-specific security checks
- Temporary test artifacts are automatically managed under `$env:TEMP`
- Missing external tools result in skipped checks rather than hard failures

## Frequently Asked Questions

### Can I run reverse-skill tests on Linux or macOS?

Yes. Install PowerShell 7 (pwsh) and execute the same commands. The scripts are cross-platform compatible, though some external utilities like `nmap` may have different installation paths. The test harness gracefully skips checks for missing binaries.

### Why does my test fail with execution policy errors?

PowerShell's default execution policy may block script execution. The `-ExecutionPolicy Bypass` flag in the documented commands overrides this restriction for the current session without changing system-wide settings.

### How do I debug a failing test in test-p0-friction.ps1?

Open `skills/scripts/test-p0-friction.ps1` and locate the `[FAIL]` message in the output. Each test section includes descriptive comments matching the table above. Run individual component scripts—such as `smoke.ps1` or `case-init.ps1`—in isolation to narrow the issue.