From rn-launch-harness
Verifies React Native app builds in 3-phase QA: functional checks (typecheck, lint, test), NativeWind 6-point config gate, FSD architecture. --strict enables full Agent Team review.
npx claudepluginhub tjdrhs90/rn-launch-harness --plugin rn-launch-harnessThis skill is limited to using the following tools:
Verifies the Generator's build against contract criteria through a progressive 3-phase evaluation pipeline.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Executes ctx7 CLI to fetch up-to-date library documentation, manage AI coding skills (install/search/generate/remove/suggest), and configure Context7 MCP. Useful for current API refs, skill handling, or agent setup.
Share bugs, ideas, or general feedback.
Verifies the Generator's build against contract criteria through a progressive 3-phase evaluation pipeline.
"Run the code, see the app, then judge." Never PASS based on code review alone. Execute commands, capture screenshots when possible, and verify independently.
Called by the orchestrator for Phase 5 (Evaluator). The orchestrator sets the QA phase (5.1, 5.2, or 5.3) and the evaluator profile.
docs/harness/contract.md (completion criteria)docs/harness/handoff/round-N-gen.md (Generator handoff)docs/harness/config.md — read evaluator field for profile selectionreferences/evaluation-criteria.md (scoring rubrics)Read the evaluator field from docs/harness/config.md to determine the profile:
| Profile | Behavior | When |
|---|---|---|
default | Phase 5.1 only (functional check). Covers typecheck, lint, FSD, contract criteria. | Default mode — token efficient |
full | Full 3-phase QA (5.1 → 5.2 → 5.3) | --strict flag |
strict | All 3 phases with higher thresholds: Design 8+, ALL 6 Agent Team must PASS with zero warnings | --strict with extra rigor |
Default mode runs Phase 5.1 only. This covers the most critical checks (typecheck 0 errors, lint 0, FSD compliance, contract criteria, stubs) at a fraction of the token cost. Phase 5.2 and 5.3 are only activated with --strict.
If no evaluator field is found, use default.
The foundation gate. If the code does not compile, lint, pass tests, and meet the contract, nothing else matters.
npm run typecheck 2>&1
npm run lint 2>&1
npm test 2>&1
Record every result. Any error = automatic FAIL for that criterion.
Verify all 6 configuration points:
babel.config.js — jsxImportSource + nativewind/babel pluginmetro.config.js — withNativeWind wrappertailwind.config.js — nativewind/preset + correct content pathsglobal.css — @tailwind base/components/utilities directives_layout.tsx — import "./global.css" presentnativewind-env.d.ts — /// <reference types="nativewind/types" />ANY missing item = FULL FAIL (className will not work at runtime).
# any type usage
grep -r ":\s*any" src/ --include="*.ts" --include="*.tsx" | grep -v node_modules
grep -r "<any>" src/ --include="*.ts" --include="*.tsx" | grep -v node_modules
# FSD layer violations (features importing from features)
grep -r "from '@features/" src/features/ --include="*.ts" --include="*.tsx"
# barrel export check
find src/features src/entities -name "index.ts" -type f
any type count > 0 → FAILFor EACH criterion in docs/harness/contract.md:
Evidence types: typecheck, lint, test, code (file:line), runtime (simulator output)
grep -rn "TODO\|FIXME\|HACK\|XXX\|STUB\|setTimeout.*mock\|placeholder\|dummy" src/ --include="*.ts" --include="*.tsx"
Any stub found = FAIL.
Trace at least one complete data flow from user action → state change → UI update. Verify the chain is real, not mocked.
PASS conditions (ALL must be met):
any types: 0FAIL → Return feedback to Generator with specific fix instructions.
If evaluator profile is quick, stop here after Phase 5.1 and issue final judgment.
Only entered after Phase 5.1 PASS.
Score each axis 1-10 using references/evaluation-criteria.md rubrics:
| Axis | Weight | Criteria |
|---|---|---|
| Design Quality | 30% | Consistency, identity, color/typography/layout harmony |
| Originality | 25% | Custom design decisions, avoidance of template/AI slop |
| Craft | 25% | Spacing consistency, typographic hierarchy, contrast ratios |
| Functionality | 20% | Usability, accessibility, interaction quality |
Weighted total = (DQ * 0.3) + (O * 0.25) + (C * 0.25) + (F * 0.20)
npm run typecheck 2>&1 | grep -i "warning"
npm run lint 2>&1 | grep -i "warning"
Record all warnings. While warnings do not auto-FAIL, they factor into Craft scoring.
Every screen and data-dependent component MUST have:
Check every screen file for all three states.
Verify layouts work across different screen sizes:
PASS conditions:
strict profile)FAIL → Return feedback with specific design/UX fix instructions.
Only entered after Phase 5.2 PASS.
Before scoring, attempt to run the app on a simulator and capture screenshots:
# Check if Maestro is available
which maestro
If Maestro IS available:
Generate a quick Maestro flow YAML that navigates through all screens and takes screenshots:
# Create maestro directory if needed
mkdir -p maestro
# Generate qa-flow.yaml based on app's navigation structure
# (analyze _layout.tsx and navigation config to build the flow)
Run the flow:
npx expo start --ios &
sleep 10
maestro test maestro/qa-flow.yaml
Store screenshots in docs/harness/screenshots/round-N/
Read each screenshot with the Read tool to visually analyze the app — check for layout issues, misalignments, broken UI, and visual quality.
If Maestro is NOT available:
Fall back to code-only analysis. Note this as a limitation in the feedback report:
> NOTE: Maestro not available. Phase 5.3 performed via code analysis only.
> Visual verification was not possible. Consider installing Maestro for full QA.
Launch 6 parallel sub-agents using the Agent tool. Each agent focuses on a specific testing dimension. ALL 6 must PASS for Phase 5.3 to PASS.
src/ renders correctly__tests__/ directoryPASS conditions:
FAIL → Return comprehensive feedback from all failing agents.
Write evaluation results to docs/harness/feedback/round-N-qa.md:
# Evaluator Feedback — Round N
## Phase: [5.1 | 5.2 | 5.3]
## Profile: [default | quick | strict]
## Score: X/10
## Trend: [improving | stagnant | declining]
## Judgment: [PASS | FAIL]
## Phase 5.1: Functional
### Test Results
- typecheck: [PASS/FAIL] — [error count]
- lint: [PASS/FAIL] — [error count]
- test: [PASS/FAIL] — [X/Y passed]
### NativeWind Setup
- [PASS/FAIL] — [missing items if any]
### FSD Compliance
- any types: [count]
- Layer violations: [list]
- Barrel exports: [missing list]
### Contract Verification
- [PASS] Criterion 1: [evidence]
- [FAIL] Criterion 2: [expected vs actual]
...
### Stub Detection
- [list of stubs found, or "None"]
### End-to-End Data Flow
- [traced flow description and verification result]
## Phase 5.2: Quality (if reached)
### Design Quality
| Axis | Score | Evidence |
|------|-------|----------|
| Design Quality | X/10 | ... |
| Originality | X/10 | ... |
| Craft | X/10 | ... |
| Functionality | X/10 | ... |
| **Weighted Total** | **X/10** | |
### Console/Build Warnings
- [list or "None"]
### Interaction States
- Screen A: loading [Y/N], error [Y/N], empty [Y/N]
- Screen B: loading [Y/N], error [Y/N], empty [Y/N]
...
### Responsive Layout
- [findings]
## Phase 5.3: Edge Cases (if reached)
### Simulator Screenshots
- [available / not available]
- [screenshot analysis findings]
### Agent Team Results
| Agent | Result | Key Findings |
|-------|--------|-------------|
| Component Tester | [PASS/FAIL] | ... |
| E2E Flow Tester | [PASS/FAIL] | ... |
| Edge Case Tester | [PASS/FAIL] | ... |
| Code Quality Inspector | [PASS/FAIL] | ... |
| Test Case Generator | [PASS/FAIL] | ... |
| Adversarial Reviewer | [PASS/FAIL] | ... |
## Bugs Found
1. **[critical]** [description] — [file:line]
2. **[major]** [description] — [file:line]
3. **[minor]** [description] — [file:line]
## Reasoning
[Comprehensive justification for the PASS/FAIL judgment]
## Fix Instructions (if FAIL)
[Ordered list of specific fixes the Generator must make, with file paths and expected changes]
current_phase: admob
next_role: rn-harness-admob
next_role: rn-harness-generator
current_round: N+1
The orchestrator advances the QA sub-phase. The evaluator is re-invoked for the next phase.
These rules are absolute and cannot be overridden:
max_rounds reached = forced judgment — Evaluate current state as-is