{"data":{"skill":{"slug":"inferen-sh-chat-ui","name":"chat-ui","icon":"📦","repo":"https://github.com/inferen-sh/skills/tree/main/ui/chat-ui/","status":"approved","author":"inferen-sh","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"e44b3525-1a33-4106-bdc2-7c65ea0d290f","skill_id":"b388cbe6-e751-4cc3-9ae6-7c3ef9287866","version":5,"content_hash":"v2:0519034dad657fb1f7706e0550e962beeda73fdf:9ad066a817749bbf5a9a8b2678f5b4b7c78eaf2381cee69540b2563268f422f2:680d20ab796e59a732c88c199bcdb7091bb1ad30fcd6278fcdd732e309c6c119:f8da098239e9f6bc58f7d6ad1f77957f","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 findings are false positives from Markdown fences, inline code formatting, React examples, and documentation links. The remaining confirmed risks are user-invoked install commands that fetch external component or skill content, so users should review remote sources before running them.","remediation":[{"issue":"Remote install commands use npx and external registries.","severity":"medium","suggestion":"Add guidance to inspect the remote registry content and pin trusted package versions before running install commands."},{"issue":"Related skill examples install additional external content.","severity":"medium","suggestion":"Mark related installs as optional and recommend reviewing each target skill before installation."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":17,"line_start":14},{"file":"SKILL.md","line_end":23,"line_start":17},{"file":"SKILL.md","line_end":29,"line_start":23},{"file":"SKILL.md","line_end":33,"line_start":29},{"file":"SKILL.md","line_end":45,"line_start":33},{"file":"SKILL.md","line_end":49,"line_start":45},{"file":"SKILL.md","line_end":57,"line_start":49},{"file":"SKILL.md","line_end":61,"line_start":57},{"file":"SKILL.md","line_end":65,"line_start":61},{"file":"SKILL.md","line_end":69,"line_start":65},{"file":"SKILL.md","line_end":98,"line_start":69},{"file":"SKILL.md","line_end":104,"line_start":98},{"file":"SKILL.md","line_end":105,"line_start":104},{"file":"SKILL.md","line_end":106,"line_start":105},{"file":"SKILL.md","line_end":112,"line_start":106},{"file":"SKILL.md","line_end":118,"line_start":112},{"file":"SKILL.md","line_end":122,"line_start":118},{"file":"SKILL.md","line_end":131,"line_start":122}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":8,"line_start":8},{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":135,"line_start":135},{"file":"SKILL.md","line_end":136,"line_start":136},{"file":"SKILL.md","line_end":137,"line_start":137},{"file":"SKILL.md","line_end":139,"line_start":139}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":17,"line_start":14}],"confidence":0.86,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 14-17 contain a bash quick-start example that runs npx and fetches a remote shadcn registry URL. This is user-invoked, but it still introduces external command and supply-chain risk."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":131,"line_start":122}],"confidence":0.82,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 122-131 contain bash examples that run npx skills add for related packages. These are user-invoked install commands and can fetch external skill content."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":16,"line_start":16}],"confidence":0.88,"description":"npx shadcn@latest add https://ui.inference.sh/r/chat.json","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The URL is passed to npx shadcn as a remote component registry source. This network dependency is expected, but users should review fetched code before installation."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":141,"audit_model":"codex","audited_at":"2026-07-09T12:13:20.275+00:00","created_at":"2026-07-09T13:32:26.011715+00:00","static_findings":[{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":17,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":23,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":29,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":33,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":45,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":49,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":57,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":61,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":65,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":69,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":98,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":104,"severity":"medium","line_start":98},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `user` | User messages (right-aligned) |","category":"external_commands","line_end":105,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `assistant` | AI responses (left-aligned) |","category":"external_commands","line_end":106,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `system` | System messages (centered) |","category":"external_commands","line_end":112,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```tsx","category":"external_commands","line_end":118,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":122,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":131,"severity":"medium","line_start":122},{"id":"network:SKILL.md:8:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Chat building blocks from [ui.inference.sh](https://ui.inference.sh).","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"network:SKILL.md:10:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"![Chat UI Components](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kgvftp7hb8","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"network:SKILL.md:16:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"npx shadcn@latest add https://ui.inference.sh/r/chat.json","category":"network","line_end":16,"severity":"low","line_start":16},{"id":"network:SKILL.md:135:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Chatting with Agents](https://inference.sh/docs/agents/chatting) - Building chat interfaces","category":"network","line_end":135,"severity":"low","line_start":135},{"id":"network:SKILL.md:136:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Agent UX Patterns](https://inference.sh/blog/ux/agent-ux-patterns) - Chat UX best practices","category":"network","line_end":136,"severity":"low","line_start":136},{"id":"network:SKILL.md:137:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Real-Time Streaming](https://inference.sh/blog/observability/streaming) - Streaming responses","category":"network","line_end":137,"severity":"low","line_start":137},{"id":"network:SKILL.md:139:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Component docs: [ui.inference.sh/blocks/chat](https://ui.inference.sh/blocks/chat)","category":"network","line_end":139,"severity":"low","line_start":139}],"finding_verdicts":[{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"Lines 14-17 contain a bash quick-start example that runs npx and fetches a remote shadcn registry URL. This is user-invoked, but it still introduces external command and supply-chain risk.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The flagged text is a Markdown code fence boundary near a section heading, not executable Ruby or shell backtick syntax. No command is present at this location.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"This is a Markdown tsx code fence introducing a React import and component example. It does not execute a shell command or interpolate user input.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"The flagged snippet is a closing Markdown code fence. It is documentation formatting, not command execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"This code fence contains static React message component examples. There is no shell invocation, dynamic evaluation, or external process launch.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The snippet is a Markdown fence delimiter after a TypeScript example. It is not executable code.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"This is a React ChatInput usage example inside a tsx documentation block. It does not contain shell backticks or process execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The finding points to a Markdown closing fence. No executable shell or Ruby backtick pattern is present.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"This tsx block shows conditional rendering of a TypingIndicator component. It is frontend example code, not external command execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"The flagged content is a Markdown closing code fence before the full example section. It has no command semantics.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The block is a React component example with local state and a placeholder API comment. It does not run a shell command or include Ruby backtick execution.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","reason":"This is a Markdown fence delimiter before a table. It is formatting only and cannot execute commands.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The backticks wrap the literal table value user. Inline Markdown code formatting is not Ruby or shell execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The backticks wrap the literal table value assistant. This is documentation text, not executable code.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The backticks wrap the literal table value system. It is inline Markdown formatting, not command execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"This tsx block shows a ChatMessage styling example with className. It contains no shell command or external process behavior.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"The flagged text is a Markdown closing fence. It is documentation structure, not executable syntax.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"Lines 122-131 contain bash examples that run npx skills add for related packages. These are user-invoked install commands and can fetch external skill content.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"network:SKILL.md:8:hardcoded-url","reason":"The URL is a documentation link to the component provider. It is not used for data exfiltration or an automatic network request by the skill.","verdict":"false_positive","confidence":0.9},{"id":"network:SKILL.md:10:hardcoded-url","reason":"The URL is a Markdown image reference for documentation. It may load an external asset when rendered, but no sensitive data is sent by the skill.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:16:hardcoded-url","reason":"The URL is passed to npx shadcn as a remote component registry source. This network dependency is expected, but users should review fetched code before installation.","verdict":"confirmed","severity":"low","confidence":0.88},{"id":"network:SKILL.md:135:hardcoded-url","reason":"The URL is a documentation link about building chat interfaces. It is not an automatic request or exfiltration endpoint.","verdict":"false_positive","confidence":0.9},{"id":"network:SKILL.md:136:hardcoded-url","reason":"The URL is a public blog link for UX guidance. There is no evidence that the skill sends local data to it.","verdict":"false_positive","confidence":0.9},{"id":"network:SKILL.md:137:hardcoded-url","reason":"The URL points to public documentation about streaming. It is a reference link, not a network operation performed by the skill.","verdict":"false_positive","confidence":0.9},{"id":"network:SKILL.md:139:hardcoded-url","reason":"The URL is a component documentation link. It does not indicate data collection, credential exposure, or hidden network behavior.","verdict":"false_positive","confidence":0.9}],"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":3,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}