# Codex Plugin QA

Tests the Codex plugin in isolation against a local mock model.

- Repository: https://github.com/code-yeongyu/oh-my-openagent (70577 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add code-yeongyu/oh-my-openagent --skill codex-qa -g -a claude-code -y`
Codex: `npx skills add code-yeongyu/oh-my-openagent --skill codex-qa -g -a codex -y`
Cursor: `npx skills add code-yeongyu/oh-my-openagent --skill codex-qa -g -a cursor -y`
Gemini CLI: `npx skills add code-yeongyu/oh-my-openagent --skill codex-qa -g -a gemini-cli -y`

## Description

QA the omo Codex Light edition (lazycodex / packages/omo-codex) itself, in strict isolation so ONLY our plugin is exercised, never the user's real ~/.codex. The first-party method drives the real `codex app-server` against an isolated CODEX_HOME plus a LOCAL mock model (no real API call), and proves a plugin hook fired by asserting hook/started + hook/completed notifications. Also: isolated install verification, per-component hook probes, a tmux TUI smoke, and runtime log observation (RUST_LOG / logs SQLite / /debug-config). Ships tested helper scripts each with a --self-test. Use whenever someone changes anything under packages/omo-codex or wants to QA, smoke-test, verify, or debug the Codex plugin, its hooks/components, the installer/config.toml, the app-server flow, or the Codex TUI. Triggers: codex qa, qa codex, codex-qa, test codex plugin, verify codex hook, codex app-server, lazycodex qa, isolated CODEX_HOME, prove codex hook fired, codex tui test.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Codex QA

QA the omo Codex Light edition (`packages/omo-codex/`, shipped as lazycodex). We
exercise OUR plugin in a REAL Codex while touching nothing of the user's setup:
an isolated `CODEX_HOME` + a local mock model means no real API call and the real
`~/.codex` is never read or written. Each helper script ships a `--self-test`
that asserts its scenario against the live machine, so the scripts are both the
QA tools and their own regression checks.

Verified against `codex-cli 0.140.0` (node, jq, tmux, bun on macOS). Confirm with
`codex --version`; check a flag with `codex <cmd> --help`.

## Golden rules (read before running anything)

- **QA ONLY our plugin.** Everything that spawns codex uses an isolated
  `CODEX_HOME` (created by `cqa_mk_isolated_home`) and a LOCAL mock model
  provider (`cqa_start_mock`). Never QA against the real `~/.codex`, never hit a
  real model API. The bundled scripts enforce this; if you run codex by hand,
  `export CODEX_HOME="$(mktemp -d)/codex"; mkdir -p "$CODEX_HOME"` FIRST (a set
  `CODEX_HOME` must already exist or codex hard-errors).
- **Prove the real home stayed clean.** Every script shasums
  `~/.codex/config.toml` before and after and asserts it is unchanged. If you
  script by hand, do the same.
- **The interactive `codex` is a shell function** that injects `--profile quotio`.
  Bash scripts bypass it and get the real binary; never rely on the interactive
  alias. See [references/isolation.md](references/isolation.md).
- **The first-party way to prove a hook fired is the app-server** notification
  stream (`hook/started` / `hook/completed`), not log scraping. See
  [references/app-server.md](references/app-server.md).
- **The captured JSON / pane IS the evidence**, write it under
  `.omo/evidence/<YYYYMMDD>-<slug>/` (no evidence file == the QA did not happen).
  That directory is gitignored: the files stay local, the PR body carries the
  summary and decisive excerpts, and nothing under it is ever committed.

## Setup

The rest: https://github.com/code-yeongyu/oh-my-openagent/blob/HEAD/.agents/skills/codex-qa/SKILL.md
