{"data":{"skill":{"slug":"wshobson-javascript-testing-patterns","name":"javascript-testing-patterns","icon":"📦","repo":"https://github.com/wshobson/agents/tree/main/plugins/javascript-typescript/skills/javascript-testing-patterns","status":"approved","author":"wshobson","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"2f7c9030-137e-442e-981f-48861198ea41","skill_id":"438c7494-3cf6-4de2-bce1-dbf2f1209d96","version":3,"content_hash":"5d8287a943d06bb40734cd431bac7c97","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":null,"manual_install_policy":null,"summary":"This is a documentation-only skill containing testing pattern examples. The static analyzer flagged 153 patterns, but ALL are FALSE POSITIVEs: weak crypto alerts are triggered by test fixture strings (hashed_password), backtick alerts are TypeScript template literals, path traversal alerts are relative import paths in test code, and the critical heuristic is an invalid combination of benign testing patterns. The previous audit correctly classified this as SAFE.","remediation":[],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"SKILL.md","line_end":215,"line_start":215},{"file":"SKILL.md","line_end":223,"line_start":223},{"file":"SKILL.md","line_end":520,"line_start":520},{"file":"SKILL.md","line_end":540,"line_start":540},{"file":"SKILL.md","line_end":555,"line_start":555},{"file":"SKILL.md","line_end":557,"line_start":557},{"file":"SKILL.md","line_end":568,"line_start":568},{"file":"SKILL.md","line_end":578,"line_start":578},{"file":"SKILL.md","line_end":590,"line_start":590},{"file":"SKILL.md","line_end":598,"line_start":598},{"file":"SKILL.md","line_end":605,"line_start":605},{"file":"SKILL.md","line_end":613,"line_start":613},{"file":"SKILL.md","line_end":622,"line_start":622},{"file":"SKILL.md","line_end":215,"line_start":215},{"file":"SKILL.md","line_end":223,"line_start":223},{"file":"SKILL.md","line_end":259,"line_start":259},{"file":"SKILL.md","line_end":285,"line_start":285},{"file":"SKILL.md","line_end":919,"line_start":919},{"file":"SKILL.md","line_end":1022,"line_start":1022},{"file":"SKILL.md","line_end":1023,"line_start":1023},{"file":"SKILL.md","line_end":1024,"line_start":1024},{"file":"SKILL.md","line_end":1025,"line_start":1025},{"file":"SKILL.md","line_end":302,"line_start":302},{"file":"SKILL.md","line_end":302,"line_start":302},{"file":"SKILL.md","line_end":305,"line_start":305},{"file":"SKILL.md","line_end":306,"line_start":306},{"file":"SKILL.md","line_end":309,"line_start":309},{"file":"SKILL.md","line_end":310,"line_start":310},{"file":"SKILL.md","line_end":315,"line_start":315},{"file":"SKILL.md","line_end":328,"line_start":328},{"file":"SKILL.md","line_end":331,"line_start":331},{"file":"SKILL.md","line_end":350,"line_start":350}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":52,"line_start":26},{"file":"SKILL.md","line_end":57,"line_start":52},{"file":"SKILL.md","line_end":73,"line_start":57},{"file":"SKILL.md","line_end":79,"line_start":73},{"file":"SKILL.md","line_end":126,"line_start":79},{"file":"SKILL.md","line_end":130,"line_start":126},{"file":"SKILL.md","line_end":207,"line_start":130},{"file":"SKILL.md","line_end":211,"line_start":207},{"file":"SKILL.md","line_end":215,"line_start":211},{"file":"SKILL.md","line_end":294,"line_start":215},{"file":"SKILL.md","line_end":300,"line_start":294},{"file":"SKILL.md","line_end":358,"line_start":300},{"file":"SKILL.md","line_end":362,"line_start":358},{"file":"SKILL.md","line_end":435,"line_start":362},{"file":"SKILL.md","line_end":439,"line_start":435},{"file":"SKILL.md","line_end":442,"line_start":439},{"file":"SKILL.md","line_end":443,"line_start":442},{"file":"SKILL.md","line_end":451,"line_start":443},{"file":"SKILL.md","line_end":453,"line_start":451},{"file":"SKILL.md","line_end":483,"line_start":453},{"file":"SKILL.md","line_end":489,"line_start":483},{"file":"SKILL.md","line_end":579,"line_start":489},{"file":"SKILL.md","line_end":624,"line_start":579},{"file":"SKILL.md","line_end":631,"line_start":624},{"file":"SKILL.md","line_end":635,"line_start":631},{"file":"SKILL.md","line_end":657,"line_start":635},{"file":"SKILL.md","line_end":707,"line_start":665},{"file":"SKILL.md","line_end":713,"line_start":707},{"file":"SKILL.md","line_end":796,"line_start":713},{"file":"SKILL.md","line_end":800,"line_start":796},{"file":"SKILL.md","line_end":867,"line_start":800},{"file":"SKILL.md","line_end":871,"line_start":867},{"file":"SKILL.md","line_end":903,"line_start":871},{"file":"SKILL.md","line_end":907,"line_start":903},{"file":"SKILL.md","line_end":932,"line_start":907},{"file":"SKILL.md","line_end":936,"line_start":932},{"file":"SKILL.md","line_end":945,"line_start":936},{"file":"SKILL.md","line_end":969,"line_start":945},{"file":"SKILL.md","line_end":982,"line_start":969},{"file":"SKILL.md","line_end":986,"line_start":982},{"file":"SKILL.md","line_end":997,"line_start":986},{"file":"SKILL.md","line_end":1001,"line_start":997},{"file":"SKILL.md","line_end":1018,"line_start":1001}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":447,"line_start":447},{"file":"SKILL.md","line_end":460,"line_start":460},{"file":"SKILL.md","line_end":492,"line_start":492},{"file":"SKILL.md","line_end":492,"line_start":492},{"file":"SKILL.md","line_end":493,"line_start":493},{"file":"SKILL.md","line_end":493,"line_start":493},{"file":"SKILL.md","line_end":639,"line_start":639},{"file":"SKILL.md","line_end":639,"line_start":639},{"file":"SKILL.md","line_end":890,"line_start":890}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":306,"line_start":306},{"file":"SKILL.md","line_end":309,"line_start":309},{"file":"SKILL.md","line_end":310,"line_start":310},{"file":"SKILL.md","line_end":316,"line_start":316},{"file":"SKILL.md","line_end":306,"line_start":306},{"file":"SKILL.md","line_end":309,"line_start":309},{"file":"SKILL.md","line_end":310,"line_start":310},{"file":"SKILL.md","line_end":316,"line_start":316}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":1204,"audit_model":"claude","audited_at":"2026-01-17T09:32:10.388+00:00","created_at":"2026-01-20T01:07:07.176729+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":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":null,"manualInstallPolicy":null,"artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}