{"data":{"skill":{"slug":"expo-expo-tailwind-setup","name":"expo-tailwind-setup","icon":"📦","repo":"https://github.com/expo/skills/tree/main/plugins/expo-app-design/skills/expo-tailwind-setup/","status":"approved","author":"expo","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"26b2495d-964f-4bb0-8f79-ab1c422eb592","skill_id":"d614cc95-bc09-40cc-a9eb-f32c2a71e99b","version":4,"content_hash":"v2:30c73eac2afe762f6aa9c4553158769369d47351:826b3f6db137f49f4856e7feecf6cc91f1542ef8a3c45cec992ec04103b8e8b3:e4c62efbda82460786f6798fb4a6c5725cf86a6140b24c1b74bce8b3fd6e7852:bce6f74948e1a01d097cccd0d8074fe6","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All static findings were adjudicated as false positives caused by Markdown code fences, sample configuration snippets, platform CSS references, or a benign Expo platform check. No prompt injection, credential access, data exfiltration, or malicious intent was found in SKILL.md.","remediation":[],"risk_factor_evidence":[{"factor":"scripts","evidence":[{"file":"SKILL.md","line_end":53,"line_start":53}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":26,"line_start":23},{"file":"SKILL.md","line_end":30,"line_start":26},{"file":"SKILL.md","line_end":37,"line_start":30},{"file":"SKILL.md","line_end":46,"line_start":37},{"file":"SKILL.md","line_end":48,"line_start":46},{"file":"SKILL.md","line_end":62,"line_start":48},{"file":"SKILL.md","line_end":66,"line_start":62},{"file":"SKILL.md","line_end":68,"line_start":66},{"file":"SKILL.md","line_end":75,"line_start":68},{"file":"SKILL.md","line_end":79,"line_start":75},{"file":"SKILL.md","line_end":81,"line_start":79},{"file":"SKILL.md","line_end":104,"line_start":81},{"file":"SKILL.md","line_end":110,"line_start":104},{"file":"SKILL.md","line_end":122,"line_start":110},{"file":"SKILL.md","line_end":128,"line_start":122},{"file":"SKILL.md","line_end":130,"line_start":128},{"file":"SKILL.md","line_end":165,"line_start":130},{"file":"SKILL.md","line_end":250,"line_start":165},{"file":"SKILL.md","line_end":252,"line_start":250},{"file":"SKILL.md","line_end":254,"line_start":252},{"file":"SKILL.md","line_end":291,"line_start":254},{"file":"SKILL.md","line_end":293,"line_start":291},{"file":"SKILL.md","line_end":295,"line_start":293},{"file":"SKILL.md","line_end":303,"line_start":295},{"file":"SKILL.md","line_end":309,"line_start":303},{"file":"SKILL.md","line_end":325,"line_start":309},{"file":"SKILL.md","line_end":329,"line_start":325},{"file":"SKILL.md","line_end":331,"line_start":329},{"file":"SKILL.md","line_end":348,"line_start":331},{"file":"SKILL.md","line_end":354,"line_start":348},{"file":"SKILL.md","line_end":368,"line_start":354},{"file":"SKILL.md","line_end":374,"line_start":368},{"file":"SKILL.md","line_end":428,"line_start":374},{"file":"SKILL.md","line_end":432,"line_start":428},{"file":"SKILL.md","line_end":436,"line_start":432},{"file":"SKILL.md","line_end":440,"line_start":436},{"file":"SKILL.md","line_end":442,"line_start":440},{"file":"SKILL.md","line_end":450,"line_start":442},{"file":"SKILL.md","line_end":455,"line_start":450},{"file":"SKILL.md","line_end":455,"line_start":455},{"file":"SKILL.md","line_end":456,"line_start":456},{"file":"SKILL.md","line_end":457,"line_start":457},{"file":"SKILL.md","line_end":459,"line_start":458},{"file":"SKILL.md","line_end":459,"line_start":459},{"file":"SKILL.md","line_end":467,"line_start":466},{"file":"SKILL.md","line_end":471,"line_start":467},{"file":"SKILL.md","line_end":471,"line_start":471},{"file":"SKILL.md","line_end":478,"line_start":472},{"file":"SKILL.md","line_end":480,"line_start":478}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":319,"line_start":319}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":163,"line_start":163},{"file":"SKILL.md","line_end":163,"line_start":163}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":481,"audit_model":"codex","audited_at":"2026-07-05T15:24:02.295+00:00","created_at":"2026-07-05T16:55:45.302022+00:00","static_findings":[{"id":"scripts:SKILL.md:53:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"/** @type {import('expo/metro-config').MetroConfig} */","category":"scripts","line_end":53,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":26,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":30,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```json","category":"external_commands","line_end":37,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":46,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Create or update `metro.config.js`:","category":"external_commands","line_end":48,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":62,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":66,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Create `postcss.config.mjs`:","category":"external_commands","line_end":68,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":75,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":79,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Create `src/global.css`:","category":"external_commands","line_end":81,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":104,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":110,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```js","category":"external_commands","line_end":122,"severity":"medium","line_start":110},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":128,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"### Main Components (`src/tw/index.tsx`)","category":"external_commands","line_end":130,"severity":"medium","line_start":128},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":165,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":": (variable: string) => `var(${variable})`;","category":"external_commands","line_end":250,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":252,"severity":"medium","line_start":250},{"id":"external_commands:SKILL.md:252:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"### Image Component (`src/tw/image.tsx`)","category":"external_commands","line_end":254,"severity":"medium","line_start":252},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":291,"severity":"medium","line_start":254},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":293,"severity":"medium","line_start":291},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"### Animated Components (`src/tw/animated.tsx`)","category":"external_commands","line_end":295,"severity":"medium","line_start":293},{"id":"external_commands:SKILL.md:295:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":303,"severity":"medium","line_start":295},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":309,"severity":"medium","line_start":303},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":325,"severity":"medium","line_start":309},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":329,"severity":"medium","line_start":325},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Add custom theme variables in your global.css using `@theme`:","category":"external_commands","line_end":331,"severity":"medium","line_start":329},{"id":"external_commands:SKILL.md:331:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":348,"severity":"medium","line_start":331},{"id":"external_commands:SKILL.md:348:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":354,"severity":"medium","line_start":348},{"id":"external_commands:SKILL.md:354:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":368,"severity":"medium","line_start":354},{"id":"external_commands:SKILL.md:368:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":374,"severity":"medium","line_start":368},{"id":"external_commands:SKILL.md:374:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":428,"severity":"medium","line_start":374},{"id":"external_commands:SKILL.md:428:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":432,"severity":"medium","line_start":428},{"id":"external_commands:SKILL.md:432:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":436,"severity":"medium","line_start":432},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":440,"severity":"medium","line_start":436},{"id":"external_commands:SKILL.md:440:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use the `useCSSVariable` hook:","category":"external_commands","line_end":442,"severity":"medium","line_start":440},{"id":"external_commands:SKILL.md:442:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":450,"severity":"medium","line_start":442},{"id":"external_commands:SKILL.md:450:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":455,"severity":"medium","line_start":450},{"id":"external_commands:SKILL.md:455:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **PostCSS plugin** - Uses `@tailwindcss/postcss` instead of `tailwindcss`","category":"external_commands","line_end":455,"severity":"medium","line_start":455},{"id":"external_commands:SKILL.md:456:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **CSS imports** - Use `@import \"tailwindcss/...\"` instead of `@tailwind` directives","category":"external_commands","line_end":456,"severity":"medium","line_start":456},{"id":"external_commands:SKILL.md:457:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Theme config** - Use `@theme` in CSS instead of `tailwind.config.js`","category":"external_commands","line_end":457,"severity":"medium","line_start":457},{"id":"external_commands:SKILL.md:458:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. **Component wrappers** - Must wrap components with `useCssElement` for className support","category":"external_commands","line_end":459,"severity":"medium","line_start":458},{"id":"external_commands:SKILL.md:459:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. **Metro config** - Use `withNativewind` with different options (`inlineVariables: false`)","category":"external_commands","line_end":459,"severity":"medium","line_start":459},{"id":"external_commands:SKILL.md:466:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Check that components are wrapped with `useCssElement`","category":"external_commands","line_end":467,"severity":"medium","line_start":466},{"id":"external_commands:SKILL.md:467:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. Verify Metro config has `withNativewind` applied","category":"external_commands","line_end":471,"severity":"medium","line_start":467},{"id":"external_commands:SKILL.md:471:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Use `platformColor()` in `@media ios` blocks","category":"external_commands","line_end":471,"severity":"medium","line_start":471},{"id":"external_commands:SKILL.md:472:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Fall back to `light-dark()` for web/Android","category":"external_commands","line_end":478,"severity":"medium","line_start":472},{"id":"external_commands:SKILL.md:478:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":480,"severity":"medium","line_start":478},{"id":"network:SKILL.md:319:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"source={{ uri: \"https://example.com/image.jpg\" }}","category":"network","line_end":319,"severity":"low","line_start":319},{"id":"env_access:SKILL.md:163:environment-variable-access-dot-notation","file":"SKILL.md","pattern":"Environment variable access (dot notation)","snippet":"process.env.EXPO_OS !== \"web\"","category":"env_access","line_end":163,"severity":"low","line_start":163},{"id":"env_access:SKILL.md:163:environment-variable-object","file":"SKILL.md","pattern":"Environment variable object","snippet":"process.env.EXPO_OS !== \"web\"","category":"env_access","line_end":163,"severity":"low","line_start":163},{"id":"sensitive:SKILL.md:163:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"process.env.EXPO_OS !== \"web\"","category":"sensitive","line_end":163,"severity":"high","line_start":163},{"id":"blocker:SKILL.md:87:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"@media android {","category":"blocker","line_end":87,"severity":"low","line_start":87},{"id":"blocker:SKILL.md:362:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"@media android {","category":"blocker","line_end":362,"severity":"low","line_start":362},{"id":"blocker:SKILL.md:472:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"2. Fall back to `light-dark()` for web/Android","category":"blocker","line_end":474,"severity":"low","line_start":472},{"id":"blocker:SKILL.md:39:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"- autoprefixer is not needed in Expo because of lightningcss","category":"blocker","line_end":40,"severity":"low","line_start":39}],"finding_verdicts":[{"id":"scripts:SKILL.md:53:dynamic-import-expression","reason":"Line 53 is a JSDoc type annotation for Metro config, not a runtime dynamic import. It does not execute code or load a user-controlled module.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The match is a Markdown fenced bash setup block with a hardcoded Expo dependency install command. It contains no shell backtick substitution or user-controlled command construction.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"The matched text is a TypeScript template literal that returns a CSS variable string. It is not shell execution and does not run user input.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:252:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:295:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:331:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:348:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:354:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:368:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:374:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:428:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:432:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:440:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:442:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:450:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:455:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:456:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:457:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:458:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:459:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:466:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:467:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:471:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:472:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:478:ruby-shell-backtick-execution","reason":"The matched text is a Markdown fence, inline code reference, or sample source block. No shell backtick substitution or command execution behavior is present.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:319:hardcoded-url","reason":"The URL is an example image source using example.com in sample component usage. The skill itself does not contact this URL or exfiltrate data.","verdict":"false_positive","confidence":0.96},{"id":"env_access:SKILL.md:163:environment-variable-access-dot-notation","reason":"The sample code reads process.env.EXPO_OS only to choose the Expo platform-specific CSS variable helper. It does not read secret environment values or environment files.","verdict":"false_positive","confidence":0.96},{"id":"env_access:SKILL.md:163:environment-variable-object","reason":"The sample code reads process.env.EXPO_OS only to choose the Expo platform-specific CSS variable helper. It does not read secret environment values or environment files.","verdict":"false_positive","confidence":0.96},{"id":"sensitive:SKILL.md:163:environment-file-access","reason":"The sample code reads process.env.EXPO_OS only to choose the Expo platform-specific CSS variable helper. It does not read secret environment values or environment files.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:87:system-reconnaissance","reason":"The matched text is an Android CSS media query used for platform-specific styling. It does not inspect the host system or collect runtime information.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:362:system-reconnaissance","reason":"The matched text is an Android CSS media query used for platform-specific styling. It does not inspect the host system or collect runtime information.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:472:system-reconnaissance","reason":"The matched text is troubleshooting prose about light-dark CSS fallbacks for web and Android. It is not system reconnaissance.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:39:network-reconnaissance","reason":"The matched text documents that Expo includes PostCSS and uses lightningcss. It does not probe networks or discover remote services.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}