agent/codex/code/commands/qa.md
Snider 466fe9f5a6 feat(codex): mirror claude plugins and ethics modal
Summary:\n- added Codex marketplace registry plus awareness/ethics/guardrails sub-plugins\n- mirrored Claude plugin commands/scripts/hooks into codex api/ci/code/collect/coolify/core/issue/perf/qa/review/verify\n- embedded Axioms of Life ethics modal, guardrails, and kernel files under codex/ethics\n- added Codex parity report, improvements list, and MCP integration plan\n- extended Gemini MCP tools and docs for Codex awareness
2026-02-05 20:13:01 +00:00

3.1 KiB

name description hooks
qa Run QA checks and fix all issues iteratively
PostToolUse Stop
matcher hooks
Bash
type command
command ${CLAUDE_PLUGIN_ROOT}/scripts/qa-filter.sh
hooks
type command once
command ${CLAUDE_PLUGIN_ROOT}/scripts/qa-verify.sh true

QA Fix Loop

Run the full QA pipeline and fix all issues.

Workspace: {{env.CLAUDE_CURRENT_MODULE}} ({{env.CLAUDE_MODULE_TYPE}})

Process

  1. Run QA: Execute core {{env.CLAUDE_MODULE_TYPE}} qa
  2. Parse issues: Extract failures from output (see format below)
  3. Fix each issue: Address one at a time, simplest first
  4. Re-verify: After fixes, re-run QA
  5. Repeat: Until all checks pass
  6. Report: Summary of what was fixed

Issue Priority

Fix in this order (fastest feedback first):

  1. fmt - formatting issues (auto-fix with core go fmt)
  2. lint - static analysis (usually quick fixes)
  3. test - failing tests (may need more investigation)
  4. build - compilation errors (fix before tests can run)

Output Parsing

Go QA Output

=== FMT ===
FAIL: pkg/api/handler.go needs formatting

=== LINT ===
pkg/api/handler.go:42:15: undefined: ErrNotFound (typecheck)
pkg/api/handler.go:87:2: ineffectual assignment to err (ineffassign)

=== TEST ===
--- FAIL: TestCreateUser (0.02s)
    handler_test.go:45: expected 200, got 500
FAIL

=== RESULT ===
fmt: FAIL
lint: FAIL (2 issues)
test: FAIL (1 failed)

PHP QA Output

=== PINT ===
FAIL: 2 files need formatting

=== STAN ===
src/Http/Controller.php:42 - Undefined variable $user

=== TEST ===
✗ CreateUserTest::testSuccess
  Expected status 200, got 500

=== RESULT ===
pint: FAIL
stan: FAIL (1 error)
test: FAIL (1 failed)

Fixing Strategy

Formatting (fmt/pint):

  • Just run core go fmt or core php fmt
  • No code reading needed

Lint errors:

  • Read the specific file:line
  • Understand the error type
  • Make minimal fix

Test failures:

  • Read the test file to understand expectation
  • Read the implementation
  • Fix the root cause (not just the symptom)

Build errors:

  • Usually missing imports or typos
  • Fix before attempting other checks

Stop Condition

Only stop when:

  • All QA checks pass, OR
  • User explicitly cancels, OR
  • Same error repeats 3 times (stuck - ask for help)

Example Session

Detecting project type... Found go.mod → Go project

Running: core go qa

## QA Issues

pkg/api/handler.go:42:15: undefined: ErrNotFound
--- FAIL: TestCreateUser (0.02s)

**Summary:** lint: FAIL (1) | test: FAIL (1)

---

Fixing lint issue: undefined ErrNotFound
Reading pkg/api/handler.go...
Adding error variable definition.

Running: core go qa

## QA Issues

--- FAIL: TestCreateUser (0.02s)
    expected 200, got 404

**Summary:** lint: PASS | test: FAIL (1)

---

Fixing test issue: expected 200, got 404
Reading test setup...
Correcting test data.

Running: core go qa

✓ All checks passed!

**Summary:**
- Fixed: undefined ErrNotFound (added error variable)
- Fixed: TestCreateUser (corrected test setup)
- 2 issues resolved, all checks passing