Quality gate via a second AI model. Spawn a different model to review work before committing. Grades against the originating skill's Contract. Use when you want a second opinion from a different model, or the user says "second opinion", "cross-modal review", "double check this", or "get another perspective".
Send work to a different AI model for independent review. The reviewer grades against the originating skill's Contract section — checking promises, not vibes.
This skill guarantees:
Identify what needs review:
Read the originating skill's Contract section. This is the grading rubric. Example: if the output came from gstack-review, load gstack-review/SKILL.md and extract the Contract section.
If no originating skill (ad-hoc work), construct a minimal contract:
Use Cursor's Task tool to spawn a subagent with a different model:
Task(
model: "fast" or a named alternative model,
prompt: "You are an independent reviewer. Grade this work against the Contract below.
CONTRACT:
{paste the Contract section}
WORK PRODUCT:
{paste the work to review}
For each promise in the Contract, answer: PASS or FAIL with specific evidence.
Then give an overall verdict: PASS / ISSUES FOUND.
List specific findings with evidence."
)Present the review to Kevin:
Cross-Modal Review
==================
Reviewer: {model name}
Contract: {originating skill name}
Verdict: PASS | ISSUES FOUND
Contract compliance:
[PASS] {promise 1} — {evidence}
[FAIL] {promise 2} — {what's missing}
Findings:
1. {finding with evidence}
2. {finding with evidence}
Agreement with primary: {X}%
Recommendation: {accept / revise / redo}Present the findings. Kevin decides:
Never auto-apply. The reviewer is advisory.
| Review type | Recommended reviewer |
|---|---|
| Code review | Use fast model for quick check, named model for deep review |
| Design review | Use a different named model than the one that produced the design |
| Wiki page quality | Use fast — Contract compliance is straightforward |
| Architecture decision | Use the most capable available model |
If the review model refuses the task: