Skip to content
Back to skills

Orbit Gauntlet

ASecurity

Run the full Orbit gauntlet — 11 sequential checks on a WordPress plugin (PHP lint, PHPCS, PHPStan, asset weight, i18n, Playwright, Lighthouse, DB profile, competitor compare, UI perf, AI skill audits, PM UX). Three modes — `quick` (3-5 min, dev loop), `full` (30-45 min, RC pass), `release` (45-60 min, WP.org submission). Use when the user says "run gauntlet", "audit my plugin", "full QA", "before release", or any unscoped "check my plugin" request.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 9, 2026
testingpythongophpbashdockergitdatabasefrontendsecurityperformance

Works with

  • claude code

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add adityaarsharma/orbit --skill orbit-gauntlet --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orbit Gauntlet?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orbit Gauntlet
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/adityaarsharma-orbit-gauntlet/badge)](https://www.skillsdirectory.com/skills/adityaarsharma-orbit-gauntlet)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: orbit-gauntlet
description: Run the full Orbit gauntlet — 11 sequential checks on a WordPress plugin (PHP lint, PHPCS, PHPStan, asset weight, i18n, Playwright, Lighthouse, DB profile, competitor compare, UI perf, AI skill audits, PM UX). Three modes — `quick` (3-5 min, dev loop), `full` (30-45 min, RC pass), `release` (45-60 min, WP.org submission). Use when the user says "run gauntlet", "audit my plugin", "full QA", "before release", or any unscoped "check my plugin" request.
argument-hint: --plugin <path> --mode quick|full|release
---

# 🪐 orbit-gauntlet — The full pipeline

The flagship Orbit command. One invocation, every quality angle.

> **Smart-agentic mandate.** `--mode full` and `--mode release` run **every step end-to-end**, no cherry-picking. `--skip N` is debug-only — using it for any release-track run requires a brain note (`orbit/08-release`) recording the reason. Smart-agentic = aggressive; conservative shipped 5 example-plugin i18n bugs. See `agents/_SMART-AGENTIC-MANDATE.md`.

---

## Quick start

```bash
# Daily dev loop — fast feedback (~3-5 min)
bash scripts/gauntlet.sh --plugin ~/plugins/my-plugin --mode quick

# Pre-PR / beta release — everything (~30-45 min)
bash scripts/gauntlet.sh --plugin ~/plugins/my-plugin --mode full

# Day-of-release — full + WP.org plugin-check (~45-60 min)
bash scripts/gauntlet.sh --plugin ~/plugins/my-plugin --mode release
```

Exit code: **0** = release ready · **1** = blockers found.

---

## Mode comparison

| Step | quick | full | release |
|---|:-:|:-:|:-:|
| 1. PHP lint | ✓ | ✓ | ✓ |
| 1a. Release metadata | ✓ | ✓ | ✓ |
| 1b. Zip hygiene | — | ✓ | ✓ |
| 2. PHPCS (WPCS + VIP) | ✓ | ✓ | ✓ |
| 3. PHPStan level 5 | ✓ | ✓ | ✓ |
| 4. Asset weight | ✓ | ✓ | ✓ |
| 5. i18n + POT (gettext) | — | ✓ | ✓ |
| 5a. i18n runtime (UNESCAPED_UNICODE) | — | ✓ | ✓ |
| 5b. i18n JS parity (wp_localize_script) | — | ✓ | ✓ |
| 5c. i18n translator currency (.po drift) | — | ✓ | ✓ |
| 5d. Polylang + WPML endpoint awareness | — | ✓ | ✓ |
| 5e. IP clean-room (reference leak + provenance) | — | ✓ | ✓ |
| 6. Playwright (smoke) | ✓ | full suite | full suite |
| 7. Lighthouse | — | ✓ | ✓ |
| 8. DB profiling | — | ✓ | ✓ |
| 9. Competitor compare | — | ✓ | ✓ |
| 10. UI / editor perf | — | ✓ | ✓ |
| 11. 6 AI skill audits | — | ✓ | ✓ |
| 12. PM UX (spell + label) | — | ✓ | ✓ |
| WP.org plugin-check | — | — | ✓ |
| Live CVE feed | — | — | ✓ |
| Ownership-transfer detect | — | — | ✓ |

---

## Reading the output

After every run:

```
reports/
├── qa-report-<timestamp>.md         ← markdown summary (start here)
├── playwright-html/index.html       ← interactive E2E report
├── skill-audits/index.html          ← tabbed AI audit (full + release only)
├── lighthouse/lh-<timestamp>.json   ← performance data
└── pm-ux/pm-ux-report-<timestamp>.html  ← PM-friendly view
```

Open the master index:
```bash
python3 scripts/generate-reports-index.py
open reports/index.html
```

---

## Severity triage

| Level | Action |
|---|---|
| **Critical** | Block release. Fix today. |
| **High** | Block release. Fix in this PR. |
| **Medium** | Fix if <30 min. Otherwise log. |
| **Low / Info** | Log. Defer. |

Any Critical or High in modes `full` / `release` → exit code 1.

---

## Common failures

### `wp-env not running on port 8881`
Site isn't up. Run `/orbit-docker-site` first.

### `phpcs: command not found`
Power tools not installed. Run `/orbit-install`.

### `Playwright tests failed — auth.setup.js`
Admin cookies expired. Re-run:
```bash
WP_TEST_URL=http://localhost:8881 npx playwright test \
  tests/playwright/auth.setup.js --project=setup
```

### `qa.config.json not found`
First-time setup needed. Run `/orbit-setup`.

### Step hangs > 10 min
Probably the AI skill audits in `--mode full` waiting on Claude Code. Check `reports/skill-audits/*.md` to see if any wrote partial output. Kill + re-run.

---

## What each step actually does

Detailed in `docs/04-gauntlet.md`. Quick reference:

```
Step 1   PHP Lint           → syntax errors in every .php file (~10s)
Step 1a  Release Metadata   → header, readme.txt, version parity, license, HPOS, WP compat (~20s)
Step 1b  Zip Hygiene        → dev files, forbidden functions, supply-chain audit (~30s)
Step 2   PHPCS              → WordPress + VIP coding standards (~30s)
Step 3   PHPStan            → static analysis (level 5) (~45s)
Step 4   Asset Weight       → JS/CSS bundle sizes (~5s)
Step 5   i18n / POT         → translatable strings + text domain check (~20s)
Step 5a  i18n runtime       → JSON_UNESCAPED_UNICODE in storage + REST charset (~10s)
Step 5b  i18n JS parity     → PHP wp_localize_script keys vs JS reads (~10s)
Step 5c  i18n translator    → per-locale .po staleness vs current POT (~15s)
Step 5d  Multilingual compat→ Polylang + WPML language-aware custom endpoints (~20s)
Step 5e  IP clean-room      → reference-identifier/string/asset leak scan + GPL-compat + provenance + trademark (~25s; runs only when a competitor reference was studied — owner: orbit-security, hard gate at release)
Step 6   Playwright Tests   → functional + visual regression + flow videos (~3 min)
Step 7   Lighthouse         → Core Web Vitals scores (~1 min)
Step 8   DB Profiling       → query count + slow query log + memory + cron + GDPR (~2 min)
Step 9   Competitor         → side-by-side comparison of competitor plugins (~3 min)
Step 10  UI Performance     → editor load time (Elementor/Gutenberg) + frontend TTFB (~2 min)
Step 11  Claude Skills      → 6 parallel AI audits (security, perf, DB, a11y, standards, quality)
Step 12  PM UX Audit        → spell-check + guided experience score + label benchmarking
```

---

## After failure — drill into a specific layer

| Layer that failed | Skill |
|---|---|
| PHPCS / WPCS | `/orbit-wp-standards` |
| Security / SAST | `/orbit-wp-security` |
| Performance | `/orbit-wp-performance` |
| Database | `/orbit-wp-database` |
| Accessibility | `/orbit-accessibility` |
| i18n (gettext) | `/orbit-i18n` |
| i18n runtime (Unicode encoding) | `/orbit-i18n-runtime` |
| i18n JS parity (silent English fallback) | `/orbit-i18n-js-parity` |
| i18n translator currency (.po drift) | `/orbit-i18n-translator-currency` |
| Polylang compat (incl. custom endpoints) | `/orbit-compat-polylang` |
| WPML compat (incl. wpml-config.xml currency) | `/orbit-compat-wpml` |
| IP / copyright clean-room (reference leak + provenance) | `/orbit-ip-cleanroom` |
| Playwright | `/orbit-playwright` |
| Lighthouse | `/orbit-lighthouse` |
| Editor perf | `/orbit-editor-perf` |
| PM UX (spell + label) | `/orbit-pm-ux-audit` |
| WP.org plugin-check | `/orbit-plugin-check` |

Each sub-skill goes deeper than the gauntlet step.

---

## Variations

```bash
# Override port
WP_TEST_URL=http://localhost:8888 bash scripts/gauntlet.sh --plugin . --mode full

# Skip a specific step (debug-only — never for release)
bash scripts/gauntlet.sh --plugin . --mode full --skip 9

# Run only steps 1-5 (fast PHP-only audit)
bash scripts/gauntlet.sh --plugin . --mode quick --only 1-5

# Output JSON instead of markdown
bash scripts/gauntlet.sh --plugin . --mode full --format json
```

---

## CI / GitHub Actions

`gauntlet.sh` is CI-ready out of the box — exit 0/1, deterministic output:

```yaml
- name: Orbit gauntlet
  run: bash scripts/gauntlet.sh --plugin . --mode full
- name: Upload reports
  if: always()
  uses: actions/upload-artifact@v4
  with: { name: orbit-reports, path: reports/ }
```

Full template: `docs/15-ci-cd.md`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.