{"data":{"skill":{"slug":"langgenius-frontend-code-review","name":"frontend-code-review","icon":"📦","repo":"https://github.com/langgenius/dify/tree/main/.agents/skills/frontend-code-review/","status":"approved","author":"langgenius","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"52308358-4a61-446f-ae2e-798e020ae05c","skill_id":"9d3f8ee5-38b9-449c-a7d4-fafd63645434","version":4,"content_hash":"7dc9cf6e5728cb60f5eea122dcfbb90b","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"Most static detections are false positives from Markdown backticks, file paths, output templates, and review prose. Two low-severity findings are confirmed because the skill requires fetching a mutable public GitHub document for UI guidance. No prompt injection, data exfiltration intent, or malicious semantic behavior was found.","remediation":[{"issue":"Mutable external guideline dependency","severity":"low","suggestion":"Pin the Web Interface Guidelines URL to a reviewed commit, vendor a copy, or mark the network fetch as optional with source verification."}],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"references/accessibility-ui.md","line_end":8,"line_start":8},{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":34,"line_start":34}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":35,"line_start":33},{"file":"SKILL.md","line_end":54,"line_start":35},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":75,"line_start":71},{"file":"SKILL.md","line_end":86,"line_start":75},{"file":"SKILL.md","line_end":90,"line_start":86}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"references/accessibility-ui.md","line_end":8,"line_start":8}],"confidence":0.72,"description":"https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The rule pack instructs fetching a mutable raw GitHub URL as a required UI baseline. It does not exfiltrate local data, but it adds external network dependency and remote content trust."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":34,"line_start":34}],"confidence":0.74,"description":"https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The skill instructs the agent to fetch a mutable raw GitHub URL before some reviews. The URL is public and not an exfiltration path, but it creates network and remote-content trust risk."}],"dangerous_patterns":[],"files_scanned":9,"total_lines":753,"audit_model":"codex","audited_at":"2026-07-08T02:47:30.382+00:00","created_at":"2026-07-08T05:34:27.64673+00:00","static_findings":[{"id":"network:references/accessibility-ui.md:8:hardcoded-url","file":"references/accessibility-ui.md","pattern":"Hardcoded URL","snippet":"https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"blocker:references/accessibility-ui.md:54:system-reconnaissance","file":"references/accessibility-ui.md","pattern":"System reconnaissance","snippet":"- Error recovery that does not focus or expose the first invalid field.","category":"blocker","line_end":54,"severity":"low","line_start":54},{"id":"blocker:references/accessibility-ui.md:92:system-reconnaissance","file":"references/accessibility-ui.md","pattern":"System reconnaissance","snippet":"- Text in flex/grid children without `min-w-0` when it can overflow.","category":"blocker","line_end":92,"severity":"low","line_start":92},{"id":"blocker:references/component-architecture.md:37:system-reconnaissance","file":"references/component-architecture.md","pattern":"System reconnaissance","snippet":"- A feature component that accepts pre-rendered fragments only to avoid placing ownership correctly.","category":"blocker","line_end":37,"severity":"low","line_start":37},{"id":"blocker:references/dify-invariants.md:10:system-reconnaissance","file":"references/dify-invariants.md","pattern":"System reconnaissance","snippet":"- The rule is likely to remain valid across normal feature work.","category":"blocker","line_end":10,"severity":"low","line_start":10},{"id":"blocker:references/performance.md:50:system-reconnaissance","file":"references/performance.md","pattern":"System reconnaissance","snippet":"- High-frequency transient values stored in state when refs or CSS variables would avoid render loop","category":"blocker","line_end":50,"severity":"low","line_start":50},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"description: Review Dify frontend code for correctness, accessibility, component design, dify-ui usa","category":"external_commands","line_end":3,"severity":"medium","line_start":3},{"id":"external_commands:SKILL.md:10:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use this skill when the user asks to review, audit, analyze, or sanity-check frontend code under `we","category":"external_commands","line_end":10,"severity":"medium","line_start":10},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Do not use this skill for backend-only code under `api/`; use `backend-code-review` instead.","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `web/AGENTS.md` for Dify frontend workflow, overlays, design tokens, state, and tests.","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `packages/dify-ui/README.md` and `packages/dify-ui/AGENTS.md` when code uses or changes `@langgeni","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `web/docs/overlay.md` when reviewing dialogs, drawers, popovers, tooltips, menus, selects, combobo","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `web/docs/test.md` and the `frontend-testing` skill when reviewing tests or testability.","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `karpathy-guidelines` for scope control and focused, verifiable changes.","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `how-to-write-component` when reviewing React component structure, ownership, effects, query/mutat","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```text","category":"external_commands","line_end":35,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":54,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Identify the review scope. For pending changes, inspect `git diff --stat`, `git diff`, and staged","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":75,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"File: `path/to/file.tsx:123`","category":"external_commands","line_end":86,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":90,"severity":"medium","line_start":86},{"id":"network:SKILL.md:3:python-http-libraries","file":"SKILL.md","pattern":"Python HTTP libraries","snippet":"description: Review Dify frontend code for correctness, accessibility, component design, dify-ui usa","category":"network","line_end":3,"severity":"low","line_start":3},{"id":"network:SKILL.md:34:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md","category":"network","line_end":34,"severity":"low","line_start":34},{"id":"blocker:SKILL.md:63:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- **P1**: user-visible regression, hydration/SSR failure, invalid API/query contract, broken keyboar","category":"blocker","line_end":63,"severity":"low","line_start":63}],"finding_verdicts":[{"id":"network:references/accessibility-ui.md:8:hardcoded-url","reason":"The rule pack instructs fetching a mutable raw GitHub URL as a required UI baseline. It does not exfiltrate local data, but it adds external network dependency and remote content trust.","verdict":"confirmed","severity":"low","confidence":0.72},{"id":"blocker:references/accessibility-ui.md:54:system-reconnaissance","reason":"This is an accessibility review rule about exposing invalid fields. It does not collect system information or probe the host environment.","verdict":"false_positive","confidence":0.98},{"id":"blocker:references/accessibility-ui.md:92:system-reconnaissance","reason":"This is layout guidance about preventing text overflow in flex or grid children. It is not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/component-architecture.md:37:system-reconnaissance","reason":"This is a component architecture rule about ownership placement. It contains no host inspection or environment discovery instruction.","verdict":"false_positive","confidence":0.98},{"id":"blocker:references/dify-invariants.md:10:system-reconnaissance","reason":"This line describes when a Dify invariant should remain valid across feature work. It is not an instruction to inspect system state.","verdict":"false_positive","confidence":0.98},{"id":"blocker:references/performance.md:50:system-reconnaissance","reason":"This is a React performance rule about high-frequency state updates. It does not request host, process, network, or file-system reconnaissance.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","reason":"The backticks appear in YAML description text around file extensions and framework names. There is no Ruby interpolation or shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:10:ruby-shell-backtick-execution","reason":"The backticks mark repository paths in prose. They are not executable commands or shell substitutions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"The line references a backend path and another review skill in Markdown code style. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The line lists a local documentation file to read. The backticks are Markdown formatting, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The line lists local Dify UI documentation and a package import path. It contains no command invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The line names a local overlay documentation file. Markdown backticks around a path are not external command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The line names local testing documentation and a related skill. It does not include a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The line references a guidance skill by name in Markdown formatting. It is not a command or executable shell text.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"The line references a component-writing skill and review topics. The backticks are prose formatting only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"This is the opening fence for a text block containing a URL. A Markdown fence is not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"This is the closing fence for a text block. It has no executable content.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The instruction names fixed read-only git inspection commands for review scoping. It does not accept user-controlled command fragments or execute shell snippets.","verdict":"false_positive","confidence":0.84},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"This is the opening fence for an output-format example. A Markdown fence is not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The line shows a formatted file path placeholder for review output. It is not intended for shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"This is the closing fence for an output-format example. It has no executable content.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:3:python-http-libraries","reason":"The line is plain YAML description text. It contains no Python HTTP library import, API call, or network request.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:34:hardcoded-url","reason":"The skill instructs the agent to fetch a mutable raw GitHub URL before some reviews. The URL is public and not an exfiltration path, but it creates network and remote-content trust risk.","verdict":"confirmed","severity":"low","confidence":0.74},{"id":"blocker:SKILL.md:63:system-reconnaissance","reason":"This line defines review severity for user-visible frontend regressions. It does not instruct system reconnaissance.","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":2,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}