[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N066P2XJCP7V19N2ED4W5M":3,"skill-same:01M6N066P2XJCP7V19N2ED4W5M":89},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":6,"ownerHtmlUrl":71,"ownerBlogUrl":72,"ownerDescription":73,"updatedAt":74,"install":75,"resources":88},"01M6N066P2XJCP7V19N2ED4W5M","cross-modal-review",null,"Quality gate via second model. Spawn a different AI model to review work\nbefore committing. Includes refusal routing: if one model refuses, switch\nsilently to the next. Extended in v0.25.1 with structured review-mode\ngating (when to invoke vs not) and a Codex code-review handoff for the\ndiff-review case.","garrytan\u002Fgbrain","garrytan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19957?v=4","01M6DJCCDDG53MTYYRTXAXFG17","Garry Tan","01M6MZQZCEN3RRMD33E1X9ZZR9",32847,"MIT","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fplugin\u002Fskills\u002Fcross-modal-review\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"cross modal review","modal","review","double check","when","invoke","gating","mode","review work","false","get","next","query","v0","spawn","challenge","work","model","search","code-review","code","handoff","2026-11-10 10:12:30",false,"---\nname: cross-modal-review\nversion: 1.1.0\ndescription: |\n  Quality gate via second model. Spawn a different AI model to review work\n  before committing. Includes refusal routing: if one model refuses, switch\n  silently to the next. Extended in v0.25.1 with structured review-mode\n  gating (when to invoke vs not) and a Codex code-review handoff for the\n  diff-review case.\ntriggers:\n  - \"second opinion\"\n  - \"cross-modal review\"\n  - \"double check this\"\n  - \"get another perspective\"\n  - \"challenge this code\"\n  - \"adversarial review\"\ntools:\n  - search\n  - query\n  - get_page\nmutating: false\nwhen_to_use: \"Use when the user asks: \\\"second opinion\\\", \\\"cross-modal review\\\", \\\"double check this\\\", \\\"get another perspective\\\", \\\"challenge this code\\\".\"\n---\n\n# Cross-Modal Review\n\n> **Convention:** see [conventions\u002Fcross-modal.yaml](..\u002Fconventions\u002Fcross-modal.yaml)\n> for the review pairs and refusal routing chain.\n\n> **Relationship to `gbrain eval cross-modal`:** This skill is the manual\n> mid-flow gate (one model reviews work product before commit, with refusal\n> routing). The `gbrain eval cross-modal` command (v0.27.x) is a sibling\n> surface: 3 different-provider frontier models score-and-iterate on a\n> documented dimension list *before* tests cement behavior. Use this skill\n> for ad-hoc second opinions; use `gbrain eval cross-modal` for the\n> skillify Phase 3 quality gate. The two are complementary, not redundant.\n\n## Contract\n\nThis skill guarantees:\n\n- Work product is reviewed by a different model before finalizing.\n- The review is graded against the originating skill's Contract section\n  (what was promised), not vibes.\n- Agreement and disagreement are reported transparently.\n- Refusal from one model triggers a silent switch to the next in chain.\n- The user always makes the final decision (user sovereignty).\n\n## When to invoke (v0.25.1 gating)\n\nInvoke this skill when:\n\n- **Significant code changes** — any commit touching 5+ files or 100+\n  lines. Architecture decisions, refactors, API changes.\n- **Security-sensitive changes** — auth flows, brain-write trust boundaries,\n  webhook transforms, cross-skill data passing.\n- **Stuck or churning** — 2+ iterations on the same problem without\n  progress.\n- **Pre-bulk-operation** — before running batch enrichment, migrations,\n  or bulk writes (see [conventions\u002Ftest-before-bulk.md](..\u002Fconventions\u002Ftest-before-bulk.md)).\n- **Skill creation \u002F modification** — new or rewritten skills that\n  affect operational behavior.\n- **Brain-page quality concerns** — when brain writes need validation\n  against the originating skill's Contract.\n\nDo NOT invoke for:\n\n- Simple memory writes or brain-page updates\n- Single-file typo fixes\n- Routine cron output or heartbeat operations\n- Git commit \u002F push of already-reviewed work\n\n## Phases\n\n1. **Capture the work product.** The brain page, analysis, code diff,\n   or decision to be reviewed.\n2. **Load the Contract.** Read the originating skill's Contract section\n   (what was promised).\n3. **Spawn review model.** Send the work + Contract to a different\n   model. Use [conventions\u002Fmodel-routing.md](..\u002Fconventions\u002Fmodel-routing.md)\n   for model selection.\n4. **Grade.** Model evaluates: did the output follow the Contract?\n   Pass \u002F fail with specific citations.\n5. **Report.** Present agreement \u002F disagreement to the user. Never\n   auto-apply the reviewer's suggestions.\n\n## Code-review handoff (v0.25.1 extension)\n\nFor diff review specifically, gstack ships a `\u002Fcodex` skill that wraps\nthe OpenAI Codex CLI. Two modes:\n\n### Codex Review\n\nIndependent diff review from a different AI system. The user invokes\n`\u002Fcodex review` (gstack-shipped); cross-modal-review's job is to\nRECOGNIZE when this is the right tool and recommend it explicitly.\n\n**When to recommend `\u002Fcodex review`:**\n- After a substantive diff lands and before merge\n- When the user wants a second opinion that's NOT another Claude\n\n**Output framing (when cross-modal-review surfaces Codex output):**\n\n```\nCODEX REVIEW (independent second opinion):\n══════════════════════════════════════════\n\u003Cfull codex output, verbatim>\n══════════════════════════════════════════\n\nCROSS-MODEL ANALYSIS:\n  Both found:    [overlapping findings]\n  Only Codex:    [findings unique to Codex]\n  Only Claude:   [findings unique to my analysis]\n  Agreement:     X% (N\u002FM findings overlap)\n```\n\nUser decides what to act on. Cross-model agreement is signal, not\npermission.\n\n### Adversarial Challenge\n\nSame shape, different prompt. Used on security-sensitive changes:\nthe reviewer is asked to find injection vectors, race conditions,\nauth bypasses, data leaks, privilege escalation paths.\n\nOutput adds an exploitability rating (CRITICAL \u002F HIGH \u002F MEDIUM \u002F LOW)\nand recommended mitigations.\n\n## Refusal routing\n\nIf the primary review model refuses:\n\n1. Switch silently to the next model in the chain (see\n   `conventions\u002Fcross-modal.yaml`).\n2. Don't show the refusal to the user.\n3. Don't announce the switch.\n4. If ALL models in the chain refuse, escalate to the user.\n\n## Output format\n\n### Standard review\n\n```\nCross-Modal Review\n==================\nReviewer:  {model name}\nContract:  {originating skill}\nVerdict:   PASS | ISSUES FOUND\n\nFindings:\n- {finding with evidence}\n\nAgreement with primary: {X}%\n```\n\n### Code review\n\n```\nCross-Modal Review (code)\n==========================\nMode:           Codex Review | Adversarial Challenge\nFiles changed:  N\nLines changed:  +N \u002F -N\n\n{mode-specific output above}\n```\n\n## User-sovereignty rule (Iron Law)\n\nReviewer findings are INFORMATIONAL until the user explicitly approves\neach one. Do NOT incorporate reviewer recommendations into the work\nproduct without presenting each finding and getting explicit approval.\nThis applies even when the reviewer is correct. Cross-model consensus\nis a strong signal — present it as such — but the user makes the\ndecision.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- A review model refuses: switch to the next model in the chain silently; escalate to the user only when every model refuses.\n- `gbrain eval cross-modal` fails on a missing provider key or `no_pricing`: name the missing provider and run with the models that are configured; never report a review that did not run as passed.\n\n## Anti-Patterns\n\n- ❌ Auto-applying reviewer suggestions without user approval\n- ❌ Showing model refusals to the user\n- ❌ Using the same model for review and generation\n- ❌ Skipping the Contract reference (reviewing vibes, not guarantees)\n- ❌ Code-reviewing trivial changes (typos, formatting)\n- ❌ Running code review without git-diff context\n\n## Related skills\n\n- gstack `\u002Fcodex` — the actual Codex CLI wrapper this skill hands off\n  to for diff-review mode. Cross-modal-review knows WHEN to invoke;\n  \u002Fcodex knows HOW.\n- `skills\u002Ftesting\u002FSKILL.md` — runs the project test suite; complementary\n  signal for \"is this commit safe to land\"\n- `skills\u002Fconventions\u002Fcross-modal.yaml` — review pairs + refusal routing\n\n\n## Output Format\n\nThe skill's output shape is documented inline in the body sections above (see \"Output\", \"Brain page format\", or equivalent). The literal section header here exists for the conformance test (`test\u002Fskills-conformance.test.ts`).\n","# Cross-Modal Review\n\n> **Convention:** see [conventions\u002Fcross-modal.yaml](..\u002Fconventions\u002Fcross-modal.yaml)\n> for the review pairs and refusal routing chain.\n\n> **Relationship to `gbrain eval cross-modal`:** This skill is the manual\n> mid-flow gate (one model reviews work product before commit, with refusal\n> routing). The `gbrain eval cross-modal` command (v0.27.x) is a sibling\n> surface: 3 different-provider frontier models score-and-iterate on a\n> documented dimension list *before* tests cement behavior. Use this skill\n> for ad-hoc second opinions; use `gbrain eval cross-modal` for the\n> skillify Phase 3 quality gate. The two are complementary, not redundant.\n\n## Contract\n\nThis skill guarantees:\n\n- Work product is reviewed by a different model before finalizing.\n- The review is graded against the originating skill's Contract section\n  (what was promised), not vibes.\n- Agreement and disagreement are reported transparently.\n- Refusal from one model triggers a silent switch to the next in chain.\n- The user always makes the final decision (user sovereignty).\n\n## When to invoke (v0.25.1 gating)\n\nInvoke this skill when:\n\n- **Significant code changes** — any commit touching 5+ files or 100+\n  lines. Architecture decisions, refactors, API changes.\n- **Security-sensitive changes** — auth flows, brain-write trust boundaries,\n  webhook transforms, cross-skill data passing.\n- **Stuck or churning** — 2+ iterations on the same problem without\n  progress.\n- **Pre-bulk-operation** — before running batch enrichment, migrations,\n  or bulk writes (see [conventions\u002Ftest-before-bulk.md](..\u002Fconventions\u002Ftest-before-bulk.md)).\n- **Skill creation \u002F modification** — new or rewritten skills that\n  affect operational behavior.\n- **Brain-page quality concerns** — when brain writes need validation\n  against the originating skill's Contract.\n\nDo NOT invoke for:\n\n- Simple memory writes or brain-page updates\n- Single-file typo fixes\n- Routine cron output or heartbeat operations\n- Git commit \u002F push of already-reviewed work\n\n## Phases\n\n1. **Capture the work product.** The brain page, analysis, code diff,\n   or decision to be reviewed.\n2. **Load the Contract.** Read the originating skill's Contract section\n   (what was promised).\n3. **Spawn review model.** Send the work + Contract to a different\n   model. Use [conventions\u002Fmodel-routing.md](..\u002Fconventions\u002Fmodel-routing.md)\n   for model selection.\n4. **Grade.** Model evaluates: did the output follow the Contract?\n   Pass \u002F fail with specific citations.\n5. **Report.** Present agreement \u002F disagreement to the user. Never\n   auto-apply the reviewer's suggestions.\n\n## Code-review handoff (v0.25.1 extension)\n\nFor diff review specifically, gstack ships a `\u002Fcodex` skill that wraps\nthe OpenAI Codex CLI. Two modes:\n\n### Codex Review\n\nIndependent diff review from a different AI system. The user invokes\n`\u002Fcodex review` (gstack-shipped); cross-modal-review's job is to\nRECOGNIZE when this is the right tool and recommend it explicitly.\n\n**When to recommend `\u002Fcodex review`:**\n- After a substantive diff lands and before merge\n- When the user wants a second opinion that's NOT another Claude\n\n**Output framing (when cross-modal-review surfaces Codex output):**\n\n```\nCODEX REVIEW (independent second opinion):\n══════════════════════════════════════════\n\u003Cfull codex output, verbatim>\n══════════════════════════════════════════\n\nCROSS-MODEL ANALYSIS:\n  Both found:    [overlapping findings]\n  Only Codex:    [findings unique to Codex]\n  Only Claude:   [findings unique to my analysis]\n  Agreement:     X% (N\u002FM findings overlap)\n```\n\nUser decides what to act on. Cross-model agreement is signal, not\npermission.\n\n### Adversarial Challenge\n\nSame shape, different prompt. Used on security-sensitive changes:\nthe reviewer is asked to find injection vectors, race conditions,\nauth bypasses, data leaks, privilege escalation paths.\n\nOutput adds an exploitability rating (CRITICAL \u002F HIGH \u002F MEDIUM \u002F LOW)\nand recommended mitigations.\n\n## Refusal routing\n\nIf the primary review model refuses:\n\n1. Switch silently to the next model in the chain (see\n   `conventions\u002Fcross-modal.yaml`).\n2. Don't show the refusal to the user.\n3. Don't announce the switch.\n4. If ALL models in the chain refuse, escalate to the user.\n\n## Output format\n\n### Standard review\n\n```\nCross-Modal Review\n==================\nReviewer:  {model name}\nContract:  {originating skill}\nVerdict:   PASS | ISSUES FOUND\n\nFindings:\n- {finding with evidence}\n\nAgreement with primary: {X}%\n```\n\n### Code review\n\n```\nCross-Modal Review (code)\n==========================\nMode:           Codex Review | Adversarial Challenge\nFiles changed:  N\nLines changed:  +N \u002F -N\n\n{mode-specific output above}\n```\n\n## User-sovereignty rule (Iron Law)\n\nReviewer findings are INFORMATIONAL until the user explicitly approves\neach one. Do NOT incorporate reviewer recommendations into the work\nproduct without presenting each finding and getting explicit approval.\nThis applies even when the reviewer is correct. Cross-model consensus\nis a strong signal — present it as such — but the user makes the\ndecision.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- A review model refuses: switch to the next model in the chain silently; escalate to the user only when every model refuses.\n- `gbrain eval cross-modal` fails on a missing provider key or `no_pricing`: name the missing provider and run with the models that are configured; never report a review that did not run as passed.\n\n## Anti-Patterns\n\n- ❌ Auto-applying reviewer suggestions without user approval\n- ❌ Showing model refusals to the user\n- ❌ Using the same model for review and generation\n- ❌ Skipping the Contract reference (reviewing vibes, not guarantees)\n- ❌ Code-reviewing trivial changes (typos, formatting)\n- ❌ Running code review without git-diff context\n\n## Related skills\n\n- gstack `\u002Fcodex` — the actual Codex CLI wrapper this skill hands off\n  to for diff-review mode. Cross-modal-review knows WHEN to invoke;\n  \u002Fcodex knows HOW.\n- `skills\u002Ftesting\u002FSKILL.md` — runs the project test suite; complementary\n  signal for \"is this commit safe to land\"\n- `skills\u002Fconventions\u002Fcross-modal.yaml` — review pairs + refusal routing\n\n\n## Output Format\n\nThe skill's output shape is documented inline in the body sections above (see \"Output\", \"Brain page format\", or equivalent). The literal section header here exists for the conformance test (`test\u002Fskills-conformance.test.ts`).\n",{"name":5,"tools":54,"version":56,"mutating":50,"triggers":57,"description":64,"when_to_use":65},[45,39,55],"get_page","1.1.0",[58,59,60,61,62,63],"second opinion","cross-modal review","double check this","get another perspective","challenge this code","adversarial review","Quality gate via second model. Spawn a different AI model to review work\nbefore committing. Includes refusal routing: if one model refuses, switch\nsilently to the next. Extended in v0.25.1 with structured review-mode\ngating (when to invoke vs not) and a Codex code-review handoff for the\ndiff-review case.\n","Use when the user asks: \"second opinion\", \"cross-modal review\", \"double check this\", \"get another perspective\", \"challenge this code\".","master","074ec301549ded4930f04d2c3b22d709a6c095cc","plugin\u002Fskills\u002Fcross-modal-review",4902,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fgarrytan","https:\u002F\u002Fblog.garrytan.com","Writes software, dreams. ","2026-11-14 04:11:30",{"source":8,"skillName":5,"commands":76,"prompt":86,"zipAvailable":87},[77,80,83],{"tool":78,"command":79},"npx","npx skills add garrytan\u002Fgbrain --skill cross-modal-review",{"tool":81,"command":82},"bunx","bunx skills add garrytan\u002Fgbrain --skill cross-modal-review",{"tool":84,"command":85},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill cross-modal-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fplugin\u002Fskills\u002Fcross-modal-review\u002FSKILL.md",true,[],[90,100,106,129,154,168],{"skillNo":91,"name":92,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":49},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[96,97,39,45,98,99,36],"query helper","helper","page","find",{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":49},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[102],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":49},"01M6N105E88C5K2H03H0CC79G1","brain-ops","Read, enrich, and write brain pages with source attribution.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbrain-ops\u002FSKILL.md",[],[113,114,115,116,117,98,118,119,120,121,39,122,123,124,125,126,127,128,45],"brain ops","brain","ops","true","attribution","read","write","up","look","pages","people","with","enrich","web","path","source",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":138,"publishedAt":49},"01M6N102GRMF22TVCNT6RK5MRD","meeting-prep","Build a briefing before you meet someone, from their recent threads, open loops and what they care about.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fmeeting-prep\u002FSKILL.md",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000034","行政与办公人员",[139,140,141,142,143,45,144,145,146,39,36,147,148,149,150,151,152,153],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":49},"01M6N1005QK7REHX5KGMNR5PF0","inbox-zero","Triage the inbox into replies, delegations and archives.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Finbox-zero\u002FSKILL.md",[],[161,162,163,45,164,36,165,166,167],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":49},"01M6N0ZXQ8RRRW71PNV61T57GP","deal-memo","Draft an investment memo from the deal pages and the founder history already in the brain.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fdeal-memo\u002FSKILL.md",[],[175,176,177,122,114,178,179,119,180,116,45,181],"deal memo","deal","memo","draft","investment","history","founder"]