{"data":{"skill":{"slug":"babakbar-mobile-testing","name":"Mobile Testing","icon":"📦","repo":"https://github.com/BabakBar/VibeKeeper/tree/main/.claude/skills/testing","status":"approved","author":"BabakBar","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"09adea7e-3c33-4020-a612-bd2464c29422","skill_id":"15f39f6c-b161-4a09-8232-c21d550d6e15","version":9,"content_hash":"v3:bdc4c7c6e1e64de0e81902bd9656da84164bdaf7:5ad3c13df2dff1d9ef64b64780c8e50119045bc126eeb18335bb86b62c64caba:f7bacdf5b0d6b57b80294a5a70c661105191489238cae936f5c540a9946aa835:736b696c6c732f626162616b6261722f6d6f62696c652d74657374696e67:cacf225a1ffbbd58267f6ddabce20b4f","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 30 static findings are false positives. The external-command detections match Markdown fences and inline code in a testing guide, while the URLs are documentation references. No prompt injection, data-exfiltration intent, or executable malicious behavior was found.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":33,"line_start":21},{"file":"SKILL.md","line_end":37,"line_start":33},{"file":"SKILL.md","line_end":57,"line_start":37},{"file":"SKILL.md","line_end":61,"line_start":57},{"file":"SKILL.md","line_end":76,"line_start":61},{"file":"SKILL.md","line_end":80,"line_start":76},{"file":"SKILL.md","line_end":93,"line_start":80},{"file":"SKILL.md","line_end":98,"line_start":93},{"file":"SKILL.md","line_end":102,"line_start":98},{"file":"SKILL.md","line_end":105,"line_start":102},{"file":"SKILL.md","line_end":112,"line_start":105},{"file":"SKILL.md","line_end":115,"line_start":112},{"file":"SKILL.md","line_end":122,"line_start":115},{"file":"SKILL.md","line_end":126,"line_start":122},{"file":"SKILL.md","line_end":141,"line_start":126},{"file":"SKILL.md","line_end":146,"line_start":141},{"file":"SKILL.md","line_end":150,"line_start":146},{"file":"SKILL.md","line_end":150,"line_start":150},{"file":"SKILL.md","line_end":160,"line_start":155},{"file":"SKILL.md","line_end":163,"line_start":160},{"file":"SKILL.md","line_end":172,"line_start":163},{"file":"SKILL.md","line_end":175,"line_start":172},{"file":"SKILL.md","line_end":182,"line_start":175},{"file":"SKILL.md","line_end":187,"line_start":182},{"file":"SKILL.md","line_end":189,"line_start":187},{"file":"SKILL.md","line_end":189,"line_start":189}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":193,"line_start":193},{"file":"SKILL.md","line_end":194,"line_start":194}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":195,"audit_model":"claude","audited_at":"2026-07-17T10:29:59.438+00:00","created_at":"2026-07-17T15:42:42.649364+00:00","static_findings":[{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":33,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":37,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":57,"severity":"medium","line_start":37},{"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":"```typescript","category":"external_commands","line_end":76,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":80,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":93,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":98,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":102,"severity":"medium","line_start":98},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":105,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":112,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":115,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":122,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":126,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":141,"severity":"medium","line_start":126},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":146,"severity":"medium","line_start":141},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Use `testID` for Selection**: More reliable than text matching","category":"external_commands","line_end":150,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. **Clean Up**: Use `beforeEach`/`afterEach` for setup/teardown","category":"external_commands","line_end":150,"severity":"medium","line_start":150},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":160,"severity":"medium","line_start":155},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":163,"severity":"medium","line_start":160},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":172,"severity":"medium","line_start":163},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":175,"severity":"medium","line_start":172},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":182,"severity":"medium","line_start":175},{"id":"external_commands:SKILL.md:182:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":187,"severity":"medium","line_start":182},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Can't find element**: Use `screen.debug()` to see rendered output","category":"external_commands","line_end":189,"severity":"medium","line_start":187},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Async issues**: Use `waitFor` or `findBy` queries","category":"external_commands","line_end":189,"severity":"medium","line_start":189},{"id":"network:SKILL.md:193:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Jest Docs](https://jestjs.io/)","category":"network","line_end":193,"severity":"low","line_start":193},{"id":"network:SKILL.md:194:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [React Native Testing Library](https://callstack.github.io/react-native-testing-library/)","category":"network","line_end":194,"severity":"low","line_start":194},{"id":"blocker:SKILL.md:89:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"it('handles invalid input', () => {","category":"blocker","line_end":89,"severity":"low","line_start":89},{"id":"blocker:SKILL.md:170:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"expect(getByText('Invalid email')).toBeTruthy();","category":"blocker","line_end":170,"severity":"low","line_start":170}],"finding_verdicts":[{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:182:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"The detector matched Markdown code-fence delimiters or inline code formatting, not shell backtick substitution. The surrounding content is a React Native testing guide with examples only.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:193:hardcoded-url","reason":"The URL is a documentation link in a Markdown resource list. The skill contains no request, download, or data transmission behavior.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:194:hardcoded-url","reason":"The URL is a documentation link in a Markdown resource list. The skill contains no request, download, or data transmission behavior.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:89:system-reconnaissance","reason":"This line is a Jest assertion in a static test example. It does not inspect the host, enumerate system information, or execute a command.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:170:system-reconnaissance","reason":"This line is a Jest assertion in a static test example. It does not inspect the host, enumerate system information, or execute a command.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[],"subject_marketplace_commit_sha":"bdc4c7c6e1e64de0e81902bd9656da84164bdaf7","subject_content_hash":"5ad3c13df2dff1d9ef64b64780c8e50119045bc126eeb18335bb86b62c64caba","subject_tree_hash":"f7bacdf5b0d6b57b80294a5a70c661105191489238cae936f5c540a9946aa835","subject_plugin_path":"skills/babakbar/mobile-testing","audit_payload_hash":"cacf225a1ffbbd58267f6ddabce20b4f","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"bdc4c7c6e1e64de0e81902bd9656da84164bdaf7","contentHash":"5ad3c13df2dff1d9ef64b64780c8e50119045bc126eeb18335bb86b62c64caba","treeHash":"f7bacdf5b0d6b57b80294a5a70c661105191489238cae936f5c540a9946aa835","pluginPath":"skills/babakbar/mobile-testing","auditPayloadHash":"cacf225a1ffbbd58267f6ddabce20b4f"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/babakbar-mobile-testing/audits/9/attestation","status":"superseded"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"superseded","verificationState":"not_verified"},"isLatest":false}}