[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-redcard":3,"mdc-7ioa5-key":34,"related-repo-openai-redcard":843,"related-org-openai-redcard":852},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"redcard","run Red Card runtime","Install, diagnose, and run the self-contained Red Card runtime through Codex in the ChatGPT macOS app from any task or project. Use when the user invokes $redcard or asks Codex to install, configure, troubleshoot, or run Red Card. Codex owns every shell command and requests scoped outside-sandbox execution for installation, dependency downloads, and real runs that need macOS hardware or app access; the user only handles required approval, macOS, Chrome, and Google-account UI actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"macOS","macos","tag",{"name":17,"slug":18,"type":15},"CLI","cli",{"name":20,"slug":21,"type":15},"Codex","codex",{"name":9,"slug":8,"type":15},20,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fredcard","2026-07-17T06:05:07.902844",null,3,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Eject yourself from work with a little help from Codex.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fredcard\u002Ftree\u002FHEAD\u002Fcodex-skill\u002Fredcard","---\nname: redcard\ndescription: Install, diagnose, and run the self-contained Red Card runtime through Codex in the ChatGPT macOS app from any task or project. Use when the user invokes $redcard or asks Codex to install, configure, troubleshoot, or run Red Card. Codex owns every shell command and requests scoped outside-sandbox execution for installation, dependency downloads, and real runs that need macOS hardware or app access; the user only handles required approval, macOS, Chrome, and Google-account UI actions.\n---\n\n# Red Card\n\n## Run\n\nWhen the user invokes `$redcard`, resolve `\u003Cskill-dir>` from the actual path of this loaded `SKILL.md`, then invoke:\n\n```sh\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh\n```\n\nReplace `\u003Cskill-dir>` with the real directory containing this `SKILL.md`; do not execute the angle-bracket placeholder literally. The current task directory does not matter. The launcher enters `\u003Cskill-dir>\u002Fruntime` itself, so invoke it from any project or task without locating the source repository.\n\nThe launcher and runtime are bundled inside the installed skill. Never look for `run-redcard.sh`, `.venv`, configs, assets, or helpers in the current project. If the loaded skill path is unavailable, use `${CODEX_HOME:-$HOME\u002F.codex}\u002Fskills\u002Fredcard` as the portable fallback. Verify `\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh` and `\u003Cskill-dir>\u002Fruntime\u002F.venv\u002Fbin\u002Fpython` before launching. If either is missing, tell the user the installed skill is incomplete and ask them to open the Red Card source repository once so Codex can rerun its installer.\n\nFor a real run, invoke the launcher outside the workspace sandbox on the first attempt. Do not try the same real command inside the sandbox first. Request scoped escalation with a concise explanation that Red Card needs macOS Camera, Accessibility, Input Monitoring, System Events, and Chrome Apple Events access. When the execution tool supports reusable command approval, scope it to the absolute installed `run-redcard.sh` launcher path, not to a shell or general interpreter.\n\nTreat plain `$redcard`, `--once`, `--list-cameras`, `--permissions-only`, `--force-permissions`, and any invocation that can open the camera or automate macOS apps as commands requiring outside-sandbox execution.\n\nKeep `--dry-run`, `--help`, and `-h` inside the sandbox because they must not open the camera or automate apps. If `--list-cameras` is combined with another flag, treat the invocation as real and run it outside the sandbox.\n\nAfter setup, use plain `$redcard` for the first real run. Do not add `--dry-run`, `--once`, or `--no-sleep` unless the user explicitly asks for a preview, bounded troubleshooting run, or no-sleep override.\n\nPass through any runtime flags the user requested:\n\n```sh\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --once\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --dry-run\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --list-cameras\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --config \u002Fabsolute\u002Fpath\u002Fto\u002Fredcard.config.json\n```\n\nThe launcher always runs from `\u003Cskill-dir>\u002Fruntime`, which contains the Python package, virtual environment, default configs, assets, Swift sources, native helpers, and runtime scripts. It does not read a repo path or inspect the current project. It runs the bundled `runtime\u002Fscripts\u002Fpermissions-check.sh` when needed, then runs `runtime\u002Fscripts\u002Frun.sh`.\n\n`--permissions-only` is an internal setup mode. It runs or confirms the installed runtime's permission preflight and exits without starting Red Card. Never pass it through as a normal runtime option.\n\n`--force-permissions` is the internal install and repair mode. Run it outside the workspace sandbox to ignore an existing permission stamp, force the macOS preflight to request Camera and other required access again, update the stamp only after success, and exit without starting Red Card. Use it by itself.\n\nFor a real run, keep the command session open. When the runtime emits `Red Card is running and ready to go`, immediately tell the user: \"Red Card is running and ready to go.\" Do not wait for the long-running watcher to exit before giving this confirmation. Do not claim readiness before that runtime message appears; if startup fails first, diagnose the error instead.\n\nSkip the permissions preflight for `--dry-run`, `--help`, and `-h`, because those commands should not request camera access.\n\nThe permission preflight accepts any camera index that returns frames. This avoids failing on camera `0` when the working webcam is another index.\n\nDuring a real run, Esc should abort Red Card globally, including while Chrome is focused. The global Esc preflight calls macOS's Input Monitoring request API so a first-time user receives a system permission prompt. Ask the user to use System Settings only if macOS does not prompt because access was previously denied or the prompt was dismissed.\n\n## Setup Expectations\n\nCodex runs all setup and diagnostic commands. Never ask the user to open Terminal, paste a command, run a script, or report shell output manually.\n\nFor first installation or an incomplete installed runtime, open the Red Card source repository once and run this through Codex:\n\n```sh\n.\u002Fscripts\u002Finstall-codex-skill.sh\n```\n\nBefore running the installer, tell the user exactly: open **ChatGPT > Settings > General > Permissions** and turn **Auto-review** off. Wait for the user to confirm it is off before continuing. Do not substitute Full access and do not attempt to inspect or change this app setting from a shell command.\n\nRun the installer outside the workspace sandbox on the first attempt. It writes under `${CODEX_HOME:-$HOME\u002F.codex}`, copies the complete runtime payload, creates `\u003Cskill-dir>\u002Fruntime\u002F.venv`, installs hash-locked dependencies, builds native helpers, and runs the permission preflight. Request narrowly scoped approval for the exact installer; do not request broad shell or project access.\n\nIf dependency installation fails or times out while using the machine's configured Python package index, preserve the installer output and stop. Ask the user whether they want Codex to retry the installer using public PyPI as the package source. Only after the user approves, rerun the same source-repo installer outside the sandbox with `REDCARD_ALLOW_PUBLIC_PYPI=1` set. Do not silently bypass a corporate or internal package registry, and do not hardcode any private registry URL in the repo or installed skill.\n\n`scripts\u002Finstall-codex-skill.sh` must replace the installed skill, copy the required runtime into `\u003Cskill-dir>\u002Fruntime`, build its environment locally, discard any old permission stamp, and invoke the new launcher with `--force-permissions` before reporting success. Never retain a dependency on the source repo or treat a matching path as proof of permissions. The preflight records success only after the current machine passes and exits without starting Red Card. Do not invoke the launcher a second time after the installer succeeds.\n\nWhen the skill installer and its permission check succeed, stop. Do not retry the original real invocation or start `scripts\u002Frun.sh` in the same setup flow. Tell the user: \"Red Card is installed and its permissions are checked. Invoke `$redcard` when you are ready to start it.\"\n\nOnly a separate, explicit `$redcard` invocation from the user starts the real sequence after fresh setup.\n\nIf the launcher reports an incomplete runtime, do not search the current project for runtime files. Ask the user to open the Red Card source repository once, rerun `.\u002Fscripts\u002Finstall-codex-skill.sh` through Codex, let its forced permission preflight finish, and stop before a real run.\n\n## Permissions\n\nThe permissions preflight requests macOS prompts for the app running the skill. If prompted, guide the user to allow **ChatGPT**. Use these System Settings locations only when macOS does not prompt or access was previously denied:\n\n- **System Settings > Privacy & Security > Camera**\n- **System Settings > Privacy & Security > Accessibility**\n- **System Settings > Privacy & Security > Input Monitoring**\n\nThe preflight must run `scripts\u002Fcheck-chrome-javascript.sh`, not merely remind the user about Chrome. This check must also run when a saved macOS permission stamp lets the launcher skip the other checks, including on install and every real run. Follow the checker's classified error: give the **View > Developer > Allow JavaScript from Apple Events** instruction only when Chrome explicitly reports that JavaScript through AppleScript is turned off. If it reports an Apple Events authorization, sandbox, or other execution error, preserve those details and diagnose that path instead of claiming the Chrome setting is off. Never allow a failure to pass quietly.\n\nOnly ask the user to perform UI actions Codex cannot complete, including responding to macOS permission prompts, changing System Settings, signing into Google, or enabling the Chrome menu option. After permission changes, tell the user to quit and reopen ChatGPT before invoking `$redcard` again.\n\nTo force the permissions preflight to run again:\n\n```sh\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --force-permissions\n```\n\nInvoke this outside the workspace sandbox on the first attempt. Request scoped approval for the absolute installed launcher path so Camera access is attributed to the host app correctly. Do not run `scripts\u002Fpermissions-check.sh` directly unless the launcher mode itself is being diagnosed.\n\nIf the permissions preflight fails on camera access, Codex runs this from any working directory and interprets the result:\n\n```sh\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --list-cameras\n```\n\nSuccess means at least one camera reports `ok` with a resolution.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,55,86,125,152,197,209,249,284,317,322,411,439,449,459,472,496,509,514,520,525,530,545,565,586,599,624,644,656,669,675,687,716,736,748,753,780,793,798,824,837],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"red-card",[45],{"type":46,"value":47},"text","Red Card",{"type":40,"tag":49,"props":50,"children":52},"h2",{"id":51},"run",[53],{"type":46,"value":54},"Run",{"type":40,"tag":56,"props":57,"children":58},"p",{},[59,61,68,70,76,78,84],{"type":46,"value":60},"When the user invokes ",{"type":40,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":46,"value":67},"$redcard",{"type":46,"value":69},", resolve ",{"type":40,"tag":62,"props":71,"children":73},{"className":72},[],[74],{"type":46,"value":75},"\u003Cskill-dir>",{"type":46,"value":77}," from the actual path of this loaded ",{"type":40,"tag":62,"props":79,"children":81},{"className":80},[],[82],{"type":46,"value":83},"SKILL.md",{"type":46,"value":85},", then invoke:",{"type":40,"tag":87,"props":88,"children":93},"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh\n","sh","",[94],{"type":40,"tag":62,"props":95,"children":96},{"__ignoreMap":92},[97],{"type":40,"tag":98,"props":99,"children":102},"span",{"class":100,"line":101},"line",1,[103,109,115,120],{"type":40,"tag":98,"props":104,"children":106},{"style":105},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[107],{"type":46,"value":108},"\u003C",{"type":40,"tag":98,"props":110,"children":112},{"style":111},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[113],{"type":46,"value":114},"skill-dir",{"type":40,"tag":98,"props":116,"children":117},{"style":105},[118],{"type":46,"value":119},">",{"type":40,"tag":98,"props":121,"children":122},{"style":111},[123],{"type":46,"value":124},"\u002Fscripts\u002Frun-redcard.sh\n",{"type":40,"tag":56,"props":126,"children":127},{},[128,130,135,137,142,144,150],{"type":46,"value":129},"Replace ",{"type":40,"tag":62,"props":131,"children":133},{"className":132},[],[134],{"type":46,"value":75},{"type":46,"value":136}," with the real directory containing this ",{"type":40,"tag":62,"props":138,"children":140},{"className":139},[],[141],{"type":46,"value":83},{"type":46,"value":143},"; do not execute the angle-bracket placeholder literally. The current task directory does not matter. The launcher enters ",{"type":40,"tag":62,"props":145,"children":147},{"className":146},[],[148],{"type":46,"value":149},"\u003Cskill-dir>\u002Fruntime",{"type":46,"value":151}," itself, so invoke it from any project or task without locating the source repository.",{"type":40,"tag":56,"props":153,"children":154},{},[155,157,163,165,171,173,179,181,187,189,195],{"type":46,"value":156},"The launcher and runtime are bundled inside the installed skill. Never look for ",{"type":40,"tag":62,"props":158,"children":160},{"className":159},[],[161],{"type":46,"value":162},"run-redcard.sh",{"type":46,"value":164},", ",{"type":40,"tag":62,"props":166,"children":168},{"className":167},[],[169],{"type":46,"value":170},".venv",{"type":46,"value":172},", configs, assets, or helpers in the current project. If the loaded skill path is unavailable, use ",{"type":40,"tag":62,"props":174,"children":176},{"className":175},[],[177],{"type":46,"value":178},"${CODEX_HOME:-$HOME\u002F.codex}\u002Fskills\u002Fredcard",{"type":46,"value":180}," as the portable fallback. Verify ",{"type":40,"tag":62,"props":182,"children":184},{"className":183},[],[185],{"type":46,"value":186},"\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh",{"type":46,"value":188}," and ",{"type":40,"tag":62,"props":190,"children":192},{"className":191},[],[193],{"type":46,"value":194},"\u003Cskill-dir>\u002Fruntime\u002F.venv\u002Fbin\u002Fpython",{"type":46,"value":196}," before launching. If either is missing, tell the user the installed skill is incomplete and ask them to open the Red Card source repository once so Codex can rerun its installer.",{"type":40,"tag":56,"props":198,"children":199},{},[200,202,207],{"type":46,"value":201},"For a real run, invoke the launcher outside the workspace sandbox on the first attempt. Do not try the same real command inside the sandbox first. Request scoped escalation with a concise explanation that Red Card needs macOS Camera, Accessibility, Input Monitoring, System Events, and Chrome Apple Events access. When the execution tool supports reusable command approval, scope it to the absolute installed ",{"type":40,"tag":62,"props":203,"children":205},{"className":204},[],[206],{"type":46,"value":162},{"type":46,"value":208}," launcher path, not to a shell or general interpreter.",{"type":40,"tag":56,"props":210,"children":211},{},[212,214,219,220,226,227,233,234,240,241,247],{"type":46,"value":213},"Treat plain ",{"type":40,"tag":62,"props":215,"children":217},{"className":216},[],[218],{"type":46,"value":67},{"type":46,"value":164},{"type":40,"tag":62,"props":221,"children":223},{"className":222},[],[224],{"type":46,"value":225},"--once",{"type":46,"value":164},{"type":40,"tag":62,"props":228,"children":230},{"className":229},[],[231],{"type":46,"value":232},"--list-cameras",{"type":46,"value":164},{"type":40,"tag":62,"props":235,"children":237},{"className":236},[],[238],{"type":46,"value":239},"--permissions-only",{"type":46,"value":164},{"type":40,"tag":62,"props":242,"children":244},{"className":243},[],[245],{"type":46,"value":246},"--force-permissions",{"type":46,"value":248},", and any invocation that can open the camera or automate macOS apps as commands requiring outside-sandbox execution.",{"type":40,"tag":56,"props":250,"children":251},{},[252,254,260,261,267,269,275,277,282],{"type":46,"value":253},"Keep ",{"type":40,"tag":62,"props":255,"children":257},{"className":256},[],[258],{"type":46,"value":259},"--dry-run",{"type":46,"value":164},{"type":40,"tag":62,"props":262,"children":264},{"className":263},[],[265],{"type":46,"value":266},"--help",{"type":46,"value":268},", and ",{"type":40,"tag":62,"props":270,"children":272},{"className":271},[],[273],{"type":46,"value":274},"-h",{"type":46,"value":276}," inside the sandbox because they must not open the camera or automate apps. If ",{"type":40,"tag":62,"props":278,"children":280},{"className":279},[],[281],{"type":46,"value":232},{"type":46,"value":283}," is combined with another flag, treat the invocation as real and run it outside the sandbox.",{"type":40,"tag":56,"props":285,"children":286},{},[287,289,294,296,301,302,307,309,315],{"type":46,"value":288},"After setup, use plain ",{"type":40,"tag":62,"props":290,"children":292},{"className":291},[],[293],{"type":46,"value":67},{"type":46,"value":295}," for the first real run. Do not add ",{"type":40,"tag":62,"props":297,"children":299},{"className":298},[],[300],{"type":46,"value":259},{"type":46,"value":164},{"type":40,"tag":62,"props":303,"children":305},{"className":304},[],[306],{"type":46,"value":225},{"type":46,"value":308},", or ",{"type":40,"tag":62,"props":310,"children":312},{"className":311},[],[313],{"type":46,"value":314},"--no-sleep",{"type":46,"value":316}," unless the user explicitly asks for a preview, bounded troubleshooting run, or no-sleep override.",{"type":40,"tag":56,"props":318,"children":319},{},[320],{"type":46,"value":321},"Pass through any runtime flags the user requested:",{"type":40,"tag":87,"props":323,"children":325},{"className":89,"code":324,"language":91,"meta":92,"style":92},"\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --once\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --dry-run\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --list-cameras\n\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --config \u002Fabsolute\u002Fpath\u002Fto\u002Fredcard.config.json\n",[326],{"type":40,"tag":62,"props":327,"children":328},{"__ignoreMap":92},[329,349,370,390],{"type":40,"tag":98,"props":330,"children":331},{"class":100,"line":101},[332,336,340,344],{"type":40,"tag":98,"props":333,"children":334},{"style":105},[335],{"type":46,"value":108},{"type":40,"tag":98,"props":337,"children":338},{"style":111},[339],{"type":46,"value":114},{"type":40,"tag":98,"props":341,"children":342},{"style":105},[343],{"type":46,"value":119},{"type":40,"tag":98,"props":345,"children":346},{"style":111},[347],{"type":46,"value":348},"\u002Fscripts\u002Frun-redcard.sh --once\n",{"type":40,"tag":98,"props":350,"children":352},{"class":100,"line":351},2,[353,357,361,365],{"type":40,"tag":98,"props":354,"children":355},{"style":105},[356],{"type":46,"value":108},{"type":40,"tag":98,"props":358,"children":359},{"style":111},[360],{"type":46,"value":114},{"type":40,"tag":98,"props":362,"children":363},{"style":105},[364],{"type":46,"value":119},{"type":40,"tag":98,"props":366,"children":367},{"style":111},[368],{"type":46,"value":369},"\u002Fscripts\u002Frun-redcard.sh --dry-run\n",{"type":40,"tag":98,"props":371,"children":372},{"class":100,"line":27},[373,377,381,385],{"type":40,"tag":98,"props":374,"children":375},{"style":105},[376],{"type":46,"value":108},{"type":40,"tag":98,"props":378,"children":379},{"style":111},[380],{"type":46,"value":114},{"type":40,"tag":98,"props":382,"children":383},{"style":105},[384],{"type":46,"value":119},{"type":40,"tag":98,"props":386,"children":387},{"style":111},[388],{"type":46,"value":389},"\u002Fscripts\u002Frun-redcard.sh --list-cameras\n",{"type":40,"tag":98,"props":391,"children":393},{"class":100,"line":392},4,[394,398,402,406],{"type":40,"tag":98,"props":395,"children":396},{"style":105},[397],{"type":46,"value":108},{"type":40,"tag":98,"props":399,"children":400},{"style":111},[401],{"type":46,"value":114},{"type":40,"tag":98,"props":403,"children":404},{"style":105},[405],{"type":46,"value":119},{"type":40,"tag":98,"props":407,"children":408},{"style":111},[409],{"type":46,"value":410},"\u002Fscripts\u002Frun-redcard.sh --config \u002Fabsolute\u002Fpath\u002Fto\u002Fredcard.config.json\n",{"type":40,"tag":56,"props":412,"children":413},{},[414,416,421,423,429,431,437],{"type":46,"value":415},"The launcher always runs from ",{"type":40,"tag":62,"props":417,"children":419},{"className":418},[],[420],{"type":46,"value":149},{"type":46,"value":422},", which contains the Python package, virtual environment, default configs, assets, Swift sources, native helpers, and runtime scripts. It does not read a repo path or inspect the current project. It runs the bundled ",{"type":40,"tag":62,"props":424,"children":426},{"className":425},[],[427],{"type":46,"value":428},"runtime\u002Fscripts\u002Fpermissions-check.sh",{"type":46,"value":430}," when needed, then runs ",{"type":40,"tag":62,"props":432,"children":434},{"className":433},[],[435],{"type":46,"value":436},"runtime\u002Fscripts\u002Frun.sh",{"type":46,"value":438},".",{"type":40,"tag":56,"props":440,"children":441},{},[442,447],{"type":40,"tag":62,"props":443,"children":445},{"className":444},[],[446],{"type":46,"value":239},{"type":46,"value":448}," is an internal setup mode. It runs or confirms the installed runtime's permission preflight and exits without starting Red Card. Never pass it through as a normal runtime option.",{"type":40,"tag":56,"props":450,"children":451},{},[452,457],{"type":40,"tag":62,"props":453,"children":455},{"className":454},[],[456],{"type":46,"value":246},{"type":46,"value":458}," is the internal install and repair mode. Run it outside the workspace sandbox to ignore an existing permission stamp, force the macOS preflight to request Camera and other required access again, update the stamp only after success, and exit without starting Red Card. Use it by itself.",{"type":40,"tag":56,"props":460,"children":461},{},[462,464,470],{"type":46,"value":463},"For a real run, keep the command session open. When the runtime emits ",{"type":40,"tag":62,"props":465,"children":467},{"className":466},[],[468],{"type":46,"value":469},"Red Card is running and ready to go",{"type":46,"value":471},", immediately tell the user: \"Red Card is running and ready to go.\" Do not wait for the long-running watcher to exit before giving this confirmation. Do not claim readiness before that runtime message appears; if startup fails first, diagnose the error instead.",{"type":40,"tag":56,"props":473,"children":474},{},[475,477,482,483,488,489,494],{"type":46,"value":476},"Skip the permissions preflight for ",{"type":40,"tag":62,"props":478,"children":480},{"className":479},[],[481],{"type":46,"value":259},{"type":46,"value":164},{"type":40,"tag":62,"props":484,"children":486},{"className":485},[],[487],{"type":46,"value":266},{"type":46,"value":268},{"type":40,"tag":62,"props":490,"children":492},{"className":491},[],[493],{"type":46,"value":274},{"type":46,"value":495},", because those commands should not request camera access.",{"type":40,"tag":56,"props":497,"children":498},{},[499,501,507],{"type":46,"value":500},"The permission preflight accepts any camera index that returns frames. This avoids failing on camera ",{"type":40,"tag":62,"props":502,"children":504},{"className":503},[],[505],{"type":46,"value":506},"0",{"type":46,"value":508}," when the working webcam is another index.",{"type":40,"tag":56,"props":510,"children":511},{},[512],{"type":46,"value":513},"During a real run, Esc should abort Red Card globally, including while Chrome is focused. The global Esc preflight calls macOS's Input Monitoring request API so a first-time user receives a system permission prompt. Ask the user to use System Settings only if macOS does not prompt because access was previously denied or the prompt was dismissed.",{"type":40,"tag":49,"props":515,"children":517},{"id":516},"setup-expectations",[518],{"type":46,"value":519},"Setup Expectations",{"type":40,"tag":56,"props":521,"children":522},{},[523],{"type":46,"value":524},"Codex runs all setup and diagnostic commands. Never ask the user to open Terminal, paste a command, run a script, or report shell output manually.",{"type":40,"tag":56,"props":526,"children":527},{},[528],{"type":46,"value":529},"For first installation or an incomplete installed runtime, open the Red Card source repository once and run this through Codex:",{"type":40,"tag":87,"props":531,"children":533},{"className":89,"code":532,"language":91,"meta":92,"style":92},".\u002Fscripts\u002Finstall-codex-skill.sh\n",[534],{"type":40,"tag":62,"props":535,"children":536},{"__ignoreMap":92},[537],{"type":40,"tag":98,"props":538,"children":539},{"class":100,"line":101},[540],{"type":40,"tag":98,"props":541,"children":543},{"style":542},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[544],{"type":46,"value":532},{"type":40,"tag":56,"props":546,"children":547},{},[548,550,556,558,563],{"type":46,"value":549},"Before running the installer, tell the user exactly: open ",{"type":40,"tag":551,"props":552,"children":553},"strong",{},[554],{"type":46,"value":555},"ChatGPT > Settings > General > Permissions",{"type":46,"value":557}," and turn ",{"type":40,"tag":551,"props":559,"children":560},{},[561],{"type":46,"value":562},"Auto-review",{"type":46,"value":564}," off. Wait for the user to confirm it is off before continuing. Do not substitute Full access and do not attempt to inspect or change this app setting from a shell command.",{"type":40,"tag":56,"props":566,"children":567},{},[568,570,576,578,584],{"type":46,"value":569},"Run the installer outside the workspace sandbox on the first attempt. It writes under ",{"type":40,"tag":62,"props":571,"children":573},{"className":572},[],[574],{"type":46,"value":575},"${CODEX_HOME:-$HOME\u002F.codex}",{"type":46,"value":577},", copies the complete runtime payload, creates ",{"type":40,"tag":62,"props":579,"children":581},{"className":580},[],[582],{"type":46,"value":583},"\u003Cskill-dir>\u002Fruntime\u002F.venv",{"type":46,"value":585},", installs hash-locked dependencies, builds native helpers, and runs the permission preflight. Request narrowly scoped approval for the exact installer; do not request broad shell or project access.",{"type":40,"tag":56,"props":587,"children":588},{},[589,591,597],{"type":46,"value":590},"If dependency installation fails or times out while using the machine's configured Python package index, preserve the installer output and stop. Ask the user whether they want Codex to retry the installer using public PyPI as the package source. Only after the user approves, rerun the same source-repo installer outside the sandbox with ",{"type":40,"tag":62,"props":592,"children":594},{"className":593},[],[595],{"type":46,"value":596},"REDCARD_ALLOW_PUBLIC_PYPI=1",{"type":46,"value":598}," set. Do not silently bypass a corporate or internal package registry, and do not hardcode any private registry URL in the repo or installed skill.",{"type":40,"tag":56,"props":600,"children":601},{},[602,608,610,615,617,622],{"type":40,"tag":62,"props":603,"children":605},{"className":604},[],[606],{"type":46,"value":607},"scripts\u002Finstall-codex-skill.sh",{"type":46,"value":609}," must replace the installed skill, copy the required runtime into ",{"type":40,"tag":62,"props":611,"children":613},{"className":612},[],[614],{"type":46,"value":149},{"type":46,"value":616},", build its environment locally, discard any old permission stamp, and invoke the new launcher with ",{"type":40,"tag":62,"props":618,"children":620},{"className":619},[],[621],{"type":46,"value":246},{"type":46,"value":623}," before reporting success. Never retain a dependency on the source repo or treat a matching path as proof of permissions. The preflight records success only after the current machine passes and exits without starting Red Card. Do not invoke the launcher a second time after the installer succeeds.",{"type":40,"tag":56,"props":625,"children":626},{},[627,629,635,637,642],{"type":46,"value":628},"When the skill installer and its permission check succeed, stop. Do not retry the original real invocation or start ",{"type":40,"tag":62,"props":630,"children":632},{"className":631},[],[633],{"type":46,"value":634},"scripts\u002Frun.sh",{"type":46,"value":636}," in the same setup flow. Tell the user: \"Red Card is installed and its permissions are checked. Invoke ",{"type":40,"tag":62,"props":638,"children":640},{"className":639},[],[641],{"type":46,"value":67},{"type":46,"value":643}," when you are ready to start it.\"",{"type":40,"tag":56,"props":645,"children":646},{},[647,649,654],{"type":46,"value":648},"Only a separate, explicit ",{"type":40,"tag":62,"props":650,"children":652},{"className":651},[],[653],{"type":46,"value":67},{"type":46,"value":655}," invocation from the user starts the real sequence after fresh setup.",{"type":40,"tag":56,"props":657,"children":658},{},[659,661,667],{"type":46,"value":660},"If the launcher reports an incomplete runtime, do not search the current project for runtime files. Ask the user to open the Red Card source repository once, rerun ",{"type":40,"tag":62,"props":662,"children":664},{"className":663},[],[665],{"type":46,"value":666},".\u002Fscripts\u002Finstall-codex-skill.sh",{"type":46,"value":668}," through Codex, let its forced permission preflight finish, and stop before a real run.",{"type":40,"tag":49,"props":670,"children":672},{"id":671},"permissions",[673],{"type":46,"value":674},"Permissions",{"type":40,"tag":56,"props":676,"children":677},{},[678,680,685],{"type":46,"value":679},"The permissions preflight requests macOS prompts for the app running the skill. If prompted, guide the user to allow ",{"type":40,"tag":551,"props":681,"children":682},{},[683],{"type":46,"value":684},"ChatGPT",{"type":46,"value":686},". Use these System Settings locations only when macOS does not prompt or access was previously denied:",{"type":40,"tag":688,"props":689,"children":690},"ul",{},[691,700,708],{"type":40,"tag":692,"props":693,"children":694},"li",{},[695],{"type":40,"tag":551,"props":696,"children":697},{},[698],{"type":46,"value":699},"System Settings > Privacy & Security > Camera",{"type":40,"tag":692,"props":701,"children":702},{},[703],{"type":40,"tag":551,"props":704,"children":705},{},[706],{"type":46,"value":707},"System Settings > Privacy & Security > Accessibility",{"type":40,"tag":692,"props":709,"children":710},{},[711],{"type":40,"tag":551,"props":712,"children":713},{},[714],{"type":46,"value":715},"System Settings > Privacy & Security > Input Monitoring",{"type":40,"tag":56,"props":717,"children":718},{},[719,721,727,729,734],{"type":46,"value":720},"The preflight must run ",{"type":40,"tag":62,"props":722,"children":724},{"className":723},[],[725],{"type":46,"value":726},"scripts\u002Fcheck-chrome-javascript.sh",{"type":46,"value":728},", not merely remind the user about Chrome. This check must also run when a saved macOS permission stamp lets the launcher skip the other checks, including on install and every real run. Follow the checker's classified error: give the ",{"type":40,"tag":551,"props":730,"children":731},{},[732],{"type":46,"value":733},"View > Developer > Allow JavaScript from Apple Events",{"type":46,"value":735}," instruction only when Chrome explicitly reports that JavaScript through AppleScript is turned off. If it reports an Apple Events authorization, sandbox, or other execution error, preserve those details and diagnose that path instead of claiming the Chrome setting is off. Never allow a failure to pass quietly.",{"type":40,"tag":56,"props":737,"children":738},{},[739,741,746],{"type":46,"value":740},"Only ask the user to perform UI actions Codex cannot complete, including responding to macOS permission prompts, changing System Settings, signing into Google, or enabling the Chrome menu option. After permission changes, tell the user to quit and reopen ChatGPT before invoking ",{"type":40,"tag":62,"props":742,"children":744},{"className":743},[],[745],{"type":46,"value":67},{"type":46,"value":747}," again.",{"type":40,"tag":56,"props":749,"children":750},{},[751],{"type":46,"value":752},"To force the permissions preflight to run again:",{"type":40,"tag":87,"props":754,"children":756},{"className":89,"code":755,"language":91,"meta":92,"style":92},"\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --force-permissions\n",[757],{"type":40,"tag":62,"props":758,"children":759},{"__ignoreMap":92},[760],{"type":40,"tag":98,"props":761,"children":762},{"class":100,"line":101},[763,767,771,775],{"type":40,"tag":98,"props":764,"children":765},{"style":105},[766],{"type":46,"value":108},{"type":40,"tag":98,"props":768,"children":769},{"style":111},[770],{"type":46,"value":114},{"type":40,"tag":98,"props":772,"children":773},{"style":105},[774],{"type":46,"value":119},{"type":40,"tag":98,"props":776,"children":777},{"style":111},[778],{"type":46,"value":779},"\u002Fscripts\u002Frun-redcard.sh --force-permissions\n",{"type":40,"tag":56,"props":781,"children":782},{},[783,785,791],{"type":46,"value":784},"Invoke this outside the workspace sandbox on the first attempt. Request scoped approval for the absolute installed launcher path so Camera access is attributed to the host app correctly. Do not run ",{"type":40,"tag":62,"props":786,"children":788},{"className":787},[],[789],{"type":46,"value":790},"scripts\u002Fpermissions-check.sh",{"type":46,"value":792}," directly unless the launcher mode itself is being diagnosed.",{"type":40,"tag":56,"props":794,"children":795},{},[796],{"type":46,"value":797},"If the permissions preflight fails on camera access, Codex runs this from any working directory and interprets the result:",{"type":40,"tag":87,"props":799,"children":801},{"className":89,"code":800,"language":91,"meta":92,"style":92},"\u003Cskill-dir>\u002Fscripts\u002Frun-redcard.sh --list-cameras\n",[802],{"type":40,"tag":62,"props":803,"children":804},{"__ignoreMap":92},[805],{"type":40,"tag":98,"props":806,"children":807},{"class":100,"line":101},[808,812,816,820],{"type":40,"tag":98,"props":809,"children":810},{"style":105},[811],{"type":46,"value":108},{"type":40,"tag":98,"props":813,"children":814},{"style":111},[815],{"type":46,"value":114},{"type":40,"tag":98,"props":817,"children":818},{"style":105},[819],{"type":46,"value":119},{"type":40,"tag":98,"props":821,"children":822},{"style":111},[823],{"type":46,"value":389},{"type":40,"tag":56,"props":825,"children":826},{},[827,829,835],{"type":46,"value":828},"Success means at least one camera reports ",{"type":40,"tag":62,"props":830,"children":832},{"className":831},[],[833],{"type":46,"value":834},"ok",{"type":46,"value":836}," with a resolution.",{"type":40,"tag":838,"props":839,"children":840},"style",{},[841],{"type":46,"value":842},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":844,"total":101},[845],{"slug":4,"name":4,"fn":5,"description":6,"org":846,"tags":847,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[848,849,850,851],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"items":853,"total":1053},[854,875,898,914,926,945,964,980,996,1010,1022,1037],{"slug":855,"name":855,"fn":856,"description":857,"org":858,"tags":859,"stars":872,"repoUrl":873,"updatedAt":874},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[860,863,866,869],{"name":861,"slug":862,"type":15},"Documents","documents",{"name":864,"slug":865,"type":15},"Healthcare","healthcare",{"name":867,"slug":868,"type":15},"Insurance","insurance",{"name":870,"slug":871,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":876,"name":876,"fn":877,"description":878,"org":879,"tags":880,"stars":895,"repoUrl":896,"updatedAt":897},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[881,884,886,889,892],{"name":882,"slug":883,"type":15},".NET","dotnet",{"name":885,"slug":876,"type":15},"ASP.NET Core",{"name":887,"slug":888,"type":15},"Blazor","blazor",{"name":890,"slug":891,"type":15},"C#","csharp",{"name":893,"slug":894,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":899,"name":899,"fn":900,"description":901,"org":902,"tags":903,"stars":895,"repoUrl":896,"updatedAt":913},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[904,907,909,912],{"name":905,"slug":906,"type":15},"Apps SDK","apps-sdk",{"name":684,"slug":908,"type":15},"chatgpt",{"name":910,"slug":911,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":915,"name":915,"fn":916,"description":917,"org":918,"tags":919,"stars":895,"repoUrl":896,"updatedAt":925},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[920,923,924],{"name":921,"slug":922,"type":15},"API Development","api-development",{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-04-12T05:07:04.132762",{"slug":927,"name":927,"fn":928,"description":929,"org":930,"tags":931,"stars":895,"repoUrl":896,"updatedAt":944},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[932,935,938,941],{"name":933,"slug":934,"type":15},"Cloudflare","cloudflare",{"name":936,"slug":937,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":939,"slug":940,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":942,"slug":943,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":946,"name":946,"fn":947,"description":948,"org":949,"tags":950,"stars":895,"repoUrl":896,"updatedAt":963},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[951,954,957,960],{"name":952,"slug":953,"type":15},"Productivity","productivity",{"name":955,"slug":956,"type":15},"Project Management","project-management",{"name":958,"slug":959,"type":15},"Strategy","strategy",{"name":961,"slug":962,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":965,"name":965,"fn":966,"description":967,"org":968,"tags":969,"stars":895,"repoUrl":896,"updatedAt":979},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[970,973,975,978],{"name":971,"slug":972,"type":15},"Design","design",{"name":974,"slug":965,"type":15},"Figma",{"name":976,"slug":977,"type":15},"Frontend","frontend",{"name":910,"slug":911,"type":15},"2026-04-12T05:06:47.939943",{"slug":981,"name":981,"fn":982,"description":983,"org":984,"tags":985,"stars":895,"repoUrl":896,"updatedAt":995},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[986,987,990,991,992],{"name":971,"slug":972,"type":15},{"name":988,"slug":989,"type":15},"Design System","design-system",{"name":974,"slug":965,"type":15},{"name":976,"slug":977,"type":15},{"name":993,"slug":994,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":997,"name":997,"fn":998,"description":999,"org":1000,"tags":1001,"stars":895,"repoUrl":896,"updatedAt":1009},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1002,1003,1004,1007,1008],{"name":971,"slug":972,"type":15},{"name":988,"slug":989,"type":15},{"name":1005,"slug":1006,"type":15},"Documentation","documentation",{"name":974,"slug":965,"type":15},{"name":976,"slug":977,"type":15},"2026-05-16T06:07:47.821474",{"slug":1011,"name":1011,"fn":1012,"description":1013,"org":1014,"tags":1015,"stars":895,"repoUrl":896,"updatedAt":1021},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1016,1017,1018,1019,1020],{"name":971,"slug":972,"type":15},{"name":974,"slug":965,"type":15},{"name":976,"slug":977,"type":15},{"name":993,"slug":994,"type":15},{"name":893,"slug":894,"type":15},"2026-05-16T06:07:40.583615",{"slug":1023,"name":1023,"fn":1024,"description":1025,"org":1026,"tags":1027,"stars":895,"repoUrl":896,"updatedAt":1036},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1028,1031,1032,1035],{"name":1029,"slug":1030,"type":15},"Animation","animation",{"name":20,"slug":21,"type":15},{"name":1033,"slug":1034,"type":15},"Creative","creative",{"name":971,"slug":972,"type":15},"2026-05-02T05:31:48.48485",{"slug":1038,"name":1038,"fn":1039,"description":1040,"org":1041,"tags":1042,"stars":895,"repoUrl":896,"updatedAt":1052},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1043,1044,1045,1048,1051],{"name":1033,"slug":1034,"type":15},{"name":971,"slug":972,"type":15},{"name":1046,"slug":1047,"type":15},"Image Generation","image-generation",{"name":1049,"slug":1050,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]