{"data":{"skill":{"slug":"zl2023github-bi-analyst","name":"bi-analyst","icon":"📦","repo":"https://github.com/zl2023github/software-engineer-skills/tree/main/software-engineering/bi-analyst","status":"approved","author":"zl2023github","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"1bcd0993-3ede-405e-acca-3b82eb16ab0b","skill_id":"2c528295-fe05-45bf-a23e-9ffae61e2839","version":4,"content_hash":"v3:88a8e9a07f4c54ab105c1c41b6267c287146b07b:844fbcac51ee8f6a539fed42c3674fee364c1f65a67808bd2fc40f576c6d0fd8:3c2b4c42eeffc87247b0ee0fe3345a59b8d8aedc40ac5d363c3cf76a4bb9f7e0:736b696c6c732f7a6c323032336769746875622f62692d616e616c797374:6fc604481a3efe8a228c122ddb3b1d8a","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 42 static alerts are false positives caused by Markdown fences, SQL identifiers, and multilingual documentation entropy. The skill contains legitimate BI examples and no malicious intent or prompt injection.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":50,"line_start":33},{"file":"SKILL.md","line_end":53,"line_start":50},{"file":"SKILL.md","line_end":57,"line_start":53},{"file":"SKILL.md","line_end":61,"line_start":57},{"file":"SKILL.md","line_end":77,"line_start":61},{"file":"SKILL.md","line_end":81,"line_start":77},{"file":"SKILL.md","line_end":104,"line_start":81},{"file":"SKILL.md","line_end":109,"line_start":104},{"file":"SKILL.md","line_end":132,"line_start":109},{"file":"SKILL.md","line_end":142,"line_start":132},{"file":"SKILL.md","line_end":150,"line_start":142},{"file":"SKILL.md","line_end":153,"line_start":150},{"file":"SKILL.md","line_end":164,"line_start":153},{"file":"SKILL.md","line_end":167,"line_start":164},{"file":"SKILL.md","line_end":181,"line_start":167},{"file":"SKILL.md","line_end":186,"line_start":181},{"file":"SKILL.md","line_end":195,"line_start":186},{"file":"SKILL.md","line_end":198,"line_start":195},{"file":"SKILL.md","line_end":201,"line_start":198},{"file":"SKILL.md","line_end":206,"line_start":201},{"file":"SKILL.md","line_end":241,"line_start":206},{"file":"SKILL.md","line_end":246,"line_start":241},{"file":"SKILL.md","line_end":278,"line_start":246},{"file":"SKILL.md","line_end":282,"line_start":278},{"file":"SKILL.md","line_end":303,"line_start":282},{"file":"SKILL.md","line_end":308,"line_start":303},{"file":"SKILL.md","line_end":322,"line_start":308},{"file":"SKILL.md","line_end":325,"line_start":322},{"file":"SKILL.md","line_end":329,"line_start":325},{"file":"SKILL.md","line_end":342,"line_start":329},{"file":"SKILL.md","line_end":374,"line_start":342},{"file":"SKILL.md","line_end":390,"line_start":374}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":428,"audit_model":"codex","audited_at":"2026-07-24T02:16:30.083+00:00","created_at":"2026-07-26T15:26:43.459026+00:00","static_findings":[{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sql","category":"external_commands","line_end":50,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":53,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":57,"severity":"medium","line_start":53},{"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":"```python","category":"external_commands","line_end":77,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":81,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":104,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":109,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":132,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":142,"severity":"medium","line_start":132},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":150,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":153,"severity":"medium","line_start":150},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":164,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":167,"severity":"medium","line_start":164},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":181,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:181:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":186,"severity":"medium","line_start":181},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":195,"severity":"medium","line_start":186},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":198,"severity":"medium","line_start":195},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":201,"severity":"medium","line_start":198},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":206,"severity":"medium","line_start":201},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sql","category":"external_commands","line_end":241,"severity":"medium","line_start":206},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":246,"severity":"medium","line_start":241},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":278,"severity":"medium","line_start":246},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":282,"severity":"medium","line_start":278},{"id":"external_commands:SKILL.md:282:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":303,"severity":"medium","line_start":282},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":308,"severity":"medium","line_start":303},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":322,"severity":"medium","line_start":308},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":325,"severity":"medium","line_start":322},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 参考 `chinese-pdf-generation` 技能生成含中文图表的PDF报告","category":"external_commands","line_end":329,"severity":"medium","line_start":325},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":342,"severity":"medium","line_start":329},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":374,"severity":"medium","line_start":342},{"id":"external_commands:SKILL.md:374:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":390,"severity":"medium","line_start":374},{"id":"blocker:SKILL.md:38:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"COUNT(DISTINCT CASE WHEN DATEDIFF(login_date, first_active) = 1 THEN user_id END) AS day1_retained,","category":"blocker","line_end":38,"severity":"low","line_start":38},{"id":"blocker:SKILL.md:39:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"COUNT(DISTINCT CASE WHEN DATEDIFF(login_date, first_active) = 7 THEN user_id END) AS day7_retained","category":"blocker","line_end":39,"severity":"low","line_start":39},{"id":"blocker:SKILL.md:209:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"order_id BIGINT,","category":"blocker","line_end":209,"severity":"low","line_start":209},{"id":"blocker:SKILL.md:210:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"user_id BIGINT,","category":"blocker","line_end":210,"severity":"low","line_start":210},{"id":"blocker:SKILL.md:211:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"product_id BIGINT,","category":"blocker","line_end":211,"severity":"low","line_start":211},{"id":"blocker:SKILL.md:212:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"date_id INT,","category":"blocker","line_end":212,"severity":"low","line_start":212},{"id":"blocker:SKILL.md:219:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"user_id BIGINT PRIMARY KEY,","category":"blocker","line_end":219,"severity":"low","line_start":219},{"id":"blocker:SKILL.md:226:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"product_id BIGINT PRIMARY KEY,","category":"blocker","line_end":226,"severity":"low","line_start":226},{"id":"blocker:SKILL.md:233:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"date_id INT PRIMARY KEY,","category":"blocker","line_end":233,"severity":"low","line_start":233},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-6-52-bits-possible-b","file":"SKILL.md","pattern":"[HEURISTIC] High file entropy (6.52 bits) - possible binary/encrypted content","snippet":"File: SKILL.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"Line 33 is an opening Markdown fence for a SQL example. It does not invoke Ruby, a shell, or any command execution API.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"Line 50 is the closing Markdown fence for the preceding SQL sample. The backticks are documentation syntax, not executable shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"Line 53 opens a fenced Python example about reading CSV or Excel files. It contains no Ruby backtick expression or shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Line 57 closes a Markdown code block. It is formatting syntax and cannot execute an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"Line 61 opens a fenced Python data-cleaning example. The marker is Markdown syntax, not Ruby or shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"Line 77 is only a closing Markdown fence. No command is invoked at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"Line 81 opens a Python metric-calculation example. The backticks delimit documentation and do not perform command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"Line 104 closes a Markdown code block. It is not an executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"Line 109 opens a Python visualization example. It is a Markdown fence with no shell or Ruby execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","reason":"Line 132 is the closing fence for a documented visualization sample. It does not launch an external process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"Line 142 opens a Python cohort-retention example. The backticks are Markdown formatting only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:150:ruby-shell-backtick-execution","reason":"Line 150 closes a Markdown example. There is no shell or Ruby command execution at this line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"Line 153 opens a Python funnel-analysis example. It is documentation syntax rather than executable command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","reason":"Line 164 is a closing Markdown fence. It has no external-command behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"Line 167 opens a Python A/B test example. The marker does not execute Ruby or shell commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:181:ruby-shell-backtick-execution","reason":"Line 181 closes the documented statistical example. The backticks are inert Markdown delimiters.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","reason":"Line 186 opens a Python Excel-report example. It is a Markdown fence and contains no command-execution primitive.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","reason":"Line 195 is the closing fence for the Excel example. It cannot invoke an external process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","reason":"Line 198 opens a documented Bash block containing a fixed cron example. The detected backticks are a Markdown fence, with no interpolation or hidden execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","reason":"Line 201 closes the cron example. It is Markdown syntax rather than Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","reason":"Line 206 opens a SQL star-schema example. The fence is inert documentation syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"Line 241 closes the SQL schema example. It does not execute a system command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","reason":"Line 246 opens a Python Airflow template. The backticks are a Markdown code fence, not command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","reason":"Line 278 is the closing Markdown fence for the Airflow example. It has no execution behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:282:ruby-shell-backtick-execution","reason":"Line 282 opens a Python statistics example. It does not invoke a shell or Ruby interpreter.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","reason":"Line 303 closes a documented Python example. The backticks are formatting only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","reason":"Line 308 opens a fenced Markdown report example. It is nested documentation, not external command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","reason":"Line 322 closes the sample report block. No executable command is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","reason":"Line 325 uses inline backticks to name the chinese-pdf-generation skill. It is a documentation reference, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","reason":"Line 329 opens a Python data-quality example. The backticks are a Markdown fence without execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","reason":"Line 342 closes the Python data-quality block. It cannot invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:374:ruby-shell-backtick-execution","reason":"Line 374 opens a clearly labeled Bash reference block with standard database and local inspection commands. The detected backticks are Markdown syntax, and no untrusted interpolation or malicious target is present.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:38:system-reconnaissance","reason":"Line 38 is a SQL retention expression using DATEDIFF and user_id. It gathers business metrics and performs no system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:39:system-reconnaissance","reason":"Line 39 is another SQL retention calculation using DATEDIFF and user_id. It does not inspect the host, network, accounts, or environment.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:209:system-reconnaissance","reason":"Line 209 declares an order_id column in an illustrative fact table. A database identifier is not a reconnaissance command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:210:system-reconnaissance","reason":"Line 210 declares a user_id column in a sample schema. It does not collect system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:211:system-reconnaissance","reason":"Line 211 declares a product_id column in a sample schema. It has no host-reconnaissance behavior.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:212:system-reconnaissance","reason":"Line 212 declares a date_id column for a star schema. It does not query system state.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:219:system-reconnaissance","reason":"Line 219 defines user_id as a primary key in a sample dimension table. This is ordinary SQL modeling, not reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:226:system-reconnaissance","reason":"Line 226 defines product_id as a primary key in a sample table. It does not discover system details.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:233:system-reconnaissance","reason":"Line 233 defines date_id as a primary key in a sample date dimension. It is unrelated to system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-6-52-bits-possible-b","reason":"SKILL.md is readable Markdown containing Chinese prose and varied SQL, Python, and Bash examples. The character diversity explains the entropy score, with no binary, encrypted, or encoded payload present.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","subject_content_hash":"844fbcac51ee8f6a539fed42c3674fee364c1f65a67808bd2fc40f576c6d0fd8","subject_tree_hash":"3c2b4c42eeffc87247b0ee0fe3345a59b8d8aedc40ac5d363c3cf76a4bb9f7e0","subject_plugin_path":"skills/zl2023github/bi-analyst","audit_payload_hash":"6fc604481a3efe8a228c122ddb3b1d8a","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","contentHash":"844fbcac51ee8f6a539fed42c3674fee364c1f65a67808bd2fc40f576c6d0fd8","treeHash":"3c2b4c42eeffc87247b0ee0fe3345a59b8d8aedc40ac5d363c3cf76a4bb9f7e0","pluginPath":"skills/zl2023github/bi-analyst","auditPayloadHash":"6fc604481a3efe8a228c122ddb3b1d8a"},"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/zl2023github-bi-analyst/audits/4/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}