{"data":{"skill":{"slug":"bodhisearch-bodhi-sdk-react-integration","name":"bodhi-sdk-react-integration","icon":"📦","repo":"https://github.com/BodhiSearch/bodhi-js/tree/main/bodhi-js-sdk/skills/react-integration","status":"approved","author":"BodhiSearch","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"78053271-3dab-41d9-9c81-1d18a47823b8","skill_id":"012f6f8a-fe78-4142-8cf3-ca05c5b3f941","version":6,"content_hash":"2deacc811390316c9efc98e7676ed1d6","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":null,"manual_install_policy":null,"summary":"Static analysis heavily overcounted Markdown code fences as Ruby backtick execution and marked documentation URLs as risky network behavior. Human review found no prompt injection or confirmed malicious intent, but the skill can run npm/npx commands and includes troubleshooting guidance that may expose OAuth token state in browser storage or console logs.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"quick-start.md","line_end":15,"line_start":14},{"file":"quick-start.md","line_end":175,"line_start":174},{"file":"troubleshooting.md","line_end":57,"line_start":54},{"file":"troubleshooting.md","line_end":393,"line_start":393}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":48,"line_start":45},{"file":"quick-start.md","line_end":27,"line_start":20},{"file":"oauth-setup.md","line_end":12,"line_start":7},{"file":"troubleshooting.md","line_end":57,"line_start":54},{"file":"github-pages.md","line_end":134,"line_start":128}]},{"factor":"env_access","evidence":[{"file":"code-examples.md","line_end":41,"line_start":26},{"file":"code-examples.md","line_end":642,"line_start":627},{"file":"github-pages.md","line_end":126,"line_start":115},{"file":"oauth-setup.md","line_end":147,"line_start":99},{"file":"troubleshooting.md","line_end":418,"line_start":411}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"quick-start.md","line_end":55,"line_start":29},{"file":"github-pages.md","line_end":107,"line_start":75}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"OAuth Token State May Be Exposed During Troubleshooting","locations":[{"file":"troubleshooting.md","line_end":148,"line_start":137},{"file":"troubleshooting.md","line_end":202,"line_start":199},{"file":"troubleshooting.md","line_end":443,"line_start":437},{"file":"troubleshooting.md","line_end":462,"line_start":454},{"file":"oauth-setup.md","line_end":170,"line_start":165}],"confidence":0.82,"description":"The troubleshooting guide recommends logging authentication state and reading localStorage values that may contain access tokens. This is legitimate debugging guidance, but users could accidentally share sensitive token data in logs or issue reports.","confidence_reasoning":"The cited lines explicitly show auth state containing an accessToken and localStorage reads for Bodhi auth keys. I did not find evidence that the skill exfiltrates those values, so the risk is exposure through debugging rather than malicious collection."},{"title":"Permitted npm and npx Command Execution","locations":[{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"quick-start.md","line_end":15,"line_start":14},{"file":"quick-start.md","line_end":175,"line_start":174},{"file":"troubleshooting.md","line_end":393,"line_start":393}],"confidence":0.86,"description":"The skill allows Bash execution for npm and npx and instructs users to install packages, run dev servers, build apps, and preview deployments. These commands are expected for a React integration skill, but they execute project scripts and dependency lifecycle hooks.","confidence_reasoning":"The allowed-tools declaration and setup guides clearly authorize npm and npx usage. The commands are normal for this task, but npm scripts can execute arbitrary code from the target project or dependencies."}],"low_findings":[{"title":"Static Command Findings Are Markdown False Positives","locations":[{"file":"code-examples.md","line_end":24,"line_start":9},{"file":"github-pages.md","line_end":88,"line_start":77},{"file":"oauth-setup.md","line_end":47,"line_start":29},{"file":"quick-start.md","line_end":15,"line_start":14},{"file":"SKILL.md","line_end":56,"line_start":54}],"confidence":0.91,"description":"The analyzer reported many Ruby backtick executions, but reviewed locations are Markdown fenced code blocks containing TypeScript, TSX, shell snippets, or prose. No Ruby backtick execution pattern was confirmed in executable skill code.","confidence_reasoning":"Line-number review showed Markdown code fences and inline documentation, not Ruby code execution. The files are documentation-only, although some examples instruct users to run legitimate shell commands."},{"title":"Hardcoded URLs Point to Expected Services","locations":[{"file":"SKILL.md","line_end":48,"line_start":45},{"file":"quick-start.md","line_end":27,"line_start":20},{"file":"oauth-setup.md","line_end":12,"line_start":7},{"file":"github-pages.md","line_end":134,"line_start":128},{"file":"troubleshooting.md","line_end":505,"line_start":503}],"confidence":0.88,"description":"The hardcoded URLs identify Bodhi developer, OAuth, GitHub Pages, Vite, and localhost endpoints needed for setup and troubleshooting. They are not evidence of covert network exfiltration, but users should verify service domains before entering credentials.","confidence_reasoning":"The URLs are presented as configuration endpoints for the documented SDK integration. I found no encoded payloads, hidden destinations, or instructions to send secrets to unrelated services."},{"title":"Environment Variable Examples Are Public Client Configuration","locations":[{"file":"code-examples.md","line_end":642,"line_start":627},{"file":"github-pages.md","line_end":126,"line_start":115},{"file":"oauth-setup.md","line_end":147,"line_start":99},{"file":"troubleshooting.md","line_end":418,"line_start":411}],"confidence":0.8,"description":"The skill documents Vite environment variables and GitHub Actions secrets for OAuth client IDs and redirect URIs. These examples do not contain real secrets, but users should avoid committing production-specific values when their policy treats client IDs as sensitive.","confidence_reasoning":"The examples use placeholder client IDs and standard Vite public variables. OAuth client IDs are often public identifiers, but deployment teams may still classify them as sensitive configuration."}],"dangerous_patterns":[{"title":"Bash Tool Access for Package Commands","locations":[{"file":"SKILL.md","line_end":7,"line_start":7}],"confidence":0.87,"description":"The skill grants Bash access to npm and npx commands. This supports the integration workflow but can run package lifecycle scripts in the user project.","confidence_reasoning":"The allowed-tools front matter directly permits Bash(npm:*) and Bash(npx:*). This is a real execution capability, even though it is scoped to package tooling."},{"title":"Browser Storage Token Inspection","locations":[{"file":"troubleshooting.md","line_end":202,"line_start":199},{"file":"troubleshooting.md","line_end":462,"line_start":454}],"confidence":0.83,"description":"The documentation tells users to inspect localStorage entries related to Bodhi authentication. This can reveal token material if copied into logs or support tickets.","confidence_reasoning":"The cited lines directly read Bodhi auth keys from localStorage. The pattern is explainable for debugging, but it handles sensitive browser state."},{"title":"Localhost Network Diagnostics","locations":[{"file":"troubleshooting.md","line_end":57,"line_start":54},{"file":"troubleshooting.md","line_end":225,"line_start":222},{"file":"troubleshooting.md","line_end":324,"line_start":321}],"confidence":0.76,"description":"The troubleshooting guide recommends curl checks against the local Bodhi backend. This is expected for connectivity diagnostics and is limited to localhost endpoints.","confidence_reasoning":"The commands are explicit curl calls to localhost. They are not malicious, but they are external command and network access patterns that deserve disclosure."}],"files_scanned":6,"total_lines":2475,"audit_model":"codex","audited_at":"2026-06-28T16:06:02.196+00:00","created_at":"2026-06-28T16:55:02.5437+00:00","static_findings":[],"finding_verdicts":[],"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":"canonical install advisories are incomplete"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":3,"needsReviewCount":0,"falsePositiveCount":1,"agentAutoInstallPolicy":null,"manualInstallPolicy":null,"artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}